TrinityCore
Loading...
Searching...
No Matches
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 OnDespawn ()
 
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
 
UnitFinalizeTargetSelection (std::list< Unit * > &targetList, SelectTargetMethod targetType)
 
bool PrepareTargetListSelection (std::list< Unit * > &targetList, SelectTargetMethod targetType, uint32 offset)
 
void FinalizeTargetListSelection (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType)
 

Constructor & Destructor Documentation

◆ UnitAI() [1/2]

UnitAI::UnitAI ( Unit unit)
inlineexplicit
54: me(unit) { }
Unit *const me
Definition: UnitAI.h:52

◆ ~UnitAI()

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

◆ UnitAI() [2/2]

UnitAI::UnitAI ( UnitAI const &  right)
privatedelete

Member Function Documentation

◆ AttackStart()

void UnitAI::AttackStart ( Unit victim)
virtual

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

30{
31 if (victim && me->Attack(victim, true))
32 {
33 // Clear distracted state on attacking
35 {
38 }
39 me->GetMotionMaster()->MoveChase(victim);
40 }
41}
@ UNIT_STATE_DISTRACTED
Definition: Unit.h:256
void Clear()
Definition: MotionMaster.cpp:433
void MoveChase(Unit *target, Optional< ChaseRange > dist={}, Optional< ChaseAngle > angle={})
Definition: MotionMaster.cpp:618
void ClearUnitState(uint32 f)
Definition: Unit.h:843
MotionMaster * GetMotionMaster()
Definition: Unit.h:1741
bool Attack(Unit *victim, bool meleeAttack)
Definition: Unit.cpp:5538
bool HasUnitState(const uint32 f) const
Definition: Unit.h:842
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AttackStartCaster()

void UnitAI::AttackStartCaster ( Unit victim,
float  dist 
)
56{
57 if (victim && me->Attack(victim, false))
58 me->GetMotionMaster()->MoveChase(victim, dist);
59}
+ 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

◆ DamageTaken()

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

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

143{ }

◆ DoAction()

virtual void UnitAI::DoAction ( int32  )
inlinevirtual

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

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

◆ DoCast() [1/2]

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

◆ DoCast() [2/2]

SpellCastResult UnitAI::DoCast ( Unit victim,
uint32  spellId,
CastSpellExtraArgs const &  args = {} 
)
197{
200
201 return me->CastSpell(victim, spellId, args);
202}
@ SPELL_FAILED_SPELL_IN_PROGRESS
Definition: SharedDefines.h:1566
@ TRIGGERED_IGNORE_CAST_IN_PROGRESS
Will ignore aura scaling.
Definition: SpellDefines.h:247
@ UNIT_STATE_CASTING
Definition: Unit.h:259
+ Here is the call graph for this function:

◆ DoCastAOE()

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

◆ DoCastSelf()

SpellCastResult UnitAI::DoCastSelf ( uint32  spellId,
CastSpellExtraArgs const &  args = {} 
)
inline
159{}) { return DoCast(me, spellId, args); }

◆ DoCastVictim()

SpellCastResult UnitAI::DoCastVictim ( uint32  spellId,
CastSpellExtraArgs const &  args = {} 
)
205{
206 if (Unit* victim = me->GetVictim())
207 return DoCast(victim, spellId, args);
208
210}
+ Here is the call graph for this function:

◆ DoMeleeAttackIfReady()

void UnitAI::DoMeleeAttackIfReady ( )
62{
64 return;
65
66 Unit* victim = me->GetVictim();
67
68 if (!me->IsWithinMeleeRange(victim))
69 return;
70
71 //Make sure our attack is ready and we aren't currently casting before checking distance
72 if (me->isAttackReady())
73 {
74 me->AttackerStateUpdate(victim);
76 }
77
79 {
82 }
83}
@ OFF_ATTACK
Definition: SharedDefines.h:6788
bool CanMelee() const
Definition: Creature.h:187
static Creature * ToCreature(Object *o)
Definition: Object.h:205
bool IsCreature() const
Definition: Object.h:204
bool IsWithinMeleeRange(Unit const *obj) const
Definition: Unit.h:809
bool haveOffhandWeapon() const
Definition: Unit.cpp:521
void AttackerStateUpdate(Unit *victim, WeaponAttackType attType=BASE_ATTACK, bool extra=false)
Definition: Unit.cpp:2072
bool isAttackReady(WeaponAttackType type=BASE_ATTACK) const
Definition: Unit.h:800
void resetAttackTimer(WeaponAttackType type=BASE_ATTACK)
Definition: Unit.cpp:612
+ Here is the call graph for this function:

◆ DoSpellAttackIfReady()

bool UnitAI::DoSpellAttackIfReady ( uint32  spellId)
86{
88 return true;
89
90 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId, me->GetMap()->GetDifficultyID()))
91 {
92 if (me->IsWithinCombatRange(me->GetVictim(), spellInfo->GetMaxRange(false)))
93 {
94 me->CastSpell(me->GetVictim(), spellId, me->GetMap()->GetDifficultyID());
96 return true;
97 }
98 }
99
100 return false;
101}
bool IsWithinCombatRange(Unit const *obj, float dist2compare) const
Definition: Unit.cpp:617
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ FillAISpellInfo()

void UnitAI::FillAISpellInfo ( )
static
215{
216 sSpellMgr->ForEachSpellInfo([](SpellInfo const* spellInfo)
217 {
218 AISpellInfoType* AIInfo = &AISpellInfo[{ spellInfo->Id, spellInfo->Difficulty }];
219
221 AIInfo->condition = AICOND_DIE;
222 else if (spellInfo->IsPassive() || spellInfo->GetDuration() == -1)
223 AIInfo->condition = AICOND_AGGRO;
224 else
225 AIInfo->condition = AICOND_COMBAT;
226
227 if (AIInfo->cooldown.count() < int32(spellInfo->RecoveryTime))
228 AIInfo->cooldown = Milliseconds(spellInfo->RecoveryTime);
229
230 if (spellInfo->GetMaxRange(false))
231 {
232 for (SpellEffectInfo const& effect : spellInfo->GetEffects())
233 {
234 uint32 targetType = effect.TargetA.GetTarget();
235
236 if (targetType == TARGET_UNIT_TARGET_ENEMY
237 || targetType == TARGET_DEST_TARGET_ENEMY)
238 UPDATE_TARGET(AITARGET_VICTIM)
239 else if (targetType == TARGET_UNIT_DEST_AREA_ENEMY)
240 UPDATE_TARGET(AITARGET_ENEMY)
241
242 if (effect.Effect == SPELL_EFFECT_APPLY_AURA)
243 {
244 if (targetType == TARGET_UNIT_TARGET_ENEMY)
245 UPDATE_TARGET(AITARGET_DEBUFF)
246 else if (spellInfo->IsPositive())
247 UPDATE_TARGET(AITARGET_BUFF)
248 }
249 }
250 }
251 AIInfo->realCooldown = Milliseconds(spellInfo->RecoveryTime + spellInfo->StartRecoveryTime);
252 AIInfo->maxRange = spellInfo->GetMaxRange(false) * 3 / 4;
253
254 AIInfo->Effects = 0;
255 AIInfo->Targets = 0;
256
257 for (SpellEffectInfo const& spellEffectInfo : spellInfo->GetEffects())
258 {
259 // Spell targets self.
260 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER)
261 AIInfo->Targets |= 1 << (SELECT_TARGET_SELF - 1);
262
263 // Spell targets a single enemy.
264 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_ENEMY ||
265 spellEffectInfo.TargetA.GetTarget() == TARGET_DEST_TARGET_ENEMY)
266 AIInfo->Targets |= 1 << (SELECT_TARGET_SINGLE_ENEMY - 1);
267
268 // Spell targets AoE at enemy.
269 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_SRC_AREA_ENEMY ||
270 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_DEST_AREA_ENEMY ||
271 spellEffectInfo.TargetA.GetTarget() == TARGET_SRC_CASTER ||
272 spellEffectInfo.TargetA.GetTarget() == TARGET_DEST_DYNOBJ_ENEMY)
273 AIInfo->Targets |= 1 << (SELECT_TARGET_AOE_ENEMY - 1);
274
275 // Spell targets an enemy.
276 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_ENEMY ||
277 spellEffectInfo.TargetA.GetTarget() == TARGET_DEST_TARGET_ENEMY ||
278 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_SRC_AREA_ENEMY ||
279 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_DEST_AREA_ENEMY ||
280 spellEffectInfo.TargetA.GetTarget() == TARGET_SRC_CASTER ||
281 spellEffectInfo.TargetA.GetTarget() == TARGET_DEST_DYNOBJ_ENEMY)
282 AIInfo->Targets |= 1 << (SELECT_TARGET_ANY_ENEMY - 1);
283
284 // Spell targets a single friend (or self).
285 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER ||
286 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_ALLY ||
287 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_PARTY)
288 AIInfo->Targets |= 1 << (SELECT_TARGET_SINGLE_FRIEND - 1);
289
290 // Spell targets AoE friends.
291 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER_AREA_PARTY ||
292 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_LASTTARGET_AREA_PARTY ||
293 spellEffectInfo.TargetA.GetTarget() == TARGET_SRC_CASTER)
294 AIInfo->Targets |= 1 << (SELECT_TARGET_AOE_FRIEND - 1);
295
296 // Spell targets any friend (or self).
297 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER ||
298 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_ALLY ||
299 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_PARTY ||
300 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER_AREA_PARTY ||
301 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_LASTTARGET_AREA_PARTY ||
302 spellEffectInfo.TargetA.GetTarget() == TARGET_SRC_CASTER)
303 AIInfo->Targets |= 1 << (SELECT_TARGET_ANY_FRIEND - 1);
304
305 // Make sure that this spell includes a damage effect.
306 if (spellEffectInfo.Effect == SPELL_EFFECT_SCHOOL_DAMAGE ||
307 spellEffectInfo.Effect == SPELL_EFFECT_INSTAKILL ||
308 spellEffectInfo.Effect == SPELL_EFFECT_ENVIRONMENTAL_DAMAGE ||
309 spellEffectInfo.Effect == SPELL_EFFECT_HEALTH_LEECH)
310 AIInfo->Effects |= 1 << (SELECT_EFFECT_DAMAGE - 1);
311
312 // Make sure that this spell includes a healing effect (or an apply aura with a periodic heal).
313 if (spellEffectInfo.Effect == SPELL_EFFECT_HEAL ||
314 spellEffectInfo.Effect == SPELL_EFFECT_HEAL_MAX_HEALTH ||
315 spellEffectInfo.Effect == SPELL_EFFECT_HEAL_MECHANICAL ||
316 (spellEffectInfo.Effect == SPELL_EFFECT_APPLY_AURA && spellEffectInfo.ApplyAuraName == 8))
317 AIInfo->Effects |= 1 << (SELECT_EFFECT_HEALING - 1);
318
319 // Make sure that this spell applies an aura.
320 if (spellEffectInfo.Effect == SPELL_EFFECT_APPLY_AURA)
321 AIInfo->Effects |= 1 << (SELECT_EFFECT_AURA - 1);
322 }
323 });
324}
@ SELECT_EFFECT_AURA
Definition: CreatureAIImpl.h:72
@ SELECT_EFFECT_HEALING
Definition: CreatureAIImpl.h:71
@ SELECT_EFFECT_DAMAGE
Definition: CreatureAIImpl.h:70
@ SELECT_TARGET_ANY_FRIEND
Definition: CreatureAIImpl.h:63
@ SELECT_TARGET_AOE_FRIEND
Definition: CreatureAIImpl.h:62
@ SELECT_TARGET_ANY_ENEMY
Definition: CreatureAIImpl.h:60
@ SELECT_TARGET_SINGLE_FRIEND
Definition: CreatureAIImpl.h:61
@ SELECT_TARGET_SINGLE_ENEMY
Definition: CreatureAIImpl.h:58
@ SELECT_TARGET_SELF
Definition: CreatureAIImpl.h:57
@ SELECT_TARGET_AOE_ENEMY
Definition: CreatureAIImpl.h:59
@ AICOND_COMBAT
Definition: CreatureAIImpl.h:47
@ AICOND_AGGRO
Definition: CreatureAIImpl.h:46
@ AICOND_DIE
Definition: CreatureAIImpl.h:48
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition: Duration.h:29
@ TARGET_UNIT_TARGET_PARTY
Definition: SharedDefines.h:2607
@ TARGET_DEST_DYNOBJ_ENEMY
Definition: SharedDefines.h:2600
@ TARGET_UNIT_CASTER_AREA_PARTY
Definition: SharedDefines.h:2592
@ TARGET_UNIT_DEST_AREA_ENEMY
Definition: SharedDefines.h:2589
@ TARGET_UNIT_TARGET_ALLY
Definition: SharedDefines.h:2593
@ TARGET_UNIT_SRC_AREA_ENEMY
Definition: SharedDefines.h:2588
@ TARGET_DEST_TARGET_ENEMY
Definition: SharedDefines.h:2625
@ TARGET_UNIT_TARGET_ENEMY
Definition: SharedDefines.h:2583
@ TARGET_UNIT_LASTTARGET_AREA_PARTY
Definition: SharedDefines.h:2609
@ TARGET_UNIT_CASTER
Definition: SharedDefines.h:2578
@ TARGET_SRC_CASTER
Definition: SharedDefines.h:2594
@ SPELL_EFFECT_HEALTH_LEECH
Definition: SharedDefines.h:1138
@ SPELL_EFFECT_HEAL
Definition: SharedDefines.h:1139
@ SPELL_EFFECT_HEAL_MAX_HEALTH
Definition: SharedDefines.h:1196
@ SPELL_EFFECT_HEAL_MECHANICAL
Definition: SharedDefines.h:1204
@ SPELL_EFFECT_ENVIRONMENTAL_DAMAGE
Definition: SharedDefines.h:1136
@ SPELL_EFFECT_SCHOOL_DAMAGE
Definition: SharedDefines.h:1131
@ SPELL_EFFECT_INSTAKILL
Definition: SharedDefines.h:1130
@ SPELL_EFFECT_APPLY_AURA
Definition: SharedDefines.h:1135
@ SPELL_ATTR0_ALLOW_CAST_WHILE_DEAD
Definition: SharedDefines.h:437
Definition: SpellInfo.h:213
float GetMaxRange(bool positive=false, WorldObject *caster=nullptr, Spell *spell=nullptr) const
Definition: SpellInfo.cpp:3814
uint32 const Id
Definition: SpellInfo.h:326
uint32 RecoveryTime
Definition: SpellInfo.h:367
bool IsPassive() const
Definition: SpellInfo.cpp:1559
::Difficulty const Difficulty
Definition: SpellInfo.h:327
bool HasAttribute(SpellAttr0 attribute) const
Definition: SpellInfo.h:445
int32 GetDuration() const
Definition: SpellInfo.cpp:3837
std::vector< SpellEffectInfo > const & GetEffects() const
Definition: SpellInfo.h:573
uint32 StartRecoveryTime
Definition: SpellInfo.h:370
static std::unordered_map< std::pair< uint32, Difficulty >, AISpellInfoType > AISpellInfo
Definition: UnitAI.h:168
Milliseconds realCooldown
Definition: CreatureAIImpl.h:82
uint8 Targets
Definition: CreatureAIImpl.h:85
uint8 Effects
Definition: CreatureAIImpl.h:86
float maxRange
Definition: CreatureAIImpl.h:83
AICondition condition
Definition: CreatureAIImpl.h:80
Milliseconds cooldown
Definition: CreatureAIImpl.h:81
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ FinalizeTargetListSelection()

void UnitAI::FinalizeTargetListSelection ( std::list< Unit * > &  targetList,
uint32  num,
SelectTargetMethod  targetType 
)
private
409{
410 if (targetList.size() <= num)
411 return;
412
413 if (targetType == SelectTargetMethod::Random)
414 Trinity::Containers::RandomResize(targetList, num);
415 else
416 targetList.resize(num);
417}
void RandomResize(C &container, std::size_t requestedSize)
Definition: Containers.h:66
+ Here is the call graph for this function:

◆ FinalizeTargetSelection()

Unit * UnitAI::FinalizeTargetSelection ( std::list< Unit * > &  targetList,
SelectTargetMethod  targetType 
)
private
327{
328 // maybe nothing fulfills the predicate
329 if (targetList.empty())
330 return nullptr;
331
332 switch (targetType)
333 {
334 case SelectTargetMethod::MaxThreat:
335 case SelectTargetMethod::MinThreat:
336 case SelectTargetMethod::MaxDistance:
337 case SelectTargetMethod::MinDistance:
338 return targetList.front();
339 case SelectTargetMethod::Random:
341 default:
342 break;
343 }
344
345 return nullptr;
346}
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
Definition: Containers.h:108
+ Here is the call graph for this function:

◆ GetData()

virtual uint32 UnitAI::GetData ( uint32  ) const
inlinevirtual

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

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

◆ GetDebugInfo()

std::string UnitAI::GetDebugInfo ( ) const
virtual
420{
421 std::stringstream sstr;
422 sstr << std::boolalpha
423 << "Me: " << (me ? me->GetDebugInfo() : "NULL");
424 return sstr.str();
425}
std::string GetDebugInfo() const override
Definition: Unit.cpp:13698
+ 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_coren_direbrew_sisters, boss_sapphiron, npc_sapphiron_blizzard, npc_inner_demon, SmartAI, npc_demolitionist_legoso::npc_demolitionist_legosoAI, boss_lord_marrowgar, boss_malygos, and npc_unworthy_initiate_anchor::npc_unworthy_initiate_anchorAI.

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

◆ HealDone()

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

Reimplemented in player_overlord_brandAI.

149{ }

◆ HealReceived()

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

Reimplemented in boss_lady_malande, SmartAI, and boss_valithria_dreamwalker.

146{ }

◆ InitializeAI()

void UnitAI::InitializeAI ( )
virtual

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

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

◆ JustEnteredCombat()

◆ JustExitedCombat()

virtual void UnitAI::JustExitedCombat ( )
inlinevirtual

◆ OnCharmed()

void UnitAI::OnCharmed ( bool  isNew)
virtual

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

50{
51 if (!isNew)
53}
void ScheduleAIChange()
Definition: Unit.cpp:9326
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ OnDespawn()

virtual void UnitAI::OnDespawn ( )
inlinevirtual

Reimplemented in SmartAI, and npc_pet_gen_soul_trader.

136{ }

◆ OnGameEvent()

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

Reimplemented in SmartAI, npc_cameron, and npc_watch_commander_leonus.

172{ }

◆ operator=()

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

◆ PrepareTargetListSelection()

bool UnitAI::PrepareTargetListSelection ( std::list< Unit * > &  targetList,
SelectTargetMethod  targetType,
uint32  offset 
)
private
349{
350 targetList.clear();
352 // 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
353 if (mgr.GetThreatListSize() <= offset)
354 return false;
355
356 if (targetType == SelectTargetMethod::MaxDistance || targetType == SelectTargetMethod::MinDistance)
357 {
358 for (ThreatReference const* ref : mgr.GetUnsortedThreatList())
359 {
360 if (ref->IsOffline())
361 continue;
362
363 targetList.push_back(ref->GetVictim());
364 }
365 }
366 else
367 {
368 Unit* currentVictim = mgr.GetCurrentVictim();
369 if (currentVictim)
370 targetList.push_back(currentVictim);
371
372 for (ThreatReference const* ref : mgr.GetSortedThreatList())
373 {
374 if (ref->IsOffline())
375 continue;
376
377 Unit* thisTarget = ref->GetVictim();
378 if (thisTarget != currentVictim)
379 targetList.push_back(thisTarget);
380 }
381 }
382
383 // shortcut: the list isn't gonna get any larger
384 if (targetList.size() <= offset)
385 {
386 targetList.clear();
387 return false;
388 }
389
390 // right now, list is unsorted for DISTANCE types - re-sort by SelectTargetMethod::MaxDistance
391 if (targetType == SelectTargetMethod::MaxDistance || targetType == SelectTargetMethod::MinDistance)
392 targetList.sort(Trinity::ObjectDistanceOrderPred(me, targetType == SelectTargetMethod::MinDistance));
393
394 // now the list is MAX sorted, reverse for MIN types
395 if (targetType == SelectTargetMethod::MinThreat)
396 targetList.reverse();
397
398 // ignore the first <offset> elements
399 while (offset)
400 {
401 targetList.pop_front();
402 --offset;
403 }
404
405 return true;
406}
Definition: ThreatManager.h:82
Unit * GetCurrentVictim()
Definition: ThreatManager.cpp:227
Trinity::IteratorPair< ThreatListIterator, std::nullptr_t > GetUnsortedThreatList() const
Definition: ThreatManager.cpp:282
Trinity::IteratorPair< ThreatListIterator, std::nullptr_t > GetSortedThreatList() const
Definition: ThreatManager.cpp:296
size_t GetThreatListSize() const
Definition: ThreatManager.cpp:277
Definition: ThreatManager.h:260
Definition: Object.h:832
ThreatManager & GetThreatManager()
Definition: Unit.h:1154
+ Here is the call graph for this function:

◆ Reset()

virtual void UnitAI::Reset ( )
inlinevirtual

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

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

◆ SelectTarget() [1/2]

template<class PREDICATE >
Unit * UnitAI::SelectTarget ( SelectTargetMethod  targetType,
uint32  offset,
PREDICATE const &  predicate 
)
inline
94 {
95 std::list<Unit*> targetList;
96 SelectTargetList(targetList, std::numeric_limits<uint32>::max(), targetType, offset, predicate);
97
98 return FinalizeTargetSelection(targetList, targetType);
99 }
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:108
Unit * FinalizeTargetSelection(std::list< Unit * > &targetList, SelectTargetMethod targetType)
Definition: UnitAI.cpp:326

◆ SelectTarget() [2/2]

Unit * UnitAI::SelectTarget ( SelectTargetMethod  targetType,
uint32  offset = 0,
float  dist = 0.0f,
bool  playerOnly = false,
bool  withTank = true,
int32  aura = 0 
)
104{
105 return SelectTarget(targetType, position, DefaultTargetSelector(me, dist, playerOnly, withTank, aura));
106}
+ Here is the call graph for this function:

◆ SelectTargetList() [1/2]

template<class PREDICATE >
void UnitAI::SelectTargetList ( std::list< Unit * > &  targetList,
uint32  num,
SelectTargetMethod  targetType,
uint32  offset,
PREDICATE const &  predicate 
)
inline
118 {
119 if (!PrepareTargetListSelection(targetList, targetType, offset))
120 return;
121
122 // then finally filter by predicate
123 targetList.remove_if([&predicate](Unit* target) { return !predicate(target); });
124
125 FinalizeTargetListSelection(targetList, num, targetType);
126 }
bool PrepareTargetListSelection(std::list< Unit * > &targetList, SelectTargetMethod targetType, uint32 offset)
Definition: UnitAI.cpp:348
void FinalizeTargetListSelection(std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType)
Definition: UnitAI.cpp:408

◆ SelectTargetList() [2/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 
)
109{
110 SelectTargetList(targetList, num, targetType, offset, DefaultTargetSelector(me, dist, playerOnly, withTank, aura));
111}
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetData()

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

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

74{ }
+ 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.

163{ return false; }

◆ 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.

153{ }

◆ UpdateAI()

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

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

+ 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: