TrinityCore
UnitAI Class Referenceabstract

#include <UnitAI.h>

Public Member Functions

 UnitAI (Unit *unit)
 
virtual ~UnitAI ()
 
virtual bool CanAIAttack (Unit const *) const
 
virtual void AttackStart (Unit *)
 
virtual void UpdateAI (uint32 diff)=0
 
virtual void InitializeAI ()
 
virtual void Reset ()
 
virtual void OnCharmed (bool isNew)
 
virtual void DoAction (int32)
 
virtual uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void SetGUID (ObjectGuid const &, int32=0)
 
virtual ObjectGuid GetGUID (int32=0) const
 
UnitSelectTarget (SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
UnitSelectTarget (SelectTargetMethod targetType, uint32 offset, PREDICATE const &predicate)
 
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 offset, PREDICATE const &predicate)
 
virtual void JustEnteredCombat (Unit *)
 
virtual void JustExitedCombat ()
 
virtual void 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={})
 
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)
 

Detailed Description

Definition at line 49 of file UnitAI.h.

Constructor & Destructor Documentation

◆ UnitAI() [1/2]

UnitAI::UnitAI ( Unit unit)
inlineexplicit

Definition at line 54 of file UnitAI.h.

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

◆ ~UnitAI()

virtual UnitAI::~UnitAI ( )
inlinevirtual

Definition at line 55 of file UnitAI.h.

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, TurretAI, SmartAI, boss_dorothee::boss_dorotheeAI, boss_strawman::boss_strawmanAI, boss_tinhead::boss_tinheadAI, boss_roar::boss_roarAI, boss_julianne::boss_julianneAI, npc_hearthglen_crusader, npc_highlord_darion_mograine::npc_highlord_darion_mograineAI, 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.

Definition at line 29 of file UnitAI.cpp.

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:262
void MoveChase(Unit *target, Optional< ChaseRange > dist={}, Optional< ChaseAngle > angle={})
void ClearUnitState(uint32 f)
Definition: Unit.h:728
MotionMaster * GetMotionMaster()
Definition: Unit.h:1637
bool Attack(Unit *victim, bool meleeAttack)
Definition: Unit.cpp:5651
bool HasUnitState(const uint32 f) const
Definition: Unit.h:727
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AttackStartCaster()

void UnitAI::AttackStartCaster ( Unit victim,
float  dist 
)

Definition at line 55 of file UnitAI.cpp.

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, boss_garothi_worldbreaker, npc_inquisitor_baleful_molten_shore, npc_volatile_sapling, boss_balinda, boss_argaloth, 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_sparring_partner_exiles_reach, npc_sparring_partner_combat_training, 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_temple_guardian_anhuur, boss_lockmaw, 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, boss_anduin_wrynn, npc_anduin_wrynn_monstrous_soul, 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_tiger_matriarch, npc_durotar_tiki_target, 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.

Definition at line 143 of file UnitAI.h.

143{ }

◆ DoAction()

virtual void UnitAI::DoAction ( int32  )
inlinevirtual

Reimplemented in npc_inquisitor_baleful_molten_shore, npc_altar_altercation_ariok, 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_safe_technician_sanitron, npc_thalorien_dawnseeker, npc_silverpine_fallen_human, npc_jaina_proudmoore_tides_of_war, 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, npc_brann_bronzebeard_anraphet, boss_temple_guardian_anhuur, boss_general_husam, npc_husam_tolvir_land_mine, 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_anduin_wrynn, npc_anduin_wrynn_anduin_soul, npc_anduin_wrynn_monstrous_soul, boss_remnant_of_a_fallen_king, boss_kazzara_the_hellforged, 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, boss_guarm, npc_sevis_brightflame_shivarra_gateway, boss_telash_greywing, 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, npc_briarpatch_prisoner, boss_cthun::cthunAI, npc_sironas::npc_sironasAI, npc_demolitionist_legoso::npc_demolitionist_legosoAI, npc_darkspear_jailor, npc_captive_spitescale_scout, 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.

Definition at line 72 of file UnitAI.h.

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

◆ DoCast() [1/2]

SpellCastResult UnitAI::DoCast ( uint32  spellId)

Definition at line 89 of file UnitAI.cpp.

90{
91 Unit* target = nullptr;
92 AITarget aiTargetType = AITARGET_SELF;
93 if (AISpellInfoType const* info = GetAISpellInfo(spellId, me->GetMap()->GetDifficultyID()))
94 aiTargetType = info->target;
95
96 switch (aiTargetType)
97 {
98 default:
99 case AITARGET_SELF:
100 target = me;
101 break;
102 case AITARGET_VICTIM:
103 target = me->GetVictim();
104 break;
105 case AITARGET_ENEMY:
106 {
107 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId, me->GetMap()->GetDifficultyID()))
108 {
109 DefaultTargetSelector targetSelectorInner(me, spellInfo->GetMaxRange(false), false, true, 0);
110 auto targetSelector = [&](Unit const* candidate) -> bool
111 {
112 if (!candidate->IsPlayer())
113 {
114 if (spellInfo->HasAttribute(SPELL_ATTR3_ONLY_ON_PLAYER))
115 return false;
116
117 if (spellInfo->HasAttribute(SPELL_ATTR5_NOT_ON_PLAYER_CONTROLLED_NPC) && candidate->IsControlledByPlayer())
118 return false;
119 }
120 else if (spellInfo->HasAttribute(SPELL_ATTR5_NOT_ON_PLAYER))
121 return false;
122
123 return targetSelectorInner(candidate);
124 };
125 target = SelectTarget(SelectTargetMethod::Random, 0, targetSelector);
126 }
127 break;
128 }
129 case AITARGET_ALLY:
130 target = me;
131 break;
132 case AITARGET_BUFF:
133 target = me;
134 break;
135 case AITARGET_DEBUFF:
136 {
137 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId, me->GetMap()->GetDifficultyID()))
138 {
139 float range = spellInfo->GetMaxRange(false);
140
141 DefaultTargetSelector targetSelectorInner(me, range, false, true, -(int32)spellId);
142 auto targetSelector = [&](Unit const* candidate) -> bool
143 {
144 if (!candidate->IsPlayer())
145 {
146 if (spellInfo->HasAttribute(SPELL_ATTR3_ONLY_ON_PLAYER))
147 return false;
148
149 if (spellInfo->HasAttribute(SPELL_ATTR5_NOT_ON_PLAYER_CONTROLLED_NPC) && candidate->IsControlledByPlayer())
150 return false;
151 }
152 else if (spellInfo->HasAttribute(SPELL_ATTR5_NOT_ON_PLAYER))
153 return false;
154
155 return targetSelectorInner(candidate);
156 };
157 if (!spellInfo->HasAuraInterruptFlag(SpellAuraInterruptFlags::NOT_VICTIM) && targetSelector(me->GetVictim()))
158 target = me->GetVictim();
159 else
160 target = SelectTarget(SelectTargetMethod::Random, 0, targetSelector);
161 }
162 break;
163 }
164 }
165
166 if (target)
167 return me->CastSpell(target, spellId, false);
168
170}
AITarget
@ AITARGET_ALLY
@ AITARGET_BUFF
@ AITARGET_SELF
@ AITARGET_VICTIM
@ AITARGET_ENEMY
@ AITARGET_DEBUFF
AISpellInfoType * GetAISpellInfo(uint32 spellId, Difficulty difficulty)
Definition: CreatureAI.cpp:40
int32_t int32
Definition: Define.h:139
@ SPELL_ATTR5_NOT_ON_PLAYER_CONTROLLED_NPC
@ SPELL_ATTR5_NOT_ON_PLAYER
@ SPELL_ATTR3_ONLY_ON_PLAYER
@ SPELL_FAILED_BAD_TARGETS
#define sSpellMgr
Definition: SpellMgr.h:849
Difficulty GetDifficultyID() const
Definition: Map.h:320
Unit * SelectTarget(SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
Definition: UnitAI.cpp:79
Definition: Unit.h:622
Unit * GetVictim() const
Definition: Unit.h:710
Map * GetMap() const
Definition: Object.h:604
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition: Object.cpp:2884
+ Here is the call graph for this function:

◆ DoCast() [2/2]

SpellCastResult UnitAI::DoCast ( Unit victim,
uint32  spellId,
CastSpellExtraArgs const &  args = {} 
)

Definition at line 172 of file UnitAI.cpp.

173{
176
177 return me->CastSpell(victim, spellId, args);
178}
@ SPELL_FAILED_SPELL_IN_PROGRESS
@ TRIGGERED_IGNORE_CAST_IN_PROGRESS
Will not check if a current cast is in progress.
Definition: SpellDefines.h:252
@ UNIT_STATE_CASTING
Definition: Unit.h:265
+ Here is the call graph for this function:

◆ DoCastAOE()

SpellCastResult UnitAI::DoCastAOE ( uint32  spellId,
CastSpellExtraArgs const &  args = {} 
)
inline

Definition at line 161 of file UnitAI.h.

161{}) { return DoCast(nullptr, spellId, args); }
SpellCastResult DoCast(uint32 spellId)
Definition: UnitAI.cpp:89

◆ DoCastSelf()

SpellCastResult UnitAI::DoCastSelf ( uint32  spellId,
CastSpellExtraArgs const &  args = {} 
)
inline

Definition at line 159 of file UnitAI.h.

159{}) { return DoCast(me, spellId, args); }

◆ DoCastVictim()

SpellCastResult UnitAI::DoCastVictim ( uint32  spellId,
CastSpellExtraArgs const &  args = {} 
)

Definition at line 180 of file UnitAI.cpp.

181{
182 if (Unit* victim = me->GetVictim())
183 return DoCast(victim, spellId, args);
184
186}
+ Here is the call graph for this function:

◆ DoSpellAttackIfReady()

bool UnitAI::DoSpellAttackIfReady ( uint32  spellId)

Definition at line 61 of file UnitAI.cpp.

62{
64 return true;
65
66 if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId, me->GetMap()->GetDifficultyID()))
67 {
68 if (me->IsWithinCombatRange(me->GetVictim(), spellInfo->GetMaxRange(false)))
69 {
70 me->CastSpell(me->GetVictim(), spellId, me->GetMap()->GetDifficultyID());
72 return true;
73 }
74 }
75
76 return false;
77}
bool IsWithinCombatRange(Unit const *obj, float dist2compare) const
Definition: Unit.cpp:633
bool isAttackReady(WeaponAttackType type=BASE_ATTACK) const
Definition: Unit.h:685
void resetAttackTimer(WeaponAttackType type=BASE_ATTACK)
Definition: Unit.cpp:628
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ FillAISpellInfo()

void UnitAI::FillAISpellInfo ( )
static

Definition at line 190 of file UnitAI.cpp.

191{
192 sSpellMgr->ForEachSpellInfo([](SpellInfo const* spellInfo)
193 {
194 AISpellInfoType* AIInfo = &AISpellInfo[{ spellInfo->Id, spellInfo->Difficulty }];
195
197 AIInfo->condition = AICOND_DIE;
198 else if (spellInfo->IsPassive() || spellInfo->GetDuration() == -1)
199 AIInfo->condition = AICOND_AGGRO;
200 else
201 AIInfo->condition = AICOND_COMBAT;
202
203 if (AIInfo->cooldown.count() < int32(spellInfo->RecoveryTime))
204 AIInfo->cooldown = Milliseconds(spellInfo->RecoveryTime);
205
206 if (spellInfo->GetMaxRange(false))
207 {
208 for (SpellEffectInfo const& effect : spellInfo->GetEffects())
209 {
210 uint32 targetType = effect.TargetA.GetTarget();
211
212 if (targetType == TARGET_UNIT_TARGET_ENEMY
213 || targetType == TARGET_DEST_TARGET_ENEMY)
214 UPDATE_TARGET(AITARGET_VICTIM)
215 else if (targetType == TARGET_UNIT_DEST_AREA_ENEMY)
216 UPDATE_TARGET(AITARGET_ENEMY)
217
218 if (effect.Effect == SPELL_EFFECT_APPLY_AURA)
219 {
220 if (targetType == TARGET_UNIT_TARGET_ENEMY)
221 UPDATE_TARGET(AITARGET_DEBUFF)
222 else if (spellInfo->IsPositive())
223 UPDATE_TARGET(AITARGET_BUFF)
224 }
225 }
226 }
227 AIInfo->realCooldown = Milliseconds(spellInfo->RecoveryTime + spellInfo->StartRecoveryTime);
228 AIInfo->maxRange = spellInfo->GetMaxRange(false) * 3 / 4;
229
230 AIInfo->Effects = 0;
231 AIInfo->Targets = 0;
232
233 for (SpellEffectInfo const& spellEffectInfo : spellInfo->GetEffects())
234 {
235 // Spell targets self.
236 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER)
237 AIInfo->Targets |= 1 << (SELECT_TARGET_SELF - 1);
238
239 // Spell targets a single enemy.
240 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_ENEMY ||
241 spellEffectInfo.TargetA.GetTarget() == TARGET_DEST_TARGET_ENEMY)
242 AIInfo->Targets |= 1 << (SELECT_TARGET_SINGLE_ENEMY - 1);
243
244 // Spell targets AoE at enemy.
245 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_SRC_AREA_ENEMY ||
246 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_DEST_AREA_ENEMY ||
247 spellEffectInfo.TargetA.GetTarget() == TARGET_SRC_CASTER ||
248 spellEffectInfo.TargetA.GetTarget() == TARGET_DEST_DYNOBJ_ENEMY)
249 AIInfo->Targets |= 1 << (SELECT_TARGET_AOE_ENEMY - 1);
250
251 // Spell targets an enemy.
252 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_ENEMY ||
253 spellEffectInfo.TargetA.GetTarget() == TARGET_DEST_TARGET_ENEMY ||
254 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_SRC_AREA_ENEMY ||
255 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_DEST_AREA_ENEMY ||
256 spellEffectInfo.TargetA.GetTarget() == TARGET_SRC_CASTER ||
257 spellEffectInfo.TargetA.GetTarget() == TARGET_DEST_DYNOBJ_ENEMY)
258 AIInfo->Targets |= 1 << (SELECT_TARGET_ANY_ENEMY - 1);
259
260 // Spell targets a single friend (or self).
261 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER ||
262 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_ALLY ||
263 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_PARTY)
264 AIInfo->Targets |= 1 << (SELECT_TARGET_SINGLE_FRIEND - 1);
265
266 // Spell targets AoE friends.
267 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER_AREA_PARTY ||
268 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_LASTTARGET_AREA_PARTY ||
269 spellEffectInfo.TargetA.GetTarget() == TARGET_SRC_CASTER)
270 AIInfo->Targets |= 1 << (SELECT_TARGET_AOE_FRIEND - 1);
271
272 // Spell targets any friend (or self).
273 if (spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER ||
274 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_ALLY ||
275 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_TARGET_PARTY ||
276 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_CASTER_AREA_PARTY ||
277 spellEffectInfo.TargetA.GetTarget() == TARGET_UNIT_LASTTARGET_AREA_PARTY ||
278 spellEffectInfo.TargetA.GetTarget() == TARGET_SRC_CASTER)
279 AIInfo->Targets |= 1 << (SELECT_TARGET_ANY_FRIEND - 1);
280
281 // Make sure that this spell includes a damage effect.
282 if (spellEffectInfo.Effect == SPELL_EFFECT_SCHOOL_DAMAGE ||
283 spellEffectInfo.Effect == SPELL_EFFECT_INSTAKILL ||
284 spellEffectInfo.Effect == SPELL_EFFECT_ENVIRONMENTAL_DAMAGE ||
285 spellEffectInfo.Effect == SPELL_EFFECT_HEALTH_LEECH)
286 AIInfo->Effects |= 1 << (SELECT_EFFECT_DAMAGE - 1);
287
288 // Make sure that this spell includes a healing effect (or an apply aura with a periodic heal).
289 if (spellEffectInfo.Effect == SPELL_EFFECT_HEAL ||
290 spellEffectInfo.Effect == SPELL_EFFECT_HEAL_MAX_HEALTH ||
291 spellEffectInfo.Effect == SPELL_EFFECT_HEAL_MECHANICAL ||
292 (spellEffectInfo.Effect == SPELL_EFFECT_APPLY_AURA && spellEffectInfo.ApplyAuraName == 8))
293 AIInfo->Effects |= 1 << (SELECT_EFFECT_HEALING - 1);
294
295 // Make sure that this spell applies an aura.
296 if (spellEffectInfo.Effect == SPELL_EFFECT_APPLY_AURA)
297 AIInfo->Effects |= 1 << (SELECT_EFFECT_AURA - 1);
298 }
299 });
300}
@ SELECT_EFFECT_AURA
@ SELECT_EFFECT_HEALING
@ SELECT_EFFECT_DAMAGE
@ SELECT_TARGET_ANY_FRIEND
@ SELECT_TARGET_AOE_FRIEND
@ SELECT_TARGET_ANY_ENEMY
@ SELECT_TARGET_SINGLE_FRIEND
@ SELECT_TARGET_SINGLE_ENEMY
@ SELECT_TARGET_SELF
@ SELECT_TARGET_AOE_ENEMY
@ AICOND_COMBAT
@ AICOND_AGGRO
@ AICOND_DIE
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition: Duration.h:29
if(posix_memalign(&__mallocedMemory, __align, __size)) return NULL
@ TARGET_UNIT_TARGET_PARTY
@ TARGET_DEST_DYNOBJ_ENEMY
@ TARGET_UNIT_CASTER_AREA_PARTY
@ TARGET_UNIT_DEST_AREA_ENEMY
@ TARGET_UNIT_TARGET_ALLY
@ TARGET_UNIT_SRC_AREA_ENEMY
@ TARGET_DEST_TARGET_ENEMY
@ TARGET_UNIT_TARGET_ENEMY
@ TARGET_UNIT_LASTTARGET_AREA_PARTY
@ TARGET_UNIT_CASTER
@ TARGET_SRC_CASTER
@ SPELL_EFFECT_HEALTH_LEECH
@ SPELL_EFFECT_HEAL
@ SPELL_EFFECT_HEAL_MAX_HEALTH
@ SPELL_EFFECT_HEAL_MECHANICAL
@ SPELL_EFFECT_ENVIRONMENTAL_DAMAGE
@ SPELL_EFFECT_SCHOOL_DAMAGE
@ SPELL_EFFECT_INSTAKILL
@ SPELL_EFFECT_APPLY_AURA
@ SPELL_ATTR0_ALLOW_CAST_WHILE_DEAD
float GetMaxRange(bool positive=false, WorldObject *caster=nullptr, Spell *spell=nullptr) const
Definition: SpellInfo.cpp:3768
uint32 const Id
Definition: SpellInfo.h:325
uint32 RecoveryTime
Definition: SpellInfo.h:366
bool IsPassive() const
Definition: SpellInfo.cpp:1592
::Difficulty const Difficulty
Definition: SpellInfo.h:326
bool HasAttribute(SpellAttr0 attribute) const
Definition: SpellInfo.h:449
int32 GetDuration() const
Definition: SpellInfo.cpp:3791
std::vector< SpellEffectInfo > const & GetEffects() const
Definition: SpellInfo.h:576
uint32 StartRecoveryTime
Definition: SpellInfo.h:369
static std::unordered_map< std::pair< uint32, Difficulty >, AISpellInfoType > AISpellInfo
Definition: UnitAI.h:165
Milliseconds realCooldown
AICondition condition
Milliseconds cooldown
+ 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

Definition at line 384 of file UnitAI.cpp.

385{
386 if (targetList.size() <= num)
387 return;
388
389 if (targetType == SelectTargetMethod::Random)
390 Trinity::Containers::RandomResize(targetList, num);
391 else
392 targetList.resize(num);
393}
void RandomResize(C &container, std::size_t requestedSize)
Definition: Containers.h:67
+ Here is the call graph for this function:

◆ FinalizeTargetSelection()

Unit * UnitAI::FinalizeTargetSelection ( std::list< Unit * > &  targetList,
SelectTargetMethod  targetType 
)
private

Definition at line 302 of file UnitAI.cpp.

303{
304 // maybe nothing fulfills the predicate
305 if (targetList.empty())
306 return nullptr;
307
308 switch (targetType)
309 {
314 return targetList.front();
317 default:
318 break;
319 }
320
321 return nullptr;
322}
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
Definition: Containers.h:109
+ 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.

Definition at line 73 of file UnitAI.h.

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

◆ GetDebugInfo()

std::string UnitAI::GetDebugInfo ( ) const
virtual

Definition at line 395 of file UnitAI.cpp.

396{
397 std::stringstream sstr;
398 sstr << std::boolalpha
399 << "Me: " << (me ? me->GetDebugInfo() : "NULL");
400 return sstr.str();
401}
std::string GetDebugInfo() const override
Definition: Unit.cpp:13656
+ 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.

Definition at line 76 of file UnitAI.h.

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

◆ HealDone()

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

Reimplemented in player_overlord_brandAI.

Definition at line 149 of file UnitAI.h.

149{ }

◆ HealReceived()

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

Reimplemented in boss_lady_malande, npc_anduin_wrynn_anduin_hope, SmartAI, and boss_valithria_dreamwalker.

Definition at line 146 of file UnitAI.h.

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, npc_ship_captain_warming_up_private, npc_captain_warlord_first_aid_private, npc_survivors_healed_by_leader_beach_private< PathId, WaitTime >, npc_horde_survivors_beach_q59930_private< PathId >, npc_huxsworth_hunter_quest_private, npc_huxsworth_briarpatch_quest_private, npc_dawntracker_hunter_quest_private, npc_dawntracker_briarpatch_quest_private, 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_alpha_beam, npc_brann_bronzebeard_anraphet, npc_husam_tolvir_land_mine, npc_lockmaw_augh_add, npc_lockmaw_augh_boss, npc_vp_slipstream, 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.

Definition at line 43 of file UnitAI.cpp.

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

◆ JustEnteredCombat()

virtual void UnitAI::JustEnteredCombat ( Unit )
inlinevirtual

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

Definition at line 49 of file UnitAI.cpp.

50{
51 if (!isNew)
53}
void ScheduleAIChange()
Definition: Unit.cpp:9502
+ 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, npc_pet_gen_soul_trader, and npc_pet_pri_divine_image.

Definition at line 136 of file UnitAI.h.

136{ }

◆ OnGameEvent()

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

Reimplemented in SmartAI, npc_cameron, and npc_watch_commander_leonus.

Definition at line 169 of file UnitAI.h.

169{ }

◆ operator=()

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

◆ PrepareTargetListSelection()

bool UnitAI::PrepareTargetListSelection ( std::list< Unit * > &  targetList,
SelectTargetMethod  targetType,
uint32  offset 
)
private

Definition at line 324 of file UnitAI.cpp.

325{
326 targetList.clear();
328 // 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
329 if (mgr.GetThreatListSize() <= offset)
330 return false;
331
332 if (targetType == SelectTargetMethod::MaxDistance || targetType == SelectTargetMethod::MinDistance)
333 {
334 for (ThreatReference const* ref : mgr.GetUnsortedThreatList())
335 {
336 if (ref->IsOffline())
337 continue;
338
339 targetList.push_back(ref->GetVictim());
340 }
341 }
342 else
343 {
344 Unit* currentVictim = mgr.GetCurrentVictim();
345 if (currentVictim)
346 targetList.push_back(currentVictim);
347
348 for (ThreatReference const* ref : mgr.GetSortedThreatList())
349 {
350 if (ref->IsOffline())
351 continue;
352
353 Unit* thisTarget = ref->GetVictim();
354 if (thisTarget != currentVictim)
355 targetList.push_back(thisTarget);
356 }
357 }
358
359 // shortcut: the list isn't gonna get any larger
360 if (targetList.size() <= offset)
361 {
362 targetList.clear();
363 return false;
364 }
365
366 // right now, list is unsorted for DISTANCE types - re-sort by SelectTargetMethod::MaxDistance
367 if (targetType == SelectTargetMethod::MaxDistance || targetType == SelectTargetMethod::MinDistance)
369
370 // now the list is MAX sorted, reverse for MIN types
371 if (targetType == SelectTargetMethod::MinThreat)
372 targetList.reverse();
373
374 // ignore the first <offset> elements
375 while (offset)
376 {
377 targetList.pop_front();
378 --offset;
379 }
380
381 return true;
382}
Unit * GetCurrentVictim()
Trinity::IteratorPair< ThreatListIterator, std::nullptr_t > GetUnsortedThreatList() const
Trinity::IteratorPair< ThreatListIterator, std::nullptr_t > GetSortedThreatList() const
size_t GetThreatListSize() const
ThreatManager & GetThreatManager()
Definition: Unit.h:1049
+ Here is the call graph for this function:

◆ Reset()

virtual void UnitAI::Reset ( )
inlinevirtual

Reimplemented in CombatAI, BossAI, WorldBossAI, npc_illidari_fighting_invasion_begins, npc_inquisitor_baleful_molten_shore, 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_coren_direbrew, npc_direbrew_minion, 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, 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_kirtonos_the_herald::boss_kirtonos_the_heraldAI, boss_kormok::boss_kormokAI, boss_lord_alexei_barov::boss_lordalexeibarovAI, boss_boss_ras_frostwhisper::boss_rasfrostAI, boss_apothecary_hummel, npc_apothecary_baxter, boss_baroness_anastari, boss_cannon_master_willey::boss_cannon_master_willeyAI, boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI, boss_magistrate_barthilas::boss_magistrate_barthilasAI, 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_quilboar_warrior, npc_quilboar_geomancer, npc_ogre_overseer, 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_earthrager_ptah, boss_temple_guardian_anhuur, 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_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, boss_sylvanas_windrunner, boss_anduin_wrynn, npc_anduin_wrynn_lost_soul, npc_anduin_wrynn_anduin_soul, npc_anduin_wrynn_anduin_hope, npc_anduin_wrynn_monstrous_soul, npc_anduin_wrynn_grim_reflection, npc_anduin_wrynn_sylvanas, npc_anduin_wrynn_jaina, npc_anduin_wrynn_uther, 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.

Definition at line 63 of file UnitAI.h.

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

Definition at line 93 of file UnitAI.h.

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:84
Unit * FinalizeTargetSelection(std::list< Unit * > &targetList, SelectTargetMethod targetType)
Definition: UnitAI.cpp:302

◆ SelectTarget() [2/2]

Unit * UnitAI::SelectTarget ( SelectTargetMethod  targetType,
uint32  offset = 0,
float  dist = 0.0f,
bool  playerOnly = false,
bool  withTank = true,
int32  aura = 0 
)

Definition at line 79 of file UnitAI.cpp.

80{
81 return SelectTarget(targetType, position, DefaultTargetSelector(me, dist, playerOnly, withTank, aura));
82}
+ 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

Definition at line 117 of file UnitAI.h.

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:324
void FinalizeTargetListSelection(std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType)
Definition: UnitAI.cpp:384

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

Definition at line 84 of file UnitAI.cpp.

85{
86 SelectTargetList(targetList, num, targetType, offset, DefaultTargetSelector(me, dist, playerOnly, withTank, aura));
87}
+ 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_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.

Definition at line 74 of file UnitAI.h.

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

◆ SetGUID()

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

Definition at line 153 of file UnitAI.h.

153{ }

◆ UpdateAI()

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

Implemented in boss_high_inquisitor_whitemane, npc_warden_thelwater, npc_thorim_trashAI, CombatAI, CasterAI, TurretAI, VehicleAI, GuardAI, ReactorAI, TotemAI, SimpleCharmedPlayerAI, ScriptedAI, BossAI, WorldBossAI, EscortAI, SmartAI, boss_garothi_worldbreaker, boss_guarm, npc_kayn_sunfury_invasion_begins, npc_illidari_fighting_invasion_begins, npc_kayn_sunfury_ashtongue_intro_private, npc_sevis_brightflame_ashtongue_gateway_private, npc_sevis_brightflame_coilskar_gateway_private, npc_inquisitor_baleful_molten_shore, npc_cyana_nightglaive_freed_private, npc_izal_whitemoon_freed_private, npc_belath_dawnblade_freed_private, npc_mannethrel_darkstar_freed_private, npc_sevis_brightflame_shivarra_gateway, npc_danica_the_reclaimer, npc_feasting_valarjar, npc_valarjar_paying_respect_to_odyn, npc_spectating_valarjar, npc_valkyr_of_odyn, npc_weapon_inspector_valarjar, npc_altar_altercation_ariok, boss_kazzara_the_hellforged, boss_leymor, npc_arcane_tender, boss_telash_greywing, npc_av_marshal_or_warmaster, boss_balinda, boss_drekthar, boss_galvangar, boss_vanndar, boss_alizabal::boss_alizabalAI, boss_argaloth, boss_occuthar::boss_occutharAI, 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_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_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_sanitron_5000, npc_safe_technician_sanitron, npc_wounded_coldridge_mountaineer::npc_wounded_coldridge_mountaineerAI, npc_wounded_milita::npc_wounded_militaAI, npc_milos_gyro::npc_milos_gyro_AI, npc_joren_ironstock, boss_twilight_corrupter::boss_twilight_corrupterAI, npc_cameron, npc_vanessa_vancleef_human_heritage_lions_pride_inn_basement, 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_jaina_proudmoore_tides_of_war, 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_ship_captain_warming_up_private, npc_sparring_partner_exiles_reach, npc_ship_captain_brace_for_impact_private, npc_first_mate_brace_for_impact_private, npc_crew_ship_private, npc_pet_ship_private, npc_captain_warlord_first_aid_private, npc_survivors_healed_by_leader_beach_private< PathId, WaitTime >, npc_horde_survivors_beach_q59930_private< PathId >, npc_survivors_beach_leave_private< PathId, WaitTime >, npc_garrick_summoned_beach, npc_grimaxe_summoned_beach, npc_sparring_partner_combat_training, npc_leader_northbound, npc_huxsworth_hunter_quest_private, npc_huxsworth_briarpatch_quest_private, npc_dawntracker_hunter_quest_private, npc_dawntracker_briarpatch_quest_private, npc_geolord_grekog, npc_briarpatch_prisoner, npc_quilboar_warrior, npc_quilboar_geomancer, npc_ogre_overseer, npc_gnome_goblin_plains_make_copter_private, npc_scoutomatic_5000, npc_choppy_booster_scout, npc_lindie_springstock_q56034, npc_cork_fizzlepop_q59941, npc_re_sized_boar_q56034, 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, npc_brann_bronzebeard_anraphet, boss_earthrager_ptah, boss_temple_guardian_anhuur, boss_general_husam, npc_husam_tolvir_land_mine, boss_lockmaw, npc_lockmaw_augh_add, npc_lockmaw_augh_boss, 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_vp_slipstream_landing_zone, 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_darkspear_jailor, npc_captive_spitescale_scout, npc_echo_isles_class_trainer< PitPos, QuestID >, npc_voljin_garrosh_vision, npc_voljin_thrall_vision, 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, npc_7th_legion_magus_sanctum_of_the_sages, 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, boss_anduin_wrynn, npc_anduin_wrynn_lost_soul, npc_anduin_wrynn_anduin_hope, npc_anduin_wrynn_fiendish_soul, npc_anduin_wrynn_monstrous_soul, boss_remnant_of_a_fallen_king, npc_anduin_wrynn_grim_reflection, npc_anduin_wrynn_sylvanas, npc_anduin_wrynn_jaina, npc_anduin_wrynn_uther, 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_cragmaw_the_infested, npc_cragmaw_blood_tick, boss_elder_leaxa, npc_blood_effigy, npc_death_knight_initiate::npc_death_knight_initiateAI, 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, 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_altar_altercation_blood_ritual_orb, boss_moroes_guestAI, npc_scarlet_ghoul, npc_hearthglen_crusader, 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_chained_spirit, npc_firelands_magmakin, boss_glutton::boss_gluttonAI, npc_injured_draenei::npc_injured_draeneiAI, 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_dream_portal, npc_faerlina_add, npc_gothik_trigger, npc_tesla, npc_portal_eoe, npc_power_spark, npc_arcane_overload, npc_seeping_essence_stalker, boss_flame_leviathan_safety_container::boss_flame_leviathan_safety_containerAI, npc_pool_of_tar::npc_pool_of_tarAI, 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_brunnhildar_prisoner, boss_blackheart_the_inciter_mc_dummy, npc_illidan_generic_fire, npc_reliquary_combat_trigger, npc_ember_of_alar, npc_flame_patch_alar, npc_anduin_wrynn_anduin_doubt, npc_air_force_bots::npc_air_force_botsAI, npc_injured_patient::npc_injured_patientAI, and npc_guardian::npc_guardianAI.

Member Data Documentation

◆ AISpellInfo

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

Definition at line 165 of file UnitAI.h.

◆ me

Unit* const UnitAI::me
protected

Definition at line 52 of file UnitAI.h.


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