5 #ifndef SC_WARLOCK_PETS_HPP 6 #define SC_WARLOCK_PETS_HPP 8 #include "simulationcraft.hpp" 42 bool is_main_pet =
false;
45 void init_base_stats()
override;
46 void init_action_list()
override;
47 void create_buffs()
override;
48 void schedule_ready(
timespan_t = 0_ms,
bool =
false )
override;
49 double composite_player_multiplier( school_e )
const override;
50 double composite_player_target_multiplier(
player_t*, school_e )
const override;
51 void init_special_effects()
override;
57 return target_data[ target ];
70 resource_e primary_resource()
const override 72 return RESOURCE_ENERGY;
81 melee_attack->reset();
99 void execute()
override 101 player->current.distance = melee_pos;
106 return timespan_t::from_seconds( ( player->current.distance - melee_pos ) / speed );
112 return ( player->current.distance > melee_pos );
115 bool usable_moving()
const override 121 action_t* create_action( util::string_view name, util::string_view options_str )
override 123 if ( name ==
"travel" )
126 return pet_t::create_action( name, options_str );
150 template <
class ACTION_BASE>
154 typedef ACTION_BASE ab;
165 if ( !ab::sim->report_pets_separately )
167 auto first_pet = p->owner->find_pet( p->name_str );
168 if ( first_pet && first_pet != p )
170 auto it = range::find( p->stats_list, ab::stats );
171 if ( it != p->stats_list.end() )
173 p->stats_list.erase( it );
175 ab::stats = first_pet->get_stats( ab::name_str,
this );
191 virtual void execute()
196 if ( ab::n_targets() != 0 && ab::target_list().size() == 0 )
204 return p()->o()->get_target_data( t );
209 return p()->o()->get_target_data( t );
214 return p()->get_target_data( t );
219 return p()->get_target_data( t );
232 school = SCHOOL_PHYSICAL;
233 weapon = &( p->main_hand_weapon );
234 weapon_multiplier = wm;
235 base_execute_time = weapon->swing_time;
236 may_crit = background = repeating =
true;
238 if ( p->dual_wield() )
241 oh->
school = SCHOOL_PHYSICAL;
242 oh->
weapon = &( p->off_hand_weapon );
250 void reset()
override 252 warlock_pet_action_t::reset();
259 return first ? 0_ms : warlock_pet_action_t::execute_time();
262 void execute()
override 268 if ( !player->executing && !player->channeling )
270 melee_attack_t::execute();
287 void _init_warlock_pet_melee_attack_t()
289 weapon = &( player->main_hand_weapon );
296 _init_warlock_pet_melee_attack_t();
302 _init_warlock_pet_melee_attack_t();
324 void init_base_stats()
override;
325 action_t* create_action( util::string_view, util::string_view )
override;
330 double firebolt_cost;
333 action_t* create_action( util::string_view, util::string_view )
override;
340 void init_base_stats()
override;
341 action_t* create_action( util::string_view, util::string_view )
override;
342 double composite_player_target_multiplier(
player_t*, school_e )
const override;
348 void init_base_stats()
override;
349 action_t* create_action( util::string_view, util::string_view )
override;
360 int demonic_strength_executes;
364 double min_energy_threshold;
365 double max_energy_threshold;
368 void init_base_stats()
override;
369 action_t* create_action( util::string_view, util::string_view )
override;
372 void queue_ds_felstorm();
382 double min_energy_threshold;
383 double max_energy_threshold;
386 void init_base_stats()
override;
387 action_t* create_action( util::string_view, util::string_view )
override;
389 void arise()
override;
396 bool demonic_consumption;
399 void init_base_stats()
override;
400 void create_actions()
override;
401 void schedule_ready(
timespan_t,
bool )
override;
402 void arise()
override;
403 void demise()
override;
404 void finish_moving()
override;
407 void reschedule_firebolt();
418 void init_base_stats()
override;
419 void create_actions()
override;
420 void schedule_ready(
timespan_t,
bool )
override;
421 void arise()
override;
422 void demise()
override;
423 void finish_moving()
override;
426 void reschedule_firebolt();
431 int dreadbite_executes;
434 void init_base_stats()
override;
435 void arise()
override;
436 void demise()
override;
438 action_t* create_action( util::string_view, util::string_view )
override;
443 int bile_spit_executes;
446 void init_base_stats()
override;
447 void arise()
override;
448 action_t* create_action( util::string_view, util::string_view )
override;
454 void demise()
override;
455 action_t* create_action( util::string_view, util::string_view )
override;
458 namespace random_demons
463 void init_base_stats()
override;
464 void arise()
override;
465 action_t* create_action( util::string_view, util::string_view )
override;
471 void init_base_stats()
override;
472 void arise()
override;
473 action_t* create_action( util::string_view, util::string_view )
override;
479 action_t* create_action( util::string_view, util::string_view )
override;
485 void init_base_stats()
override;
486 void arise()
override;
487 action_t* create_action( util::string_view, util::string_view )
override;
493 void init_base_stats()
override;
494 void arise()
override;
495 action_t* create_action( util::string_view, util::string_view )
override;
501 void init_base_stats()
override;
502 void arise()
override;
503 action_t* create_action( util::string_view, util::string_view )
override;
509 void init_base_stats()
override;
510 void arise()
override;
511 action_t* create_action( util::string_view, util::string_view )
override;
517 void init_base_stats()
override;
518 void arise()
override;
519 action_t* create_action( util::string_view, util::string_view )
override;
525 void init_base_stats()
override;
526 void arise()
override;
527 void demise()
override;
528 action_t* create_action( util::string_view, util::string_view )
override;
534 void arise()
override;
535 void demise()
override;
536 void init_base_stats()
override;
542 namespace destruction
549 void init_base_stats()
override;
550 void create_buffs()
override;
551 void arise()
override;
552 void demise()
override;
559 void init_base_stats()
override;
568 action_t* create_action( util::string_view , util::string_view )
override;
bool ready() override
Is the ability ready based on spell characteristics.
Definition: sc_warlock_pets.hpp:109
Definition: sc_warlock_pets.hpp:555
Definition: sc_demon_hunter.cpp:42
Definition: sc_warlock_pets.hpp:531
Definition: sc_death_knight.cpp:45
A simple warlock pet that has a potential melee attack, and a single on-cooldown special ability that...
Definition: sc_warlock_pets.hpp:140
Definition: sc_warlock_pets.hpp:321
Definition: attack.hpp:75
Definition: cooldown.hpp:26
Definition: sc_warlock_pets.hpp:482
Definition: sc_warlock_pets.hpp:87
Definition: sc_warlock_pets.hpp:306
Definition: sc_warlock_pets.hpp:565
Definition: sc_warlock_pets.hpp:392
Definition: target_specific.hpp:20
Definition: sc_warlock_pets.hpp:460
Definition: sc_warlock_pets.hpp:337
Definition: sc_warlock_pets.hpp:476
school_e school
What type of damage this spell does.
Definition: action.hpp:74
Definition: spell_data.hpp:398
Definition: sc_warlock_pets.hpp:151
Definition: sc_warlock_pets.hpp:356
Definition: sc_warlock.hpp:33
Definition: sc_warlock_pets.hpp:17
Definition: sc_warlock_pets.hpp:429
Definition: sc_warlock_pets.hpp:506
Definition: sc_warlock_pets.hpp:544
Definition: action.hpp:47
virtual void arise() override
Player arises from the dead.
Definition: sc_warlock_pets.hpp:78
Definition: sc_warlock_pets.hpp:522
Definition: generic.hpp:567
Definition: sc_warlock_pets.hpp:490
Definition: sc_warlock_pets.hpp:32
double base_multiplier
base damage multiplier (direct and tick damage)
Definition: action.hpp:329
Definition: sc_warlock_pets.hpp:26
virtual void arise()
Player arises from the dead.
Definition: player.cpp:5848
Definition: sc_warlock_pets.hpp:328
Definition: sc_warlock.cpp:11
Definition: sc_shaman.cpp:2212
Definition: sc_warlock_pets.hpp:441
Definition: sc_warlock_pets.hpp:451
bool background
Enables/Disables direct execution of the ability in an action list.
Definition: action.hpp:131
weapon_t * weapon
Weapon used for this ability. If set extra weapon damage is calculated.
Definition: action.hpp:63
double weapon_multiplier
Weapon damage for the ability.
Definition: action.hpp:340
Definition: sc_warlock_pets.hpp:375
Definition: sc_warlock_pets.hpp:468
Definition: sc_warlock_pets.hpp:224
Class for representing InGame time.
Definition: timespan.hpp:37
Definition: player.hpp:109
Definition: sc_warlock_pets.hpp:410
timespan_t time_to_execute
Last available, effectively used execute time.
Definition: action.hpp:429
Definition: sc_warlock.hpp:89
timespan_t base_execute_time
Amount of time the ability uses to execute before modifiers.
Definition: action.hpp:296
Definition: sc_warlock_pets.hpp:514
Definition: actor_target_data.hpp:15
Definition: sc_warlock_pets.hpp:498
Definition: sc_warlock_pets.hpp:345
Definition: sc_warlock_pets.hpp:284