@@ -1703,7 +1703,6 @@ struct death_knight_t : public parse_player_effects_t
1703
1703
double average_cs_travel_time = 0.4;
1704
1704
timespan_t first_ams_cast = 20_s;
1705
1705
double horsemen_ams_absorb_percent = 0.6;
1706
- bool disable_ghoul_spawn_stun = false;
1707
1706
} options;
1708
1707
1709
1708
// Runes
@@ -2524,6 +2523,16 @@ struct death_knight_pet_t : public pet_t
2524
2523
}
2525
2524
}
2526
2525
2526
+ void trigger_pet_movement( double dist )
2527
+ {
2528
+ if ( dist == 0 )
2529
+ return;
2530
+
2531
+ this->trigger_movement( dist, movement_direction_type::TOWARDS );
2532
+ auto dur = this->time_to_move();
2533
+ make_event( *sim, dur, [ &, dur ] { update_movement( dur ); } );
2534
+ }
2535
+
2527
2536
void apply_affecting_auras( action_t& action ) override
2528
2537
{
2529
2538
player_t::apply_affecting_auras( action );
@@ -2705,6 +2714,14 @@ struct pet_action_t : public parse_action_effects_t<Base>
2705
2714
}
2706
2715
}
2707
2716
}
2717
+
2718
+ bool ready() override
2719
+ {
2720
+ if ( this->player->is_moving() )
2721
+ return false;
2722
+
2723
+ return action_base_t::ready();
2724
+ }
2708
2725
};
2709
2726
2710
2727
// ==========================================================================
@@ -2914,13 +2931,8 @@ struct base_ghoul_pet_t : public death_knight_pet_t
2914
2931
resources.base_regen_per_second[ RESOURCE_ENERGY ] = 10;
2915
2932
}
2916
2933
2917
- void arise() override
2934
+ void trigger_summon_stun( timespan_t dur )
2918
2935
{
2919
- death_knight_pet_t::arise();
2920
- if ( dk()->options.disable_ghoul_spawn_stun )
2921
- return;
2922
-
2923
- timespan_t duration = dk()->pet_spell.pet_stun->duration();
2924
2936
if ( precombat_spawn_adjust > 0_s && precombat_spawn )
2925
2937
{
2926
2938
duration = duration - precombat_spawn_adjust;
@@ -2934,13 +2946,32 @@ struct base_ghoul_pet_t : public death_knight_pet_t
2934
2946
}
2935
2947
}
2936
2948
2949
+ void arise() override
2950
+ {
2951
+ death_knight_pet_t::arise();
2952
+ if ( name_str == "army_ghoul" || !dk()->is_ptr() )
2953
+ {
2954
+ timespan_t duration = dk()->pet_spell.pet_stun->duration();
2955
+ trigger_summon_stun( duration );
2956
+ }
2957
+ else
2958
+ {
2959
+ double dist = precombat_spawn ? 0 : rng().range( -dk()->spell.apocalypse_duration->effectN( 1 ).radius(),
2960
+ dk()->spell.apocalypse_duration->effectN( 1 ).radius() );
2961
+ trigger_pet_movement( std::max( 0.0, dk()->base.distance + dist ) );
2962
+ }
2963
+ }
2964
+
2937
2965
resource_e primary_resource() const override
2938
2966
{
2939
2967
return RESOURCE_ENERGY;
2940
2968
}
2941
2969
2942
2970
timespan_t available() const override
2943
2971
{
2972
+ if ( this->is_moving() )
2973
+ return this->time_to_move();
2974
+
2944
2975
double energy = resources.current[ RESOURCE_ENERGY ];
2945
2976
timespan_t time_to_next =
2946
2977
timespan_t::from_seconds( ( 40 - energy ) / resource_regen_per_second( RESOURCE_ENERGY ) );
@@ -4575,6 +4606,15 @@ struct abomination_pet_t : public death_knight_pet_t
4575
4606
tww1_4pc_proc = true;
4576
4607
owner_coeff.ap_from_ap = 2.4;
4577
4608
resource_regeneration = regen_type::DISABLED;
4609
+ base_movement_speed = 3.75; // Abomination is SLOWWWW
4610
+ }
4611
+
4612
+ void arise() override
4613
+ {
4614
+ death_knight_pet_t::arise();
4615
+ // Assume precombat abominations have to walk far further than normal
4616
+ double dist = precombat_spawn ? 15 : rng().range( 0, dk()->talent.unholy.raise_abomination->effectN( 1 ).radius() );
4617
+ trigger_pet_movement( dk()->base.distance + dist );
4578
4618
}
4579
4619
4580
4620
resource_e primary_resource() const override
@@ -11458,7 +11498,6 @@ void death_knight_t::create_options()
11458
11498
add_option(
11459
11499
opt_timespan( "deathknight.first_ams_cast", options.first_ams_cast, timespan_t::zero(), timespan_t::max() ) );
11460
11500
add_option( opt_float( "deathknight.horsemen_ams_absorb_percent", options.horsemen_ams_absorb_percent, 0.0, 1.0 ) );
11461
- add_option( opt_bool( "deathknight.disable_ghoul_spawn_stun", options.disable_ghoul_spawn_stun ) );
11462
11501
}
11463
11502
11464
11503
void death_knight_t::copy_from( player_t* source )
0 commit comments