TrinityCore
UnitAI Class Referenceabstract

#include <UnitAI.h>

Public Member Functions

 UnitAI (Unit *unit)
 
virtual ~UnitAI ()
 
virtual bool CanAIAttack (Unit const *) const
 
virtual void AttackStart (Unit *)
 
virtual void UpdateAI (uint32 diff)=0
 
virtual void InitializeAI ()
 
virtual void Reset ()
 
virtual void OnCharmed (bool isNew)
 
virtual void DoAction (int32)
 
virtual uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void SetGUID (ObjectGuid const &, int32=0)
 
virtual ObjectGuid GetGUID (int32=0) const
 
UnitSelectTarget (SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
UnitSelectTarget (SelectTargetMethod targetType, uint32 offset, PREDICATE const &predicate)
 
void SelectTargetList (std::list< Unit *> &targetList, uint32 num, SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
void SelectTargetList (std::list< Unit *> &targetList, uint32 num, SelectTargetMethod targetType, uint32 offset, PREDICATE const &predicate)
 
virtual void JustEnteredCombat (Unit *)
 
virtual void JustExitedCombat ()
 
virtual void LeavingWorld ()
 
virtual void DamageDealt (Unit *, uint32 &, DamageEffectType)
 
virtual void DamageTaken (Unit *, uint32 &, DamageEffectType, SpellInfo const *)
 
virtual void HealReceived (Unit *, uint32 &)
 
virtual void HealDone (Unit *, uint32 &)
 
virtual void SpellInterrupted (uint32, uint32)
 
void AttackStartCaster (Unit *victim, float dist)
 
SpellCastResult DoCast (uint32 spellId)
 
SpellCastResult DoCast (Unit *victim, uint32 spellId, CastSpellExtraArgs const &args={})
 
SpellCastResult DoCastSelf (uint32 spellId, CastSpellExtraArgs const &args={})
 
SpellCastResult DoCastVictim (uint32 spellId, CastSpellExtraArgs const &args={})
 
SpellCastResult DoCastAOE (uint32 spellId, CastSpellExtraArgs const &args={})
 
virtual bool ShouldSparWith (Unit const *) const
 
void DoMeleeAttackIfReady ()
 
bool DoSpellAttackIfReady (uint32 spellId)
 
virtual void OnGameEvent (bool, uint16)
 
virtual std::string GetDebugInfo () const
 

Static Public Member Functions

static void FillAISpellInfo ()
 

Static Public Attributes

static std::unordered_map< std::pair< uint32, Difficulty >, AISpellInfoTypeAISpellInfo
 

Protected Attributes

Unit *const me
 

Private Member Functions

 UnitAI (UnitAI const &right)=delete
 
UnitAIoperator= (UnitAI const &right)=delete
 
ThreatManagerGetThreatManager ()
 
void SortByDistance (std::list< Unit *> &list, bool ascending=true)
 

Constructor & Destructor Documentation

◆ UnitAI() [1/2]

UnitAI::UnitAI ( Unit unit)
inlineexplicit
138 : me(unit) { }
Unit *const me
Definition: UnitAI.h:136

◆ ~UnitAI()

virtual UnitAI::~UnitAI ( )
inlinevirtual
139 { }

◆ UnitAI() [2/2]

UnitAI::UnitAI ( UnitAI const &  right)
privatedelete

Member Function Documentation

◆ AttackStart()

void UnitAI::AttackStart ( Unit victim)
virtual

Reimplemented in npc_spirit_bomb, npc_the_lich_king_tirion_dawn::npc_the_lich_king_tirion_dawnAI, npc_gunship_gunner, npc_scion_of_eternity, npc_phoenix_egg_tk, boss_julianne::boss_julianneAI, boss_grand_astromancer_capernian, npc_lord_illidan_stormrage::npc_lord_illidan_stormrageAI, advisorbase_ai, npc_ashtongue_sorcerer, boss_faction_championsAI, npc_kelthuzad_minionAI, boss_roar::boss_roarAI, boss_veklor::boss_veklorAI, npc_felmyst_trail::npc_felmyst_trailAI, npc_flame_patch_alar, boss_tinhead::boss_tinheadAI, npc_highlord_darion_mograine::npc_highlord_darion_mograineAI, npc_twisted_visage, npc_snobold_vassal, npc_living_mojo, npc_egg_pile::npc_egg_pileAI, boss_alythess::boss_alythessAI, npc_molten_golem, npc_lesser_shadow_fissure::npc_lesser_shadow_fissureAI, npc_molten_barrage::npc_molten_barrageAI, boss_strawman::boss_strawmanAI, boss_deathbringer_saurfang, npc_annhylde_the_caller, boss_valithria_dreamwalker, npc_weegli_blastfuse::npc_weegli_blastfuseAI, npc_warden_mellichar, npc_hive_zara_larva::npc_hive_zara_larvaAI, boss_lady_deathwhisper, boss_archmage_arugal::boss_archmage_arugalAI, boss_olm_the_summoner::boss_olm_the_summonerAI, npc_icefang, boss_alar, boss_dorothee::boss_dorotheeAI, boss_brutallus::boss_brutallusAI, boss_felmyst::boss_felmystAI, npc_medivh_bm, boss_grand_warlock_nethekurse::boss_grand_warlock_nethekurseAI, boss_ingvar_the_plunderer, boss_tyrannus, ScriptedAI, boss_urom, boss_volkhan, boss_gurtogg_bloodboil, SmartAI, boss_novos, npc_millhouse_manastorm, VehicleAI, TurretAI, ArcherAI, npc_mageguard_dalaran, CasterAI, NullCreatureAI, PossessedAI, PetAI, TotemAI, PassiveAI, and ScheduledChangeAI.

29 {
30  if (victim && me->Attack(victim, true))
31  {
32  // Clear distracted state on attacking
34  {
36  me->GetMotionMaster()->Clear();
37  }
38  me->GetMotionMaster()->MoveChase(victim);
39  }
40 }
bool Attack(Unit *victim, bool meleeAttack)
Definition: Unit.cpp:5514
MotionMaster * GetMotionMaster()
Definition: Unit.h:1736
Unit *const me
Definition: UnitAI.h:136
Definition: Unit.h:254
void ClearUnitState(uint32 f)
Definition: Unit.h:851
bool HasUnitState(const uint32 f) const
Definition: Unit.h:850
void Clear()
Definition: MotionMaster.cpp:433
void MoveChase(Unit *target, Optional< ChaseRange > dist={}, Optional< ChaseAngle > angle={})
Definition: MotionMaster.cpp:618
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AttackStartCaster()

void UnitAI::AttackStartCaster ( Unit victim,
float  dist 
)
55 {
56  if (victim && me->Attack(victim, false))
57  me->GetMotionMaster()->MoveChase(victim, dist);
58 }
bool Attack(Unit *victim, bool meleeAttack)
Definition: Unit.cpp:5514
MotionMaster * GetMotionMaster()
Definition: Unit.h:1736
Unit *const me
Definition: UnitAI.h:136
void MoveChase(Unit *target, Optional< ChaseRange > dist={}, Optional< ChaseAngle > angle={})
Definition: MotionMaster.cpp:618
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CanAIAttack()

◆ DamageDealt()

virtual void UnitAI::DamageDealt ( Unit ,
uint32 ,
DamageEffectType   
)
inlinevirtual

Reimplemented in npc_ball_of_flame, BloodPrincesBossAI, player_overlord_brandAI, and SmartAI.

301 { }
+ Here is the caller graph for this function:

◆ DamageTaken()

virtual void UnitAI::DamageTaken ( Unit ,
uint32 ,
DamageEffectType  ,
SpellInfo const *   
)
inlinevirtual

Reimplemented in npc_uther_quel_delar::npc_uther_quel_delarAI, npc_terenas_menethil, npc_maiev, npc_training_dummy, npc_immortal_guardian::npc_immortal_guardianAI, npc_gunship_boarding_addAI, npc_valkyr_shadowguard, npc_shambling_horror_icc, npc_muradin_bronzebeard_igb, boss_romulo::boss_romuloAI, npc_akama_illidan, npc_the_lich_king_escape_hor::npc_the_lich_king_escape_horAI, npc_thorim_pre_phase::npc_thorim_pre_phaseAI, boss_julianne::boss_julianneAI, boss_aerial_command_unit::boss_aerial_command_unitAI, npc_volatile_felfire_fiend::npc_volatile_felfire_fiendAI, npc_dark_nucleus, boss_brain_of_yogg_saron::boss_brain_of_yogg_saronAI, npc_ashtongue_spiritbinder, npc_high_overlord_saurfang_igb, boss_vx_001::boss_vx_001AI, npc_tesla, npc_pool_of_tar::npc_pool_of_tarAI, boss_thorim::boss_thorimAI, npc_collapsing_star, npc_jaina_or_sylvanas_escape_hor::npc_jaina_or_sylvanas_escape_horAI, boss_cthun::cthunAI, boss_elder_stonebark::boss_elder_stonebarkAI, advisorbase_ai, npc_feugen, npc_gothik_trigger, boss_flame_leviathan_defense_turret::boss_flame_leviathan_defense_turretAI, boss_malygos, boss_sara::boss_saraAI, boss_illidan_stormrage, boss_leviathan_mk_ii::boss_leviathan_mk_iiAI, npc_gunship::npc_gunshipAI, npc_reliquary_combat_trigger, npc_crok_scourgebane, npc_anubarak_spike, boss_the_lich_king, npc_nagrand_banner::npc_warmaul_shamanAI, npc_enslaved_soul, boss_taerar::boss_taerarAI, npc_nagrand_banner::npc_giselda_the_croneAI, npc_frost_sphere, npc_wild_wyrm, npc_death_knight_initiate::npc_death_knight_initiateAI, npc_boombot, npc_nagrand_banner::npc_kil_sorrow_deathswornAI, npc_gothik_minion_baseAI, npc_stalagg, npc_magister_aledis::npc_magister_aledisAI, boss_razorscale, npc_nagrand_banner::npc_kil_sorrow_spellbinderAI, npc_anub_ar_crusher, boss_emeriss::boss_emerissAI, npc_scourge_hulk, npc_ember_of_alar, BloodPrincesBossAI, boss_shade_of_aran::boss_aranAI, boss_sathrovarr, boss_twilight_halion::boss_twilight_halionAI, boss_kaelthas, boss_algalon_the_observer, boss_headless_horseman, npc_feral_defender, boss_essence_of_desire, npc_saronite_vapors::npc_saronite_vaporsAI, boss_eye_of_cthun::eye_of_cthunAI, boss_lady_deathwhisper, boss_sindragosa, npc_felblood_kaelthas_phoenix, npc_molten_golem, boss_archimonde::boss_archimondeAI, npc_akama_shade, boss_hodir::boss_hodirAI, npc_brann_hos, boss_gothik, boss_lethon::boss_lethonAI, boss_kalecgos_human, boss_hadronox, boss_deathbringer_saurfang, boss_valithria_dreamwalker, boss_high_inquisitor_whitemane, boss_anub_arak, boss_professor_putricide, boss_freya::boss_freyaAI, npc_iron_construct::npc_iron_constructAI, boss_paletress::boss_paletressAI, boss_urom, boss_essence_of_suffering, boss_midnight::boss_midnightAI, npc_ohgan, npc_ice_block::npc_ice_blockAI, boss_drakkari_elemental, boss_halion::boss_halionAI, boss_ysondre::boss_ysondreAI, boss_kelthuzad, IllidariCouncilBossAI, boss_muru, boss_black_knight::boss_black_knightAI, boss_garothi_worldbreaker, npc_ichor_globule, npc_baltharus_the_warborn_clone, boss_felmyst::boss_felmystAI, npc_vrykul_skeleton, npc_doomfire_targetting::npc_doomfire_targettingAI, boss_prince_taldaram, boss_skarvald_the_constructor, boss_jedoga_shadowseeker, boss_kalecgos, npc_tournament_training_dummy, boss_ymiron, boss_volazj, boss_eadric::boss_eadricAI, boss_alar, boss_nightbane::boss_nightbaneAI, boss_magtheridon, boss_ionar, boss_coren_direbrew, npc_tiger_matriarch, npc_doomfire::npc_doomfireAI, boss_eregos, boss_doomrel::boss_doomrelAI, boss_felblood_kaelthas, boss_loken, boss_mandokir, boss_sapphiron, netherspite_infernal::netherspite_infernalAI, boss_noth, boss_drakkari_colossus, boss_scarlet_commander_mograine, boss_keristrasza, boss_slabhide::boss_slabhideAI, boss_slad_ran, boss_apothecary_hummel, boss_baltharus_the_warborn, boss_sjonnir, boss_mother_shahraz, SmartAI, npc_core_rager, npc_ancient_wisp::npc_ancient_wispAI, npc_firesworn, boss_randolph_moloch, boss_earthrager_ptah::boss_earthrager_ptahAI, npc_inner_demon::npc_inner_demonAI, boss_garfrost, boss_darkweaver_syth, boss_talon_king_ikiss, boss_attumen::boss_attumenAI, npc_sc_millhouse_manastorm::npc_sc_millhouse_manastormAI, boss_temple_guardian_anhuur::boss_temple_guardian_anhuurAI, boss_ingvar_the_plunderer, boss_exarch_maladaar, boss_viscidus::boss_viscidusAI, boss_razorgore, boss_hogger, boss_ozruk::boss_ozrukAI, boss_bronjahm, npc_blackfathom_deeps_event, boss_twinemperorsAI, boss_balinda, boss_vexallus::boss_vexallusAI, npc_big_earl::npc_big_earlAI, boss_herod, boss_ormorok, boss_anzu, boss_pathaleon_the_calculator, boss_thorngrin_the_tender::boss_thorngrin_the_tenderAI, npc_naga_distiller::npc_naga_distillerAI, boss_commander_sarannis, boss_curator::boss_curatorAI, boss_high_inquisitor_fairbanks, boss_falric::boss_falricAI, npc_unkor_the_ruthless::npc_unkor_the_ruthlessAI, boss_interrogator_vishas, boss_kormok::boss_kormokAI, boss_moam::boss_moamAI, boss_mal_ganis::boss_mal_ganisAI, boss_kurinnaxx::boss_kurinnaxxAI, boss_bloodmage_thalnos, boss_eck, boss_golemagg, npc_argent_valiant, boss_pit_lord_argaloth::boss_pit_lord_argalothAI, npc_dumpy_and_keeshan::npc_dumpy_and_keeshanAI, boss_general_angerforge::boss_general_angerforgeAI, boss_magmus::boss_magmusAI, boss_vectus::boss_vectusAI, boss_aku_mai, boss_mother_smolderweb, boss_azshir_the_sleepless, boss_ironaya, boss_death_knight_darkreaver::boss_death_knight_darkreaverAI, PetAI, and hyjal_trashAI.

305 { }
+ Here is the caller graph for this function:

◆ DoAction()

virtual void UnitAI::DoAction ( int32  )
inlinevirtual

Reimplemented in npc_uther_quel_delar::npc_uther_quel_delarAI, npc_turned_champion::npc_turned_championAI, npc_broken_frostmourne, npc_spring_rabbit::npc_spring_rabbitAI, npc_yogg_saron_keeper::npc_yogg_saron_keeperAI, npc_terenas_menethil, npc_maiev, npc_sif::npc_sifAI, npc_strangulate_vehicle, npc_mimiron_computer::npc_mimiron_computerAI, npc_runic_colossus::npc_runic_colossusAI, npc_parasitic_shadowfiend, npc_arcane_overload, npc_raging_spirit, npc_thorim_minibossAI, npc_hidden_cultist, npc_roger_owens::npc_roger_owensAI, npc_nexus_lord, npc_lorekeeper::npc_lorekeeperAI, npc_caster_hover_disk, npc_tirion_fordring_tft, boss_aerial_command_unit::boss_aerial_command_unitAI, npc_ominous_cloud::npc_ominous_cloudAI, npc_trapped_mammoth_calf, npc_melee_hover_disk, npc_sergeant_morigan::npc_sergeant_moriganAI, npc_muradin_bronzebeard_igb, npc_akama_illidan, boss_brain_of_yogg_saron::boss_brain_of_yogg_saronAI, npc_meteor_strike::npc_meteor_strikeAI, npc_ashtongue_broken, npc_icc_nerubar_broodkeeper, boss_yogg_saron::boss_yogg_saronAI, npc_meteor_strike_initial::npc_meteor_strike_initialAI, npc_kinetic_bomb, boss_icehowl, npc_expedition_engineer, boss_elder_ironbranch::boss_elder_ironbranchAI, boss_vx_001::boss_vx_001AI, npc_saurfang_event, npc_ball_of_flame, npc_orb_carrier::npc_orb_carrierAI, npc_expedition_trapper, boss_sara::boss_saraAI, npc_expedition_defender, boss_elder_stonebark::boss_elder_stonebarkAI, npc_high_overlord_saurfang_igb, npc_brann_bronzebeard_algalon, npc_bartleby_battson::npc_bartleby_battsonAI, boss_cthun::cthunAI, npc_blood_queen_lana_thel, npc_jaina_or_sylvanas_escape_hor::npc_jaina_or_sylvanas_escape_horAI, npc_muradin_bronzebeard_icc, npc_argent_captainAI, DarkFallenAI, npc_varian_toc, npc_rimefang_icc, npc_jena_anderson::npc_jena_andersonAI, boss_thorim::boss_thorimAI, npc_rocket_propelled_warhead, boss_elder_brightleaf::boss_elder_brightleafAI, npc_expedition_commander, npc_kelthuzad_guardian, npc_garrosh_toc, npc_icc_orb_controller, npc_living_constellation, boss_leviathan_mk_ii::boss_leviathan_mk_iiAI, npc_feugen, boss_jormungarAI, npc_demolitionist_legoso::npc_demolitionist_legosoAI, npc_reliquary_combat_trigger, npc_spinestalker, npc_risen_archmage, npc_high_overlord_saurfang_icc, npc_halion_controller::npc_halion_controllerAI, npc_pulsing_pumpkin, npc_arthas_stratholme::npc_arthas_stratholmeAI, npc_creature_generator_akama, npc_martha_goslin::npc_martha_goslinAI, boss_voice_of_yogg_saron::boss_voice_of_yogg_saronAI, npc_enslaved_soul, npc_ice_tomb, boss_the_lich_king, npc_beasts_combat_stalker, boss_illidan_stormrage, npc_gothik_minion_baseAI, BloodPrincesBossAI, boss_deathbringer_saurfang, npc_crok_scourgebane, npc_green_dragon_combat_trigger, npc_nerubian_burrower, npc_wild_wyrm, boss_kelthuzad, npc_frost_freeze_trap, boss_hodir::boss_hodirAI, boss_stormcaller_brundir::boss_stormcaller_brundirAI, boss_flame_leviathan::boss_flame_leviathanAI, boss_archimonde::boss_archimondeAI, npc_stalagg, npc_midsummer_bunny_pole::npc_midsummer_bunny_poleAI, npc_simon_bunny::npc_simon_bunnyAI, npc_swarm_scarab, boss_malygos, npc_snobold_vassal, npc_egg_pile::npc_egg_pileAI, npc_sinclari_vh, boss_professor_putricide, npc_twilight_volunteer, npc_akama_shade, boss_headless_horseman, npc_tirion_toc, npc_xt002_heart, boss_mimiron::boss_mimironAI, boss_sister_svalna, boss_high_nethermancer_zerevor, npc_hadronox_crusherPackAI, boss_gothik, boss_razorscale, boss_kaelthas, npc_ahune_bunny, npc_direbrew_antagonist, npc_chained_spirit, npc_brann_bronzebeard_anraphet::npc_brann_bronzebeard_anraphetAI, boss_krick, boss_blood_council_controller, PalehoofMinionsBossAI, boss_lord_marrowgar, boss_runemaster_molgeim::boss_runemaster_molgeimAI, boss_anub_arak, boss_rimefang, boss_sindragosa, boss_algalon_the_observer, npc_big_ooze, boss_valithria_dreamwalker, npc_frozen_core, npc_barada::npc_baradaAI, boss_twin_baseAI, boss_drakkari_elemental, npc_apothecary_genericAI, boss_palehoof, boss_gluth, boss_general_vezax::boss_general_vezaxAI, npc_fiendish_portal::npc_fiendish_portalAI, npc_sironas::npc_sironasAI, boss_blood_queen_lana_thel, boss_lady_deathwhisper, boss_hadronox, boss_thaddius, npc_snufflenose_gopher::npc_snufflenose_gopherAI, boss_jedoga_shadowseeker, boss_skadi, npc_azure_ring_captain, boss_ahune, boss_sapphiron, npc_headless_horseman_head, boss_krik_thir, npc_volcano, boss_tyrannus, npc_ethereal_sphere, boss_xt002, boss_ignis::boss_ignis_AI, boss_anraphet::boss_anraphetAI, boss_ick, boss_sjonnir, boss_kalecgos, boss_steelbreaker::boss_steelbreakerAI, boss_mandokir, boss_majordomo, boss_auriaya, SmartAI, boss_baleroc, npc_void_sentry, boss_four_horsemen_baseAI, boss_reliquary_of_souls, boss_novos, boss_magtheridon, boss_coren_direbrew, boss_temple_guardian_anhuur::boss_temple_guardian_anhuurAI, boss_slabhide::boss_slabhideAI, boss_magus_telestra, npc_sergeant_bly::npc_sergeant_blyAI, boss_nightbane::boss_nightbaneAI, boss_jaraxxus, boss_eregos, boss_ossirian::boss_ossirianAI, npc_thalorien_dawnseeker, generic_boss_controllerAI, boss_ingvar_the_plunderer, boss_infinite_corruptor::boss_infinite_corruptorAI, npc_colonel_jules::npc_colonel_julesAI, boss_high_king_maulgar::boss_high_king_maulgarAI, boss_apothecary_hummel, boss_drakkari_colossus, boss_teron_gorefiend, boss_alizabal::boss_alizabalAI, boss_najentus, npc_voljin_zulaman::npc_voljin_zulamanAI, boss_broggok::boss_broggokAI, boss_ichoron, boss_razorgore, boss_corborus::boss_corborusAI, boss_balinda, boss_buru::boss_buruAI, boss_warchief_kargath_bladefist::boss_warchief_kargath_bladefistAI, boss_selin_fireheart::boss_selin_fireheartAI, boss_moam::boss_moamAI, boss_king_dred, boss_ambassador_hellmaw, npc_ioc_gunship_captain, boss_baltharus_the_warborn, npc_xerestrasza, boss_galvangar, and boss_horAI.

156 { }
+ Here is the caller graph for this function:

◆ DoCast() [1/2]

SpellCastResult UnitAI::DoCast ( uint32  spellId)
113 {
114  Unit* target = nullptr;
115  AITarget aiTargetType = AITARGET_SELF;
116  if (AISpellInfoType const* info = GetAISpellInfo(spellId, me->GetMap()->GetDifficultyID()))
117  aiTargetType = info->target;
118 
119  switch (aiTargetType)
120  {
121  default:
122  case AITARGET_SELF:
123  target = me;
124  break;
125  case AITARGET_VICTIM:
126  target = me->GetVictim();
127  break;
128  case AITARGET_ENEMY:
129  {
130  if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId, me->GetMap()->GetDifficultyID()))
131  {
132  DefaultTargetSelector targetSelectorInner(me, spellInfo->GetMaxRange(false), false, true, 0);
133  auto targetSelector = [&](Unit const* candidate) -> bool
134  {
135  if (!candidate->IsPlayer())
136  {
137  if (spellInfo->HasAttribute(SPELL_ATTR3_ONLY_ON_PLAYER))
138  return false;
139 
140  if (spellInfo->HasAttribute(SPELL_ATTR5_NOT_ON_PLAYER_CONTROLLED_NPC) && candidate->IsControlledByPlayer())
141  return false;
142  }
143  else if (spellInfo->HasAttribute(SPELL_ATTR5_NOT_ON_PLAYER))
144  return false;
145 
146  return targetSelectorInner(candidate);
147  };
148  target = SelectTarget(SelectTargetMethod::Random, 0, targetSelector);
149  }
150  break;
151  }
152  case AITARGET_ALLY:
153  target = me;
154  break;
155  case AITARGET_BUFF:
156  target = me;
157  break;
158  case AITARGET_DEBUFF:
159  {
160  if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId, me->GetMap()->GetDifficultyID()))
161  {
162  float range = spellInfo->GetMaxRange(false);
163 
164  DefaultTargetSelector targetSelectorInner(me, range, false, true, -(int32)spellId);
165  auto targetSelector = [&](Unit const* candidate) -> bool
166  {
167  if (!candidate->IsPlayer())
168  {
169  if (spellInfo->HasAttribute(SPELL_ATTR3_ONLY_ON_PLAYER))
170  return false;
171 
172  if (spellInfo->HasAttribute(SPELL_ATTR5_NOT_ON_PLAYER_CONTROLLED_NPC) && candidate->IsControlledByPlayer())
173  return false;
174  }
175  else if (spellInfo->HasAttribute(SPELL_ATTR5_NOT_ON_PLAYER))
176  return false;
177 
178  return targetSelectorInner(candidate);
179  };
180  if (!spellInfo->HasAuraInterruptFlag(SpellAuraInterruptFlags::NOT_VICTIM) && targetSelector(me->GetVictim()))
181  target = me->GetVictim();
182  else
183  target = SelectTarget(SelectTargetMethod::Random, 0, targetSelector);
184  }
185  break;
186  }
187  }
188 
189  if (target)
190  return me->CastSpell(target, spellId, false);
191 
193 }
Difficulty GetDifficultyID() const
Definition: Map.h:401
Definition: CreatureAIImpl.h:41
Definition: CreatureAIImpl.h:38
Definition: SpellInfo.h:342
AISpellInfoType * GetAISpellInfo(uint32 spellId, Difficulty difficulty)
Definition: CreatureAI.cpp:38
Definition: SharedDefines.h:526
Definition: CreatureAIImpl.h:40
Unit *const me
Definition: UnitAI.h:136
Unit * SelectTarget(SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
Definition: UnitAI.cpp:102
Definition: SharedDefines.h:600
Map * GetMap() const
Definition: Object.h:555
Definition: CreatureAIImpl.h:39
Definition: SharedDefines.h:1457
#define sSpellMgr
Definition: SpellMgr.h:825
int32_t int32
Definition: Define.h:139
Definition: CreatureAIImpl.h:36
Definition: UnitAI.h:60
Unit * GetVictim() const
Definition: Unit.h:833
Definition: CreatureAIImpl.h:37
Definition: Unit.h:746
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition: Object.cpp:2730
AITarget
Definition: CreatureAIImpl.h:34
Definition: CreatureAIImpl.h:75
Definition: SharedDefines.h:599
+ Here is the call graph for this function:

◆ DoCast() [2/2]

SpellCastResult UnitAI::DoCast ( Unit victim,
uint32  spellId,
CastSpellExtraArgs const &  args = {} 
)
196 {
199 
200  return me->CastSpell(victim, spellId, args);
201 }
Definition: SharedDefines.h:1569
Unit *const me
Definition: UnitAI.h:136
Definition: Unit.h:257
bool HasUnitState(const uint32 f) const
Definition: Unit.h:850
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition: Object.cpp:2730
Will ignore aura scaling.
Definition: SpellDefines.h:246
+ Here is the call graph for this function:

◆ DoCastAOE()

SpellCastResult UnitAI::DoCastAOE ( uint32  spellId,
CastSpellExtraArgs const &  args = {} 
)
inline
323 {}) { return DoCast(nullptr, spellId, args); }
SpellCastResult DoCast(uint32 spellId)
Definition: UnitAI.cpp:112

◆ DoCastSelf()

SpellCastResult UnitAI::DoCastSelf ( uint32  spellId,
CastSpellExtraArgs const &  args = {} 
)
inline
321 {}) { return DoCast(me, spellId, args); }
Unit *const me
Definition: UnitAI.h:136
SpellCastResult DoCast(uint32 spellId)
Definition: UnitAI.cpp:112

◆ DoCastVictim()

SpellCastResult UnitAI::DoCastVictim ( uint32  spellId,
CastSpellExtraArgs const &  args = {} 
)
204 {
205  if (Unit* victim = me->GetVictim())
206  return DoCast(victim, spellId, args);
207 
209 }
Unit *const me
Definition: UnitAI.h:136
Definition: SharedDefines.h:1457
Unit * GetVictim() const
Definition: Unit.h:833
SpellCastResult DoCast(uint32 spellId)
Definition: UnitAI.cpp:112
Definition: Unit.h:746
+ Here is the call graph for this function:

◆ DoMeleeAttackIfReady()

void UnitAI::DoMeleeAttackIfReady ( )
61 {
63  return;
64 
65  Unit* victim = me->GetVictim();
66 
67  if (!me->IsWithinMeleeRange(victim))
68  return;
69 
70  //Make sure our attack is ready and we aren't currently casting before checking distance
71  if (me->isAttackReady())
72  {
73  me->AttackerStateUpdate(victim);
75  }
76 
78  {
81  }
82 }
void AttackerStateUpdate(Unit *victim, WeaponAttackType attType=BASE_ATTACK, bool extra=false)
Definition: Unit.cpp:2030
Unit *const me
Definition: UnitAI.h:136
Definition: Unit.h:257
bool IsWithinMeleeRange(Unit const *obj) const
Definition: Unit.h:817
bool isAttackReady(WeaponAttackType type=BASE_ATTACK) const
Definition: Unit.h:808
bool HasUnitState(const uint32 f) const
Definition: Unit.h:850
void resetAttackTimer(WeaponAttackType type=BASE_ATTACK)
Definition: Unit.cpp:609
Unit * GetVictim() const
Definition: Unit.h:833
bool haveOffhandWeapon() const
Definition: Unit.cpp:518
Definition: Unit.h:746
Definition: SharedDefines.h:6548
+ Here is the call graph for this function:

◆ DoSpellAttackIfReady()

bool UnitAI::DoSpellAttackIfReady ( uint32  spellId)
85 {
87  return true;
88 
89  if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId, me->GetMap()->GetDifficultyID()))
90  {
91  if (me->IsWithinCombatRange(me->GetVictim(), spellInfo->GetMaxRange(false)))
92  {
93  me->CastSpell(me->GetVictim(), spellId, me->GetMap()->GetDifficultyID());
95  return true;
96  }
97  }
98 
99  return false;
100 }
Difficulty GetDifficultyID() const
Definition: Map.h:401
Definition: SpellInfo.h:342
Unit *const me
Definition: UnitAI.h:136
Definition: Unit.h:257
Map * GetMap() const
Definition: Object.h:555
bool isAttackReady(WeaponAttackType type=BASE_ATTACK) const
Definition: Unit.h:808
bool IsWithinCombatRange(Unit const *obj, float dist2compare) const
Definition: Unit.cpp:614
bool HasUnitState(const uint32 f) const
Definition: Unit.h:850
#define sSpellMgr
Definition: SpellMgr.h:825
void resetAttackTimer(WeaponAttackType type=BASE_ATTACK)
Definition: Unit.cpp:609
Unit * GetVictim() const
Definition: Unit.h:833
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition: Object.cpp:2730
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ FillAISpellInfo()

void UnitAI::FillAISpellInfo ( )
static
214 {
215  sSpellMgr->ForEachSpellInfo([](SpellInfo const* spellInfo)
216  {
217  AISpellInfoType* AIInfo = &AISpellInfo[{ spellInfo->Id, spellInfo->Difficulty }];
218 
220  AIInfo->condition = AICOND_DIE;
221  else if (spellInfo->IsPassive() || spellInfo->GetDuration() == -1)
222  AIInfo->condition = AICOND_AGGRO;
223  else
224  AIInfo->condition = AICOND_COMBAT;
225 
226  if (AIInfo->cooldown.count() < int32(spellInfo->RecoveryTime))
227  AIInfo->cooldown = Milliseconds(spellInfo->RecoveryTime);
228 
229  if (spellInfo->GetMaxRange(false))
230  {
231  for (SpellEffectInfo const& effect : spellInfo->GetEffects())
232  {
233  uint32 targetType = effect.TargetA.GetTarget();
234 
235  if (targetType == TARGET_UNIT_TARGET_ENEMY
236  || targetType == TARGET_DEST_TARGET_ENEMY)
238  else if (targetType == TARGET_UNIT_DEST_AREA_ENEMY)
240 
241  if (effect.Effect == SPELL_EFFECT_APPLY_AURA)
242  {
243  if (targetType == TARGET_UNIT_TARGET_ENEMY)
245  else if (spellInfo->IsPositive())
247  }
248  }
249  }
250  AIInfo->realCooldown = Milliseconds(spellInfo->RecoveryTime + spellInfo->StartRecoveryTime);
251  AIInfo->maxRange = spellInfo->GetMaxRange(false) * 3 / 4;
252 
253  AIInfo->Effects = 0;
254  AIInfo->Targets = 0;
255 
256  for (SpellEffectInfo const& spellEffectInfo : spellInfo->GetEffects())
257  {
258  // Spell targets self.
259  if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER)
260  AIInfo->Targets |= 1 << (SELECT_TARGET_SELF - 1);
261 
262  // Spell targets a single enemy.
263  if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_ENEMY ||
264  spellEffectInfo.TargetA.GetTarget() == TARGET_DEST_TARGET_ENEMY)
265  AIInfo->Targets |= 1 << (SELECT_TARGET_SINGLE_ENEMY - 1);
266 
267  // Spell targets AoE at enemy.
268  if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_SRC_AREA_ENEMY ||
269  spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_DEST_AREA_ENEMY ||
270  spellEffectInfo.TargetA.GetTarget() == TARGET_SRC_CASTER ||
271  spellEffectInfo.TargetA.GetTarget() == TARGET_DEST_DYNOBJ_ENEMY)
272  AIInfo->Targets |= 1 << (SELECT_TARGET_AOE_ENEMY - 1);
273 
274  // Spell targets an enemy.
275  if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_ENEMY ||
276  spellEffectInfo.TargetA.GetTarget() == TARGET_DEST_TARGET_ENEMY ||
277  spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_SRC_AREA_ENEMY ||
278  spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_DEST_AREA_ENEMY ||
279  spellEffectInfo.TargetA.GetTarget() == TARGET_SRC_CASTER ||
280  spellEffectInfo.TargetA.GetTarget() == TARGET_DEST_DYNOBJ_ENEMY)
281  AIInfo->Targets |= 1 << (SELECT_TARGET_ANY_ENEMY - 1);
282 
283  // Spell targets a single friend (or self).
284  if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER ||
285  spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_ALLY ||
286  spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_PARTY)
287  AIInfo->Targets |= 1 << (SELECT_TARGET_SINGLE_FRIEND - 1);
288 
289  // Spell targets AoE friends.
290  if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER_AREA_PARTY ||
291  spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_LASTTARGET_AREA_PARTY ||
292  spellEffectInfo.TargetA.GetTarget() == TARGET_SRC_CASTER)
293  AIInfo->Targets |= 1 << (SELECT_TARGET_AOE_FRIEND - 1);
294 
295  // Spell targets any friend (or self).
296  if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER ||
297  spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_ALLY ||
298  spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_PARTY ||
299  spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER_AREA_PARTY ||
300  spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_LASTTARGET_AREA_PARTY ||
301  spellEffectInfo.TargetA.GetTarget() == TARGET_SRC_CASTER)
302  AIInfo->Targets |= 1 << (SELECT_TARGET_ANY_FRIEND - 1);
303 
304  // Make sure that this spell includes a damage effect.
305  if (spellEffectInfo.Effect == SPELL_EFFECT_SCHOOL_DAMAGE ||
306  spellEffectInfo.Effect == SPELL_EFFECT_INSTAKILL ||
307  spellEffectInfo.Effect == SPELL_EFFECT_ENVIRONMENTAL_DAMAGE ||
308  spellEffectInfo.Effect == SPELL_EFFECT_HEALTH_LEECH)
309  AIInfo->Effects |= 1 << (SELECT_EFFECT_DAMAGE - 1);
310 
311  // Make sure that this spell includes a healing effect (or an apply aura with a periodic heal).
312  if (spellEffectInfo.Effect == SPELL_EFFECT_HEAL ||
313  spellEffectInfo.Effect == SPELL_EFFECT_HEAL_MAX_HEALTH ||
314  spellEffectInfo.Effect == SPELL_EFFECT_HEAL_MECHANICAL ||
315  (spellEffectInfo.Effect == SPELL_EFFECT_APPLY_AURA && spellEffectInfo.ApplyAuraName == 8))
316  AIInfo->Effects |= 1 << (SELECT_EFFECT_HEALING - 1);
317 
318  // Make sure that this spell applies an aura.
319  if (spellEffectInfo.Effect == SPELL_EFFECT_APPLY_AURA)
320  AIInfo->Effects |= 1 << (SELECT_EFFECT_AURA - 1);
321  }
322  });
323 }
float maxRange
Definition: CreatureAIImpl.h:83
Definition: CreatureAIImpl.h:41
Definition: CreatureAIImpl.h:38
Definition: SpellInfo.h:342
Definition: SharedDefines.h:1157
Definition: SharedDefines.h:2548
#define UPDATE_TARGET(a)
Definition: UnitAI.cpp:211
AICondition condition
Definition: CreatureAIImpl.h:80
Definition: SharedDefines.h:2556
bool IsPassive() const
Definition: SpellInfo.cpp:1519
Definition: SharedDefines.h:1154
Definition: CreatureAIImpl.h:62
Definition: CreatureAIImpl.h:46
Definition: CreatureAIImpl.h:40
Definition: SharedDefines.h:1155
Definition: SharedDefines.h:2544
Milliseconds cooldown
Definition: CreatureAIImpl.h:81
Definition: SharedDefines.h:1223
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition: Duration.h:24
Definition: CreatureAIImpl.h:72
Definition: CreatureAIImpl.h:59
static std::unordered_map< std::pair< uint32, Difficulty >, AISpellInfoType > AISpellInfo
Definition: UnitAI.h:330
uint32 const Id
Definition: SpellInfo.h:347
Definition: SharedDefines.h:1149
Definition: CreatureAIImpl.h:60
Definition: CreatureAIImpl.h:61
bool HasAttribute(SpellAttr0 attribute) const
Definition: SpellInfo.h:461
uint32 RecoveryTime
Definition: SpellInfo.h:384
Definition: SharedDefines.h:2565
Definition: CreatureAIImpl.h:48
uint8 Effects
Definition: CreatureAIImpl.h:86
Definition: SharedDefines.h:1215
#define sSpellMgr
Definition: SpellMgr.h:825
Definition: SpellInfo.h:233
Definition: SharedDefines.h:2545
int32_t int32
Definition: Define.h:139
uint32_t uint32
Definition: Define.h:143
Definition: CreatureAIImpl.h:57
Definition: SharedDefines.h:1158
::Difficulty const Difficulty
Definition: SpellInfo.h:348
Definition: SharedDefines.h:430
Definition: SharedDefines.h:2549
std::vector< SpellEffectInfo > const & GetEffects() const
Definition: SpellInfo.h:589
uint8 Targets
Definition: CreatureAIImpl.h:85
Definition: CreatureAIImpl.h:71
bool IsPositive() const
Definition: SpellInfo.cpp:1635
Definition: CreatureAIImpl.h:47
Definition: SharedDefines.h:2550
Definition: SharedDefines.h:2581
Definition: CreatureAIImpl.h:70
int32 GetDuration() const
Definition: SpellInfo.cpp:3760
Definition: CreatureAIImpl.h:37
Definition: SharedDefines.h:2539
Definition: SharedDefines.h:2563
Definition: CreatureAIImpl.h:63
Definition: SharedDefines.h:2534
uint32 StartRecoveryTime
Definition: SpellInfo.h:387
Milliseconds realCooldown
Definition: CreatureAIImpl.h:82
Definition: SharedDefines.h:1150
Definition: CreatureAIImpl.h:58
float GetMaxRange(bool positive=false, WorldObject *caster=nullptr, Spell *spell=nullptr) const
Definition: SpellInfo.cpp:3737
Definition: CreatureAIImpl.h:75
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetData()

virtual uint32 UnitAI::GetData ( uint32  ) const
inlinevirtual

Reimplemented in npc_gauntlet_trash, npc_crate_helper::npc_crate_helperAI, npc_mimiron_emergency_fire_bot::npc_mimiron_emergency_fire_botAI, npc_darkrune_guardian, npc_meteor_strike::npc_meteor_strikeAI, npc_akama_illidan, npc_sindragosa_trash, npc_dream_portal, npc_gunship::npc_gunshipAI, boss_leviathan_mk_ii::boss_leviathan_mk_iiAI, npc_living_constellation, npc_kelthuzad_minionAI, boss_the_lich_king, npc_the_lich_king_controller, boss_professor_putricide, boss_deathbringer_saurfang, boss_kelthuzad, boss_razorscale, npc_scourge_hulk, npc_essence_of_twin, boss_stormcaller_brundir::boss_stormcaller_brundirAI, boss_valithria_dreamwalker, npc_zombie_chow, npc_hadronox_crusherPackAI, npc_brann_hos, boss_freya::boss_freyaAI, boss_malygos, boss_sartharion, boss_algalon_the_observer, boss_garothi_worldbreaker, npc_gatewatcher_petAI, boss_flame_leviathan::boss_flame_leviathanAI, boss_sindragosa, boss_runemaster_molgeim::boss_runemaster_molgeimAI, boss_blood_council_controller, boss_skadi, boss_thaddius, boss_xt002, boss_festergut, boss_general_vezax::boss_general_vezaxAI, boss_sapphiron, boss_baleroc, boss_devourer_of_souls, npc_crystal_spike_trigger, boss_volkhan, boss_mandokir, boss_jedoga_shadowseeker, boss_hadronox, boss_sjonnir, boss_auriaya, boss_novos, boss_garfrost, SmartAI, boss_drakkari_colossus, boss_steelbreaker::boss_steelbreakerAI, boss_magus_telestra, boss_trollgore, boss_ignis::boss_ignis_AI, boss_keleseth, boss_ymiron, boss_gal_darah, boss_ichoron, boss_faerlina, boss_bronjahm, boss_four_horsemen_baseAI, boss_eregos, boss_anomalus, boss_najentus, boss_moorabi, boss_elder_nadox, boss_heigan, boss_zuramat, boss_king_dred, and boss_loatheb.

157 { return 0; }
+ Here is the caller graph for this function:

◆ GetDebugInfo()

std::string UnitAI::GetDebugInfo ( ) const
virtual
336 {
337  std::stringstream sstr;
338  sstr << std::boolalpha
339  << "Me: " << (me ? me->GetDebugInfo() : "NULL");
340  return sstr.str();
341 }
Unit *const me
Definition: UnitAI.h:136
std::string GetDebugInfo() const override
Definition: Unit.cpp:13561
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetGUID()

virtual ObjectGuid UnitAI::GetGUID ( int32  = 0) const
inlinevirtual

Reimplemented in npc_sapphiron_blizzard, boss_malygos, npc_unworthy_initiate_anchor::npc_unworthy_initiate_anchorAI, npc_demolitionist_legoso::npc_demolitionist_legosoAI, npc_coren_direbrew_sisters, boss_lord_marrowgar, boss_sapphiron, SmartAI, and npc_inner_demon::npc_inner_demonAI.

160 { return ObjectGuid::Empty; }
static ObjectGuid const Empty
Definition: ObjectGuid.h:265
+ Here is the caller graph for this function:

◆ GetThreatManager()

ThreatManager & UnitAI::GetThreatManager ( )
private
326 {
327  return me->GetThreatManager();
328 }
Unit *const me
Definition: UnitAI.h:136
ThreatManager & GetThreatManager()
Definition: Unit.h:1160
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ HealDone()

virtual void UnitAI::HealDone ( Unit ,
uint32  
)
inlinevirtual

Reimplemented in player_overlord_brandAI.

311 { }

◆ HealReceived()

virtual void UnitAI::HealReceived ( Unit ,
uint32  
)
inlinevirtual

Reimplemented in boss_lady_malande, boss_valithria_dreamwalker, and SmartAI.

308 { }
+ Here is the caller graph for this function:

◆ InitializeAI()

void UnitAI::InitializeAI ( )
virtual

Reimplemented in npc_gen_void_zone, npc_wormhole::npc_wormholeAI, npc_kael_flamestrike, npc_sergeant_morigan::npc_sergeant_moriganAI, npc_muradin_bronzebeard_igb, npc_icc_nerubar_broodkeeper, npc_malcolm_moore::npc_malcolm_mooreAI, npc_sindragosa_trash, npc_bartleby_battson::npc_bartleby_battsonAI, npc_high_overlord_saurfang_igb, npc_kelthuzad_shadow_fissure, npc_jena_anderson::npc_jena_andersonAI, npc_skittering_infector, npc_rimefang_icc, npc_skittering_swarmer, npc_feugen, npc_violet_hold_teleportation_portal, npc_hadronox_foeAI, npc_violet_hold_teleportation_portal_commonAI, npc_spinestalker, npc_pulsing_pumpkin, npc_anubarak_impale_target, boss_kiljaeden::boss_kiljaedenAI, npc_stalagg, npc_anubarak_anub_ar_assassin, npc_sapphiron_wing_buffet, npc_kiljaeden_controller::npc_kiljaeden_controllerAI, npc_anubarak_anub_ar_darter, npc_eye_of_acherus, BloodPrincesBossAI, npc_anubarak_pet_template, boss_headless_horseman, boss_sister_svalna, boss_archimonde::boss_archimondeAI, boss_valithria_dreamwalker, boss_hadronox, npc_troll_volunteer, npc_malformed_ooze, boss_flame_leviathan::boss_flame_leviathanAI, npc_void_traveler, boss_garothi_worldbreaker, npc_webwrap, npc_molten_flame, boss_blackheart_the_inciter_mc_dummy, SmartAI, boss_thaddius, npc_warp_splinter_sapling, npc_raging_flames, npc_fallout_slime, boss_tyrannus, boss_sapphiron, npc_underbog_mushroom, boss_anubrekhan, boss_faerlina, boss_varos, boss_razuvious, boss_salramm::boss_salrammAI, boss_epoch::boss_epochAI, CasterAI, boss_meathook::boss_meathookAI, npc_pet_mage_mirror_image, CombatAI, EscortAI, and npc_pet_dk_ebon_gargoyle.

43 {
44  if (!me->isDead())
45  Reset();
46 }
Unit *const me
Definition: UnitAI.h:136
bool isDead() const
Definition: Unit.h:1253
virtual void Reset()
Definition: UnitAI.h:147
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ JustEnteredCombat()

◆ JustExitedCombat()

virtual void UnitAI::JustExitedCombat ( )
inlinevirtual

◆ LeavingWorld()

virtual void UnitAI::LeavingWorld ( )
inlinevirtual

Reimplemented in npc_pet_lich, and npc_pet_gen_soul_trader.

298 { }

◆ OnCharmed()

void UnitAI::OnCharmed ( bool  isNew)
virtual

Reimplemented in npc_gunship_cannon, npc_king_jokkum_vehicle, npc_wyrmrest_defender, npc_eye_of_acherus, npc_dk_understudy, npc_icefang, SmartAI, CreatureAI, VehicleAI, SimpleCharmedPlayerAI, NullCreatureAI, BlackheartCharmedPlayerAI, PetAI, and ScheduledChangeAI.

49 {
50  if (!isNew)
52 }
Unit *const me
Definition: UnitAI.h:136
void ScheduleAIChange()
Definition: Unit.cpp:9254
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ OnGameEvent()

virtual void UnitAI::OnGameEvent ( bool  ,
uint16   
)
inlinevirtual

Reimplemented in npc_watch_commander_leonus, SmartAI, and npc_cameron.

334 { }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ operator=()

UnitAI& UnitAI::operator= ( UnitAI const &  right)
privatedelete

◆ Reset()

virtual void UnitAI::Reset ( )
inlinevirtual

Reimplemented in npc_quel_delar_sword::npc_quel_delar_swordAI, npc_uther_quel_delar::npc_uther_quel_delarAI, npc_lumbering_abomination::npc_lumbering_abominationAI, npc_risen_witch_doctor::npc_risen_witch_doctorAI, npc_raging_ghoul::npc_raging_ghoulAI, npc_escape_event_trash, npc_toc_pet_hunter, npc_toc_pet_warlock, npc_spiritual_reflection::npc_spiritual_reflectionAI, npc_laughing_skull::npc_laughing_skullAI, npc_turned_champion::npc_turned_championAI, npc_broken_frostmourne, npc_toc_retro_paladin, npc_frostsworn_general::npc_frostsworn_generalAI, npc_garona::npc_garonaAI, npc_illidan_generic_fire, npc_spring_rabbit::npc_spring_rabbitAI, npc_spirit_warden, npc_illidari_elite, npc_toc_enh_shaman, npc_cage_trap_trigger, npc_toc_rogue, npc_mimiron_magnetic_core, npc_the_lich_king_tirion_dawn::npc_the_lich_king_tirion_dawnAI, npc_phantom_hallucination::npc_phantom_hallucinationAI, npc_mimiron_proximity_mine::npc_mimiron_proximity_mineAI, npc_yogg_saron_keeper::npc_yogg_saron_keeperAI, npc_toc_dk, npc_sif::npc_sifAI, npc_mimiron_frost_bomb::npc_mimiron_frost_bombAI, npc_shadow_demon, npc_illidan_db_target, npc_observation_ring_keeper::npc_observation_ring_keeperAI, npc_mimiron_flames::npc_mimiron_flamesAI, npc_toc_warrior, npc_ancient_rune_giant::npc_ancient_rune_giantAI, npc_bloodmage_laurith, npc_immortal_guardian::npc_immortal_guardianAI, npc_flame_of_azzinoth, npc_brewfest_reveler_2, npc_razorscale_devouring_flame, npc_gauntlet_trash, alliance_rifleman::alliance_riflemanAI, npc_blade_of_azzinoth, npc_valkyr_shadowguard, npc_toc_boomkin, npc_influence_tentacle::npc_influence_tentacleAI, npc_impaling_spear, npc_darkrune_sentinel, npc_runic_colossus::npc_runic_colossusAI, npc_parasitic_shadowfiend, npc_mimiron_emergency_fire_bot::npc_mimiron_emergency_fire_botAI, npc_zafod_boombox, npc_enraged_spirit::npc_enraged_spiritAI, npc_crusher_tentacle::npc_crusher_tentacleAI, npc_raging_spirit, npc_toc_hunter, npc_sinster_reflection::npc_sinster_reflectionAI, npc_gargoyle::npc_gargoyleAI, npc_darkrune_guardian, npc_constrictor_tentacle::npc_constrictor_tentacleAI, npc_scion_of_eternity, npc_hidden_cultist, npc_phoenix_egg_tk, npc_shambling_horror_icc, npc_ancient_conservator::npc_ancient_conservatorAI, npc_corruptor_tentacle::npc_corruptor_tentacleAI, npc_darkrune_watcher, boss_zelfan::boss_zelfanAI, npc_nexus_lord, npc_toc_mage, npc_thorim_arena_phase::npc_thorim_arena_phaseAI, npc_phoenix_tk, npc_shield_orb::npc_shield_orbAI, npc_giant_eye_tentacle::giant_eye_tentacleAI, npc_razorscale_spawner, boss_romulo::boss_romuloAI, npc_valiance_keep_cannoneer, npc_caster_hover_disk, npc_guardian_of_yogg_saron::npc_guardian_of_yogg_saronAI, npc_frost_wyrm::npc_frost_wyrmAI, npc_frostwing_ymirjar_vrykul, npc_freya_ward_summon::npc_freya_ward_summonAI, npc_violet_hold_defense_system, npc_toc_warlock, boss_apoko::boss_apokoAI, npc_storm_lasher::npc_storm_lasherAI, npc_armageddon::npc_armageddonAI, npc_ominous_cloud::npc_ominous_cloudAI, boss_master_engineer_telonicus, npc_steam_tonk::npc_steam_tonkAI, npc_tirion_fordring_tft, npc_thorim_pre_phase::npc_thorim_pre_phaseAI, npc_trapped_mammoth_calf, npc_captain_rupert, npc_freyas_ward::npc_freyas_wardAI, npc_giant_claw_tentacle::giant_claw_tentacleAI, npc_guardian::npc_guardianAI, npc_melee_hover_disk, boss_julianne::boss_julianneAI, npc_volatile_felfire_fiend::npc_volatile_felfire_fiendAI, npc_fel_stalker::npc_fel_stalkerAI, npc_ancient_water_spirit::npc_ancient_water_spiritAI, npc_illidari_spawn::npc_illidari_spawnAI, npc_toc_shadow_priest, npc_captain_grondel, boss_brain_of_yogg_saron::boss_brain_of_yogg_saronAI, npc_akama_illidan, boss_garaxxas::boss_garaxxasAI, boss_grand_astromancer_capernian, npc_dark_nucleus, npc_felfire_portal::npc_felfire_portalAI, npc_icc_nerubar_broodkeeper, npc_detonating_lasher::npc_detonating_lasherAI, npc_mimirons_inferno::npc_mimirons_infernoAI, npc_beryl_sorcerer, npc_captain_brandon, npc_toc_priest, npc_crypt_fiend::npc_crypt_fiendAI, npc_claw_tentacle::claw_tentacleAI, npc_garments_of_quests::npc_garments_of_questsAI, boss_lord_sanguinar, npc_expedition_engineer, npc_kinetic_bomb, npc_ashtongue_spiritbinder, npc_toasty_fire::npc_toasty_fireAI, npc_lord_illidan_stormrage::npc_lord_illidan_stormrageAI, boss_rouge_toc5::boss_rouge_toc5AI, npc_dream_cloud, npc_hand_of_the_deceiver::npc_hand_of_the_deceiverAI, npc_sindragosa_trash, npc_oscillating_frequency_scanner_master_bunny::npc_oscillating_frequency_scanner_master_bunnyAI, npc_jormungars_slime_pool, npc_captain_arnath, boss_yogg_saron::boss_yogg_saronAI, boss_elder_ironbranch::boss_elder_ironbranchAI, boss_warlord_salaris::boss_warlord_salarisAI, npc_eye_tentacle::eye_tentacleAI, npc_ball_of_flame, npc_ros_dark_rider::npc_ros_dark_riderAI, boss_acidmaw, npc_toc_paladin, npc_ashtongue_elementalist, npc_banshee::npc_bansheeAI, boss_thaladred_the_darkener, boss_dreadscale, boss_bigbadwolf::boss_bigbadwolfAI, npc_twilight_whelp, npc_hodir_mage::npc_hodir_mageAI, npc_expedition_defender, npc_gluttonous_abomination, npc_blood_queen_lana_thel, npc_weapon_inspector_valarjar, npc_mechanolift::npc_mechanoliftAI, npc_shield_generator_channel::npc_shield_generator_channelAI, npc_ashtongue_rogue, npc_twilight_fissure, npc_darnavan, npc_jaina_or_sylvanas_escape_hor::npc_jaina_or_sylvanas_escape_horAI, npc_anachronos_quest_trigger::npc_anachronos_quest_triggerAI, boss_leviathan_mk_ii::boss_leviathan_mk_iiAI, npc_toc_shaman, violet_hold_trashAI, npc_muradin_bronzebeard_icc, npc_black_hole, npc_hodir_druid::npc_hodir_druidAI, boss_elder_stonebark::boss_elder_stonebarkAI, npc_suppresser, boss_yazzai::boss_yazzaiAI, boss_hunter_toc5::boss_hunter_toc5AI, npc_flame_tsunami, npc_alexstraza_the_lifebinder::npc_alexstraza_the_lifebinderAI, npc_kelthuzad_guardian, npc_rimefang_icc, boss_sara::boss_saraAI, DarkFallenAI, npc_torloth_the_magnificent::npc_torloth_the_magnificentAI, npc_ashtongue_defender, advisorbase_ai, npc_vengeful_shade, npc_counselor_talbot::npc_counselor_talbotAI, npc_cyclone::npc_cycloneAI, boss_lord_crispin_ference::boss_lord_crispin_ferenceAI, npc_necromancer::npc_necromancerAI, npc_injured_patient::npc_injured_patientAI, npc_king_jokkum_vehicle, npc_storm_cloud, npc_hodir_shaman::npc_hodir_shamanAI, npc_toxic_sporebat::npc_toxic_sporebatAI, npc_blazing_skeleton, npc_toc_druid, npc_twilight_eggs, npc_putricide_oozeAI, npc_living_constellation, npc_dark_rider_of_acherus, npc_greyheart_spellbinder::npc_greyheart_spellbinderAI, npc_anub_ar_shadowcaster, boss_eramas_brightblaze::boss_eramas_brightblazeAI, boss_elder_brightleaf::boss_elder_brightleafAI, npc_sir_thomas, boss_lord_robin_daris::boss_lord_robin_darisAI, npc_qiraj_war_spawn::npc_qiraj_war_spawnAI, boss_crone::boss_croneAI, boss_flame_leviathan_defense_cannon::boss_flame_leviathan_defense_cannonAI, npc_ashtongue_sorcerer, npc_cult_adherent, npc_flame_bunny, npc_image_lich_king::npc_image_lich_kingAI, npc_shadow_image::npc_shadow_imageAI, npc_expedition_commander, npc_the_etymidian::npc_the_etymidianAI, npc_fizzlebang_toc, npc_tainted_elemental::npc_tainted_elementalAI, npc_ghoul::npc_ghoulAI, npc_hodir_priest::npc_hodir_priestAI, npc_reliquary_combat_trigger, boss_jormungarAI, npc_acolyte_of_vesperon, npc_icc_orb_controller, npc_spinestalker, npc_anubarak_spike, npc_anub_ar_skirmisher, npc_risen_archmage, boss_shaman_toc5::boss_shaman_toc5AI, npc_bullet_controller, npc_open_portal_target_toc, npc_doctor::npc_doctorAI, npc_snowpacked_icicle::npc_snowpacked_icicleAI, boss_leotheras_the_blind_demonform::boss_leotheras_the_blind_demonformAI, npc_pulsing_pumpkin, npc_high_overlord_saurfang_icc, boss_lady_keira_berrybuck::boss_lady_keira_berrybuckAI, npc_lake_frog, boss_ellris_duskhallow::boss_ellris_duskhallowAI, npc_life_spark, npc_raz_the_crazed::npc_raz_the_crazedAI, npc_creature_generator_akama, npc_valkyr_of_odyn, boss_fathomguard_caribdis::boss_fathomguard_caribdisAI, npc_anub_ar_warrior, npc_azure_saboteur, boss_taerar::boss_taerarAI, npc_acolyte_of_shadron, npc_cult_fanatic, npc_enslaved_soul, npc_taretha::npc_tarethaAI, npc_halion_controller::npc_halion_controllerAI, npc_kelthuzad_minionAI, npc_frost_sphere, boss_kiljaeden::boss_kiljaedenAI, npc_ice_tomb, npc_aran_elemental::water_elementalAI, npc_enchanted_elemental::npc_enchanted_elementalAI, boss_roar::boss_roarAI, npc_beasts_combat_stalker, npc_icicle::npc_icicleAI, boss_faction_championsAI, npc_death_knight_initiate::npc_death_knight_initiateAI, npc_elder_kekek::npc_elder_kekekAI, npc_fire_bomb, npc_arthas_teleport_visual::npc_arthas_teleport_visualAI, npc_felmyst_trail::npc_felmyst_trailAI, npc_abomination::npc_abominationAI, npc_ashtongue_channeler, npc_spectating_valarjar, npc_anubarak_anub_ar_venomancer, npc_unleashed_ballAI, npc_boombot, npc_magister_aledis::npc_magister_aledisAI, boss_lady_catriona_von_indi::boss_lady_catriona_von_indiAI, npc_the_lich_king_controller, npc_veras_vanish_effect, npc_flame_patch_alar, npc_watcher_silthik, npc_vesperon, npc_crok_scourgebane, npc_rocknot::npc_rocknotAI, npc_felmyst_vapor::npc_felmyst_vaporAI, npc_crazed_mage::npc_crazed_mageAI, npc_anubarak_anub_ar_guardian, boss_cthun::cthunAI, npc_earthmender_wilda::npc_earthmender_wildaAI, npc_nerubian_burrower, npc_wild_wyrm, boss_krosh_firehand::boss_krosh_firehandAI, npc_seeping_essence_stalker, boss_veklor::boss_veklorAI, boss_kagani_nightstrike::boss_kagani_nightstrikeAI, boss_the_lich_king, npc_venture_co_straggler, npc_scourge_hulk, boss_essence_of_anger, npc_geezle::npc_geezleAI, boss_mage_toc5::boss_mage_toc5AI, npc_pummeller, boss_emeriss::boss_emerissAI, boss_voice_of_yogg_saron::boss_voice_of_yogg_saronAI, npc_hellfire_sentry::npc_hellfire_sentryAI, npc_earthen_ring_flamecaller, npc_ember_of_alar, boss_eydis, npc_swarming_guardian, boss_fathomguard_tidalvess::boss_fathomguard_tidalvessAI, npc_anubarak_anub_ar_assassin, npc_wyrmrest_defender, boss_baron_rafe_dreuger::boss_baron_rafe_dreugerAI, npc_green_dragon_combat_trigger, npc_a_special_surprise::npc_a_special_surpriseAI, npc_high_oracle_soo_roo::npc_high_oracle_soo_rooAI, boss_illidan_stormrage, boss_stormcaller_brundir::boss_stormcaller_brundirAI, npc_watcher_narjil, boss_tinhead::boss_tinheadAI, npc_shadron, npc_blackhole, npc_image_of_medivh::npc_image_of_medivhAI, boss_thorim::boss_thorimAI, npc_midsummer_bunny_pole::npc_midsummer_bunny_poleAI, boss_mimiron::boss_mimironAI, npc_mad_prisoner::npc_mad_prisonerAI, npc_kiljaeden_controller::npc_kiljaeden_controllerAI, boss_sathrovarr, npc_memory::npc_memoryAI, npc_rotting_frost_giant, npc_swarm_scarab, npc_nagrand_banner::npc_nagrand_bannerAI, npc_giant_infernal::npc_giant_infernalAI, BloodPrincesBossAI, boss_twilight_halion::boss_twilight_halionAI, npc_spectator, npc_scrapbot, npc_wounded_skirmisher, boss_blindeye_the_seer::boss_blindeye_the_seerAI, npc_solarium_priest, boss_veknilash::boss_veknilashAI, npc_tenebron, npc_sapphiron_blizzard, npc_omrogg_heads::npc_omrogg_headsAI, npc_magtheridon_room, npc_scorch_ground::npc_scorch_groundAI, npc_twisted_visage, npc_egg_pile::npc_egg_pileAI, npc_ritual_channeler, npc_coilfang_ambusher::npc_coilfang_ambusherAI, boss_baroness_dorothea_millstipe::boss_baroness_dorothea_millstipeAI, npc_watcher_gashra, boss_nefarian, npc_thassarian::npc_thassarianAI, npc_blessed_banner, npc_torch_tossing_target_bunny_controller::npc_torch_tossing_target_bunny_controllerAI, npc_jaina_or_sylvanas_intro_hor::npc_jaina_or_sylvanas_intro_horAI, npc_mistress_of_pain, npc_stormforged_lieutenant, npc_saronite_vapors::npc_saronite_vaporsAI, npc_xt002_heart, npc_giant_spotlight, boss_essence_of_desire, npc_phalanx::npc_phalanxAI, npc_alchemist_finklestein, boss_fjola, npc_molten_golem, npc_phase_hunter::npc_phase_hunterAI, npc_lesser_shadow_fissure::npc_lesser_shadow_fissureAI, npc_nether_portal, npc_the_biggest_tree::npc_the_biggest_treeAI, boss_toc_champion_controller, npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, npc_enslaved_netherwing_drake::npc_enslaved_netherwing_drakeAI, boss_priestess_lackey_commonAI, WorldBossAI, npc_tirion_toc, boss_high_nethermancer_zerevor, boss_alythess::boss_alythessAI, npc_amberpine_woodsman, npc_scarlet_courier::npc_scarlet_courierAI, npc_akama_shade, npc_sinclari_vh, npc_anachronos_the_ancient::npc_anachronos_the_ancientAI, boss_malygos, boss_lethon::boss_lethonAI, boss_headless_horseman, boss_hodir::boss_hodirAI, npc_living_mojo, npc_twilight_sadist::npc_twilight_sadistAI, boss_kalecgos_human, boss_warrior_toc5::boss_warrior_toc5AI, npc_stonekeepers::npc_stonekeepersAI, npc_ingvar_throw_dummy, npc_magwin::npc_magwinAI, boss_kaelthas, npc_chained_spirit, npc_feral_defender, npc_highlord_darion_mograine::npc_highlord_darion_mograineAI, npc_precious_icc, npc_direbrew_minion, boss_strawman::boss_strawmanAI, boss_fathomguard_sharkkis::boss_fathomguard_sharkkisAI, boss_moroes_guestAI, boss_kiggler_the_crazed::boss_kiggler_the_crazedAI, npc_demolitionist_legoso::npc_demolitionist_legosoAI, npc_fel_infernal, BossAI, boss_saronite_animus::boss_saronite_animusAI, npc_grauf, npc_tallhorn_stag, npc_risen_ghoul::npc_risen_ghoulAI, npc_infernal_volcano, npc_iron_construct::npc_iron_constructAI, npc_water_globule::npc_water_globuleAI, npc_fel_orc_convert::npc_fel_orc_convertAI, npc_tomb_creature::npc_tomb_creatureAI, boss_freya::boss_freyaAI, PalehoofMinionsBossAI, npc_apothecary_baxter, boss_sister_svalna, npc_redridge_citizen::npc_redridge_citizenAI, boss_krick, boss_razorscale, npc_dancing_flames, boss_vazruden_the_herald::boss_vazruden_the_heraldAI, npc_fel_geyser, npc_twiggy_flathead::npc_twiggy_flatheadAI, npc_crystal_channel_target, npc_spark_of_ionar, npc_yor, npc_hellfire_channeler, boss_paletress::boss_paletressAI, boss_gothik, npc_time_rift, boss_runemaster_molgeim::boss_runemaster_molgeimAI, npc_prince_taldaram_flame_sphere, boss_lich_king_toc, boss_algalon_the_observer, boss_midnight::boss_midnightAI, boss_four_horsemen_baseAI, boss_rimefang, npc_legion_flame, npc_stinky_icc, npc_brann_bronzebeard_keystone, npc_shadowmoon_channeler::npc_shadowmoon_channelerAI, boss_archimonde::boss_archimondeAI, npc_troll_volunteer, npc_weegli_blastfuse::npc_weegli_blastfuseAI, npc_brann_hos, npc_highborne_lamenter::npc_highborne_lamenterAI, boss_essence_of_suffering, npc_injured_draenei::npc_injured_draeneiAI, npc_fiendish_imp::npc_fiendish_impAI, npc_warden_mellichar, boss_valithria_dreamwalker, npc_ranshalla::npc_ranshallaAI, npc_sanctum_sentry, npc_kurenai_captive::npc_kurenai_captiveAI, npc_annhylde_the_caller, npc_snowfall_glade_playmate::npc_snowfall_glade_playmateAI, boss_harbinger_skyriss_illusion, npc_idol_room_spawner::npc_idol_room_spawnerAI, npc_barada::npc_baradaAI, boss_ysondre::boss_ysondreAI, boss_flame_leviathan::boss_flame_leviathanAI, npc_tito::npc_titoAI, npc_milos_gyro::npc_milos_gyro_AI, boss_kalecgos_kj::boss_kalecgos_kjAI, npc_archaedas_minions::npc_archaedas_minionsAI, npc_outhouse_bunny, npc_valarjar_paying_respect_to_odyn, npc_slad_ran_viper, boss_yauj::boss_yaujAI, boss_deathbringer_saurfang, npc_twilight_torturer::npc_twilight_torturerAI, npc_ethereal_apprentice, boss_high_inquisitor_whitemane, npc_erekem_guard, npc_mature_netherwing_drake::npc_mature_netherwing_drakeAI, npc_firework, npc_wg_queue, IllidariCouncilBossAI, boss_leotheras_the_blind::boss_leotheras_the_blindAI, npc_fiendish_portal::npc_fiendish_portalAI, npc_stolen_soul, boss_sindragosa, boss_drakkari_elemental, boss_malchezaar::boss_malchezaarAI, npc_spectral_ghostly_citizen::npc_spectral_ghostly_citizenAI, npc_sartura_royal_guard::npc_sartura_royal_guardAI, npc_jungle_punch_target, npc_shadowy_construct, boss_olm_the_summoner::boss_olm_the_summonerAI, npc_ruby_emerald_amber_drake, npc_baltharus_the_warborn_clone, boss_blood_council_controller, boss_muru, boss_professor_putricide, npc_chicken_cluck::npc_chicken_cluckAI, npc_vrykul_skeleton, npc_highlord_tirion_fordring_lh, npc_drakkari_scytheclaw, boss_vazruden::boss_vazrudenAI, npc_steamrigger_mechanic::npc_steamrigger_mechanicAI, boss_lady_deathwhisper, boss_kelthuzad, npc_engineer_spark_overgrind::npc_engineer_spark_overgrindAI, npc_doomfire_targetting::npc_doomfire_targettingAI, npc_anubisath_sentinel::aqsentinelAI, boss_shade_of_akama, npc_slad_ran_constrictor, npc_lesser_doomguard::npc_lesser_doomguardAI, boss_northrend_beastsAI, npc_towering_infernal::npc_towering_infernalAI, npc_muglash::npc_muglashAI, npc_flash_freeze::npc_flash_freezeAI, npc_chaotic_rift, boss_eye_of_cthun::eye_of_cthunAI, npc_amanitar_mushrooms, npc_mrfloppy, npc_enslaved_proto_drake, boss_lady_vashj::boss_lady_vashjAI, npc_doom_blossom, npc_faerlina_add, npc_focus_fire::npc_focus_fireAI, npc_feasting_valarjar, npc_crusade_recruit, boss_palehoof, npc_volcano, npc_guard_shattrath_faction, npc_ethereal_beacon, boss_twin_baseAI, npc_nesingwary_trapper, boss_eadric::boss_eadricAI, npc_tournament_training_dummy, npc_ethereal_sphere, boss_chromaggus, npc_angered_soul_fragment, npc_jaina_fos, npc_dream_fog::npc_dream_fogAI, npc_ahnkahar_nerubian, npc_sironas::npc_sironasAI, generic_vehicleAI_toc5::generic_vehicleAI_toc5AI, npc_drakkari_gutripper, boss_thaddius, npc_azure_ring_captain, npc_raging_flames, boss_skarvald_the_constructor, npc_nether_wraith, dummy_dragonAI, npc_grimstone::npc_grimstoneAI, boss_victor_nefarius, npc_eyestalk::npc_eyestalkAI, boss_anubarak_trial, npc_emily, npc_arugal_voidwalker::npc_arugal_voidwalkerAI, npc_morridune, boss_shade_of_aran::boss_aranAI, npc_doomfire::npc_doomfireAI, npc_onyx_flamecaller, npc_tempest_minion, boss_rend_blackhand, npc_tribuna_controller, boss_vem::boss_vemAI, npc_taskmaster_fizzule::npc_taskmaster_fizzuleAI, npc_kilrek::npc_kilrekAI, npc_winterfin_playmate::npc_winterfin_playmateAI, boss_xt002, npc_geist_ambusher, npc_snufflenose_gopher::npc_snufflenose_gopherAI, npc_barnes::npc_barnesAI, boss_skadi, boss_warbringer_omrogg::boss_warbringer_omroggAI, npc_curator_astral_flare::npc_curator_astral_flareAI, BroggokPrisionersAI, npc_unstable_sphere, boss_dorothee::boss_dorotheeAI, npc_bridge_worker_alex::npc_bridge_worker_alexAI, boss_blood_queen_lana_thel, boss_razuvious, npc_mortimer_moloch, npc_thalorien_dawnseeker, boss_steelbreaker::boss_steelbreakerAI, boss_alar, boss_felblood_kaelthas, boss_priestess_delrissa::boss_priestess_delrissaAI, boss_bjarngrim, npc_released_offspring_harkoa, boss_doomrel::boss_doomrelAI, boss_svala, boss_sapphiron, boss_kalecgos, npc_wounded_milita::npc_wounded_militaAI, npc_infernal_attacker::npc_infernal_attackerAI, boss_ick, npc_minigob_manabonk, npc_commander_eligor_dawnbringer, boss_krik_thir, boss_anraphet::boss_anraphetAI, boss_onyxia, boss_jedoga_shadowseeker, boss_tyrannus, boss_the_lurker_below::boss_the_lurker_belowAI, boss_reliquary_of_souls, boss_felmyst::boss_felmystAI, boss_sartharion, boss_moroes::boss_moroesAI, npc_restless_soul::npc_restless_soulAI, boss_lieutenant_drake::boss_lieutenant_drakeAI, boss_devourer_of_souls, boss_lord_marrowgar, boss_volazj, boss_netherspite::boss_netherspiteAI, npc_koltira_deathweaver, boss_entropius, boss_kologarn::boss_kologarnAI, boss_illidari_council, boss_high_astromancer_solarian, boss_coren_direbrew, npc_ironhand_guardian::npc_ironhand_guardianAI, boss_auriaya, boss_fathomlord_karathress::boss_fathomlord_karathressAI, boss_morogrim_tidewalker::boss_morogrim_tidewalkerAI, boss_high_priestess_azil::boss_high_priestess_azilAI, boss_ignis::boss_ignis_AI, npc_coilfang_waterelemental::npc_coilfang_waterelementalAI, boss_black_knight::boss_black_knightAI, boss_hydross_the_unstable::boss_hydross_the_unstableAI, boss_warlord_kalithresh::boss_warlord_kalithreshAI, npc_flamewaker_priest, npc_disciple_of_naralex::npc_disciple_of_naralexAI, npc_unworthy_initiate::npc_unworthy_initiateAI, npc_medivh_bm, boss_ymiron, boss_urom, boss_general_vezax::boss_general_vezaxAI, boss_nightbane::boss_nightbaneAI, npc_freed_protodrake, boss_slabhide::boss_slabhideAI, npc_ancient_wisp::npc_ancient_wispAI, boss_magtheridon, netherspite_infernal::netherspite_infernalAI, hyjalAI, npc_iceborn_protodrake, npc_core_rager, boss_magus_telestra, npc_captured_rageclaw, npc_firesworn, npc_colonel_jules::npc_colonel_julesAI, npc_twilight_flame_caller::npc_twilight_flame_callerAI, npc_blastmaster_emi_shortfuse::npc_blastmaster_emi_shortfuseAI, boss_ossirian::boss_ossirianAI, npc_lady_sylvanas_windrunner::npc_lady_sylvanas_windrunnerAI, boss_keleseth, boss_earthrager_ptah::boss_earthrager_ptahAI, boss_anub_arak, npc_shadowfang_prisoner::npc_shadowfang_prisonerAI, boss_mandokir, npc_willix::npc_willixAI, boss_sacrolash::boss_sacrolashAI, boss_jaraxxus, boss_cannon_master_willey::boss_cannon_master_willeyAI, boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI, boss_baleroc, boss_brutallus::boss_brutallusAI, boss_rotface, boss_grand_warlock_nethekurse::boss_grand_warlock_nethekurseAI, boss_warchief_kargath_bladefist::boss_warchief_kargath_bladefistAI, boss_apothecary_hummel, boss_viscidus::boss_viscidusAI, boss_volkhan, npc_frozen_orb_stalker, boss_temple_guardian_anhuur::boss_temple_guardian_anhuurAI, boss_high_king_maulgar::boss_high_king_maulgarAI, npc_commander_dawnforge::npc_commander_dawnforgeAI, boss_maexxna, boss_ingvar_the_plunderer, boss_faerlina, boss_ionar, npc_inner_demon::npc_inner_demonAI, boss_gruul::boss_gruulAI, generic_boss_controllerAI, boss_mother_shahraz, boss_exarch_maladaar, npc_nether_drake::npc_nether_drakeAI, boss_drakkari_colossus, boss_gurtogg_bloodboil, boss_archaedas::boss_archaedasAI, boss_ragnaros, npc_voljin_zulaman::npc_voljin_zulamanAI, npc_belnistrasz::npc_belnistraszAI, boss_prince_taldaram, npc_sylvanas_fos, boss_slad_ran, boss_gluth, boss_eregos, npc_millhouse_manastorm, boss_twinemperorsAI, boss_anubrekhan, boss_anomalus, boss_mr_smite::boss_mr_smiteAI, boss_noth, emerald_dragonAI, boss_corborus::boss_corborusAI, boss_novos, boss_garfrost, boss_harbinger_skyriss, boss_ayamiss::boss_ayamissAI, npc_av_marshal_or_warmaster, npc_sergeant_bly::npc_sergeant_blyAI, boss_loken, boss_mekgineer_steamrigger::boss_mekgineer_steamriggerAI, boss_festergut, boss_kelidan_the_breaker::boss_kelidan_the_breakerAI, boss_scarlet_commander_mograine, boss_sartura::boss_sarturaAI, boss_ichoron, npc_maghar_captive::npc_maghar_captiveAI, boss_nazan::boss_nazanAI, boss_wrath_scryer_soccothrates, boss_alizabal::boss_alizabalAI, boss_attumen::boss_attumenAI, boss_gal_darah, boss_captain_skarloc::boss_captain_skarlocAI, boss_shirrak_the_dead_watcher::boss_shirrak_the_dead_watcherAI, boss_darkweaver_syth, boss_the_black_stalker::boss_the_black_stalkerAI, boss_shattered_executioner::boss_shattered_executionerAI, boss_kirtonos_the_herald::boss_kirtonos_the_heraldAI, boss_azgalor::boss_azgalorAI, boss_ozruk::boss_ozrukAI, boss_trollgore, boss_xevozz, boss_vaelastrasz, boss_silver_hand_bosses::boss_silver_hand_bossesAI, npc_tooga::npc_toogaAI, boss_huhuran::boss_huhuranAI, npc_cairne_bloodhoof::npc_cairne_bloodhoofAI, boss_epoch_hunter::boss_epoch_hunterAI, boss_nexusprince_shaffar, boss_anetheron::boss_anetheronAI, boss_kazrogal::boss_kazrogalAI, npc_draenei_survivor::npc_draenei_survivorAI, boss_tharon_ja, npc_frogger_trigger_naxx, boss_omor_the_unscarred::boss_omor_the_unscarredAI, boss_razorgore, boss_kri::boss_kriAI, boss_heigan, boss_blackheart_the_inciter, npc_invis_infernal_caster::npc_invis_infernal_casterAI, boss_pyroguard_emberseer, boss_selin_fireheart::boss_selin_fireheartAI, boss_ouro::boss_ouroAI, boss_bronjahm, boss_keristrasza, boss_varos, npc_pet_shaman_fire_elemental, boss_rajaxx::boss_rajaxxAI, boss_saviana_ragefire, boss_ormorok, boss_anzu, boss_terestian_illhoof::boss_terestianAI, boss_magistrate_barthilas::boss_magistrate_barthilasAI, boss_rage_winterchill::boss_rage_winterchillAI, boss_moorabi, boss_vexallus::boss_vexallusAI, boss_fankriss::boss_fankrissAI, boss_elder_nadox, boss_baltharus_the_warborn, npc_wrathbone_flayer, boss_watchkeeper_gargolmar::boss_watchkeeper_gargolmarAI, boss_nerubenkan::boss_nerubenkanAI, boss_ramstein_the_gorger::boss_ramstein_the_gorgerAI, boss_mal_ganis::boss_mal_ganisAI, boss_moam::boss_moamAI, npc_ruul_snowhoof::npc_ruul_snowhoofAI, npc_lazy_peon::npc_lazy_peonAI, boss_general_zarithrian, boss_emalon, boss_najentus, boss_skeram::boss_skeramAI, boss_zum_rah::boss_zum_rahAI, boss_falric::boss_falricAI, boss_supremus, boss_balinda, npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI, boss_high_inquisitor_fairbanks, boss_twilight_corrupter::boss_twilight_corrupterAI, boss_king_dred, boss_patchwerk, boss_instructor_malicia::boss_instructormaliciaAI, boss_baron_rivendare, boss_noxxion::boss_noxxionAI, boss_princess_theradras::boss_ptheradrasAI, boss_drakos, boss_gyth, boss_randolph_moloch, boss_infinite_corruptor::boss_infinite_corruptorAI, boss_doomlord_kazzak, npc_naga_distiller::npc_naga_distillerAI, npc_unkor_the_ruthless::npc_unkor_the_ruthlessAI, boss_darkmaster_gandling::boss_darkmaster_gandlingAI, boss_timmy_the_cruel::boss_timmy_the_cruelAI, boss_amnennar_the_coldbringer::boss_amnennar_the_coldbringerAI, boss_kurinnaxx::boss_kurinnaxxAI, npc_gilthares::npc_giltharesAI, npc_xerestrasza, boss_dalliah_the_doomsayer, boss_thorngrin_the_tender::boss_thorngrin_the_tenderAI, boss_postmaster_malown::boss_postmaster_malownAI, boss_hogger, celebras_the_cursed::celebras_the_cursedAI, boss_landslide::boss_landslideAI, npc_ymirjar_flamebearer, boss_zuramat, boss_broggok::boss_broggokAI, boss_overlord_wyrmthalak, boss_kormok::boss_kormokAI, boss_loatheb, boss_ambassador_hellmaw, boss_doomwalker, boss_curator::boss_curatorAI, boss_herod, npc_mageguard_dalaran, npc_brunnhildar_prisoner, boss_talon_king_ikiss, boss_murmur, boss_commander_sarannis, boss_marwyn::boss_marwynAI, boss_nethermancer_sepethrea, boss_emperor_dagran_thaurissan::boss_draganthaurissanAI, boss_golemagg, boss_jindo_the_godbreaker::boss_jindo_the_godbreakerAI, boss_erekem, npc_daegarn, boss_laj, boss_romogg_bonecrusher::boss_romogg_bonecrusherAI, boss_maleki_the_pallid::boss_maleki_the_pallidAI, boss_chrono_lord_deja, boss_mennu_the_betrayer, boss_corla::boss_corlaAI, boss_daakara::boss_daakaraAI, boss_aeonus, boss_temporus, boss_eck, npc_argent_valiant, boss_lord_valthalak, boss_nalorakk::boss_nalorakkAI, boss_krystallus, boss_rokmar_the_crackler, npc_guard_generic, boss_galvangar, boss_beauty::boss_beautyAI, boss_magmadar, boss_mordresh_fire_eye::boss_mordresh_fire_eyeAI, boss_high_botanist_freywinn, boss_drekthar, boss_ascendant_lord_obsidius::boss_ascendant_lord_obsidiusAI, boss_karsh_steelbender::boss_karsh_steelbenderAI, boss_interrogator_vishas, boss_hexlord_malacrass::boss_hex_lord_malacrassAI, boss_general_angerforge::boss_general_angerforgeAI, boss_halycon, npc_wounded_coldridge_mountaineer::npc_wounded_coldridge_mountaineerAI, boss_hydromancer_thespia::boss_thespiaAI, boss_arcanist_doan, boss_bloodmage_thalnos, boss_zanzil::boss_zanzilAI, boss_boss_ras_frostwhisper::boss_rasfrostAI, boss_vectus::boss_vectusAI, boss_janalai::boss_janalaiAI, npc_drakuru_shackles, boss_pandemonius, boss_magmus::boss_magmusAI, boss_the_beast::boss_thebeastAI, boss_lord_alexei_barov::boss_lordalexeibarovAI, boss_baroness_anastari, npc_dumpy_and_keeshan::npc_dumpy_and_keeshanAI, boss_halazzi::boss_halazziAI, boss_void_reaver, boss_moira_bronzebeard::boss_moira_bronzebeardAI, boss_ironaya, boss_glutton::boss_gluttonAI, boss_quagmirran, npc_whisperwind_lasher::npc_whisperwind_lasherAI, boss_zereketh_the_unbound, npc_pet_shaman_earth_elemental, boss_high_interrogator_gerstahn::boss_high_interrogator_gerstahnAI, boss_gizrul_the_slavener, npc_pet_gen_pandaren_monk, boss_urok_doomhowl, boss_warmaster_voone, boss_jandice_barov::boss_jandicebarovAI, boss_venoxis, boss_aku_mai, boss_kelris, boss_hungarfen, boss_tuten_kash::boss_tuten_kashAI, npc_frozen_mountaineer::npc_frozen_mountaineerAI, boss_kilnara, CombatAI, npc_fire_cyclone::npc_fire_cycloneAI, boss_azshir_the_sleepless, boss_death_knight_darkreaver::boss_death_knight_darkreaverAI, boss_moragg, boss_vanndar, boss_ambassador_flamelash::boss_ambassador_flamelashAI, boss_drakkisath, boss_akilzon::boss_akilzonAI, boss_ioc_horde_alliance, npc_dragonflayer_forge_master, quartermaster_zigris, boss_shadow_hunter_voshgajin, boss_grilek, boss_hazzarah, boss_renataki, boss_mother_smolderweb, boss_highlord_omokk, boss_lavanthor, and boss_horAI.

147 { }
+ Here is the caller graph for this function:

◆ SelectTarget() [1/2]

Unit * UnitAI::SelectTarget ( SelectTargetMethod  targetType,
uint32  offset = 0,
float  dist = 0.0f,
bool  playerOnly = false,
bool  withTank = true,
int32  aura = 0 
)
103 {
104  return SelectTarget(targetType, position, DefaultTargetSelector(me, dist, playerOnly, withTank, aura));
105 }
Unit *const me
Definition: UnitAI.h:136
Unit * SelectTarget(SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
Definition: UnitAI.cpp:102
Definition: UnitAI.h:60

◆ SelectTarget() [2/2]

template<class PREDICATE >
Unit* UnitAI::SelectTarget ( SelectTargetMethod  targetType,
uint32  offset,
PREDICATE const &  predicate 
)
inline
178  {
180  // shortcut: if we ignore the first <offset> elements, and there are at most <offset> elements, then we ignore ALL elements
181  if (mgr.GetThreatListSize() <= offset)
182  return nullptr;
183 
184  std::list<Unit*> targetList;
185  SelectTargetList(targetList, mgr.GetThreatListSize(), targetType, offset, predicate);
186 
187  // maybe nothing fulfills the predicate
188  if (targetList.empty())
189  return nullptr;
190 
191  switch (targetType)
192  {
197  return targetList.front();
200  default:
201  return nullptr;
202  }
203  }
Definition: ThreatManager.h:81
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
Definition: Containers.h:119
void SelectTargetList(std::list< Unit *> &targetList, uint32 num, SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
Definition: UnitAI.cpp:107
size_t GetThreatListSize() const
Definition: ThreatManager.h:118
ThreatManager & GetThreatManager()
Definition: UnitAI.cpp:325
+ Here is the call graph for this function:

◆ SelectTargetList() [1/2]

void UnitAI::SelectTargetList ( std::list< Unit *> &  targetList,
uint32  num,
SelectTargetMethod  targetType,
uint32  offset = 0,
float  dist = 0.0f,
bool  playerOnly = false,
bool  withTank = true,
int32  aura = 0 
)
108 {
109  SelectTargetList(targetList, num, targetType, offset, DefaultTargetSelector(me, dist, playerOnly, withTank, aura));
110 }
Unit *const me
Definition: UnitAI.h:136
void SelectTargetList(std::list< Unit *> &targetList, uint32 num, SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
Definition: UnitAI.cpp:107
Definition: UnitAI.h:60
+ Here is the caller graph for this function:

◆ SelectTargetList() [2/2]

template<class PREDICATE >
void UnitAI::SelectTargetList ( std::list< Unit *> &  targetList,
uint32  num,
SelectTargetMethod  targetType,
uint32  offset,
PREDICATE const &  predicate 
)
inline
222  {
223  targetList.clear();
225  // shortcut: we're gonna ignore the first <offset> elements, and there's at most <offset> elements, so we ignore them all - nothing to do here
226  if (mgr.GetThreatListSize() <= offset)
227  return;
228 
229  if (targetType == SelectTargetMethod::MaxDistance || targetType == SelectTargetMethod::MinDistance)
230  {
231  for (ThreatReference const* ref : mgr.GetUnsortedThreatList())
232  {
233  if (ref->IsOffline())
234  continue;
235 
236  targetList.push_back(ref->GetVictim());
237  }
238  }
239  else
240  {
241  Unit* currentVictim = mgr.GetCurrentVictim();
242  if (currentVictim)
243  targetList.push_back(currentVictim);
244 
245  for (ThreatReference const* ref : mgr.GetSortedThreatList())
246  {
247  if (ref->IsOffline())
248  continue;
249 
250  Unit* thisTarget = ref->GetVictim();
251  if (thisTarget != currentVictim)
252  targetList.push_back(thisTarget);
253  }
254  }
255 
256  // shortcut: the list isn't gonna get any larger
257  if (targetList.size() <= offset)
258  {
259  targetList.clear();
260  return;
261  }
262 
263  // right now, list is unsorted for DISTANCE types - re-sort by SelectTargetMethod::MaxDistance
264  if (targetType == SelectTargetMethod::MaxDistance || targetType == SelectTargetMethod::MinDistance)
265  SortByDistance(targetList, targetType == SelectTargetMethod::MinDistance);
266 
267  // now the list is MAX sorted, reverse for MIN types
268  if (targetType == SelectTargetMethod::MinThreat)
269  targetList.reverse();
270 
271  // ignore the first <offset> elements
272  while (offset)
273  {
274  targetList.pop_front();
275  --offset;
276  }
277 
278  // then finally filter by predicate
279  targetList.remove_if([&predicate](Unit* target) { return !predicate(target); });
280 
281  if (targetList.size() <= num)
282  return;
283 
284  if (targetType == SelectTargetMethod::Random)
285  Trinity::Containers::RandomResize(targetList, num);
286  else
287  targetList.resize(num);
288  }
Definition: ThreatManager.h:81
Trinity::IteratorPair< ThreatListIterator > GetUnsortedThreatList() const
Definition: ThreatManager.h:121
void SortByDistance(std::list< Unit *> &list, bool ascending=true)
Definition: UnitAI.cpp:330
void RandomResize(C &container, std::size_t requestedSize)
Definition: Containers.h:77
size_t GetThreatListSize() const
Definition: ThreatManager.h:118
Trinity::IteratorPair< threat_list_heap::ordered_iterator > GetSortedThreatList() const
Definition: ThreatManager.h:125
Definition: ThreatManager.h:252
Unit * GetVictim() const
Definition: Unit.h:833
ThreatManager & GetThreatManager()
Definition: UnitAI.cpp:325
Unit * GetCurrentVictim()
Definition: ThreatManager.cpp:202
Definition: Unit.h:746
+ Here is the call graph for this function:

◆ SetData()

virtual void UnitAI::SetData ( uint32  ,
uint32   
)
inlinevirtual

Reimplemented in npc_shadowmoon_tuber_node::npc_shadowmoon_tuber_nodeAI, npc_gauntlet_trash, npc_gunship_boarding_addAI, npc_mimiron_emergency_fire_bot::npc_mimiron_emergency_fire_botAI, npc_darkrune_guardian, npc_the_lich_king_escape_hor::npc_the_lich_king_escape_horAI, npc_combustion_consumption::npc_combustion_consumptionAI, npc_muradin_bronzebeard_igb, npc_expedition_engineer, npc_meteor_strike::npc_meteor_strikeAI, npc_sindragosa_trash, npc_saurfang_event, npc_expedition_trapper, npc_high_overlord_saurfang_igb, npc_expedition_defender, boss_leviathan_mk_ii::boss_leviathan_mk_iiAI, violet_hold_trashAI, npc_alexstraza_the_lifebinder::npc_alexstraza_the_lifebinderAI, npc_halion_controller::npc_halion_controllerAI, npc_fear_controller, npc_infernal_rain_hellfire, npc_violet_hold_teleportation_portal, npc_violet_hold_teleportation_portal_commonAI, boss_the_lich_king, npc_kelthuzad_minionAI, npc_raz_the_crazed::npc_raz_the_crazedAI, gunship_npc_AI, boss_professor_putricide, npc_argent_soldier::npc_argent_soldierAI, boss_toc_champion_controller, npc_simon_bunny::npc_simon_bunnyAI, npc_twisted_visage, npc_hadronox_crusherPackAI, npc_omrogg_heads::npc_omrogg_headsAI, boss_malygos, npc_alchemist_finklestein, npc_zombie_chow, boss_halion::boss_halionAI, boss_garothi_worldbreaker, boss_flame_leviathan::boss_flame_leviathanAI, npc_gatewatcher_petAI, npc_crystal_channel_target, boss_paletress::boss_paletressAI, boss_blood_council_controller, boss_xt002, npc_idol_room_spawner::npc_idol_room_spawnerAI, npc_blastmaster_emi_shortfuse::npc_blastmaster_emi_shortfuseAI, npc_outhouse_bunny, boss_festergut, npc_highlord_tirion_fordring_lh, boss_victor_nefarius, npc_enslaved_proto_drake, boss_felblood_kaelthas, boss_rend_blackhand, dummy_dragonAI, generic_vehicleAI_toc5::generic_vehicleAI_toc5AI, boss_drakkari_colossus, SmartAI, npc_hearthsinger_forresten_cot::npc_hearthsinger_forresten_cotAI, boss_earthrager_ptah::boss_earthrager_ptahAI, boss_keleseth, npc_announcer_toc5::npc_announcer_toc5AI, boss_wrath_scryer_soccothrates, boss_shattered_executioner::boss_shattered_executionerAI, boss_grand_warlock_nethekurse::boss_grand_warlock_nethekurseAI, boss_blackheart_the_inciter, boss_dalliah_the_doomsayer, boss_pyroguard_emberseer, boss_gyth, npc_invis_infernal_caster::npc_invis_infernal_casterAI, and npc_frozen_mountaineer::npc_frozen_mountaineerAI.

158 { }
+ Here is the caller graph for this function:

◆ SetGUID()

◆ ShouldSparWith()

virtual bool UnitAI::ShouldSparWith ( Unit const *  ) const
inlinevirtual

Reimplemented in npc_thorim_pre_phase::npc_thorim_pre_phaseAI.

325 { return false; }

◆ SortByDistance()

void UnitAI::SortByDistance ( std::list< Unit *> &  list,
bool  ascending = true 
)
private
331 {
332  list.sort(Trinity::ObjectDistanceOrderPred(me, ascending));
333 }
Definition: Object.h:778
Unit *const me
Definition: UnitAI.h:136

◆ SpellInterrupted()

virtual void UnitAI::SpellInterrupted ( uint32  ,
uint32   
)
inlinevirtual

Called when a spell is interrupted by Spell::EffectInterruptCast Use to reschedule next planned cast of spell.

Reimplemented in CombatAI.

315 { }

◆ UpdateAI()

virtual void UnitAI::UpdateAI ( uint32  diff)
pure virtual

Implemented in npc_quel_delar_sword::npc_quel_delar_swordAI, npc_uther_quel_delar::npc_uther_quel_delarAI, npc_lumbering_abomination::npc_lumbering_abominationAI, npc_gen_void_zone, npc_risen_witch_doctor::npc_risen_witch_doctorAI, npc_raging_ghoul::npc_raging_ghoulAI, npc_argent_squire_gruntling::npc_argent_squire_gruntlingAI, npc_escape_event_trash, npc_toc_pet_hunter, npc_spiritual_reflection::npc_spiritual_reflectionAI, npc_toc_pet_warlock, npc_train_wrecker::npc_train_wreckerAI, npc_laughing_skull::npc_laughing_skullAI, npc_broken_frostmourne, npc_toc_retro_paladin, npc_frostsworn_general::npc_frostsworn_generalAI, npc_imp_in_a_ball::npc_imp_in_a_ballAI, npc_spirit_bomb, npc_garona::npc_garonaAI, npc_illidan_generic_fire, npc_toc_enh_shaman, npc_spring_rabbit::npc_spring_rabbitAI, npc_spirit_warden, npc_tortured_rifleman::npc_tortured_riflemanAI, npc_cage_trap_trigger, npc_yogg_saron_illusions::npc_yogg_saron_illusionsAI, npc_spectral_footman::npc_spectral_footmanAI, npc_terenas_menethil, npc_shadowy_mercenary::npc_shadowy_mercenaryAI, npc_toc_rogue, npc_gunship_mage, npc_maiev, npc_the_lich_king_tirion_dawn::npc_the_lich_king_tirion_dawnAI, npc_yogg_saron_keeper::npc_yogg_saron_keeperAI, npc_mimiron_proximity_mine::npc_mimiron_proximity_mineAI, npc_gunship_rocketeer, npc_sif::npc_sifAI, npc_shadow_demon, npc_strangulate_vehicle, npc_toc_dk, npc_gunship_gunner, npc_phantom_mage::npc_phantom_mageAI, npc_mimiron_frost_bomb::npc_mimiron_frost_bombAI, npc_observation_ring_keeper::npc_observation_ring_keeperAI, npc_training_dummy, npc_mimiron_flames::npc_mimiron_flamesAI, npc_gunship_boarding_leader, npc_ancient_rune_giant::npc_ancient_rune_giantAI, npc_ghostly_priest::npc_ghostly_priestAI, npc_toc_warrior, npc_valkyr_shadowguard, npc_bloodmage_laurith, npc_unstable_sun_beam::npc_unstable_sun_beamAI, npc_immortal_guardian::npc_immortal_guardianAI, npc_flame_of_azzinoth, npc_brewfest_reveler_2, alliance_rifleman::alliance_riflemanAI, npc_gunship_boarding_addAI, npc_descend_into_madness::npc_descend_into_madnessAI, npc_blade_of_azzinoth, npc_nature_bomb::npc_nature_bombAI, npc_mimiron_computer::npc_mimiron_computerAI, npc_runic_colossus::npc_runic_colossusAI, npc_toc_boomkin, npc_influence_tentacle::npc_influence_tentacleAI, npc_wyrmrest_skytalon, npc_eonars_gift::npc_eonars_giftAI, npc_parasitic_shadowfiend, npc_darkrune_sentinel, npc_enraged_spirit::npc_enraged_spiritAI, npc_impaling_spear, npc_mimiron_emergency_fire_bot::npc_mimiron_emergency_fire_botAI, npc_raging_spirit, npc_zafod_boombox, npc_arcane_overload, npc_healthy_spore::npc_healthy_sporeAI, npc_crusher_tentacle::npc_crusher_tentacleAI, npc_toc_hunter, npc_gargoyle::npc_gargoyleAI, npc_darkrune_guardian, npc_scion_of_eternity, npc_roger_owens::npc_roger_owensAI, npc_constrictor_tentacle::npc_constrictor_tentacleAI, npc_sinster_reflection::npc_sinster_reflectionAI, npc_hidden_cultist, npc_the_lich_king_escape_hor::npc_the_lich_king_escape_horAI, boss_romulo::boss_romuloAI, npc_phoenix_egg_tk, npc_living_inferno::npc_living_infernoAI, npc_mimiron_assault_bot::npc_mimiron_assault_botAI, npc_ancient_conservator::npc_ancient_conservatorAI, npc_shambling_horror_icc, npc_darkrune_watcher, npc_nexus_lord, npc_corruptor_tentacle::npc_corruptor_tentacleAI, npc_frostwing_ymirjar_vrykul, boss_zelfan::boss_zelfanAI, npc_toc_mage, npc_combustion_consumption::npc_combustion_consumptionAI, npc_phoenix_tk, npc_giant_eye_tentacle::giant_eye_tentacleAI, npc_muradin_bronzebeard_igb, npc_razorscale_spawner, npc_shield_orb::npc_shield_orbAI, boss_aerial_command_unit::boss_aerial_command_unitAI, npc_snaplasher::npc_snaplasherAI, npc_frost_wyrm::npc_frost_wyrmAI, npc_valiance_keep_cannoneer, npc_akama_illidan, npc_tirion_fordring_tft, npc_guardian_of_yogg_saron::npc_guardian_of_yogg_saronAI, npc_sergeant_morigan::npc_sergeant_moriganAI, npc_violet_hold_defense_system, npc_toc_warlock, boss_master_engineer_telonicus, npc_freya_ward_summon::npc_freya_ward_summonAI, boss_apoko::boss_apokoAI, npc_storm_lasher::npc_storm_lasherAI, npc_armageddon::npc_armageddonAI, npc_ominous_cloud::npc_ominous_cloudAI, boss_julianne::boss_julianneAI, npc_meteor_strike_flame::npc_meteor_strike_flameAI, npc_expedition_engineer, npc_melee_hover_disk, npc_trapped_mammoth_calf, npc_captain_rupert, npc_giant_claw_tentacle::giant_claw_tentacleAI, npc_freyas_ward::npc_freyas_wardAI, npc_fel_stalker::npc_fel_stalkerAI, npc_guardian::npc_guardianAI, npc_meteor_strike::npc_meteor_strikeAI, npc_volatile_felfire_fiend::npc_volatile_felfire_fiendAI, npc_illidari_spawn::npc_illidari_spawnAI, npc_toc_shadow_priest, npc_ancient_water_spirit::npc_ancient_water_spiritAI, boss_brain_of_yogg_saron::boss_brain_of_yogg_saronAI, npc_thorim_trashAI, npc_hodirs_fury::npc_hodirs_furyAI, npc_dark_nucleus, boss_grand_astromancer_capernian, npc_captain_grondel, npc_icc_nerubar_broodkeeper, npc_beryl_sorcerer, boss_garaxxas::boss_garaxxasAI, npc_power_spark, npc_meteor_strike_initial::npc_meteor_strike_initialAI, npc_felfire_portal::npc_felfire_portalAI, npc_garments_of_quests::npc_garments_of_questsAI, boss_vx_001::boss_vx_001AI, npc_malcolm_moore::npc_malcolm_mooreAI, npc_scarlet_ghoul, npc_crypt_fiend::npc_crypt_fiendAI, npc_mimirons_inferno::npc_mimirons_infernoAI, npc_detonating_lasher::npc_detonating_lasherAI, npc_lord_illidan_stormrage::npc_lord_illidan_stormrageAI, npc_portal_eoe, npc_toc_priest, npc_captain_brandon, npc_claw_tentacle::claw_tentacleAI, npc_kinetic_bomb, npc_ashtongue_spiritbinder, boss_lord_sanguinar, npc_jaina_or_sylvanas_escape_hor::npc_jaina_or_sylvanas_escape_horAI, npc_thorims_hammer::npc_thorims_hammerAI, npc_high_overlord_saurfang_igb, npc_sindragosa_trash, boss_yogg_saron::boss_yogg_saronAI, npc_hand_of_the_deceiver::npc_hand_of_the_deceiverAI, npc_expedition_trapper, boss_rouge_toc5::boss_rouge_toc5AI, npc_ball_of_flame, npc_oscillating_frequency_scanner_master_bunny::npc_oscillating_frequency_scanner_master_bunnyAI, npc_dream_cloud, boss_elder_ironbranch::boss_elder_ironbranchAI, npc_colossus::npc_colossusAI, npc_captain_arnath, npc_tesla, npc_eye_tentacle::eye_tentacleAI, npc_dream_portal, npc_brann_bronzebeard_algalon, boss_warlord_salaris::boss_warlord_salarisAI, npc_vampiric_fiend, npc_muradin_bronzebeard_icc, npc_banshee::npc_bansheeAI, npc_toc_paladin, npc_orb_carrier::npc_orb_carrierAI, npc_ashtongue_elementalist, npc_pool_of_tar::npc_pool_of_tarAI, boss_thaladred_the_darkener, npc_leryssa::npc_leryssaAI, npc_anachronos_quest_trigger::npc_anachronos_quest_triggerAI, npc_arthas_stratholme::npc_arthas_stratholmeAI, boss_bigbadwolf::boss_bigbadwolfAI, npc_bartleby_battson::npc_bartleby_battsonAI, npc_hodir_mage::npc_hodir_mageAI, npc_twilight_whelp, npc_blood_queen_lana_thel, npc_gluttonous_abomination, npc_darnavan, npc_mechanolift::npc_mechanoliftAI, boss_the_lich_king, npc_feugen, npc_ashtongue_rogue, boss_leviathan_mk_ii::boss_leviathan_mk_iiAI, npc_blistering_zombie, npc_rimefang_icc, boss_elder_stonebark::boss_elder_stonebarkAI, npc_shield_generator_channel::npc_shield_generator_channelAI, boss_jormungarAI, npc_twilight_fissure, npc_varian_toc, npc_kelthuzad_shadow_fissure, advisorbase_ai, npc_toc_shaman, DarkFallenAI, npc_injured_patient::npc_injured_patientAI, npc_weapon_inspector_valarjar, npc_torloth_the_magnificent::npc_torloth_the_magnificentAI, npc_alexstraza_the_lifebinder::npc_alexstraza_the_lifebinderAI, npc_necromancer::npc_necromancerAI, npc_expedition_commander, npc_hodir_druid::npc_hodir_druidAI, npc_suppresser, boss_flame_leviathan_safety_container::boss_flame_leviathan_safety_containerAI, boss_hunter_toc5::boss_hunter_toc5AI, npc_king_jokkum_vehicle, npc_vengeful_shade, boss_yazzai::boss_yazzaiAI, npc_flame_tsunami, boss_prince_valanar_icc, npc_ashtongue_defender, npc_kelthuzad_guardian, npc_gothik_trigger, boss_illidan_stormrage, boss_sara::boss_saraAI, npc_counselor_talbot::npc_counselor_talbotAI, npc_living_constellation, npc_cyclone::npc_cycloneAI, npc_garrosh_toc, boss_lord_crispin_ference::boss_lord_crispin_ferenceAI, npc_fear_controller, npc_toxic_sporebat::npc_toxic_sporebatAI, npc_twisted_visage, npc_icc_orb_controller, npc_toc_druid, npc_high_overlord_saurfang_icc, npc_cult_adherent, npc_hodir_shaman::npc_hodir_shamanAI, npc_twilight_eggs, npc_blazing_skeleton, npc_greyheart_spellbinder::npc_greyheart_spellbinderAI, npc_ashtongue_sorcerer, npc_putricide_oozeAI, boss_elder_brightleaf::boss_elder_brightleafAI, npc_dark_rider_of_acherus, npc_sir_thomas, npc_infernal_rain_hellfire, npc_doctor::npc_doctorAI, npc_spinestalker, boss_malygos, boss_crone::boss_croneAI, npc_anub_ar_shadowcaster, npc_kelthuzad_abomination, boss_eramas_brightblaze::boss_eramas_brightblazeAI, npc_jena_anderson::npc_jena_andersonAI, boss_lord_robin_daris::boss_lord_robin_darisAI, npc_shadow_image::npc_shadow_imageAI, boss_prince_taldaram_icc, npc_the_etymidian::npc_the_etymidianAI, npc_qiraj_war_spawn::npc_qiraj_war_spawnAI, npc_acolyte_of_vesperon, npc_reliquary_combat_trigger, npc_kelthuzad_banshee, npc_ghoul::npc_ghoulAI, boss_faction_championsAI, npc_halion_controller::npc_halion_controllerAI, boss_flame_leviathan_defense_cannon::boss_flame_leviathan_defense_cannonAI, npc_risen_archmage, npc_frostbrood_skytalon, npc_flame_bunny, npc_wild_wyrm, boss_kiljaeden::boss_kiljaedenAI, npc_fizzlebang_toc, npc_kelthuzad_skeleton, npc_hadronox_foeAI, npc_tainted_elemental::npc_tainted_elementalAI, npc_anubarak_spike, npc_violet_hold_teleportation_portal_commonAI, npc_hodir_priest::npc_hodir_priestAI, boss_thorim::boss_thorimAI, npc_cult_fanatic, npc_watch_commander_leonus, boss_shaman_toc5::boss_shaman_toc5AI, npc_anub_ar_skirmisher, boss_taerar::boss_taerarAI, npc_pulsing_pumpkin, npc_xt_void_zone, boss_leotheras_the_blind_demonform::boss_leotheras_the_blind_demonformAI, npc_open_portal_target_toc, npc_martha_goslin::npc_martha_goslinAI, npc_creature_generator_akama, npc_bullet_controller, boss_prince_keleseth_icc, npc_acolyte_of_shadron, npc_snowpacked_icicle::npc_snowpacked_icicleAI, npc_enslaved_soul, npc_anachronos_the_ancient::npc_anachronos_the_ancientAI, npc_raz_the_crazed::npc_raz_the_crazedAI, boss_lady_keira_berrybuck::boss_lady_keira_berrybuckAI, npc_azure_saboteur, boss_ellris_duskhallow::boss_ellris_duskhallowAI, npc_life_spark, npc_lake_frog, boss_roar::boss_roarAI, npc_stalagg, boss_fathomguard_caribdis::boss_fathomguard_caribdisAI, npc_ice_tomb, npc_valkyr_of_odyn, npc_death_knight_initiate::npc_death_knight_initiateAI, npc_unleashed_light, npc_ahune_ice_spear_bunny, npc_anub_ar_warrior, npc_earthmender_wilda::npc_earthmender_wildaAI, npc_beasts_combat_stalker, npc_enchanted_elemental::npc_enchanted_elementalAI, npc_geezle::npc_geezleAI, npc_abomination::npc_abominationAI, npc_gothik_minion_baseAI, npc_boombot, npc_argent_soldier::npc_argent_soldierAI, npc_taretha::npc_tarethaAI, npc_unleashed_dark, npc_image_of_medivh::npc_image_of_medivhAI, npc_elder_kekek::npc_elder_kekekAI, npc_aran_elemental::water_elementalAI, npc_highlord_darion_mograine::npc_highlord_darion_mograineAI, npc_the_lich_king_controller, npc_icicle::npc_icicleAI, npc_ashtongue_channeler, npc_arthas_teleport_visual::npc_arthas_teleport_visualAI, boss_cthun::cthunAI, npc_magister_aledis::npc_magister_aledisAI, npc_felmyst_trail::npc_felmyst_trailAI, npc_anubarak_anub_ar_venomancer, npc_rocknot::npc_rocknotAI, boss_professor_putricide, boss_kaelthas, boss_razorscale, boss_stormcaller_brundir::boss_stormcaller_brundirAI, npc_watcher_silthik, boss_lady_catriona_von_indi::boss_lady_catriona_von_indiAI, npc_veras_vanish_effect, npc_spectating_valarjar, npc_flame_patch_alar, npc_vesperon, npc_a_special_surprise::npc_a_special_surpriseAI, npc_nerubian_burrower, npc_earthen_ring_flamecaller, boss_headless_horseman, npc_felmyst_vapor::npc_felmyst_vaporAI, npc_anubarak_anub_ar_guardian, boss_voice_of_yogg_saron::boss_voice_of_yogg_saronAI, npc_crazed_mage::npc_crazed_mageAI, boss_alythess::boss_alythessAI, boss_krosh_firehand::boss_krosh_firehandAI, npc_pummeller, boss_grubbis::boss_grubbisAI, npc_frost_freeze_trap, npc_ember_of_alar, boss_essence_of_anger, npc_tirion_toc, boss_veklor::boss_veklorAI, npc_seeping_essence_stalker, npc_scourge_hulk, boss_kagani_nightstrike::boss_kagani_nightstrikeAI, boss_twilight_halion::boss_twilight_halionAI, boss_algalon_the_observer, npc_venture_co_straggler, boss_mage_toc5::boss_mage_toc5AI, boss_tinhead::boss_tinheadAI, npc_nagrand_banner::npc_kil_sorrow_spellbinderAI, npc_hellfire_sentry::npc_hellfire_sentryAI, npc_snobold_vassal, boss_fathomguard_tidalvess::boss_fathomguard_tidalvessAI, npc_blackhole, npc_skadi_trashAI, npc_anubarak_anub_ar_assassin, npc_high_oracle_soo_roo::npc_high_oracle_soo_rooAI, npc_swarming_guardian, boss_lady_deathwhisper, boss_lady_malande, npc_watcher_narjil, boss_mimiron::boss_mimironAI, npc_shadron, boss_baron_rafe_dreuger::boss_baron_rafe_dreugerAI, npc_wyrmrest_defender, npc_midsummer_bunny_pole::npc_midsummer_bunny_poleAI, npc_kiljaeden_controller::npc_kiljaeden_controllerAI, npc_scrapbot, npc_swarm_scarab, npc_chromie_middle::npc_chromie_middleAI, boss_sister_svalna, npc_bone_spike, npc_mad_prisoner::npc_mad_prisonerAI, npc_rotting_frost_giant, npc_giant_infernal::npc_giant_infernalAI, npc_hadronox_crusherPackAI, npc_wounded_skirmisher, npc_eye_of_acherus, npc_twilight_volunteer, npc_nagrand_banner::npc_nagrand_bannerAI, npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, npc_memory::npc_memoryAI, npc_akama_shade, boss_blindeye_the_seer::boss_blindeye_the_seerAI, boss_nefarian, boss_deathbringer_saurfang, boss_essence_of_desire, npc_egg_pile::npc_egg_pileAI, boss_priestess_lackey_commonAI, npc_void_sentinel, boss_sindragosa, npc_thassarian::npc_thassarianAI, npc_felblood_kaelthas_phoenix, npc_grauf, npc_sapphiron_blizzard, boss_veknilash::boss_veknilashAI, boss_hodir::boss_hodirAI, npc_solarium_priest, npc_tenebron, npc_living_mojo, npc_molten_golem, npc_sinclari_vh, npc_omrogg_heads::npc_omrogg_headsAI, boss_high_nethermancer_zerevor, npc_magtheridon_room, npc_mistress_of_pain, npc_coilfang_ambusher::npc_coilfang_ambusherAI, npc_seismic_shard::npc_seismic_shardAI, boss_leotheras_the_blind::boss_leotheras_the_blindAI, npc_enslaved_netherwing_drake::npc_enslaved_netherwing_drakeAI, npc_watcher_gashra, npc_blessed_banner, npc_scorch_ground::npc_scorch_groundAI, npc_ritual_channeler, npc_alchemist_finklestein, boss_baroness_dorothea_millstipe::boss_baroness_dorothea_millstipeAI, boss_valithria_dreamwalker, npc_torch_tossing_target_bunny_controller::npc_torch_tossing_target_bunny_controllerAI, boss_felmyst::boss_felmystAI, npc_stormforged_lieutenant, npc_jaina_or_sylvanas_intro_hor::npc_jaina_or_sylvanas_intro_horAI, boss_freya::boss_freyaAI, npc_simon_bunny::npc_simon_bunnyAI, npc_phase_hunter::npc_phase_hunterAI, player_overlord_brandAI, npc_dark_fiend, npc_chained_spirit, npc_saronite_vapors::npc_saronite_vaporsAI, boss_vazruden_the_herald::boss_vazruden_the_heraldAI, boss_gothik, boss_strawman::boss_strawmanAI, npc_ahune_bunny, npc_the_biggest_tree::npc_the_biggest_treeAI, npc_giant_spotlight, npc_announcer_toc5::npc_announcer_toc5AI, npc_coldflame, boss_sartharion, npc_phalanx::npc_phalanxAI, boss_kalecgos_human, boss_malchezaar::boss_malchezaarAI, npc_scarlet_courier::npc_scarlet_courierAI, npc_warden_mellichar, npc_iron_sludge, boss_runemaster_molgeim::boss_runemaster_molgeimAI, npc_amberpine_woodsman, npc_stalactite_trigger::npc_stalactite_triggerAI, npc_brann_bronzebeard_anraphet::npc_brann_bronzebeard_anraphetAI, npc_twilight_sadist::npc_twilight_sadistAI, npc_precious_icc, boss_warrior_toc5::boss_warrior_toc5AI, boss_garothi_worldbreaker, dummy_dragonAI, npc_gravity_well::npc_gravity_wellAI, boss_moroes_guestAI, npc_stonekeepers::npc_stonekeepersAI, boss_krick, boss_fathomguard_sharkkis::boss_fathomguard_sharkkisAI, npc_zombie_chow, boss_flame_leviathan::boss_flame_leviathanAI, WorldBossAI, boss_midnight::boss_midnightAI, npc_black_knight_skeletal_gryphon::npc_black_knight_skeletal_gryphonAI, boss_four_horsemen_baseAI, npc_feral_defender, npc_omen, npc_kurenai_captive::npc_kurenai_captiveAI, npc_fel_infernal, npc_time_rift, boss_blood_council_controller, boss_kiggler_the_crazed::boss_kiggler_the_crazedAI, boss_nightbane::boss_nightbaneAI, npc_hellfire_channeler, npc_muru_portal, boss_essence_of_suffering, boss_kalecgos_kj::boss_kalecgos_kjAI, npc_demolitionist_legoso::npc_demolitionist_legosoAI, boss_twin_baseAI, npc_fel_orc_convert::npc_fel_orc_convertAI, boss_thaddius, npc_malformed_ooze, boss_paletress::boss_paletressAI, npc_water_globule::npc_water_globuleAI, boss_saronite_animus::boss_saronite_animusAI, boss_volazj, npc_iron_construct::npc_iron_constructAI, npc_tomb_creature::npc_tomb_creatureAI, boss_blood_queen_lana_thel, npc_stolen_soul, boss_rimefang, npc_lava_fissure::npc_lava_fissureAI, npc_barada::npc_baradaAI, npc_apothecary_baxter, npc_ohgan, npc_tallhorn_stag, npc_twiggy_flathead::npc_twiggy_flatheadAI, npc_risen_ghoul::npc_risen_ghoulAI, npc_coren_direbrew_sisters, npc_blackhand_incarcerator, npc_spark_of_ionar, npc_dancing_flames, BossAI, npc_redridge_citizen::npc_redridge_citizenAI, npc_blazing_monstrosity::npc_blazing_monstrosityAI, npc_son_of_flame, npc_prince_taldaram_flame_sphere, npc_shadowmoon_channeler::npc_shadowmoon_channelerAI, npc_frozen_core, boss_halion::boss_halionAI, boss_lich_king_toc, boss_lady_vashj::boss_lady_vashjAI, npc_yor, boss_onyxia, npc_crystal_channel_target, npc_ruby_emerald_amber_drake, boss_xt002, npc_brann_bronzebeard_keystone, npc_annhylde_the_caller, npc_injured_draenei::npc_injured_draeneiAI, npc_big_ooze, npc_weegli_blastfuse::npc_weegli_blastfuseAI, boss_northrend_beastsAI, npc_stinky_icc, npc_jungle_punch_target, npc_shard_of_torment, boss_muru, npc_muglash::npc_muglashAI, npc_sanctum_sentry, npc_fiendish_imp::npc_fiendish_impAI, boss_skadi, npc_highlord_tirion_fordring_lh, npc_archaedas_minions::npc_archaedas_minionsAI, npc_highborne_lamenter::npc_highborne_lamenterAI, boss_jedoga_shadowseeker, boss_kelthuzad, boss_shade_of_akama, boss_high_inquisitor_whitemane, npc_snowfall_glade_playmate::npc_snowfall_glade_playmateAI, npc_milos_gyro::npc_milos_gyro_AI, boss_hadronox, npc_headless_horseman_head, boss_anubarak_trial, npc_hive_zara_larva::npc_hive_zara_larvaAI, npc_tito::npc_titoAI, npc_mature_netherwing_drake::npc_mature_netherwing_drakeAI, npc_commander_eligor_dawnbringer, npc_barnes::npc_barnesAI, boss_brutallus::boss_brutallusAI, npc_rock_borer::npc_rock_borerAI, boss_yauj::boss_yaujAI, boss_netherspite::boss_netherspiteAI, npc_ichor_globule, boss_archmage_arugal::boss_archmage_arugalAI, npc_slad_ran_viper, npc_twilight_torturer::npc_twilight_torturerAI, boss_warbringer_omrogg::boss_warbringer_omroggAI, boss_olm_the_summoner::boss_olm_the_summonerAI, boss_sapphiron, npc_shadowy_construct, boss_felblood_kaelthas, npc_ethereal_apprentice, npc_valarjar_paying_respect_to_odyn, npc_fiendish_portal::npc_fiendish_portalAI, npc_spectral_ghostly_citizen::npc_spectral_ghostly_citizenAI, npc_baltharus_the_warborn_clone, npc_erekem_guard, npc_little_ooze, boss_reliquary_of_souls, npc_vrykul_skeleton, npc_wg_queue, boss_moroes::boss_moroesAI, npc_amanitar_mushrooms, boss_drakkari_elemental, boss_kalecgos, boss_vazruden::boss_vazrudenAI, boss_priestess_delrissa::boss_priestess_delrissaAI, npc_sartura_royal_guard::npc_sartura_royal_guardAI, npc_slad_ran_constrictor, boss_kologarn::boss_kologarnAI, npc_tournament_training_dummy, boss_krik_thir, boss_victor_nefarius, npc_grimstone::npc_grimstoneAI, npc_lesser_doomguard::npc_lesser_doomguardAI, npc_firelands_magmakin, generic_vehicleAI_toc5::generic_vehicleAI_toc5AI, npc_chicken_cluck::npc_chicken_cluckAI, boss_rend_blackhand, boss_eye_of_cthun::eye_of_cthunAI, npc_engineer_spark_overgrind::npc_engineer_spark_overgrindAI, npc_steamrigger_mechanic::npc_steamrigger_mechanicAI, npc_towering_infernal::npc_towering_infernalAI, npc_doomfire_targetting::npc_doomfire_targettingAI, boss_devourer_of_souls, boss_steelbreaker::boss_steelbreakerAI, boss_alar, boss_shade_of_aran::boss_aranAI, npc_hyldsmeet_protodrake, npc_void_traveler, npc_drakkari_scytheclaw, boss_bjarngrim, boss_magus_telestra, boss_ossirian::boss_ossirianAI, npc_mrfloppy, boss_mandokir, npc_crystal_spike_trigger, npc_enslaved_proto_drake, boss_coren_direbrew, npc_pit_of_saron_icicle, boss_volkhan, boss_slabhide::boss_slabhideAI, boss_svala, boss_grand_warlock_nethekurse::boss_grand_warlock_nethekurseAI, boss_ick, npc_faerlina_add, npc_angered_soul_fragment, npc_doom_blossom, boss_fathomlord_karathress::boss_fathomlord_karathressAI, boss_auriaya, boss_urom, boss_attumen::boss_attumenAI, npc_snufflenose_gopher::npc_snufflenose_gopherAI, boss_tyrannus, boss_baleroc, boss_eadric::boss_eadricAI, npc_chaotic_rift, boss_hydross_the_unstable::boss_hydross_the_unstableAI, boss_magtheridon, npc_flash_freeze::npc_flash_freezeAI, npc_nesingwary_trapper, boss_scarlet_commander_mograine, npc_sironas::npc_sironasAI, npc_onyx_flamecaller, npc_ethereal_beacon, npc_volcano, boss_sacrolash::boss_sacrolashAI, boss_ionar, npc_harbinger_of_flame::npc_harbinger_of_flameAI, npc_firelands_molten_flamefather, boss_anraphet::boss_anraphetAI, boss_viscidus::boss_viscidusAI, boss_high_priestess_azil::boss_high_priestess_azilAI, npc_tribuna_controller, npc_sc_millhouse_manastorm::npc_sc_millhouse_manastormAI, npc_tiger_matriarch, boss_temple_guardian_anhuur::boss_temple_guardian_anhuurAI, npc_webwrap, boss_ignis::boss_ignis_AI, npc_ethereal_sphere, npc_focus_fire::npc_focus_fireAI, npc_icefang, npc_crusade_recruit, boss_chromaggus, npc_jaina_fos, boss_sjonnir, npc_tempest_minion, npc_guard_shattrath_faction, boss_earthrager_ptah::boss_earthrager_ptahAI, npc_taskmaster_fizzule::npc_taskmaster_fizzuleAI, boss_warchief_kargath_bladefist::boss_warchief_kargath_bladefistAI, boss_dorothee::boss_dorotheeAI, npc_medivh_bm, boss_illidari_council, npc_azure_ring_captain, npc_cameron, boss_noth, boss_eregos, boss_doomrel::boss_doomrelAI, boss_entropius, boss_high_astromancer_solarian, npc_wg_spirit_guide, npc_colonel_jules::npc_colonel_julesAI, boss_blackheart_the_inciter_mc_dummy, boss_ingvar_the_plunderer, npc_feasting_valarjar, boss_the_lurker_below::boss_the_lurker_belowAI, boss_jaraxxus, boss_drakkari_colossus, BroggokPrisionersAI, npc_raging_flames, npc_ahnkahar_nerubian, npc_dream_fog::npc_dream_fogAI, boss_garfrost, npc_winterfin_playmate::npc_winterfin_playmateAI, boss_lord_marrowgar, boss_rotface, npc_dk_understudy, npc_voidwalker_summoner, npc_nether_wraith, npc_drakkari_gutripper, boss_apothecary_hummel, boss_vem::boss_vemAI, boss_ichoron, boss_kelidan_the_breaker::boss_kelidan_the_breakerAI, npc_kilrek::npc_kilrekAI, npc_eyestalk::npc_eyestalkAI, npc_unworthy_initiate::npc_unworthy_initiateAI, npc_geist_ambusher, npc_mortimer_moloch, boss_morogrim_tidewalker::boss_morogrim_tidewalkerAI, npc_infernal_attacker::npc_infernal_attackerAI, npc_arugal_voidwalker::npc_arugal_voidwalkerAI, npc_minigob_manabonk, npc_commander_dawnforge::npc_commander_dawnforgeAI, npc_restless_soul::npc_restless_soulAI, npc_thalorien_dawnseeker, npc_bridge_worker_alex::npc_bridge_worker_alexAI, boss_baltharus_the_warborn, npc_fallout_slime, npc_unstable_sphere, boss_gurtogg_bloodboil, npc_curator_astral_flare::npc_curator_astral_flareAI, boss_selin_fireheart::boss_selin_fireheartAI, boss_anub_arak, boss_pyroguard_emberseer, boss_festergut, boss_keleseth, boss_gruul::boss_gruulAI, npc_lady_sylvanas_windrunner::npc_lady_sylvanas_windrunnerAI, npc_guard_generic, npc_wounded_milita::npc_wounded_militaAI, boss_anubrekhan, boss_warlord_kalithresh::boss_warlord_kalithreshAI, npc_warp_splinter_sapling, npc_twilight_flame_caller::npc_twilight_flame_callerAI, boss_lieutenant_drake::boss_lieutenant_drakeAI, npc_nether_drake::npc_nether_drakeAI, npc_maghar_captive::npc_maghar_captiveAI, npc_danica_the_reclaimer, boss_keristrasza, boss_shattered_executioner::boss_shattered_executionerAI, boss_erekem, npc_koltira_deathweaver, npc_warden_thelwater, boss_harbinger_skyriss, boss_ayamiss::boss_ayamissAI, npc_disciple_of_naralex::npc_disciple_of_naralexAI, boss_black_knight::boss_black_knightAI, npc_core_rager, boss_exarch_maladaar, npc_belnistrasz::npc_belnistraszAI, boss_skeram::boss_skeramAI, boss_bronjahm, npc_flamewaker_priest, boss_general_vezax::boss_general_vezaxAI, npc_underbog_mushroom, ScriptedAI, boss_alizabal::boss_alizabalAI, boss_archaedas::boss_archaedasAI, boss_wrath_scryer_soccothrates, boss_kirtonos_the_herald::boss_kirtonos_the_heraldAI, npc_coilfang_waterelemental::npc_coilfang_waterelementalAI, boss_teron_gorefiend, boss_faerlina, npc_inner_demon::npc_inner_demonAI, npc_firesworn, SmartAI, npc_ironhand_guardian::npc_ironhand_guardianAI, boss_saviana_ragefire, npc_freed_protodrake, boss_high_king_maulgar::boss_high_king_maulgarAI, npc_ancient_wisp::npc_ancient_wispAI, npc_firelands_flame_archon, boss_silver_hand_bosses::boss_silver_hand_bossesAI, boss_buru::boss_buruAI, emerald_dragonAI, npc_millhouse_manastorm, boss_amanitar, boss_prince_taldaram, npc_pet_mage_mirror_image, boss_vexallus::boss_vexallusAI, npc_scarlet_trainee, boss_novos, boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI, npc_iceborn_protodrake, boss_moorabi, boss_cannon_master_willey::boss_cannon_master_willeyAI, boss_heigan, boss_loken, boss_mekgineer_steamrigger::boss_mekgineer_steamriggerAI, boss_corborus::boss_corborusAI, boss_slad_ran, boss_anomalus, npc_draenei_survivor::npc_draenei_survivorAI, npc_voljin_zulaman::npc_voljin_zulamanAI, npc_selina_dourman, hyjalAI, boss_ozruk::boss_ozrukAI, npc_air_force_bots::npc_air_force_botsAI, netherspite_infernal::netherspite_infernalAI, boss_grandmaster_vorpil, npc_ruul_snowhoof::npc_ruul_snowhoofAI, boss_xevozz, boss_blackheart_the_inciter, boss_vaelastrasz, npc_blackfathom_deeps_event, boss_azgalor::boss_azgalorAI, boss_ragnaros, boss_gluth, boss_razuvious, boss_general_zarithrian, boss_razorgore, boss_anetheron::boss_anetheronAI, boss_elder_nadox, boss_nazan::boss_nazanAI, boss_balinda, boss_omor_the_unscarred::boss_omor_the_unscarredAI, boss_mr_smite::boss_mr_smiteAI, boss_kazrogal::boss_kazrogalAI, boss_watchkeeper_gargolmar::boss_watchkeeper_gargolmarAI, boss_ormorok, npc_unkor_the_ruthless::npc_unkor_the_ruthlessAI, npc_sylvanas_fos, npc_mageguard_dalaran, boss_moam::boss_moamAI, boss_zuramat, boss_rage_winterchill::boss_rage_winterchillAI, boss_sartura::boss_sarturaAI, boss_captain_skarloc::boss_captain_skarlocAI, boss_tharon_ja, boss_falric::boss_falricAI, boss_maexxna, boss_anzu, boss_commander_sarannis, boss_the_black_stalker::boss_the_black_stalkerAI, boss_dalliah_the_doomsayer, npc_av_marshal_or_warmaster, boss_mal_ganis::boss_mal_ganisAI, boss_shirrak_the_dead_watcher::boss_shirrak_the_dead_watcherAI, boss_occuthar::boss_occutharAI, npc_big_earl::npc_big_earlAI, boss_emalon, boss_thorngrin_the_tender::boss_thorngrin_the_tenderAI, boss_fankriss::boss_fankrissAI, npc_tiger_matriarch_credit, boss_king_dred, boss_doomlord_kazzak, boss_high_inquisitor_fairbanks, boss_epoch_hunter::boss_epoch_hunterAI, boss_warp_splinter, boss_nethermancer_sepethrea, boss_pathaleon_the_calculator, VehicleAI, boss_gyth, boss_high_botanist_freywinn, boss_magistrate_barthilas::boss_magistrate_barthilasAI, boss_trollgore, boss_varos, boss_mechano_lord_capacitus, boss_doomwalker, npc_invis_infernal_caster::npc_invis_infernal_casterAI, npc_hearthsinger_forresten_cot::npc_hearthsinger_forresten_cotAI, boss_chrono_lord_deja, npc_sergeant_bly::npc_sergeant_blyAI, boss_baron_rivendare, boss_aeonus, boss_temporus, npc_lazy_peon::npc_lazy_peonAI, npc_xerestrasza, SimpleCharmedPlayerAI, boss_darkmaster_gandling::boss_darkmaster_gandlingAI, boss_patchwerk, boss_twilight_corrupter::boss_twilight_corrupterAI, npc_daegarn, boss_majordomo, npc_frost_tomb, boss_zum_rah::boss_zum_rahAI, npc_ioc_gunship_captain, boss_nerubenkan::boss_nerubenkanAI, boss_kri::boss_kriAI, npc_cairne_bloodhoof::npc_cairne_bloodhoofAI, boss_ramstein_the_gorger::boss_ramstein_the_gorgerAI, boss_amnennar_the_coldbringer::boss_amnennar_the_coldbringerAI, boss_kurinnaxx::boss_kurinnaxxAI, boss_ouro::boss_ouroAI, boss_marwyn::boss_marwynAI, boss_loatheb, boss_maiden_of_grief, npc_wrathbone_flayer, boss_romogg_bonecrusher::boss_romogg_bonecrusherAI, boss_kormok::boss_kormokAI, boss_galvangar, boss_emperor_dagran_thaurissan::boss_draganthaurissanAI, boss_general_angerforge::boss_general_angerforgeAI, boss_huhuran::boss_huhuranAI, TurretAI, boss_drekthar, npc_pet_shaman_fire_elemental, boss_grobbulus, npc_frogger_trigger_naxx, boss_mennu_the_betrayer, boss_hungarfen, boss_pit_lord_argaloth::boss_pit_lord_argalothAI, boss_corla::boss_corlaAI, boss_rajaxx::boss_rajaxxAI, boss_drakos, boss_vanndar, boss_broodlord, npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI, boss_instructor_malicia::boss_instructormaliciaAI, npc_argent_valiant, boss_overlord_wyrmthalak, npc_kalecgos::npc_kalecgosAI, boss_murmur, boss_laj, boss_golemagg, boss_maiden_of_virtue::boss_maiden_of_virtueAI, boss_postmaster_malown::boss_postmaster_malownAI, boss_ironaya, boss_daakara::boss_daakaraAI, boss_noxxion::boss_noxxionAI, boss_gatewatcher_iron_hand, boss_timmy_the_cruel::boss_timmy_the_cruelAI, boss_nalorakk::boss_nalorakkAI, boss_princess_theradras::boss_ptheradrasAI, npc_whisperwind_lasher::npc_whisperwind_lasherAI, boss_void_reaver, boss_ascendant_lord_obsidius::boss_ascendant_lord_obsidiusAI, boss_karsh_steelbender::boss_karsh_steelbenderAI, npc_wounded_coldridge_mountaineer::npc_wounded_coldridge_mountaineerAI, boss_hexlord_malacrass::boss_hex_lord_malacrassAI, boss_rokmar_the_crackler, boss_gatewatcher_gyrokill, npc_pet_gen_pandaren_monk, boss_baroness_anastari, celebras_the_cursed::celebras_the_cursedAI, boss_ioc_horde_alliance, boss_beauty::boss_beautyAI, boss_maleki_the_pallid::boss_maleki_the_pallidAI, boss_zanzil::boss_zanzilAI, boss_mordresh_fire_eye::boss_mordresh_fire_eyeAI, boss_halycon, boss_lord_valthalak, boss_janalai::boss_janalaiAI, boss_jindo_the_godbreaker::boss_jindo_the_godbreakerAI, npc_ymirjar_flamebearer, npc_dragonflayer_forge_master, ArcherAI, boss_sulfuron, boss_jandice_barov::boss_jandicebarovAI, npc_dumpy_and_keeshan::npc_dumpy_and_keeshanAI, boss_halazzi::boss_halazziAI, boss_kelris, boss_landslide::boss_landslideAI, boss_krystallus, boss_zereketh_the_unbound, boss_magmus::boss_magmusAI, boss_vectus::boss_vectusAI, boss_glutton::boss_gluttonAI, npc_brunnhildar_prisoner, boss_cyanigosa, boss_quagmirran, boss_gizrul_the_slavener, boss_magmadar, boss_venoxis, boss_the_beast::boss_thebeastAI, boss_arcanist_doan, boss_warmaster_voone, boss_kilnara, boss_baron_geddon, boss_azshir_the_sleepless, boss_boss_ras_frostwhisper::boss_rasfrostAI, boss_tuten_kash::boss_tuten_kashAI, boss_archavon, boss_lord_alexei_barov::boss_lordalexeibarovAI, boss_akilzon::boss_akilzonAI, boss_urok_doomhowl, boss_doctor_theolen_krastinov::boss_theolenkrastinovAI, boss_illucia_barov::boss_illuciabarovAI, boss_toravon, CasterAI, NullCreatureAI, boss_moira_bronzebeard::boss_moira_bronzebeardAI, boss_mother_smolderweb, boss_lorekeeper_polkelt::boss_lorekeeperpolkeltAI, boss_the_ravenian::boss_theravenianAI, npc_frozen_mountaineer::npc_frozen_mountaineerAI, boss_drakkisath, npc_pet_hunter_snake_trap, boss_high_interrogator_gerstahn::boss_high_interrogator_gerstahnAI, boss_koralon, boss_ambassador_flamelash::boss_ambassador_flamelashAI, boss_shadow_hunter_voshgajin, boss_garr, boss_moragg, quartermaster_zigris, boss_gehennas, boss_lucifron, boss_shazzrah, boss_highlord_omokk, boss_flamegor, npc_pet_shaman_earth_elemental, boss_grilek, boss_hazzarah, boss_renataki, boss_lavanthor, npc_tb_spirit_guide::npc_tb_spirit_guideAI, npc_fire_cyclone::npc_fire_cycloneAI, boss_ebonroc, boss_firemaw, EscortAI, FollowerAI, CombatAI, PossessedAI, boss_wushoolay, boss_gelihast, PetAI, TotemAI, ScheduledChangeAI, AggressorAI, GuardAI, PassiveAI, ReactorAI, and hyjal_trashAI.

+ Here is the caller graph for this function:

Member Data Documentation

◆ AISpellInfo

std::unordered_map< std::pair< uint32, Difficulty >, AISpellInfoType > UnitAI::AISpellInfo
static

◆ me

Unit* const UnitAI::me
protected

The documentation for this class was generated from the following files: