AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
CreatureAI Class Reference

#include "CreatureAI.h"

Inheritance diagram for CreatureAI:
UnitAI AggressorAI ArcherAI CombatAI NullCreatureAI PassiveAI PetAI PossessedAI ReactorAI ScriptedAI SmartAI TotemAI TurretAI VehicleAI brd_ironhand_guardian npc_announcer_toc5::npc_announcer_toc5AI npc_batrider npc_brann_bronzebeard_algalon npc_hyldsmeet_protodrake npc_mc_core_hound npc_rookery_hatcher npc_vaelastrasz_the_red npc_wounded_skirmisher

Public Types

enum  EvadeReason {
  EVADE_REASON_NO_HOSTILES ,
  EVADE_REASON_BOUNDARY ,
  EVADE_REASON_SEQUENCE_BREAK ,
  EVADE_REASON_NO_PATH ,
  EVADE_REASON_OTHER
}
 

Public Member Functions

void Talk (uint8 id, WorldObject const *whisperTarget=nullptr, Milliseconds delay=0ms)
 Causes the creature to talk/say the text assigned to their entry in the creature_text database table.
 
void Talk (uint8 id, Milliseconds delay)
 
WorldObjectGetSummoner () const
 Returns the summoner creature/object, if the creature is a temporary summon.
 
 CreatureAI (Creature *creature)
 
 ~CreatureAI () override
 
bool IsEngaged () const
 Check if creature is currently engaged in combat.
 
void MoveCircleChecks ()
 
void MoveBackwardsChecks ()
 
void MoveInLineOfSight_Safe (Unit *who)
 == Reactions At =================================
 
void TriggerAlert (Unit const *who) const
 
virtual bool CanRespawn ()
 
virtual bool IsEscortNPC (bool=true) const
 
virtual void EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 
void JustEnteredCombat (Unit *who) override
 Called when the unit enters combat.
 
virtual void JustStartedThreateningMe (Unit *who)
 
virtual void JustEngagedWith (Unit *)
 Called for reaction when initially engaged - this happens after JustEnteredCombat.
 
void EngagementStart (Unit *who)
 
void EngagementOver ()
 
void JustExitedCombat () override
 Called when the unit leaves combat.
 
virtual void JustDied (Unit *)
 
virtual void KilledUnit (Unit *)
 
virtual void JustSummoned (Creature *)
 
virtual void IsSummonedBy (WorldObject *)
 
virtual void SummonedCreatureDespawn (Creature *)
 
virtual void SummonedCreatureDies (Creature *, Unit *)
 
virtual void SummonedCreatureDespawnAll ()
 
virtual void SummonedCreatureEvade (Creature *)
 
virtual void SpellHit (Unit *, SpellInfo const *)
 
virtual void SpellHitTarget (Unit *, SpellInfo const *)
 
virtual void OnSpellStart (SpellInfo const *)
 
virtual void OnSpellCast (SpellInfo const *)
 
virtual void OnSpellFailed (SpellInfo const *)
 
virtual void OnChannelFinished (SpellInfo const *)
 
virtual void AttackedBy (Unit *)
 
virtual bool IsEscorted ()
 
virtual void JustRespawned ()
 
virtual void MovementInform (uint32, uint32)
 
virtual void PathEndReached (uint32)
 
virtual void WaypointPathStarted (uint32)
 == Waypoints system =============================
 
virtual void WaypointStarted (uint32, uint32)
 
virtual void WaypointReached (uint32, uint32)
 
virtual void WaypointPathEnded (uint32, uint32)
 
void OnCharmed (bool apply) override
 Called when unit is charmed.
 
virtual void JustReachedHome ()
 
void DoZoneInCombat (Creature *creature=nullptr, float maxRangeToNearestTarget=250.0f)
 
virtual void ReceiveEmote (Player *, uint32)
 
virtual void OwnerAttackedBy (Unit *attacker)
 
virtual void OwnerAttacked (Unit *target)
 
void OnOwnerCombatInteraction (Unit *target)
 
virtual void CorpseRemoved (uint32 &)
 == Triggered Actions Requested ==================
 
virtual void PassengerBoarded (Unit *, int8, bool)
 == Fields =======================================
 
virtual bool BeforeSpellClick (Unit *)
 
virtual void OnSpellClick (Unit *, bool &)
 
virtual bool CanSeeAlways (WorldObject const *)
 
virtual bool CanBeSeen (Player const *)
 
virtual bool CanAlwaysBeDetectable (WorldObject const *)
 
virtual void PetStopAttack ()
 
int32 VisualizeBoundary (uint32 duration, Unit *owner=nullptr, bool fill=false, bool checkZ=false) const
 
virtual bool CheckInRoom ()
 
CreatureBoundary const * GetBoundary () const
 
void SetBoundary (CreatureBoundary const *boundary, bool negativeBoundaries=false)
 
bool IsInBoundary (Position const *who=nullptr) const
 
virtual void CalculateThreat (Unit *, float &, SpellInfo const *)
 
virtual bool OnTeleportUnreacheablePlayer (Player *)
 
virtual void OnAuraRemove (AuraApplication *, AuraRemoveMode)
 
virtual void DistancingStarted ()
 
virtual void DistancingEnded ()
 
- Public Member Functions inherited from UnitAI
 UnitAI (Unit *unit)
 
virtual ~UnitAI ()
 
virtual bool CanAIAttack (Unit const *) const
 
virtual void AttackStart (Unit *)
 
virtual void UpdateAI (uint32)=0
 Use to start attacking a target. Called just before JustEngagedWith()
 
virtual void InitializeAI ()
 
virtual void Reset ()
 
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 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
UnitSelectTarget (SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 Select the best (up to) <num> targets (in <targetType> order) from the threat list that fulfill the following:
 
template<class PREDICATE >
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
virtual void EvadeTimerExpired ()
 Called when evade timer expires (target unreachable for too long)
 
virtual void DamageDealt (Unit *, uint32 &, DamageEffectType, SpellSchoolMask)
 Called at any Damage to any victim (before damage apply)
 
virtual void DamageTaken (Unit *, uint32 &, DamageEffectType, SpellSchoolMask)
 Called at any Damage from any attacker (before damage apply)
 
virtual void HealReceived (Unit *, uint32 &)
 Called when the creature receives heal.
 
virtual void OnPowerUpdate (Powers, int32, int32, uint32)
 Called when the creature power updates.
 
virtual void HealDone (Unit *, uint32 &)
 Called when the unit heals.
 
virtual void OnCalculateMeleeDamageReceived (uint32 &, Unit *)
 Called during damage calculations.
 
virtual void OnCalculateSpellDamageReceived (int32 &, Unit *)
 
virtual void OnCalculatePeriodicTickReceived (uint32 &, Unit *)
 Called during calculation when receiving periodic healing or damage (DoT or HoT)
 
void AttackStartCaster (Unit *victim, float dist)
 
SpellCastResult DoAddAuraToAllHostilePlayers (uint32 spellid)
 
SpellCastResult DoCast (uint32 spellId)
 
SpellCastResult DoCast (Unit *victim, uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastSelf (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastToAllHostilePlayers (uint32 spellid, bool triggered=false)
 To specify the caster as target if the spell is self-cast.
 
SpellCastResult DoCastVictim (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastAOE (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastRandomTarget (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false, bool withTank=true)
 Cast the spell on a random unit from the threat list.
 
SpellCastResult DoCastMaxThreat (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false)
 Cast spell on the top threat target, which may not be the current victim.
 
float DoGetSpellMaxRange (uint32 spellId, bool positive=false)
 
void DoMeleeAttackIfReady ()
 
bool DoSpellAttackIfReady (uint32 spell)
 
void DoSpellAttackToRandomTargetIfReady (uint32 spell, uint32 threatTablePosition=0, float dist=0.f, bool playerOnly=true)
 
virtual void SummonMovementInform (Creature *, uint32, uint32)
 Called when a summon reaches a waypoint or point movement finished.
 
virtual void sGossipHello (Player *)
 
virtual void sGossipSelect (Player *, uint32, uint32)
 
virtual void sGossipSelectCode (Player *, uint32, uint32, char const *)
 
virtual void sQuestAccept (Player *, Quest const *)
 
virtual void sQuestSelect (Player *, Quest const *)
 
virtual void sQuestComplete (Player *, Quest const *)
 
virtual void sQuestReward (Player *, Quest const *, uint32)
 
virtual void sOnGameEvent (bool, uint16)
 
virtual std::string GetDebugInfo () const
 

Static Public Member Functions

static bool IsInBounds (CreatureBoundary const &boundary, Position const *who)
 
- Static Public Member Functions inherited from UnitAI
static void FillAISpellInfo ()
 

Protected Member Functions

bool UpdateVictim ()
 
bool UpdateVictimWithGaze ()
 
void SetGazeOn (Unit *target)
 
CreatureDoSummon (uint32 entry, Position const &pos, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
CreatureDoSummon (uint32 entry, WorldObject *obj, float radius=5.0f, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
CreatureDoSummonFlyer (uint32 entry, WorldObject *obj, float flightZ, float radius=5.0f, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
virtual void MoveInLineOfSight (Unit *)
 
bool _EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 

Protected Attributes

Creature *const me
 
EventMap events
 
TaskScheduler scheduler
 
CreatureBoundary const * _boundary
 
bool _negateBoundary
 
bool _isEngaged
 
- Protected Attributes inherited from UnitAI
Unit *const me
 

Private Attributes

bool m_MoveInLineOfSight_locked
 

Additional Inherited Members

- Static Public Attributes inherited from UnitAI
static AISpellInfoTypeAISpellInfo
 

Detailed Description

Member Enumeration Documentation

◆ EvadeReason

Enumerator
EVADE_REASON_NO_HOSTILES 
EVADE_REASON_BOUNDARY 
EVADE_REASON_SEQUENCE_BREAK 
EVADE_REASON_NO_PATH 
EVADE_REASON_OTHER 
87 {
88 EVADE_REASON_NO_HOSTILES, // the creature's threat list is empty
89 EVADE_REASON_BOUNDARY, // the creature has moved outside its evade boundary
90 EVADE_REASON_SEQUENCE_BREAK, // this is a boss and the pre-requisite encounters for engaging it are not defeated yet
91 EVADE_REASON_NO_PATH, // the creature was unable to reach its target for over 5 seconds
93 };
@ EVADE_REASON_OTHER
Definition CreatureAI.h:92
@ EVADE_REASON_BOUNDARY
Definition CreatureAI.h:89
@ EVADE_REASON_NO_HOSTILES
Definition CreatureAI.h:88
@ EVADE_REASON_SEQUENCE_BREAK
Definition CreatureAI.h:90
@ EVADE_REASON_NO_PATH
Definition CreatureAI.h:91

Constructor & Destructor Documentation

◆ CreatureAI()

CreatureAI::CreatureAI ( Creature creature)
inlineexplicit
100: UnitAI(creature), me(creature), _boundary(nullptr), _negateBoundary(false), _isEngaged(false), m_MoveInLineOfSight_locked(false) { }
CreatureBoundary const * _boundary
Definition CreatureAI.h:278
bool _isEngaged
Definition CreatureAI.h:280
bool _negateBoundary
Definition CreatureAI.h:279
bool m_MoveInLineOfSight_locked
Definition CreatureAI.h:283
Creature *const me
Definition CreatureAI.h:71
Definition UnitAI.h:198

◆ ~CreatureAI()

CreatureAI::~CreatureAI ( )
inlineoverride
102{}

Member Function Documentation

◆ _EnterEvadeMode()

bool CreatureAI::_EnterEvadeMode ( EvadeReason  why = EVADE_REASON_OTHER)
protected
384{
385 if (me->IsInEvadeMode())
386 return false;
387
388 if (!me->IsAlive())
389 {
391 return false;
392 }
393
394 // Set evade state early to prevent recursion: CombatStop below purges combat
395 // refs, which triggers JustExitedCombat -> EnterEvadeMode -> _EnterEvadeMode.
396 // The IsInEvadeMode() check above will catch it.
397 // EnterEvadeMode will clear this for owned creatures (pets/guardians) that
398 // use MoveFollow instead of MoveTargetedHome.
400
401 // don't remove vehicle auras, passengers aren't supposed to drop off the vehicle
402 // don't remove clone caster on evade (to be verified)
404
405 me->ClearComboPointHolders(); // Remove all combo points targeting this unit
406 me->CombatStop(true);
407 me->LoadCreaturesAddon(true);
408 me->SetLootRecipient(nullptr);
412
413 if (ZoneScript* zoneScript = me->GetZoneScript() ? me->GetZoneScript() : (ZoneScript*)me->GetInstanceScript())
414 zoneScript->OnCreatureEvade(me);
415
416 if (CreatureGroup* formation = me->GetFormation())
417 formation->MemberEvaded(me);
418
419 if (TempSummon* summon = me->ToTempSummon())
420 {
421 if (WorldObject* summoner = summon->GetSummoner())
422 {
423 if (summoner->ToCreature() && summoner->ToCreature()->IsAIEnabled)
424 {
425 summoner->ToCreature()->AI()->SummonedCreatureEvade(me);
426 }
427 else if (summoner->ToGameObject() && summoner->ToGameObject()->AI())
428 {
429 summoner->ToGameObject()->AI()->SummonedCreatureEvade(me);
430 }
431 }
432 }
433
435
436 return true;
437}
@ UNIT_STATE_EVADE
Definition UnitDefines.h:194
void EngagementOver()
Definition CreatureAI.cpp:298
Definition CreatureGroups.h:90
bool LoadCreaturesAddon(bool reload=false)
Definition Creature.cpp:2741
void SetLootRecipient(Unit *unit, bool withGroup=true)
Definition Creature.cpp:1307
void SetCannotReachTarget(ObjectGuid const &target=ObjectGuid::Empty)
Definition Creature.cpp:3656
CreatureGroup const * GetFormation() const
Definition Creature.h:372
void ResetPlayerDamageReq()
Definition Creature.cpp:3848
void ClearLastLeashExtensionTimePtr()
Definition Creature.cpp:3697
bool IsInEvadeMode() const
Definition Creature.h:138
Definition TemporarySummon.h:50
void RemoveEvadeAuras()
Definition Unit.cpp:5712
bool IsAlive() const
Definition Unit.h:1794
TempSummon * ToTempSummon()
Definition Unit.h:731
void AddUnitState(uint32 f)
Definition Unit.h:735
void ClearComboPointHolders()
Definition Unit.cpp:13308
void CombatStop(bool includingCast=false, bool mutualPvP=true)
Definition Unit.cpp:7486
Definition Object.h:475
ZoneScript * GetZoneScript() const
Definition Object.h:631
Definition ZoneScript.h:26

References Unit::AddUnitState(), Unit::ClearComboPointHolders(), Creature::ClearLastLeashExtensionTimePtr(), Unit::CombatStop(), EngagementOver(), Creature::GetFormation(), WorldObject::GetInstanceScript(), WorldObject::GetZoneScript(), Unit::IsAlive(), Creature::IsInEvadeMode(), Creature::LoadCreaturesAddon(), me, Unit::RemoveEvadeAuras(), Creature::ResetPlayerDamageReq(), Creature::SetCannotReachTarget(), Creature::SetLootRecipient(), Unit::ToTempSummon(), and UNIT_STATE_EVADE.

Referenced by boss_eadric::boss_eadricAI::DamageTaken(), boss_paletress::boss_paletressAI::DamageTaken(), boss_yoggsaron_brain::DamageTaken(), boss_jindo::EnterEvadeMode(), npc_argent_captainAI::EnterEvadeMode(), boss_kologarn::EnterEvadeMode(), npc_ulduar_vx001::EnterEvadeMode(), npc_ulduar_aerial_command_unit::EnterEvadeMode(), boss_yoggsaron_sara::EnterEvadeMode(), npc_tournament_training_dummy::npc_tournament_training_dummyAI::EnterEvadeMode(), EnterEvadeMode(), SmartAI::EnterEvadeMode(), npc_pet_dk_ebon_gargoyle::EnterEvadeMode(), and boss_algalon_the_observer::UpdateAI().

◆ AttackedBy()

virtual void CreatureAI::AttackedBy ( Unit )
inlinevirtual

◆ BeforeSpellClick()

virtual bool CreatureAI::BeforeSpellClick ( Unit )
inlinevirtual

◆ CalculateThreat()

virtual void CreatureAI::CalculateThreat ( Unit ,
float &  ,
SpellInfo const *   
)
inlinevirtual

Reimplemented in boss_mandokir::boss_mandokirAI.

263{ }

◆ CanAlwaysBeDetectable()

virtual bool CreatureAI::CanAlwaysBeDetectable ( WorldObject const *  )
inlinevirtual

Reimplemented in boss_renataki::boss_renatakiAI.

248{ return false; }

◆ CanBeSeen()

◆ CanRespawn()

virtual bool CreatureAI::CanRespawn ( )
inlinevirtual

Reimplemented in BossAI, and SmartAI.

119{ return true; }

Referenced by Creature::Respawn().

◆ CanSeeAlways()

virtual bool CreatureAI::CanSeeAlways ( WorldObject const *  )
inlinevirtual

Reimplemented in boss_renataki::boss_renatakiAI.

245{ return false; }

◆ CheckInRoom()

bool CreatureAI::CheckInRoom ( )
virtual

Reimplemented in boss_priestess_delrissa, boss_sacrolash, boss_kalecgos, boss_hakkar::boss_hakkarAI, boss_onyxia, boss_bug_trio, boss_viscidus, and boss_trollgore::boss_trollgoreAI.

611{
612 if (IsInBoundary())
613 return true;
614 else
615 {
617 return false;
618 }
619}
bool IsInBoundary(Position const *who=nullptr) const
Definition CreatureAI.cpp:590
virtual void EnterEvadeMode(EvadeReason why=EVADE_REASON_OTHER)
Definition CreatureAI.cpp:235

References EnterEvadeMode(), EVADE_REASON_BOUNDARY, and IsInBoundary().

Referenced by Creature::Update().

◆ CorpseRemoved()

virtual void CreatureAI::CorpseRemoved ( uint32 )
inlinevirtual

== Triggered Actions Requested ==================

== State checks =================================

Reimplemented in npc_captain_saeed::npc_captain_saeedAI, npc_simone::npc_simoneAI, npc_pallid_horror, and SmartAI.

233{}

Referenced by Creature::RemoveCorpse().

◆ DistancingEnded()

virtual void CreatureAI::DistancingEnded ( )
inlinevirtual

Reimplemented in SmartAI.

271{}

◆ DistancingStarted()

virtual void CreatureAI::DistancingStarted ( )
inlinevirtual
270{}

◆ DoSummon() [1/2]

Creature * CreatureAI::DoSummon ( uint32  entry,
Position const &  pos,
uint32  despawnTime = 30000,
TempSummonType  summonType = TEMPSUMMON_CORPSE_TIMED_DESPAWN 
)
protected
629{
630 return me->SummonCreature(entry, pos, summonType, despawnTime);
631}
TempSummon * SummonCreature(uint32 id, const Position &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false) const
Definition Object.cpp:2393

References me, and WorldObject::SummonCreature().

Referenced by npc_blood_queen_lana_thel::npc_blood_queen_lana_thelAI::MoveInLineOfSight(), npc_gothik_trigger::npc_gothik_triggerAI::SpellHit(), npc_lady_sylvanas_windrunner::npc_lady_sylvanas_windrunnerAI::UpdateAI(), npc_toc_warlock::npc_toc_warlockAI::UpdateAI(), npc_toc_hunter::npc_toc_hunterAI::UpdateAI(), boss_ichoron::UpdateAI(), npc_vh_teleportation_portal::UpdateAI(), and npc_blessed_banner::npc_blessed_bannerAI::UpdateAI().

◆ DoSummon() [2/2]

Creature * CreatureAI::DoSummon ( uint32  entry,
WorldObject obj,
float  radius = 5.0f,
uint32  despawnTime = 30000,
TempSummonType  summonType = TEMPSUMMON_CORPSE_TIMED_DESPAWN 
)
protected
634{
635 Position pos = obj->GetRandomNearPosition(radius);
636 return me->SummonCreature(entry, pos, summonType, despawnTime);
637}
Position GetRandomNearPosition(float radius)
Definition Object.cpp:2801
Definition Position.h:27

References WorldObject::GetRandomNearPosition(), me, and WorldObject::SummonCreature().

◆ DoSummonFlyer()

Creature * CreatureAI::DoSummonFlyer ( uint32  entry,
WorldObject obj,
float  flightZ,
float  radius = 5.0f,
uint32  despawnTime = 30000,
TempSummonType  summonType = TEMPSUMMON_CORPSE_TIMED_DESPAWN 
)
protected
640{
641 Position pos = obj->GetRandomNearPosition(radius);
642 pos.m_positionZ += flightZ;
643 return me->SummonCreature(entry, pos, summonType, despawnTime);
644}
float m_positionZ
Definition Position.h:57

References WorldObject::GetRandomNearPosition(), Position::m_positionZ, me, and WorldObject::SummonCreature().

◆ DoZoneInCombat()

void CreatureAI::DoZoneInCombat ( Creature creature = nullptr,
float  maxRangeToNearestTarget = 250.0f 
)
118{
119 if (!creature)
120 {
121 creature = me;
122 }
123
124 if (creature->IsInEvadeMode())
125 {
126 return;
127 }
128
129 Map* map = creature->GetMap();
130 if (!map->IsDungeon()) //use IsDungeon instead of Instanceable, in case battlegrounds will be instantiated
131 {
132 LOG_ERROR("entities.unit.ai", "DoZoneInCombat call for map {} that isn't a dungeon (creature entry = {})", map->GetId(), creature->IsCreature() ? creature->ToCreature()->GetEntry() : 0);
133 return;
134 }
135
136 Map::PlayerList const& playerList = map->GetPlayers();
137 if (playerList.IsEmpty())
138 {
139 return;
140 }
141
142 for (Map::PlayerList::const_iterator itr = playerList.begin(); itr != playerList.end(); ++itr)
143 {
144 if (Player* player = itr->GetSource())
145 {
146 if (!IsValidCombatTarget(creature, player))
147 {
148 continue;
149 }
150
151 if (!creature->IsWithinDistInMap(player, maxRangeToNearestTarget))
152 {
153 continue;
154 }
155
156 creature->EngageWithTarget(player);
157
158 for (Unit* pet : player->m_Controlled)
159 creature->EngageWithTarget(pet);
160
161 if (Unit* vehicle = player->GetVehicleBase())
162 creature->EngageWithTarget(vehicle);
163 }
164 }
165}
bool IsValidCombatTarget(Creature *source, Player *target)
Definition CreatureAI.cpp:97
#define LOG_ERROR(filterType__,...)
Definition Log.h:145
Definition LinkedList.h:139
bool IsEmpty() const
Definition LinkedList.h:97
Definition MapRefMgr.h:26
iterator begin()
Definition MapRefMgr.h:36
iterator end()
Definition MapRefMgr.h:37
Definition Map.h:166
bool IsDungeon() const
Definition Map.h:297
uint32 GetId() const
Definition Map.h:232
PlayerList const & GetPlayers() const
Definition Map.h:329
uint32 GetEntry() const
Definition Object.h:117
bool IsCreature() const
Definition Object.h:205
Creature * ToCreature()
Definition Object.h:206
Definition Player.h:1084
Definition Unit.h:664
Unit * GetVehicleBase() const
Definition Unit.cpp:14996
void EngageWithTarget(Unit *who)
Definition Unit.cpp:7519
Map * GetMap() const
Definition Object.h:625
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
Definition Object.cpp:1377

References MapRefMgr::begin(), MapRefMgr::end(), Unit::EngageWithTarget(), Object::GetEntry(), Map::GetId(), WorldObject::GetMap(), Map::GetPlayers(), Unit::GetVehicleBase(), Object::IsCreature(), Map::IsDungeon(), LinkedListHead::IsEmpty(), Creature::IsInEvadeMode(), IsValidCombatTarget(), WorldObject::IsWithinDistInMap(), LOG_ERROR, me, and Object::ToCreature().

Referenced by BossAI::_JustEngagedWith(), boss_apothecary_hummel::boss_apothecary_hummelAI::DoAction(), npc_apothecary_genericAI::DoAction(), npc_coren_direbrew::DoAction(), npc_direbrew_antagonist::DoAction(), npc_risen_archmage::npc_risen_archmageAI::DoAction(), boss_cthun::DoAction(), boss_pathaleon_the_calculator::DoAction(), boss_tyrannus::boss_tyrannusAI::DoAction(), boss_bug_trio::DoFinalSpell(), SummonList::DoZoneInCombat(), StartMovementEvent::Execute(), boss_valithria_dreamwalker::boss_valithria_dreamwalkerAI::HealReceived(), npc_rookery_hatcher::InitializeAI(), boss_solakar_flamewreath::InitializeAI(), boss_urok_doomhowl::InitializeAI(), npc_shade_of_jindo::IsSummonedBy(), npc_raging_flames::IsSummonedBy(), boss_sartharion_dragonAI::JustEngagedWith(), npc_malchezaar_axe::JustEngagedWith(), boss_tenris_mirkblood::JustEngagedWith(), boss_terestian_illhoof::JustEngagedWith(), boss_crone::JustEngagedWith(), boss_bigbadwolf::JustEngagedWith(), boss_priestess_delrissa::JustEngagedWith(), boss_darkmaster_gandling::boss_darkmaster_gandlingAI::JustEngagedWith(), npc_akilzon_eagle::JustEngagedWith(), boss_zuljin::JustEngagedWith(), boss_mandokir::boss_mandokirAI::JustEngagedWith(), boss_cthun::JustEngagedWith(), npc_claw_tentacle::JustEngagedWith(), npc_giant_claw_tentacle::JustEngagedWith(), npc_giant_eye_tentacle::JustEngagedWith(), npc_dirt_mound::JustEngagedWith(), boss_anubarak_trial::boss_anubarak_trialAI::JustEngagedWith(), npc_swarm_scarab::npc_swarm_scarabAI::JustEngagedWith(), boss_jaraxxus::boss_jaraxxusAI::JustEngagedWith(), boss_twin_valkyrAI::JustEngagedWith(), boss_garfrost::boss_garfrostAI::JustEngagedWith(), boss_ick::boss_ickAI::JustEngagedWith(), npc_cult_fanatic::npc_cult_fanaticAI::JustEngagedWith(), npc_cult_adherent::npc_cult_adherentAI::JustEngagedWith(), npc_darnavan::npc_darnavanAI::JustEngagedWith(), boss_lord_marrowgar::JustEngagedWith(), npc_argent_captainAI::JustEngagedWith(), npc_nexus_lord::JustEngagedWith(), boss_ignis::JustEngagedWith(), boss_mimiron::JustEngagedWith(), boss_curator::JustEngagedWith(), boss_moroes::JustEngagedWith(), boss_netherspite::JustEngagedWith(), boss_jeklik::JustEngagedWith(), npc_anubisath_sentinel::aqsentinelAI::JustEngagedWith(), boss_prince_keleseth_icc::boss_prince_kelesethAI::JustEngagedWith(), boss_prince_taldaram_icc::boss_prince_taldaramAI::JustEngagedWith(), boss_prince_valanar_icc::boss_prince_valanarAI::JustEngagedWith(), boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI::JustEngagedWith(), boss_deathbringer_saurfang::boss_deathbringer_saurfangAI::JustEngagedWith(), boss_festergut::boss_festergutAI::JustEngagedWith(), boss_lady_deathwhisper::boss_lady_deathwhisperAI::JustEngagedWith(), boss_professor_putricide::boss_professor_putricideAI::JustEngagedWith(), boss_rotface::boss_rotfaceAI::JustEngagedWith(), npc_erekem_guard::JustEngagedWith(), npc_green_dragon_combat_trigger::npc_green_dragon_combat_triggerAI::JustEnteredCombat(), npc_risen_archmage::npc_risen_archmageAI::JustEnteredCombat(), boss_eregos::boss_eregosAI::JustSummoned(), BossAI::JustSummoned(), boss_rend_blackhand::JustSummoned(), boss_ragnaros::JustSummoned(), boss_attumen::JustSummoned(), boss_kormok::JustSummoned(), boss_onyxia::JustSummoned(), boss_black_knight::boss_black_knightAI::JustSummoned(), boss_deathbringer_saurfang::boss_deathbringer_saurfangAI::JustSummoned(), npc_ahune_bunny::JustSummoned(), boss_grand_champion::boss_grand_championAI::MovementInform(), npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI::npc_pos_martin_or_gorkun_secondAI(), boss_nefarian::PathEndReached(), npc_zuljin_vortex::Reset(), npc_direbrew_minion::Reset(), npc_eye_tentacle::Reset(), npc_swarm_scarab::npc_swarm_scarabAI::Reset(), npc_nerubian_burrower::npc_nerubian_burrowerAI::Reset(), npc_fel_infernal::npc_fel_infernalAI::Reset(), npc_mistress_of_pain::npc_mistress_of_painAI::Reset(), npc_anubarak_spike::npc_anubarak_spikeAI::SelectNewTarget(), npc_blackhand_incarcerator::SetData(), npc_ulduar_leviathan_mkii::SetData(), npc_ulduar_aerial_command_unit::SetData(), Creature::SetInCombatWithZone(), npc_ulduar_iron_construct::SpellHit(), npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI::SpellHitTarget(), boss_lord_valthalak::StartFighting(), boss_heigan::StartFightPhase(), boss_novos::SummonMovementInform(), npc_coren_direbrew::SummonSister(), Creature::Update(), boss_pyroguard_emberseer::UpdateAI(), boss_ragnaros::UpdateAI(), boss_kirtonos_the_herald::boss_kirtonos_the_heraldAI::UpdateAI(), npc_memory::npc_memoryAI::UpdateAI(), npc_cult_fanatic::npc_cult_fanaticAI::UpdateAI(), npc_cult_adherent::npc_cult_adherentAI::UpdateAI(), npc_raging_spirit::npc_raging_spiritAI::UpdateAI(), boss_malygos::UpdateAI(), boss_razorscale::UpdateAI(), boss_ichoron::UpdateAI(), npc_ahune_bunny::UpdateAI(), and InstanceScript::UpdateMinionState().

◆ EngagementOver()

void CreatureAI::EngagementOver ( )
299{
300 if (!_isEngaged)
301 {
302 LOG_DEBUG("scripts.ai", "CreatureAI::EngagementOver called even though creature is not currently engaged. Creature debug info:\n{}", me->GetDebugInfo());
303 return;
304 }
305 _isEngaged = false;
306
307 me->AtDisengage();
308}
#define LOG_DEBUG(filterType__,...)
Definition Log.h:157
void AtDisengage() override
Definition Creature.cpp:2903
std::string GetDebugInfo() const override
Definition Creature.cpp:3891

References _isEngaged, Creature::AtDisengage(), Creature::GetDebugInfo(), LOG_DEBUG, and me.

Referenced by _EnterEvadeMode(), PossessedAI::JustExitedCombat(), npc_escortAI::JustExitedCombat(), SmartAI::JustExitedCombat(), npc_belnistrasz::npc_belnistraszAI::JustExitedCombat(), npc_green_dragon_combat_trigger::npc_green_dragon_combat_triggerAI::JustExitedCombat(), boss_hodir::JustExitedCombat(), boss_thorim::JustExitedCombat(), npc_maiev_illidan::JustExitedCombat(), npc_pet_dk_ebon_gargoyle::JustExitedCombat(), boss_urom::boss_uromAI::LeaveCombat(), SmartAI::UpdateAI(), and UpdateVictim().

◆ EngagementStart()

void CreatureAI::EngagementStart ( Unit who)
287{
288 if (_isEngaged)
289 {
290 LOG_ERROR("scripts.ai", "CreatureAI::EngagementStart called even though creature is already engaged. Creature debug info:\n{}", me->GetDebugInfo());
291 return;
292 }
293 _isEngaged = true;
294
295 me->AtEngage(who);
296}
void AtEngage(Unit *target) override
Definition Creature.cpp:2856

References _isEngaged, Creature::AtEngage(), Creature::GetDebugInfo(), LOG_ERROR, and me.

Referenced by npc_green_dragon_combat_trigger::npc_green_dragon_combat_triggerAI::JustEnteredCombat(), PossessedAI::JustEnteredCombat(), JustEnteredCombat(), npc_risen_archmage::npc_risen_archmageAI::JustEnteredCombat(), and JustStartedThreateningMe().

◆ EnterEvadeMode()

void CreatureAI::EnterEvadeMode ( EvadeReason  why = EVADE_REASON_OTHER)
virtual

Reimplemented in boss_hakkar::boss_hakkarAI, boss_jindo, boss_dorothee, boss_roar, boss_strawman, boss_tinhead, boss_crone, boss_bigbadwolf, boss_julianne, boss_romulo, CritterAI, npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI, boss_drekthar::boss_drektharAI, boss_vanndar::boss_vanndarAI, boss_gyth, boss_rend_blackhand, boss_attumen, boss_nightbane, boss_tenris_mirkblood, boss_priestess_lackey_commonAI, boss_kiljaeden, boss_entropius, npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI, npc_amanishi_tempest, boss_arlokk::boss_arlokkAI, boss_jeklik, boss_archimonde, npc_black_morass_summoned_add, boss_ayamiss, boss_buru, boss_bug_trio, boss_skeram, boss_twinemperorsAI, npc_cork_gizelton::npc_cork_gizeltonAI, npc_clintar_spirit::npc_clintar_spiritAI, npc_twiggy_flathead::npc_twiggy_flatheadAI, boss_amanitar, npc_twilight_volunteer, boss_anub_arak, boss_sartharion, boss_halion::boss_halionAI, boss_black_knight::boss_black_knightAI, boss_bronjahm, boss_devourer_of_souls, boss_falric, boss_marwyn, npc_ghostly_priest, npc_phantom_mage, npc_phantom_hallucination, npc_shadowy_mercenary, npc_spectral_footman, npc_tortured_rifleman, boss_frostsworn_general, npc_hor_spiritual_reflection, boss_garfrost::boss_garfrostAI, boss_moorabi::boss_moorabiAI, boss_prince_keleseth_icc::boss_prince_kelesethAI, boss_prince_taldaram_icc::boss_prince_taldaramAI, boss_prince_valanar_icc::boss_prince_valanarAI, boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI, boss_deathbringer_saurfang::boss_deathbringer_saurfangAI, boss_festergut::boss_festergutAI, boss_professor_putricide::boss_professor_putricideAI, boss_rotface::boss_rotfaceAI, boss_sindragosa::boss_sindragosaAI, boss_the_lich_king::boss_the_lich_kingAI, npc_tirion_fordring_tft::npc_tirion_fordringAI, npc_argent_captainAI, boss_four_horsemen::boss_four_horsemenAI, boss_kelthuzad::boss_kelthuzadAI, boss_noth::boss_nothAI, boss_thaddius_summon::boss_thaddius_summonAI, boss_malygos, npc_crystalline_frayer, boss_urom::boss_uromAI, boss_varos::boss_varosAI, boss_algalon_the_observer, boss_ignis, boss_kologarn, boss_mimiron, npc_ulduar_leviathan_mkii, npc_ulduar_vx001, npc_ulduar_aerial_command_unit, boss_razorscale, boss_thorim, boss_yoggsaron_sara, npc_ulduar_arachnopod_destroyer, boss_ingvar_the_plunderer, boss_svala::boss_svalaAI, boss_ymiron::boss_ymironAI, boss_cyanigosa, boss_erekem, boss_ichoron, boss_lavanthor, boss_moragg, boss_xevozz, boss_zuramat, npc_tournament_training_dummy::npc_tournament_training_dummyAI, npc_overlord_drakuru_betrayal, boss_shirrak_the_dead_watcher, boss_blackheart_the_inciter, boss_murmur, boss_illidan_stormrage, boss_illidari_council, boss_illidari_council_memberAI, boss_shade_of_akama, boss_fathomguard_sharkkis, boss_fathomguard_tidalvess, boss_fathomguard_caribdis, boss_the_lurker_below, boss_harbinger_skyriss, boss_alar, boss_nethermancer_sepethrea, npc_captain_saeed::npc_captain_saeedAI, BossAI, SmartAI, GuardAI, PossessedAI, NullCreatureAI, PetAI, TotemAI, npc_burning_spirit, boss_doomrel, npc_chesspiece, boss_midnight, boss_kirtonos_the_herald::boss_kirtonos_the_heraldAI, npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI, npc_marzon_silent_blade::npc_marzon_silent_bladeAI, npc_varian_wrynn::npc_varian_wrynnAI, npc_thrall_bfu::npc_thrall_bfuAI, boss_zuljin, npc_brain_wash_totem, npc_hallows_end_soh, boss_ouro, npc_dirt_mound, npc_sergeant_bly::npc_sergeant_blyAI, npc_onyx_flamecaller::npc_onyx_flamecallerAI, boss_twilight_halion::boss_twilight_halionAI, boss_grand_champion::boss_grand_championAI, boss_anubarak_trial::boss_anubarak_trialAI, boss_faction_championsAI, npc_toc_pet_warlock::npc_toc_pet_warlockAI, npc_toc_pet_hunter::npc_toc_pet_hunterAI, boss_jaraxxus::boss_jaraxxusAI, npc_fel_infernal::npc_fel_infernalAI, npc_mistress_of_pain::npc_mistress_of_painAI, boss_gormok::boss_gormokAI, boss_jormungarAI, boss_icehowl::boss_icehowlAI, boss_twin_valkyrAI, boss_tyrannus::boss_tyrannusAI, npc_pos_freed_slave::npc_pos_freed_slaveAI, npc_high_overlord_saurfang_igb::npc_high_overlord_saurfang_igbAI, npc_muradin_bronzebeard_igb::npc_muradin_bronzebeard_igbAI, gunship_npc_AI, npc_gunship_boarding_addAI, npc_little_ooze::npc_little_oozeAI, npc_big_ooze::npc_big_oozeAI, npc_terenas_menethil::npc_terenas_menethilAI, npc_valithria_cloud::npc_valithria_cloudAI, npc_gothik_trigger::npc_gothik_triggerAI, npc_tesla::npc_teslaAI, npc_assembly_lightning, boss_flame_leviathan_seat, npc_ulduar_hodir_priest, npc_ulduar_hodir_druid, npc_ulduar_hodir_shaman, npc_ulduar_hodir_mage, boss_thorim_lightning_orb, violet_hold_trashAI, npc_future_you::npc_future_youAI, npc_mrfloppy::npc_mrfloppyAI, npc_frosthound, npc_parasitic_shadowfiend, npc_akama_shade, boss_ahune, boss_nazan, boss_vazruden, npc_raging_flames, npc_pet_dk_ebon_gargoyle, npc_pet_gen_argent_pony_bridle, npc_pet_gen_toxic_wasteling, npc_pet_mage_mirror_image, npc_escortAI, FollowerAI, npc_vengeful_shade::npc_vengeful_shadeAI, boss_kologarn_arms, and boss_skadi::boss_skadiAI.

236{
237 if (!_EnterEvadeMode(why))
238 return;
239
240 LOG_DEBUG("entities.unit", "Creature {} enters evade mode.", me->GetEntry());
241
242 if (!me->GetVehicle()) // otherwise me will be in evade mode forever
243 {
244 if (Unit* owner = me->GetCharmerOrOwner())
245 {
246 // Owned creatures (pets/guardians) follow their owner — clear evade state
247 // so they can re-enter combat immediately via CanBeginCombat
249 if (!me->IsVehicle()) // vehicles should not follow their owner (passenger)
250 {
251 me->GetMotionMaster()->Clear(false);
253 }
254 }
255 else
256 {
257 // Required to prevent attacking creatures that are evading and cause them to reenter combat
258 // Does not apply to MoveFollow — UNIT_STATE_EVADE is already set from _EnterEvadeMode
260 }
261 }
262
263 Reset();
264 if (me->IsVehicle()) // use the same sequence of addtoworld, aireset may remove all summons!
265 {
266 me->GetVehicleKit()->Reset(true);
267 }
268
269 sScriptMgr->OnUnitEnterEvadeMode(me, why);
270
271 // despawn bosses at reset - only verified tbc/woltk bosses with this reset type
272 CreatureTemplate const* cInfo = sObjectMgr->GetCreatureTemplate(me->GetEntry());
274 {
276 }
277}
@ CREATURE_FLAG_EXTRA_HARD_RESET
Definition CreatureData.h:77
@ MOTION_SLOT_ACTIVE
Definition MotionMaster.h:65
#define sObjectMgr
Definition ObjectMgr.h:1723
constexpr float PET_FOLLOW_DIST
Definition PetDefines.h:206
#define sScriptMgr
Definition ScriptMgr.h:737
bool _EnterEvadeMode(EvadeReason why=EVADE_REASON_OTHER)
Definition CreatureAI.cpp:383
void DespawnOnEvade(Seconds respawnDelay=20s)
Definition Creature.cpp:2194
void MoveTargetedHome(bool walk=false)
The unit will return this initial position (owner for pets and summoned creatures)....
Definition MotionMaster.cpp:261
void MoveFollow(Unit *target, float dist, float angle, MovementSlot slot=MOTION_SLOT_ACTIVE, bool inheritWalkState=true, bool inheritSpeed=true)
The unit will follow this target. Doesn't work with UNIT_FLAG_DISABLE_MOVE.
Definition MotionMaster.cpp:447
void Clear(bool reset=true)
Definition MotionMaster.h:193
virtual void Reset()
Definition UnitAI.h:211
void ClearUnitState(uint32 f)
Definition Unit.h:737
bool IsVehicle() const
Definition Unit.h:800
Vehicle * GetVehicle() const
Definition Unit.h:1927
MotionMaster * GetMotionMaster()
Definition Unit.h:1759
Unit * GetCharmerOrOwner() const
Definition Unit.h:1286
virtual float GetFollowAngle() const
Definition Unit.h:1896
Vehicle * GetVehicleKit() const
Definition Unit.h:1926
void Reset(bool evading=false)
Definition Vehicle.cpp:131
Definition CreatureData.h:187
bool HasFlagsExtra(uint32 flag) const
Definition CreatureData.h:278

References _EnterEvadeMode(), MotionMaster::Clear(), Unit::ClearUnitState(), CREATURE_FLAG_EXTRA_HARD_RESET, Creature::DespawnOnEvade(), Unit::GetCharmerOrOwner(), Object::GetEntry(), Unit::GetFollowAngle(), Unit::GetMotionMaster(), Unit::GetVehicle(), Unit::GetVehicleKit(), CreatureTemplate::HasFlagsExtra(), Unit::IsVehicle(), LOG_DEBUG, me, MOTION_SLOT_ACTIVE, MotionMaster::MoveFollow(), MotionMaster::MoveTargetedHome(), PET_FOLLOW_DIST, UnitAI::Reset(), Vehicle::Reset(), sObjectMgr, sScriptMgr, and UNIT_STATE_EVADE.

Referenced by BossAI::_EnterEvadeMode(), CheckInRoom(), npc_akama_shade::DamageTaken(), boss_mal_ganis::boss_mal_ganisAI::DamageTaken(), npc_eris_hevenfire::npc_eris_hevenfireAI::DoAction(), npc_high_overlord_saurfang_icc::npc_high_overlord_saurfangAI::DoAction(), npc_muradin_bronzebeard_icc::npc_muradin_bronzebeard_iccAI::DoAction(), boss_kelthuzad_minion::boss_kelthuzad_minionAI::DoAction(), npc_akama_illidan::DoAction(), boss_dorothee::EnterEvadeMode(), boss_roar::EnterEvadeMode(), boss_strawman::EnterEvadeMode(), boss_tinhead::EnterEvadeMode(), boss_crone::EnterEvadeMode(), boss_bigbadwolf::EnterEvadeMode(), boss_julianne::EnterEvadeMode(), boss_romulo::EnterEvadeMode(), CritterAI::EnterEvadeMode(), npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI::EnterEvadeMode(), boss_drekthar::boss_drektharAI::EnterEvadeMode(), boss_vanndar::boss_vanndarAI::EnterEvadeMode(), boss_priestess_lackey_commonAI::EnterEvadeMode(), boss_kiljaeden::EnterEvadeMode(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::EnterEvadeMode(), npc_amanishi_tempest::EnterEvadeMode(), boss_skeram::EnterEvadeMode(), npc_twiggy_flathead::npc_twiggy_flatheadAI::EnterEvadeMode(), npc_twilight_volunteer::EnterEvadeMode(), boss_black_knight::boss_black_knightAI::EnterEvadeMode(), npc_ghostly_priest::EnterEvadeMode(), npc_phantom_mage::EnterEvadeMode(), npc_phantom_hallucination::EnterEvadeMode(), npc_shadowy_mercenary::EnterEvadeMode(), npc_spectral_footman::EnterEvadeMode(), npc_tortured_rifleman::EnterEvadeMode(), boss_frostsworn_general::EnterEvadeMode(), npc_hor_spiritual_reflection::EnterEvadeMode(), boss_garfrost::boss_garfrostAI::EnterEvadeMode(), boss_prince_keleseth_icc::boss_prince_kelesethAI::EnterEvadeMode(), boss_prince_taldaram_icc::boss_prince_taldaramAI::EnterEvadeMode(), boss_festergut::boss_festergutAI::EnterEvadeMode(), boss_rotface::boss_rotfaceAI::EnterEvadeMode(), npc_tirion_fordring_tft::npc_tirion_fordringAI::EnterEvadeMode(), boss_kelthuzad::boss_kelthuzadAI::EnterEvadeMode(), boss_noth::boss_nothAI::EnterEvadeMode(), boss_thaddius_summon::boss_thaddius_summonAI::EnterEvadeMode(), boss_malygos::EnterEvadeMode(), npc_crystalline_frayer::EnterEvadeMode(), boss_urom::boss_uromAI::EnterEvadeMode(), boss_varos::boss_varosAI::EnterEvadeMode(), boss_algalon_the_observer::EnterEvadeMode(), npc_ulduar_leviathan_mkii::EnterEvadeMode(), npc_ulduar_arachnopod_destroyer::EnterEvadeMode(), boss_ingvar_the_plunderer::EnterEvadeMode(), boss_svala::boss_svalaAI::EnterEvadeMode(), boss_ymiron::boss_ymironAI::EnterEvadeMode(), npc_overlord_drakuru_betrayal::EnterEvadeMode(), boss_shirrak_the_dead_watcher::EnterEvadeMode(), boss_blackheart_the_inciter::EnterEvadeMode(), boss_illidari_council_memberAI::EnterEvadeMode(), boss_fathomguard_sharkkis::EnterEvadeMode(), boss_fathomguard_tidalvess::EnterEvadeMode(), boss_fathomguard_caribdis::EnterEvadeMode(), boss_nethermancer_sepethrea::EnterEvadeMode(), boss_skadi::boss_skadiAI::EnterEvadeMode(), NPCStaveQuestAI::EvadeOnFeignDeath(), UnitAI::EvadeTimerExpired(), spell_illidari_council_empyreal_balance::HandleAfterCast(), ScriptedAI::IsInRoom(), npc_dragonflayer_forge_master::JustEngagedWith(), npc_maiev_illidan::JustExitedCombat(), OnCharmed(), FrostwingGauntletRespawner::operator()(), npc_wild_wyrm::PassengerBoarded(), Creature::SelectVictim(), npc_warden_mellichar::npc_warden_mellicharAI::SetData(), npc_precious::npc_preciousAI::SetData(), npc_aged_dying_ancient_kodo::SpellHit(), npc_nether_drake::npc_nether_drakeAI::SpellHit(), npc_kiljaeden_controller::SummonedCreatureDies(), npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI::UpdateAI(), boss_drekthar::boss_drektharAI::UpdateAI(), boss_galvangar::boss_galvangarAI::UpdateAI(), boss_vanndar::boss_vanndarAI::UpdateAI(), npc_eris_hevenfire::npc_eris_hevenfireAI::UpdateAI(), npc_anachronos_the_ancient::npc_anachronos_the_ancientAI::UpdateAI(), npc_anachronos_quest_trigger::npc_anachronos_quest_triggerAI::UpdateAI(), npc_taskmaster_fizzule::npc_taskmaster_fizzuleAI::UpdateAI(), npc_plucky::npc_pluckyAI::UpdateAI(), boss_ick::boss_ickAI::UpdateAI(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::UpdateAI(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::UpdateAI(), boss_algalon_the_observer::UpdateAI(), boss_hodir::UpdateAI(), boss_palehoof::boss_palehoofAI::UpdateAI(), npc_sinkhole_kill_credit::npc_sinkhole_kill_creditAI::UpdateAI(), npc_warden_mellichar::npc_warden_mellicharAI::UpdateAI(), npc_lord_illidan_stormrage::npc_lord_illidan_stormrageAI::UpdateAI(), npc_unkor_the_ruthless::npc_unkor_the_ruthlessAI::UpdateAI(), npc_artorius::npc_artoriusAI::UpdateAI(), npc_simone::npc_simoneAI::UpdateAI(), npc_nelson::npc_nelsonAI::UpdateAI(), npc_franklin::npc_franklinAI::UpdateAI(), npc_chicken_cluck::npc_chicken_cluckAI::UpdateAI(), PassiveAI::UpdateAI(), InstanceScript::UpdateMinionState(), and UpdateVictim().

◆ GetBoundary()

CreatureBoundary const * CreatureAI::GetBoundary ( ) const
inline
257{ return _boundary; }

References _boundary.

◆ GetSummoner()

WorldObject * CreatureAI::GetSummoner ( ) const

Returns the summoner creature/object, if the creature is a temporary summon.

90{
91 if (TempSummon* summon = me->ToTempSummon())
92 return summon->GetSummoner();
93
94 return nullptr;
95}

References me, and Unit::ToTempSummon().

Referenced by npc_zuljin_vortex::ChangeToNewPlayer(), npc_janalai_hatcher::MovementInform(), npc_frost_tomb::npc_frost_tomb(), and npc_zuljin_vortex::Reset().

◆ IsEngaged()

◆ IsEscorted()

virtual bool CreatureAI::IsEscorted ( )
inlinevirtual

Reimplemented in npc_escortAI, and SmartAI.

181{ return false; }

◆ IsEscortNPC()

virtual bool CreatureAI::IsEscortNPC ( bool  = true) const
inlinevirtual

Reimplemented in npc_escortAI.

122{ return false; }

◆ IsInBoundary()

bool CreatureAI::IsInBoundary ( Position const *  who = nullptr) const
591{
592 if (!_boundary)
593 return true;
594
595 if (!who)
596 who = me;
597
599}
static bool IsInBounds(CreatureBoundary const &boundary, Position const *who)
Definition CreatureAI.cpp:601

References _boundary, _negateBoundary, IsInBounds(), and me.

Referenced by CheckInRoom(), boss_prince_valanar_icc::boss_prince_valanarAI::CheckRoom(), boss_heigan::CheckSafetyDance(), BossAI::TeleportCheaters(), and VisualizeBoundary().

◆ IsInBounds()

bool CreatureAI::IsInBounds ( CreatureBoundary const &  boundary,
Position const *  who 
)
static
602{
603 for (AreaBoundary const* areaBoundary : boundary)
604 if (!areaBoundary->IsWithinBoundary(pos))
605 return false;
606
607 return true;
608}
Definition AreaBoundary.h:24

Referenced by IsInBoundary().

◆ IsSummonedBy()

virtual void CreatureAI::IsSummonedBy ( WorldObject )
inlinevirtual

Reimplemented in boss_gyth, boss_lord_valthalak, boss_rend_blackhand, npc_corrupted_totem, boss_kormok, boss_jarien, boss_sothos, boss_gahzranka, npc_shade_of_jindo, npc_direbrew_minion, npc_hyjal_jaina::hyjalJainaAI, boss_aeonus, npc_clintar_spirit::npc_clintar_spiritAI, npc_taldaram_flamesphere, npc_onyx_flamecaller::npc_onyx_flamecallerAI, npc_living_inferno::npc_living_infernoAI, npc_kinetic_bomb::npc_kinetic_bombAI, npc_coldflame::npc_coldflameAI, npc_putricide_oozeAI, npc_big_ooze::npc_big_oozeAI, npc_raging_spirit::npc_raging_spiritAI, npc_lk_spirit_bomb::npc_lk_spirit_bombAI, npc_suppresser::npc_suppresserAI, npc_ulduar_saronite_vapors, npc_anzu_spirit, npc_parasitic_shadowfiend, npc_blade_of_azzinoth, npc_flame_of_azzinoth, npc_supremus_punch_invisible_stalker, npc_raging_flames, npc_crashin_thrashin_robot, TriggerAI, SmartAI, npc_burning_spirit, npc_vaelastrasz_the_red, npc_drakonid_spawner, boss_attumen, npc_demon_chain, npc_risen_guardian::npc_risen_guardianAI, npc_demonic_vapor, npc_tiger_matriarch::npc_tiger_matriarchAI, npc_bone_spike::npc_bone_spikeAI, npc_little_ooze::npc_little_oozeAI, npc_strangulate_vehicle::npc_strangulate_vehicleAI, boss_maexxna_webwrap::boss_maexxna_webwrapAI, npc_eoe_wyrmrest_skytalon, npc_oculus_drake::npc_oculus_drakeAI, boss_kologarn_eyebeam, npc_wintergarde_gryphon, npc_spiritual_insight::npc_spiritual_insightAI, npc_infra_green_bomber_generic::npc_infra_green_bomber_genericAI, npc_frostbrood_skytalon::npc_frostbrood_skytalonAI, npc_maiev_illidan, npc_inner_demon, npc_invisible_tractor_beam_source, npc_oscillating_frequency_scanner_master_bunny::npc_oscillating_frequency_scanner_master_bunnyAI, npc_infernal_attacker::npc_infernal_attackerAI, npc_korkron_or_wildhammer, npc_kservant::npc_kservantAI, npc_pet_dk_ghoul, npc_pet_gen_fetch_ball, npc_spirit_shade::npc_spirit_shadeAI, npc_venomhide_hatchling::npc_venomhide_hatchlingAI, and npc_arcanite_dragonling.

153{}

Referenced by TempSummon::InitSummon().

◆ JustDied()

virtual void CreatureAI::JustDied ( Unit )
inlinevirtual

Reimplemented in NPCStaveQuestAI, PossessedAI, ScriptedAI, BossAI, WorldBossAI, npc_escortAI, FollowerAI, boss_balinda, boss_ambassador_flamelash, boss_emperor_dagran_thaurissan, boss_gyth, boss_halycon, boss_highlord_omokk, boss_mor_grayhoof, boss_overlord_wyrmthalak, boss_pyroguard_emberseer, boss_quartermaster_zigris, boss_rend_blackhand, boss_solakar_flamewreath, boss_broodlord, boss_victor_nefarius, boss_nefarian, npc_corrupted_totem, boss_razorgore, boss_majordomo, boss_ragnaros, npc_flamewaker_priest, npc_chesspiece, boss_attumen, boss_malchezaar, boss_servant_quarters, boss_shade_of_aran, npc_kilrek, npc_demon_chain, boss_terestian_illhoof, boss_dorothee, boss_roar, boss_strawman, boss_tinhead, boss_crone, boss_bigbadwolf, boss_julianne, boss_romulo, boss_priestess_delrissa, boss_priestess_lackey_commonAI, boss_vexallus, npc_highlord_darion_mograine::npc_highlord_darion_mograineAI, boss_darkmaster_gandling::boss_darkmaster_gandlingAI, boss_kirtonos_the_herald::boss_kirtonos_the_heraldAI, boss_kormok, boss_apothecary_hummel::boss_apothecary_hummelAI, npc_apothecary_frye, npc_apothecary_baxter, boss_baroness_anastari::boss_baroness_anastariAI, boss_sacrolash, boss_alythess, boss_kalec, boss_sathrovarr, npc_kiljaeden_controller, boss_kiljaeden, boss_entropius, npc_balance_of_light_and_shadow::npc_balance_of_light_and_shadowAI, npc_lor_themar_theron, npc_king_magni_bronzebeard, npc_deathstalker_fearleia, npc_ravenclaw_apparition::npc_ravenclaw_apparitionAI, npc_king_varian_wrynn, npc_lady_sylvanas_windrunner::npc_lady_sylvanas_windrunnerAI, boss_akilzon, boss_zuljin, npc_zulaman_hostage::npc_zulaman_hostageAI, boss_arlokk::boss_arlokkAI, npc_zulian_prowler::npc_zulian_prowlerAI, boss_hakkar::boss_hakkarAI, boss_mandokir::boss_mandokirAI, npc_ohgan::npc_ohganAI, npc_chained_spirit, npc_vilebranch_speaker, boss_thekal, npc_zealot_lorkhan, npc_zealot_zath, npc_coren_direbrew, npc_hallows_end_soh, boss_headless_horseman, boss_azuregos::boss_azuregosAI, npc_hyjal_jaina::hyjalJainaAI, npc_hyjal_thrall::hyjalThrallAI, npc_hyjal_tyrande::hyjalTyrandeAI, boss_epoch::boss_epochAI, boss_infinite_corruptor::boss_infinite_corruptorAI, boss_mal_ganis::boss_mal_ganisAI, boss_meathook::boss_meathookAI, boss_salramm::boss_salrammAI, npc_arthas::npc_arthasAI, boss_captain_skarloc, boss_lieutenant_drake, boss_aeonus, boss_chrono_lord_deja, boss_temporus, npc_medivh_bm, boss_isalien, npc_belnistrasz::npc_belnistraszAI, boss_moam, npc_anubisath_guardian, boss_rajaxx, npc_obsidian_destroyer, boss_eye_of_cthun, npc_eye_tentacle, npc_claw_tentacle, npc_giant_claw_tentacle, npc_giant_eye_tentacle, boss_sartura, boss_skeram, npc_anubisath_sentinel::aqsentinelAI, npc_anubisath_defender, npc_ahnqiraji_critter, npc_muglash::npc_muglashAI, npc_prophet_velen, npc_clintar_spirit::npc_clintar_spiritAI, npc_omen::npc_omenAI, npc_thrall_warchief::npc_thrall_warchiefAI, npc_qiraj_war_spawn::npc_qiraj_war_spawnAI, npc_tyrande_whisperwind, npc_cairne_bloodhoof::npc_cairne_bloodhoofAI, npc_ame::npc_ameAI, boss_amanitar, boss_elder_nadox, boss_volazj, boss_jedoga_shadowseeker, npc_taldaram_flamesphere, boss_taldaram, boss_sartharion, boss_sartharion_dragonAI, npc_living_inferno::npc_living_infernoAI, npc_memory::npc_memoryAI, npc_argent_soldier::npc_argent_soldierAI, boss_black_knight::boss_black_knightAI, npc_toc5_grand_champion_minion::npc_toc5_grand_champion_minionAI, boss_anubarak_trial::boss_anubarak_trialAI, npc_swarm_scarab::npc_swarm_scarabAI, npc_nerubian_burrower::npc_nerubian_burrowerAI, boss_faction_championsAI, boss_jaraxxus::boss_jaraxxusAI, npc_fel_infernal::npc_fel_infernalAI, npc_mistress_of_pain::npc_mistress_of_painAI, npc_snobold_vassal::npc_snobold_vassalAI, boss_gormok::boss_gormokAI, boss_jormungarAI, boss_icehowl::boss_icehowlAI, boss_twin_valkyrAI, npc_ghostly_priest, npc_phantom_mage, npc_phantom_hallucination, npc_shadowy_mercenary, npc_spectral_footman, npc_tortured_rifleman, boss_frostsworn_general, npc_hor_spiritual_reflection, npc_hor_raging_ghoul, npc_hor_risen_witch_doctor, npc_hor_lumbering_abomination, boss_garfrost::boss_garfrostAI, boss_ick::boss_ickAI, boss_tyrannus::boss_tyrannusAI, boss_drakkari_elemental::boss_drakkari_elementalAI, boss_prince_keleseth_icc::boss_prince_kelesethAI, boss_prince_taldaram_icc::boss_prince_taldaramAI, boss_prince_valanar_icc::boss_prince_valanarAI, npc_dark_nucleus::npc_dark_nucleusAI, boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI, boss_deathbringer_saurfang::boss_deathbringer_saurfangAI, boss_festergut::boss_festergutAI, npc_stinky_icc::npc_stinky_iccAI, npc_gunship::npc_gunshipAI, gunship_npc_AI, boss_lord_marrowgar, npc_bone_spike::npc_bone_spikeAI, boss_professor_putricide::boss_professor_putricideAI, boss_rotface::boss_rotfaceAI, npc_little_ooze::npc_little_oozeAI, npc_big_ooze::npc_big_oozeAI, npc_precious_icc::npc_precious_iccAI, boss_sindragosa::boss_sindragosaAI, npc_ice_tomb::npc_ice_tombAI, npc_spinestalker::npc_spinestalkerAI, npc_rimefang::npc_rimefangAI, boss_the_lich_king::boss_the_lich_kingAI, npc_raging_spirit::npc_raging_spiritAI, npc_spirit_warden::npc_spirit_wardenAI, npc_lk_wicked_spirit::npc_lk_wicked_spiritAI, npc_gluttonous_abomination::npc_gluttonous_abominationAI, npc_rotting_frost_giant::npc_rotting_frost_giantAI, boss_sister_svalna::boss_sister_svalnaAI, npc_argent_captainAI, npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI, npc_isle_of_conquest_turret::npc_isle_of_conquest_turretAI, npc_boss_gothik_minion::npc_boss_gothik_minionAI, boss_kelthuzad_minion::boss_kelthuzad_minionAI, boss_maexxna_webwrap::boss_maexxna_webwrapAI, boss_thaddius_summon::boss_thaddius_summonAI, npc_mr_bigglesworth, boss_malygos, npc_nexus_lord, npc_eoe_wyrmrest_skytalon, boss_drakos::boss_drakosAI, boss_eregos::boss_eregosAI, boss_urom::boss_uromAI, boss_varos::boss_varosAI, boss_bjarngrim, boss_ionar, boss_loken, boss_volkhan, boss_krystallus::boss_krystallusAI, boss_maiden_of_grief::boss_maiden_of_griefAI, boss_sjonnir::boss_sjonnirAI, boss_sjonnir_iron_sludge::boss_sjonnir_iron_sludgeAI, brann_bronzebeard::brann_bronzebeardAI, boss_steelbreaker, boss_runemaster_molgeim, boss_stormcaller_brundir, npc_auriaya_feral_defender, boss_flame_leviathan, boss_freya_iron_root, boss_freya_summons, boss_vezax, npc_ulduar_saronite_vapors, npc_ulduar_saronite_animus, npc_ulduar_hodir_priest, npc_ulduar_hodir_druid, npc_ulduar_hodir_shaman, npc_ulduar_hodir_mage, npc_ulduar_iron_construct, boss_ignis, boss_kologarn, boss_kologarn_arms, boss_thorim_start_npcs, boss_thorim_runic_colossus, boss_thorim_ancient_rune_giant, boss_xt002, npc_xt002_heart, npc_xt002_boombot, boss_yoggsaron_guardian_of_ys, boss_yoggsaron, boss_yoggsaron_constrictor_tentacle, boss_yoggsaron_influence_tentacle, npc_ulduar_storm_tempered_keeper, boss_ingvar_the_plunderer, boss_keleseth, boss_skarvald_the_constructor, boss_dalronn_the_controller, npc_dragonflayer_forge_master, boss_palehoof::boss_palehoofAI, npc_massive_jormungar::npc_massive_jormungarAI, npc_ferocious_rhino::npc_ferocious_rhinoAI, npc_ravenous_furbolg::npc_ravenous_furbolgAI, npc_frenzied_worgen::npc_frenzied_worgenAI, boss_skadi::boss_skadiAI, boss_skadi_grauf::boss_skadi_graufAI, boss_svala::boss_svalaAI, boss_ymiron::boss_ymironAI, boss_archavon::boss_archavonAI, boss_emalon::boss_emalonAI, boss_koralon::boss_koralonAI, boss_toravon::boss_toravonAI, npc_ichor_globule, npc_vh_void_sentry, npc_vh_teleportation_portal, violet_hold_trashAI, npc_mootoo_the_younger::npc_mootoo_the_youngerAI, npc_bonker_togglevolt::npc_bonker_togglevoltAI, npc_mindless_ghoul::npc_mindless_ghoulAI, npc_wintergarde_gryphon, npc_q24545_wretched_ghoul::npc_q24545_wretched_ghoulAI, npc_q24545_vegard::npc_q24545_vegardAI, npc_apothecary_hanes::npc_Apothecary_HanesAI, npc_blessed_banner::npc_blessed_bannerAI, npc_engineer_helice::npc_engineer_heliceAI, npc_frosthound, boss_exarch_maladaar, npc_stolen_soul, boss_nexusprince_shaffar, boss_tavarok, boss_darkweaver_syth, boss_talon_king_ikiss, boss_ambassador_hellmaw, boss_blackheart_the_inciter, boss_grandmaster_vorpil, boss_illidari_council_memberAI, boss_essence_of_anger::boss_essence_of_angerAI, boss_doomlord_kazzak::boss_doomlordkazzakAI, boss_doomwalker, boss_fathomguard_sharkkis, boss_fathomguard_tidalvess, boss_fathomguard_caribdis, npc_inner_demon, boss_ahune, npc_frozen_core, npc_ahune_bunny, boss_mennu_the_betrayer, boss_hydromancer_thespia, boss_mekgineer_steamrigger, boss_warlord_kalithresh, boss_swamplord_muselek, boss_gruul, boss_high_king_maulgar, boss_olm_the_summoner, boss_kiggler_the_crazed, boss_blindeye_the_seer, boss_krosh_firehand, boss_kelidan_the_breaker, boss_the_maker, boss_omor_the_unscarred, boss_vazruden, boss_watchkeeper_gargolmar, boss_grand_warlock_nethekurse, npc_millhouse_manastorm::npc_millhouse_manastormAI, npc_warden_mellichar::npc_warden_mellicharAI, boss_dalliah_the_doomsayer, boss_harbinger_skyriss, boss_wrath_scryer_soccothrates, boss_zereketh_the_unbound, boss_commander_sarannis, boss_high_botanist_freywinn, boss_thorngrin_the_tender, boss_warp_splinter, advisor_baseAI, boss_gatewatcher_gyrokill, boss_gatewatcher_iron_hand, boss_mechano_lord_capacitus, boss_nethermancer_sepethrea, boss_pathaleon_the_calculator, npc_maghar_captive::npc_maghar_captiveAI, npc_kurenai_captive::npc_kurenai_captiveAI, npc_captain_saeed::npc_captain_saeedAI, npc_bessy::npc_bessyAI, npc_maxx_a_million_escort::npc_maxx_a_million_escortAI, npc_infernal_attacker::npc_infernal_attackerAI, npc_enslaved_netherwing_drake, npc_illidari_spawn::npc_illidari_spawnAI, npc_enraged_spirit::npc_enraged_spiritAI, npc_korkron_or_wildhammer, npc_isla_starmane::npc_isla_starmaneAI, npc_pet_dk_ghoul, boss_taerar::boss_taerarAI, npc_necropolis_health, npc_necrotic_shard, npc_cultist_engineer, npc_flameshocker, npc_pallid_horror, CombatAI, GuardAI, SmartAI, boss_lord_valthalak, boss_curator, boss_maiden_of_virtue, boss_moroes, boss_netherspite, boss_felblood_kaelthas, boss_selin_fireheart, boss_jarien, boss_sothos, boss_brutallus, boss_felmyst, boss_halazzi, boss_janalai, boss_nalorakk, npc_amanishi_tempest, boss_jeklik, boss_marli, boss_venoxis, boss_anetheron, boss_azgalor, boss_kazrogal, boss_rage_winterchill, boss_epoch_hunter, npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, boss_ayamiss, boss_buru, npc_buru_egg, boss_kurinnaxx, npc_general_andorov, boss_bug_trio, boss_cthun, boss_twinemperorsAI, npc_webbed_creature::npc_webbed_creatureAI, npc_cork_gizelton::npc_cork_gizeltonAI, boss_anub_arak, npc_anub_ar_crusher, boss_krik_thir::boss_krik_thirAI, boss_sartharion_tenebron, boss_baltharus_the_warborn::boss_baltharus_the_warbornAI, boss_general_zarithrian::boss_general_zarithrianAI, boss_halion::boss_halionAI, boss_twilight_halion::boss_twilight_halionAI, boss_saviana_ragefire::boss_saviana_ragefireAI, boss_novos, boss_tharon_ja::boss_tharon_jaAI, boss_trollgore::boss_trollgoreAI, boss_bronjahm, boss_devourer_of_souls, boss_falric, boss_marwyn, boss_gal_darah, boss_moorabi::boss_moorabiAI, boss_slad_ran::boss_slad_ranAI, boss_lady_deathwhisper::boss_lady_deathwhisperAI, npc_darnavan::npc_darnavanAI, npc_four_car_garage::npc_four_car_garageAI, boss_anubrekhan, boss_faerlina::boss_faerlinaAI, boss_four_horsemen::boss_four_horsemenAI, boss_gluth::boss_gluthAI, boss_gothik::boss_gothikAI, boss_grobbulus::boss_grobbulusAI, boss_heigan, boss_kelthuzad::boss_kelthuzadAI, boss_loatheb::boss_loathebAI, boss_maexxna::boss_maexxnaAI, boss_noth::boss_nothAI, boss_patchwerk::boss_patchwerkAI, boss_razuvious::boss_razuviousAI, boss_sapphiron::boss_sapphironAI, boss_thaddius::boss_thaddiusAI, npc_scion_of_eternity, boss_anomalus, boss_commander_stoutbeard, boss_keristrasza, boss_magus_telestra, boss_ormorok, boss_auriaya, boss_flame_leviathan_defense_turret, boss_freya_elder_stonebark, boss_freya_elder_brightleaf, boss_freya_elder_ironbranch, npc_xt002_scrapbot, npc_frost_tomb, boss_cyanigosa, boss_erekem, boss_ichoron, boss_xevozz, boss_zuramat, npc_nerubar_victim::npc_nerubar_victimAI, boss_pandemonius, boss_gurtogg_bloodboil, boss_illidan_stormrage, boss_mother_shahraz, boss_reliquary_of_souls::boss_reliquary_of_soulsAI, boss_shade_of_akama, boss_teron_gorefiend, boss_najentus, boss_fathomlord_karathress, boss_hydross_the_unstable, boss_lady_vashj, boss_morogrim_tidewalker, boss_magtheridon, boss_porung, boss_warbringer_omrogg, boss_warchief_kargath_bladefist, boss_alar, boss_high_astromancer_solarian, boss_kaelthas, boss_void_reaver, npc_torloth_the_magnificent::npc_torloth_the_magnificentAI, and npc_simone::npc_simoneAI.

146{}

Referenced by boss_sindragosa::boss_sindragosaAI::SummonedCreatureDespawn(), and spell_igb_check_for_players::TriggerWipe().

◆ JustEngagedWith()

virtual void CreatureAI::JustEngagedWith ( Unit )
inlinevirtual

Called for reaction when initially engaged - this happens after JustEnteredCombat.

Reimplemented in boss_sartharion_dragonAI, CasterAI, CritterAI, ScriptedAI, BossAI, WorldBossAI, boss_balinda, boss_drekthar::boss_drektharAI, boss_galvangar::boss_galvangarAI, boss_vanndar::boss_vanndarAI, boss_ambassador_flamelash, boss_anubshiah, boss_emperor_dagran_thaurissan, boss_eviscerator, boss_general_angerforge, boss_gorosh_the_dervish, boss_grizzle, boss_hedrum, boss_high_interrogator_gerstahn, boss_magmus, boss_moira_bronzebeard, boss_high_priestess_thaurissan, boss_okthor, boss_doomrel, boss_drakkisath, boss_gyth, boss_halycon, boss_highlord_omokk, boss_mor_grayhoof, boss_overlord_wyrmthalak, boss_pyroguard_emberseer, npc_blackhand_incarcerator, boss_rend_blackhand, npc_rookery_hatcher, boss_solakar_flamewreath, boss_the_beast, boss_urok_doomhowl, boss_warmaster_voone, boss_nefarian, boss_razorgore, boss_baron_geddon, boss_garr, boss_gehennas, boss_lucifron, boss_magmadar, boss_majordomo, boss_ragnaros, boss_shazzrah, boss_sulfuron, npc_flamewaker_priest, npc_lava_spawn, boss_mr_smite::boss_mr_smiteAI, boss_malchezaar, npc_netherspite_infernal, npc_malchezaar_axe, boss_servant_quarters, boss_shade_of_aran, boss_tenris_mirkblood, npc_kilrek, npc_demon_chain, boss_terestian_illhoof, boss_dorothee, npc_tito, boss_roar, boss_strawman, boss_tinhead, boss_crone, npc_cyclone, boss_bigbadwolf, boss_julianne, boss_romulo, npc_barnes::npc_barnesAI, npc_image_of_medivh::npc_image_of_medivhAI, boss_priestess_delrissa, boss_vexallus, npc_scarlet_courier::npc_scarlet_courierAI, npc_highlord_darion_mograine::npc_highlord_darion_mograineAI, boss_darkmaster_gandling::boss_darkmaster_gandlingAI, boss_kirtonos_the_herald::boss_kirtonos_the_heraldAI, boss_kormok, npc_scholomance_occultist::npc_scholomance_occultistAI, boss_baroness_anastari::boss_baroness_anastariAI, boss_jarien, boss_sothos, boss_kalec, boss_sathrovarr, boss_kiljaeden, boss_entropius, npc_sunblade_scout, npc_sunblade_arch_mage, npc_professor_phizzlethorpe::npc_professor_phizzlethorpeAI, boss_twilight_corrupter, npc_sentinel_leader, npc_sentinel_infiltrator, npc_king_magni_bronzebeard, npc_deathstalker_fearleia, npc_lady_sylvanas_windrunner::npc_lady_sylvanas_windrunnerAI, npc_highborne_lamenter::npc_highborne_lamenterAI, npc_the_scourge_cauldron::npc_the_scourge_cauldronAI, npc_tapoke_slim_jahn::npc_tapoke_slim_jahnAI, boss_akilzon, npc_akilzon_eagle, npc_janalai_hatcher, boss_zuljin, npc_forest_frog, npc_zulaman_hostage::npc_zulaman_hostageAI, npc_harrison_jones, npc_amanishi_tempest, npc_amanishi_scout, boss_arlokk::boss_arlokkAI, npc_zulian_prowler::npc_zulian_prowlerAI, boss_gahzranka, boss_grilek::boss_grilekAI, boss_hakkar::boss_hakkarAI, boss_hazzarah, npc_healing_ward, npc_shade_of_jindo, boss_mandokir::boss_mandokirAI, npc_vilebranch_speaker, npc_spawn_of_marli, boss_renataki::boss_renatakiAI, boss_thekal, npc_zealot_lorkhan, npc_zealot_zath, boss_venoxis, boss_wushoolay::boss_wushoolayAI, npc_dark_iron_attack_generator, npc_dark_iron_attack_mole_machine, npc_dark_iron_guzzler, npc_brewfest_super_brew_trigger, npc_coren_direbrew_sisters, npc_hallows_end_soh, boss_headless_horseman, boss_azuregos::boss_azuregosAI, npc_ancient_wisp, boss_archimonde, npc_hyjal_jaina::hyjalJainaAI, npc_hyjal_thrall::hyjalThrallAI, npc_hyjal_tyrande::hyjalTyrandeAI, npc_hyjal_ground_trash, npc_hyjal_gargoyle, npc_hyjal_frost_wyrm, boss_epoch::boss_epochAI, boss_infinite_corruptor::boss_infinite_corruptorAI, boss_mal_ganis::boss_mal_ganisAI, boss_meathook::boss_meathookAI, boss_salramm::boss_salrammAI, npc_arthas::npc_arthasAI, boss_captain_skarloc, boss_epoch_hunter, boss_lieutenant_drake, npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, boss_aeonus, boss_chrono_lord_deja, boss_temporus, boss_isalien, npc_onyxian_lair_guard, npc_anubisath_guardian, boss_rajaxx, npc_general_andorov, npc_obsidian_destroyer, boss_cthun, npc_eye_tentacle, npc_claw_tentacle, npc_giant_claw_tentacle, npc_giant_eye_tentacle, npc_dirt_mound, npc_sartura_royal_guard, boss_skeram, npc_anubisath_defender, npc_obsidian_eradicator, npc_anubisath_warder, npc_obsidian_nullifier, npc_ahnqiraji_critter, npc_muglash::npc_muglashAI, npc_draenei_survivor::npc_draenei_survivorAI, npc_injured_draenei::npc_injured_draeneiAI, npc_webbed_creature::npc_webbed_creatureAI, npc_murkdeep::npc_murkdeepAI, npc_tiger_matriarch::npc_tiger_matriarchAI, npc_omen::npc_omenAI, npc_shenthul::npc_shenthulAI, npc_thrall_warchief::npc_thrall_warchiefAI, npc_qiraj_war_spawn::npc_qiraj_war_spawnAI, npc_custodian_of_time::npc_custodian_of_timeAI, npc_taskmaster_fizzule::npc_taskmaster_fizzuleAI, npc_twiggy_flathead::npc_twiggy_flatheadAI, boss_amanitar, boss_elder_nadox, boss_volazj, boss_jedoga_shadowseeker, boss_taldaram, boss_anub_arak, boss_hadronox, boss_sartharion, npc_baltharus_the_warborn_clone::npc_baltharus_the_warborn_cloneAI, npc_onyx_flamecaller::npc_onyx_flamecallerAI, boss_twilight_halion::boss_twilight_halionAI, boss_eadric::boss_eadricAI, boss_paletress::boss_paletressAI, npc_argent_soldier::npc_argent_soldierAI, npc_black_knight_ghoul::npc_black_knight_ghoulAI, npc_toc5_grand_champion_minion::npc_toc5_grand_champion_minionAI, boss_grand_champion::boss_grand_championAI, boss_anubarak_trial::boss_anubarak_trialAI, npc_swarm_scarab::npc_swarm_scarabAI, boss_faction_championsAI, boss_jaraxxus::boss_jaraxxusAI, npc_snobold_vassal::npc_snobold_vassalAI, boss_gormok::boss_gormokAI, boss_jormungarAI, boss_icehowl::boss_icehowlAI, boss_twin_valkyrAI, npc_ghostly_priest, npc_phantom_mage, npc_shadowy_mercenary, npc_spectral_footman, npc_tortured_rifleman, boss_frostsworn_general, npc_hor_spiritual_reflection, npc_hor_risen_witch_doctor, npc_hor_lumbering_abomination, boss_garfrost::boss_garfrostAI, boss_ick::boss_ickAI, npc_pos_deathwhisper_necrolyte::npc_pos_deathwhisper_necrolyteAI, boss_drakkari_elemental::boss_drakkari_elementalAI, npc_stinky_icc::npc_stinky_iccAI, npc_high_overlord_saurfang_igb::npc_high_overlord_saurfang_igbAI, npc_muradin_bronzebeard_igb::npc_muradin_bronzebeard_igbAI, npc_gunship_boarding_leader::npc_gunship_boarding_leaderAI, npc_cult_fanatic::npc_cult_fanaticAI, npc_cult_adherent::npc_cult_adherentAI, npc_darnavan::npc_darnavanAI, boss_lord_marrowgar, npc_precious_icc::npc_precious_iccAI, npc_rimefang::npc_rimefangAI, boss_sister_svalna::boss_sister_svalnaAI, npc_argent_captainAI, npc_frostwing_vrykul::npc_frostwing_vrykulAI, npc_icc_skybreaker_hierophant::npc_icc_skybreaker_hierophantAI, npc_icc_skybreaker_marksman::npc_icc_skybreaker_marksmanAI, npc_icc_skybreaker_vicar::npc_icc_skybreaker_vicarAI, npc_icc_skybreaker_luminary::npc_icc_skybreaker_luminaryAI, npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI, npc_icc_spire_frostwyrm, npc_icc_nerubar_broodkeeper::npc_icc_nerubar_broodkeeperAI, boss_isle_of_conquest::boss_isle_of_conquestAI, npc_boss_gothik_minion::npc_boss_gothik_minionAI, npc_gothik_trigger::npc_gothik_triggerAI, boss_kelthuzad_minion::boss_kelthuzad_minionAI, npc_tesla::npc_teslaAI, boss_malygos, npc_nexus_lord, npc_crystalline_frayer, boss_drakos::boss_drakosAI, boss_eregos::boss_eregosAI, boss_urom::boss_uromAI, boss_varos::boss_varosAI, npc_centrifuge_construct::npc_centrifuge_constructAI, boss_bjarngrim, npc_stormforged_lieutenant, boss_ionar, boss_loken, boss_volkhan, boss_krystallus::boss_krystallusAI, boss_maiden_of_grief::boss_maiden_of_griefAI, boss_sjonnir::boss_sjonnirAI, boss_sjonnir_iron_sludge::boss_sjonnir_iron_sludgeAI, boss_sjonnir_malformed_ooze::boss_sjonnir_malformed_oozeAI, boss_algalon_the_observer, npc_auriaya_sanctum_sentry, npc_auriaya_feral_defender, boss_flame_leviathan, boss_freya, boss_freya_elder_stonebark, boss_freya_elder_brightleaf, boss_freya_elder_ironbranch, boss_freya_summons, boss_vezax, boss_hodir, boss_ignis, boss_kologarn, boss_mimiron, boss_thorim, boss_thorim_sif_blizzard, boss_thorim_start_npcs, boss_thorim_gauntlet_npcs, boss_thorim_runic_colossus, boss_thorim_ancient_rune_giant, boss_thorim_arena_npcs, boss_xt002, boss_yoggsaron_keeper, npc_ulduar_storm_tempered_keeper, boss_ingvar_the_plunderer, boss_keleseth, npc_dragonflayer_forge_master, boss_palehoof::boss_palehoofAI, npc_massive_jormungar::npc_massive_jormungarAI, npc_ferocious_rhino::npc_ferocious_rhinoAI, npc_ravenous_furbolg::npc_ravenous_furbolgAI, npc_frenzied_worgen::npc_frenzied_worgenAI, boss_skadi::boss_skadiAI, boss_svala::boss_svalaAI, boss_ymiron::boss_ymironAI, boss_archavon::boss_archavonAI, boss_emalon::boss_emalonAI, boss_koralon::boss_koralonAI, boss_toravon::boss_toravonAI, npc_frozen_orb::npc_frozen_orbAI, npc_imprisoned_beryl_sorcerer::npc_imprisoned_beryl_sorcererAI, npc_warmage_coldarra::npc_warmage_coldarraAI, npc_mageguard_dalaran::npc_mageguard_dalaranAI, npc_dalaran_mage::npc_dalaran_mageAI, npc_dalaran_warrior::npc_dalaran_warriorAI, npc_emily::npc_emilyAI, npc_wounded_skirmisher, npc_blessed_banner::npc_blessed_bannerAI, npc_frosthound, npc_oathbound_warder, npc_overlord_drakuru_betrayal, boss_exarch_maladaar, boss_shirrak_the_dead_watcher, boss_nexusprince_shaffar, npc_yor, boss_tavarok, boss_anzu, boss_darkweaver_syth, boss_talon_king_ikiss, boss_ambassador_hellmaw, boss_blackheart_the_inciter, boss_grandmaster_vorpil, npc_akama_illidan, npc_maiev_illidan, npc_flame_of_azzinoth, boss_illidari_council_memberAI, boss_essence_of_suffering::boss_essence_of_sufferingAI, boss_essence_of_desire::boss_essence_of_desireAI, boss_essence_of_anger::boss_essence_of_angerAI, npc_akama_shade, boss_doomlord_kazzak::boss_doomlordkazzakAI, boss_doomwalker, boss_mennu_the_betrayer, boss_quagmirran, boss_rokmar_the_crackler, boss_hydromancer_thespia, boss_mekgineer_steamrigger, boss_warlord_kalithresh, boss_ghazan, boss_hungarfen, boss_swamplord_muselek, boss_the_black_stalker, npc_underbat, boss_gruul, boss_high_king_maulgar, boss_olm_the_summoner, boss_kiggler_the_crazed, boss_blindeye_the_seer, boss_krosh_firehand, boss_broggok, boss_kelidan_the_breaker, boss_the_maker, boss_omor_the_unscarred, boss_nazan, boss_vazruden, boss_watchkeeper_gargolmar, npc_millhouse_manastorm::npc_millhouse_manastormAI, npc_warden_mellichar::npc_warden_mellicharAI, boss_dalliah_the_doomsayer, boss_harbinger_skyriss, boss_wrath_scryer_soccothrates, boss_zereketh_the_unbound, boss_commander_sarannis, boss_high_botanist_freywinn, boss_thorngrin_the_tender, boss_warp_splinter, advisor_baseAI, boss_gatewatcher_gyrokill, boss_gatewatcher_iron_hand, boss_mechano_lord_capacitus, boss_nethermancer_sepethrea, boss_pathaleon_the_calculator, npc_nether_drake::npc_nether_drakeAI, npc_daranelle::npc_daranelleAI, npc_wounded_blood_elf::npc_wounded_blood_elfAI, npc_maghar_captive::npc_maghar_captiveAI, npc_creditmarker_visit_with_ancestors::npc_creditmarker_visit_with_ancestorsAI, npc_kurenai_captive::npc_kurenai_captiveAI, npc_commander_dawnforge::npc_commander_dawnforgeAI, npc_dragonmaw_peon::npc_dragonmaw_peonAI, 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_isla_starmane::npc_isla_starmaneAI, npc_pet_hunter_snake_trap, npc_pet_shaman_earth_elemental, npc_pet_shaman_fire_elemental, npc_precious::npc_preciousAI, npc_chicken_cluck::npc_chicken_cluckAI, npc_dancing_flames::npc_dancing_flamesAI, 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_spring_rabbit::npc_spring_rabbitAI, npc_arcanite_dragonling, boss_ayamiss, npc_buru_egg, SmartAI, boss_thaddius_summon::boss_thaddius_summonAI, boss_the_lich_king::boss_the_lich_kingAI, CombatAI, boss_lord_valthalak, boss_quartermaster_zigris, boss_broodlord, boss_chromaggus, boss_ebonroc, boss_firemaw, boss_flamegor, boss_vaelastrasz, boss_curator, boss_maiden_of_virtue, boss_midnight, boss_moroes, boss_netherspite, boss_nightbane, boss_felblood_kaelthas, boss_priestess_lackey_commonAI, boss_kagani_nightstrike, boss_ellris_duskhallow, boss_eramas_brightblaze, boss_yazzai, boss_warlord_salaris, boss_garaxxas, boss_apoko, boss_zelfan, boss_selin_fireheart, boss_brutallus, boss_sacrolash, boss_alythess, boss_felmyst, boss_kalecgos, boss_muru, npc_rinji::npc_rinjiAI, npc_deathstalker_erland::npc_deathstalker_erlandAI, npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI, npc_marzon_silent_blade::npc_marzon_silent_bladeAI, boss_halazzi, boss_hexlord_malacrass, boss_alyson_antille, boss_janalai, boss_nalorakk, boss_jeklik, npc_batrider, boss_jindo, npc_ohgan::npc_ohganAI, boss_marli, npc_direbrew_antagonist, boss_anetheron, boss_azgalor, boss_kazrogal, boss_rage_winterchill, boss_onyxia, npc_belnistrasz::npc_belnistraszAI, boss_buru, boss_kurinnaxx, boss_moam, boss_ossirian, npc_hivezara_stinger, boss_kri, boss_vem, boss_yauj, boss_eye_of_cthun, boss_fankriss, boss_huhuran, boss_ouro, boss_sartura, boss_twinemperorsAI, boss_veknilash, boss_veklor, boss_viscidus, npc_anubisath_sentinel::aqsentinelAI, npc_vekniss_stinger, npc_magwin::npc_magwinAI, npc_prospector_remtravel::npc_prospector_remtravelAI, npc_aquementas::npc_aquementasAI, npc_gilthares::npc_giltharesAI, npc_hadronox_crusherPackAI, boss_krik_thir::boss_krik_thirAI, boss_baltharus_the_warborn::boss_baltharus_the_warbornAI, boss_general_zarithrian::boss_general_zarithrianAI, boss_halion::boss_halionAI, boss_saviana_ragefire::boss_saviana_ragefireAI, boss_dred::boss_dredAI, boss_novos, boss_tharon_ja::boss_tharon_jaAI, boss_trollgore::boss_trollgoreAI, boss_bronjahm, boss_devourer_of_souls, boss_falric, boss_marwyn, npc_living_mojo::npc_living_mojoAI, boss_eck, boss_gal_darah, boss_moorabi::boss_moorabiAI, boss_slad_ran::boss_slad_ranAI, boss_prince_keleseth_icc::boss_prince_kelesethAI, boss_prince_taldaram_icc::boss_prince_taldaramAI, boss_prince_valanar_icc::boss_prince_valanarAI, boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI, boss_deathbringer_saurfang::boss_deathbringer_saurfangAI, boss_festergut::boss_festergutAI, boss_lady_deathwhisper::boss_lady_deathwhisperAI, boss_professor_putricide::boss_professor_putricideAI, boss_rotface::boss_rotfaceAI, boss_sindragosa::boss_sindragosaAI, npc_sindragosa_trash::npc_sindragosa_trashAI, boss_anubrekhan, boss_faerlina::boss_faerlinaAI, boss_four_horsemen::boss_four_horsemenAI, boss_gluth::boss_gluthAI, boss_gothik::boss_gothikAI, boss_grobbulus::boss_grobbulusAI, boss_heigan, boss_kelthuzad::boss_kelthuzadAI, boss_loatheb::boss_loathebAI, boss_maexxna::boss_maexxnaAI, boss_noth::boss_nothAI, boss_patchwerk::boss_patchwerkAI, boss_razuvious::boss_razuviousAI, boss_razuvious_minion::boss_razuvious_minionAI, boss_sapphiron::boss_sapphironAI, boss_thaddius::boss_thaddiusAI, boss_anomalus, boss_commander_stoutbeard, boss_keristrasza, boss_magus_telestra, boss_ormorok, boss_steelbreaker, boss_runemaster_molgeim, boss_stormcaller_brundir, boss_auriaya, boss_razorscale, boss_skarvald_the_constructor, boss_dalronn_the_controller, boss_cyanigosa, boss_erekem, npc_erekem_guard, boss_ichoron, boss_lavanthor, boss_moragg, boss_xevozz, boss_zuramat, violet_hold_trashAI, npc_torturer_lecraft::npc_torturer_lecraftAI, npc_mrfloppy::npc_mrfloppyAI, npc_time_lost_proto_drake::npc_time_lost_proto_drakeAI, boss_pandemonius, boss_murmur, boss_gurtogg_bloodboil, boss_illidan_stormrage, boss_gathios_the_shatterer, boss_high_nethermancer_zerevor, boss_lady_malande, boss_veras_darkshadow, boss_mother_shahraz, boss_reliquary_of_souls::boss_reliquary_of_soulsAI, boss_supremus, boss_teron_gorefiend, boss_najentus, boss_fathomlord_karathress, boss_fathomguard_sharkkis, boss_fathomguard_tidalvess, boss_fathomguard_caribdis, boss_hydross_the_unstable, boss_lady_vashj, boss_the_lurker_below, boss_morogrim_tidewalker, boss_ahune, boss_magtheridon, boss_grand_warlock_nethekurse, boss_porung, boss_warbringer_omrogg, boss_warchief_kargath_bladefist, boss_alar, boss_high_astromancer_solarian, boss_void_reaver, npc_captain_saeed::npc_captain_saeedAI, boss_ysondre::boss_ysondreAI, boss_lethon::boss_lethonAI, boss_emeriss::boss_emerissAI, boss_taerar::boss_taerarAI, npc_artorius::npc_artoriusAI, npc_simone::npc_simoneAI, npc_nelson::npc_nelsonAI, and npc_franklin::npc_franklinAI.

136{}

Referenced by npc_batrider::JustEngagedWith(), and boss_taerar::boss_taerarAI::JustEngagedWith().

◆ JustEnteredCombat()

void CreatureAI::JustEnteredCombat ( Unit )
overridevirtual

Called when the unit enters combat.

Note
NOTE: Creature engage logic should NOT be here, but in JustEngagedWith, which happens once threat is established!)
Todo:
Never invoked right now. Preparation for Combat Threat refactor

Reimplemented from UnitAI.

Reimplemented in NullCreatureAI, npc_green_dragon_combat_trigger::npc_green_dragon_combat_triggerAI, PossessedAI, npc_risen_archmage::npc_risen_archmageAI, and npc_training_dummy.

280{
281 // Creatures without threat list use JustEnteredCombat to trigger engagement
282 if (!IsEngaged() && !me->CanHaveThreatList())
283 EngagementStart(who);
284}
bool IsEngaged() const
Check if creature is currently engaged in combat.
Definition CreatureAI.h:105
void EngagementStart(Unit *who)
Definition CreatureAI.cpp:286
bool CanHaveThreatList(bool skipAliveCheck=false) const
Definition Unit.cpp:11420

References Unit::CanHaveThreatList(), EngagementStart(), IsEngaged(), and me.

◆ JustExitedCombat()

void CreatureAI::JustExitedCombat ( )
overridevirtual

Called when the unit leaves combat.

Reimplemented from UnitAI.

Reimplemented in PossessedAI, npc_escortAI, SmartAI, npc_belnistrasz::npc_belnistraszAI, npc_green_dragon_combat_trigger::npc_green_dragon_combat_triggerAI, npc_maiev_illidan, and npc_pet_dk_ebon_gargoyle.

311{
312 // No-op: synchronous EnterEvadeMode cascades via MemberEvaded and frees
313 // refs held by upstream iterators (StopAttackFaction crash). EngagementOver
314 // here also resets scripted fights on brief combat gaps (Valithria).
315}

Referenced by SmartAI::JustExitedCombat(), npc_belnistrasz::npc_belnistraszAI::JustExitedCombat(), and boss_sister_svalna::boss_sister_svalnaAI::JustExitedCombat().

◆ JustReachedHome()

virtual void CreatureAI::JustReachedHome ( )
inlinevirtual

Reimplemented in BossAI, SmartAI, boss_victor_nefarius, boss_majordomo, boss_moroes, boss_nightbane, boss_dorothee, boss_roar, boss_strawman, boss_tinhead, boss_crone, boss_bigbadwolf, boss_julianne, boss_romulo, npc_scholomance_occultist::npc_scholomance_occultistAI, boss_arlokk::boss_arlokkAI, boss_headless_horseman, npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, boss_aeonus, npc_weegli_blastfuse::npc_weegli_blastfuseAI, boss_baltharus_the_warborn::boss_baltharus_the_warbornAI, boss_saviana_ragefire::boss_saviana_ragefireAI, boss_anubarak_trial::boss_anubarak_trialAI, boss_jaraxxus::boss_jaraxxusAI, boss_gormok::boss_gormokAI, boss_jormungarAI, boss_icehowl::boss_icehowlAI, boss_twin_valkyrAI, boss_bronjahm, boss_drakkari_colossus::boss_drakkari_colossusAI, boss_gal_darah, boss_prince_keleseth_icc::boss_prince_kelesethAI, boss_prince_taldaram_icc::boss_prince_taldaramAI, boss_prince_valanar_icc::boss_prince_valanarAI, boss_deathbringer_saurfang::boss_deathbringer_saurfangAI, boss_festergut::boss_festergutAI, boss_lord_marrowgar, boss_professor_putricide::boss_professor_putricideAI, boss_rotface::boss_rotfaceAI, npc_spinestalker::npc_spinestalkerAI, npc_rimefang::npc_rimefangAI, npc_tirion_fordring_tft::npc_tirion_fordringAI, boss_sister_svalna::boss_sister_svalnaAI, npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI, npc_icc_spire_frostwyrm, npc_icc_vengeful_fleshreaper::npc_icc_vengeful_fleshreaperAI, npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI, npc_icc_putricades_trap::npc_icc_putricades_trapAI, boss_kelthuzad_minion::boss_kelthuzad_minionAI, boss_algalon_the_observer, boss_steelbreaker, boss_runemaster_molgeim, boss_stormcaller_brundir, boss_flame_leviathan, boss_freya, boss_vezax, npc_ulduar_iron_construct, boss_ignis, boss_mimiron, boss_razorscale, boss_thorim, boss_xt002, boss_palehoof::boss_palehoofAI, npc_massive_jormungar::npc_massive_jormungarAI, npc_ferocious_rhino::npc_ferocious_rhinoAI, npc_ravenous_furbolg::npc_ravenous_furbolgAI, npc_frenzied_worgen::npc_frenzied_worgenAI, violet_hold_trashAI, npc_battle_at_valhalas::npc_battle_at_valhalasAI, npc_akama_illidan, boss_fathomlord_karathress, boss_hydross_the_unstable, boss_ghazan, boss_grand_warlock_nethekurse, boss_alar, npc_aeranas::npc_aeranasAI, npc_mature_netherwing_drake::npc_mature_netherwing_drakeAI, and npc_precious::npc_preciousAI.

202{}

Referenced by HomeMovementGenerator< Creature >::DoFinalize(), npc_spinestalker::npc_spinestalkerAI::JustReachedHome(), npc_rimefang::npc_rimefangAI::JustReachedHome(), npc_tirion_fordring_tft::npc_tirion_fordringAI::JustReachedHome(), and npc_icc_spire_frostwyrm::JustReachedHome().

◆ JustRespawned()

virtual void CreatureAI::JustRespawned ( )
inlinevirtual

◆ JustStartedThreateningMe()

virtual void CreatureAI::JustStartedThreateningMe ( Unit who)
inlinevirtual

Reimplemented in PossessedAI, and NullCreatureAI.

131{ if (!IsEngaged()) EngagementStart(who); }

References EngagementStart(), and IsEngaged().

Referenced by ThreatManager::ProcessAIUpdates().

◆ JustSummoned()

virtual void CreatureAI::JustSummoned ( Creature )
inlinevirtual

Reimplemented in ScriptedAI, npc_prospector_remtravel::npc_prospector_remtravelAI, boss_eydis::boss_eydisAI, boss_fjola::boss_fjolaAI, boss_ick::boss_ickAI, boss_drakos::boss_drakosAI, boss_varos::boss_varosAI, boss_exarch_maladaar, npc_toc_warlock::npc_toc_warlockAI, npc_toc_hunter::npc_toc_hunterAI, npc_toc_boomkin::npc_toc_boomkinAI, npc_highlord_darion_mograine::npc_highlord_darion_mograineAI, boss_darkmaster_gandling::boss_darkmaster_gandlingAI, boss_headless_horseman, boss_infinite_corruptor::boss_infinite_corruptorAI, boss_salramm::boss_salrammAI, npc_arthas::npc_arthasAI, boss_anubrekhan, boss_grobbulus::boss_grobbulusAI, boss_kelthuzad::boss_kelthuzadAI, boss_loatheb::boss_loathebAI, boss_maexxna::boss_maexxnaAI, boss_razuvious::boss_razuviousAI, boss_thaddius::boss_thaddiusAI, brann_bronzebeard::brann_bronzebeardAI, boss_auriaya, boss_flame_leviathan, npc_freya_ward, npc_mimirons_inferno, boss_freya, boss_kologarn, npc_xt002_heart, boss_yoggsaron_cloud, boss_yoggsaron, boss_yoggsaron_brain, boss_toravon::boss_toravonAI, npc_frozen_orb_stalker::npc_frozen_orb_stalkerAI, npc_frosthound, SmartAI, boss_muru, npc_eris_hevenfire::npc_eris_hevenfireAI, npc_daphne_stilwell::npc_daphne_stilwellAI, npc_coren_direbrew, npc_time_rift, boss_ossirian, npc_ouro_spawner, npc_dirt_mound, boss_skeram, npc_battle_at_valhalas::npc_battle_at_valhalasAI, boss_mekgineer_steamrigger, npc_warchief_portal, npc_archmage_landalock::npc_archmage_landalockAI, boss_dalronn_the_controller, boss_eregos::boss_eregosAI, boss_urom::boss_uromAI, boss_twin_valkyrAI, npc_hor_lich_king, npc_pos_leader::npc_pos_leaderAI, npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI, npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI, npc_ulduar_aerial_command_unit, npc_ulduar_storm_tempered_keeper, boss_ingvar_the_plunderer, BossAI, WorldBossAI, npc_grimstone, boss_gyth, boss_rend_blackhand, boss_victor_nefarius, boss_razorgore, boss_majordomo, boss_ragnaros, npc_echo_of_medivh, boss_curator, boss_attumen, boss_midnight, boss_nightbane, boss_priestess_delrissa, boss_priestess_lackey_commonAI, boss_vexallus, boss_kormok, boss_sacrolash, npc_demonic_vapor_trail, npc_kiljaeden_controller, boss_kiljaeden, npc_kalecgos_kj, npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI, npc_ravenclaw_apparition::npc_ravenclaw_apparitionAI, boss_halazzi, boss_janalai, npc_amanishi_tempest, boss_hazzarah, boss_jindo, boss_anetheron, boss_captain_skarloc, npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, npc_medivh_bm, boss_isalien, boss_onyxia, npc_hive_zara_larva, npc_general_andorov, boss_eye_of_cthun, boss_jedoga_shadowseeker, boss_taldaram, boss_hadronox, boss_sartharion, boss_sartharion_dragonAI, boss_sartharion_tenebron, boss_baltharus_the_warborn::boss_baltharus_the_warbornAI, boss_general_zarithrian::boss_general_zarithrianAI, boss_halion::boss_halionAI, boss_paletress::boss_paletressAI, boss_black_knight::boss_black_knightAI, boss_anubarak_trial::boss_anubarak_trialAI, boss_jaraxxus::boss_jaraxxusAI, boss_gormok::boss_gormokAI, boss_novos, boss_trollgore::boss_trollgoreAI, boss_bronjahm, boss_devourer_of_souls, boss_drakkari_colossus::boss_drakkari_colossusAI, boss_gal_darah, boss_prince_keleseth_icc::boss_prince_kelesethAI, boss_prince_taldaram_icc::boss_prince_taldaramAI, boss_prince_valanar_icc::boss_prince_valanarAI, boss_deathbringer_saurfang::boss_deathbringer_saurfangAI, boss_lady_deathwhisper::boss_lady_deathwhisperAI, boss_professor_putricide::boss_professor_putricideAI, boss_rotface::boss_rotfaceAI, npc_precious_icc::npc_precious_iccAI, boss_sindragosa::boss_sindragosaAI, boss_the_lich_king::boss_the_lich_kingAI, boss_valithria_dreamwalker::boss_valithria_dreamwalkerAI, npc_the_lich_king_controller::npc_the_lich_king_controllerAI, npc_risen_archmage::npc_risen_archmageAI, npc_gluttonous_abomination::npc_gluttonous_abominationAI, npc_frostwing_vrykul::npc_frostwing_vrykulAI, npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI, npc_icc_putricades_trap::npc_icc_putricades_trapAI, boss_gluth::boss_gluthAI, boss_gothik::boss_gothikAI, npc_gothik_trigger::npc_gothik_triggerAI, boss_noth::boss_nothAI, boss_malygos, boss_anomalus, boss_magus_telestra, boss_ormorok, boss_volkhan, boss_algalon_the_observer, npc_collapsing_star, npc_algalon_worm_hole, boss_yoggsaron_sara, boss_yoggsaron_keeper, boss_skadi::boss_skadiAI, boss_svala::boss_svalaAI, boss_emalon::boss_emalonAI, npc_q24545_lich_king::npc_q24545_lich_kingAI, npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI, npc_blessed_banner::npc_blessed_bannerAI, npc_overlord_drakuru_betrayal, boss_shirrak_the_dead_watcher, boss_nexusprince_shaffar, boss_grandmaster_vorpil, boss_gurtogg_bloodboil, boss_illidan_stormrage, npc_akama_illidan, npc_blade_of_azzinoth, npc_flame_of_azzinoth, boss_veras_darkshadow, boss_reliquary_of_souls::boss_reliquary_of_soulsAI, npc_akama_shade, npc_creature_generator_akama, boss_supremus, boss_teron_gorefiend, boss_fathomlord_karathress, boss_fathomguard_sharkkis, boss_fathomguard_tidalvess, boss_fathomguard_caribdis, boss_hydross_the_unstable, boss_lady_vashj, boss_morogrim_tidewalker, npc_ahune_bunny, boss_mennu_the_betrayer, boss_the_black_stalker, boss_olm_the_summoner, boss_omor_the_unscarred, boss_vazruden_the_herald, boss_warchief_kargath_bladefist, npc_warden_mellichar::npc_warden_mellicharAI, boss_harbinger_skyriss, boss_high_astromancer_solarian, boss_kaelthas, boss_mechano_lord_capacitus, boss_nethermancer_sepethrea, emerald_dragonAI, npc_nelson::npc_nelsonAI, npc_minion_spawner, npc_pallid_horror, boss_balinda, boss_vaelastrasz, boss_terestian_illhoof, npc_professor_phizzlethorpe::npc_professor_phizzlethorpeAI, npc_rinji::npc_rinjiAI, npc_deathstalker_fearleia, npc_lady_sylvanas_windrunner::npc_lady_sylvanas_windrunnerAI, npc_thrall_bfu::npc_thrall_bfuAI, npc_tapoke_slim_jahn::npc_tapoke_slim_jahnAI, boss_archimonde, npc_muglash::npc_muglashAI, npc_kaya_flathoof::npc_kaya_flathoofAI, npc_wizzlecrank_shredder::npc_wizzlecrank_shredderAI, npc_ame::npc_ameAI, boss_ichoron, boss_xevozz, boss_zuramat, npc_vh_teleportation_portal, npc_emily::npc_emilyAI, boss_broggok, npc_deaths_door_fell_cannon_target_bunny::npc_deaths_door_fell_cannon_target_bunnyAI, npc_wounded_blood_elf::npc_wounded_blood_elfAI, npc_maghar_captive::npc_maghar_captiveAI, npc_kurenai_captive::npc_kurenai_captiveAI, npc_commander_dawnforge::npc_commander_dawnforgeAI, npc_bessy::npc_bessyAI, npc_varian_wrynn::npc_varian_wrynnAI, boss_ayamiss, and npc_buru_egg.

152{}

Referenced by spell_hodir_flash_freeze_aura::HandleEffectPeriodic(), spell_putricide_mutated_transformation::HandleSummon(), TempSummon::InitSummon(), npc_claw_tentacle::npc_claw_tentacle(), npc_eye_tentacle::npc_eye_tentacle(), npc_giant_claw_tentacle::npc_giant_claw_tentacle(), and npc_giant_eye_tentacle::npc_giant_eye_tentacle().

◆ KilledUnit()

virtual void CreatureAI::KilledUnit ( Unit )
inlinevirtual

Reimplemented in PetAI, ScriptedAI, boss_emperor_dagran_thaurissan, boss_midnight, boss_malchezaar, boss_shade_of_aran, boss_roar, boss_strawman, boss_tinhead, boss_crone, boss_bigbadwolf, npc_risen_guardian::npc_risen_guardianAI, boss_zuljin, boss_headless_horseman, boss_archimonde, boss_epoch::boss_epochAI, boss_mal_ganis::boss_mal_ganisAI, boss_meathook::boss_meathookAI, boss_salramm::boss_salrammAI, boss_captain_skarloc, npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, boss_ossirian, boss_sartura, boss_skeram, boss_anub_arak, boss_krik_thir::boss_krik_thirAI, boss_baltharus_the_warborn::boss_baltharus_the_warbornAI, boss_general_zarithrian::boss_general_zarithrianAI, boss_saviana_ragefire::boss_saviana_ragefireAI, boss_faction_championsAI, boss_novos, boss_tharon_ja::boss_tharon_jaAI, boss_trollgore::boss_trollgoreAI, boss_gal_darah, boss_moorabi::boss_moorabiAI, boss_slad_ran::boss_slad_ranAI, boss_commander_stoutbeard, boss_keristrasza, boss_magus_telestra, boss_ormorok, boss_drakos::boss_drakosAI, boss_eregos::boss_eregosAI, boss_urom::boss_uromAI, boss_krystallus::boss_krystallusAI, boss_maiden_of_grief::boss_maiden_of_griefAI, boss_sjonnir::boss_sjonnirAI, boss_freya_elder_stonebark, boss_freya_elder_brightleaf, boss_freya_elder_ironbranch, boss_kologarn, boss_ingvar_the_plunderer, boss_skarvald_the_constructor, boss_dalronn_the_controller, boss_ymiron::boss_ymironAI, boss_tavarok, boss_gurtogg_bloodboil, boss_illidan_stormrage, boss_illidari_council_memberAI, boss_mother_shahraz, boss_essence_of_suffering::boss_essence_of_sufferingAI, boss_essence_of_desire::boss_essence_of_desireAI, boss_essence_of_anger::boss_essence_of_angerAI, boss_fathomlord_karathress, boss_hydross_the_unstable, boss_lady_vashj, boss_morogrim_tidewalker, boss_mennu_the_betrayer, boss_swamplord_muselek, boss_gruul, boss_high_king_maulgar, boss_kelidan_the_breaker, boss_omor_the_unscarred, boss_vazruden, boss_watchkeeper_gargolmar, boss_magtheridon, boss_grand_warlock_nethekurse, npc_millhouse_manastorm::npc_millhouse_manastormAI, boss_void_reaver, boss_sathrovarr, boss_sartharion_dragonAI, PossessedAI, SmartAI, boss_nefarian, boss_vaelastrasz, boss_majordomo, boss_ragnaros, boss_curator, boss_maiden_of_virtue, boss_attumen, boss_moroes, boss_tenris_mirkblood, boss_terestian_illhoof, boss_julianne, boss_romulo, boss_priestess_delrissa, boss_priestess_lackey_commonAI, boss_selin_fireheart, boss_vexallus, boss_brutallus, boss_sacrolash, boss_alythess, boss_felmyst, boss_kalecgos, boss_kiljaeden, boss_twilight_corrupter, boss_halazzi, boss_hexlord_malacrass, boss_mandokir::boss_mandokirAI, npc_ohgan::npc_ohganAI, boss_azuregos::boss_azuregosAI, boss_anetheron, boss_azgalor, boss_kazrogal, boss_rage_winterchill, boss_epoch_hunter, boss_lieutenant_drake, boss_aeonus, boss_chrono_lord_deja, boss_temporus, boss_buru, npc_general_andorov, boss_twinemperorsAI, npc_tiger_matriarch::npc_tiger_matriarchAI, boss_elder_nadox, boss_volazj, boss_taldaram, boss_hadronox, boss_sartharion, boss_halion::boss_halionAI, boss_twilight_halion::boss_twilight_halionAI, boss_black_knight::boss_black_knightAI, boss_devourer_of_souls, boss_prince_keleseth_icc::boss_prince_kelesethAI, boss_prince_taldaram_icc::boss_prince_taldaramAI, boss_prince_valanar_icc::boss_prince_valanarAI, boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI, boss_deathbringer_saurfang::boss_deathbringer_saurfangAI, boss_festergut::boss_festergutAI, boss_lady_deathwhisper::boss_lady_deathwhisperAI, boss_lord_marrowgar, boss_professor_putricide::boss_professor_putricideAI, boss_rotface::boss_rotfaceAI, boss_sindragosa::boss_sindragosaAI, boss_the_lich_king::boss_the_lich_kingAI, boss_sister_svalna::boss_sister_svalnaAI, npc_argent_captainAI, boss_anubrekhan, boss_malygos, boss_bjarngrim, boss_ionar, boss_loken, boss_volkhan, boss_algalon_the_observer, boss_auriaya, boss_freya, boss_ignis, boss_razorscale, boss_thorim, boss_xt002, boss_keleseth, boss_palehoof::boss_palehoofAI, boss_svala::boss_svalaAI, boss_cyanigosa, boss_erekem, boss_ichoron, boss_xevozz, boss_zuramat, boss_exarch_maladaar, boss_nexusprince_shaffar, boss_pandemonius, boss_darkweaver_syth, boss_talon_king_ikiss, boss_ambassador_hellmaw, boss_blackheart_the_inciter, boss_grandmaster_vorpil, npc_akama_illidan, boss_teron_gorefiend, boss_najentus, boss_doomlord_kazzak::boss_doomlordkazzakAI, boss_doomwalker, boss_hydromancer_thespia, boss_mekgineer_steamrigger, boss_warlord_kalithresh, boss_the_maker, boss_warbringer_omrogg, boss_warchief_kargath_bladefist, boss_dalliah_the_doomsayer, boss_harbinger_skyriss, boss_wrath_scryer_soccothrates, boss_zereketh_the_unbound, boss_commander_sarannis, boss_high_botanist_freywinn, boss_thorngrin_the_tender, boss_warp_splinter, boss_high_astromancer_solarian, boss_kaelthas, boss_gatewatcher_gyrokill, boss_gatewatcher_iron_hand, boss_mechano_lord_capacitus, boss_nethermancer_sepethrea, boss_pathaleon_the_calculator, npc_netherspite_infernal, boss_akilzon, npc_dark_iron_guzzler, boss_jedoga_shadowseeker, boss_eadric::boss_eadricAI, boss_paletress::boss_paletressAI, boss_anubarak_trial::boss_anubarak_trialAI, boss_twin_valkyrAI, boss_bronjahm, boss_falric, boss_marwyn, boss_garfrost::boss_garfrostAI, boss_ick::boss_ickAI, boss_tyrannus::boss_tyrannusAI, boss_faerlina::boss_faerlinaAI, boss_four_horsemen::boss_four_horsemenAI, boss_gluth::boss_gluthAI, boss_gothik::boss_gothikAI, npc_boss_gothik_minion::npc_boss_gothik_minionAI, boss_grobbulus::boss_grobbulusAI, boss_grobbulus_poison_cloud::boss_grobbulus_poison_cloudAI, boss_heigan, boss_kelthuzad::boss_kelthuzadAI, boss_kelthuzad_minion::boss_kelthuzad_minionAI, boss_loatheb::boss_loathebAI, boss_maexxna::boss_maexxnaAI, boss_noth::boss_nothAI, boss_patchwerk::boss_patchwerkAI, boss_razuvious::boss_razuviousAI, boss_razuvious_minion::boss_razuvious_minionAI, boss_sapphiron::boss_sapphironAI, boss_thaddius::boss_thaddiusAI, boss_thaddius_summon::boss_thaddius_summonAI, boss_steelbreaker, boss_runemaster_molgeim, boss_stormcaller_brundir, boss_flame_leviathan, boss_flame_leviathan_defense_turret, boss_vezax, boss_hodir, npc_ulduar_leviathan_mkii, npc_ulduar_vx001, npc_ulduar_aerial_command_unit, boss_yoggsaron_sara, boss_skadi::boss_skadiAI, npc_q24545_vegard::npc_q24545_vegardAI, emerald_dragonAI, and boss_emeriss::boss_emerissAI.

149{}

Referenced by Unit::Kill(), boss_halazzi::KilledUnit(), and boss_hexlord_malacrass::KilledUnit().

◆ MoveBackwardsChecks()

void CreatureAI::MoveBackwardsChecks ( )

optimization, disable backwards movement for NPC vs NPC combat

462{
463 Unit *victim = me->GetVictim();
464
466 return;
467
471 if (!sWorld->getBoolConfig(CONFIG_CREATURE_REPOSITION_AGAINST_NPCS) && !victim->IsPlayer() && !victim->IsPet())
472 {
473 return;
474 }
475
476 float moveDist = me->GetMeleeRange(victim) / 2;
477
478 me->GetMotionMaster()->MoveBackwards(victim, moveDist);
479}
@ MOVEMENTFLAG_ROOT
Definition UnitDefines.h:383
@ CONFIG_CREATURE_REPOSITION_AGAINST_NPCS
Definition WorldConfig.h:77
bool IsFreeToMove()
Definition Creature.cpp:957
void MoveBackwards(Unit *target, float dist)
Definition MotionMaster.cpp:371
bool IsPlayer() const
Definition Object.h:201
bool IsPet() const
Definition Unit.h:797
bool HasUnitMovementFlag(uint32 f) const
Definition Unit.h:774
Unit * GetVictim() const
Definition Unit.h:903
float GetMeleeRange(Unit const *target) const
Definition Unit.cpp:801
#define sWorld
Definition World.h:317

References CONFIG_CREATURE_REPOSITION_AGAINST_NPCS, Unit::GetMeleeRange(), Unit::GetMotionMaster(), Unit::GetVictim(), Unit::HasUnitMovementFlag(), Creature::IsFreeToMove(), Unit::IsPet(), Object::IsPlayer(), me, MotionMaster::MoveBackwards(), MOVEMENTFLAG_ROOT, and sWorld.

Referenced by Creature::Update().

◆ MoveCircleChecks()

void CreatureAI::MoveCircleChecks ( )

optimization, disable circling movement for NPC vs NPC combat

440{
441 Unit *victim = me->GetVictim();
442
443 if (
444 !victim ||
446 !me->IsWithinMeleeRange(victim) || me == victim->GetVictim()
447 )
448 {
449 return;
450 }
451
455 if (!sWorld->getBoolConfig(CONFIG_CREATURE_REPOSITION_AGAINST_NPCS) && !victim->IsPlayer() && !victim->IsPet())
456 return;
457
459}
void MoveCircleTarget(Unit *target)
Definition MotionMaster.cpp:424
bool IsWithinMeleeRange(Unit const *obj, float dist=0.f) const
Definition Unit.cpp:783

References CONFIG_CREATURE_REPOSITION_AGAINST_NPCS, Unit::GetMotionMaster(), Unit::GetVictim(), Unit::HasUnitMovementFlag(), Creature::IsFreeToMove(), Unit::IsPet(), Object::IsPlayer(), Unit::IsWithinMeleeRange(), me, MotionMaster::MoveCircleTarget(), MOVEMENTFLAG_ROOT, and sWorld.

Referenced by Creature::Update().

◆ MoveInLineOfSight()

void CreatureAI::MoveInLineOfSight ( Unit who)
protectedvirtual

Reimplemented in VehicleAI, PassiveAI, PossessedAI, NullCreatureAI, PetAI, ReactorAI, FollowerAI, npc_netherspite_infernal, npc_demon_chain, npc_akilzon_eagle, npc_janalai_hatcher, npc_dark_iron_attack_generator, npc_dark_iron_attack_mole_machine, npc_dark_iron_guzzler, npc_brewfest_super_brew_trigger, npc_hallows_end_soh, boss_headless_horseman, boss_headless_horseman_pumpkin, npc_pilgrims_bounty_chair, npc_taretha::npc_tarethaAI, npc_injured_draenei::npc_injured_draeneiAI, boss_jedoga_shadowseeker, boss_jaraxxus::boss_jaraxxusAI, npc_snobold_vassal::npc_snobold_vassalAI, boss_gormok::boss_gormokAI, boss_novos, npc_pos_leader::npc_pos_leaderAI, npc_pos_deathwhisper_necrolyte::npc_pos_deathwhisper_necrolyteAI, boss_drakkari_colossus::boss_drakkari_colossusAI, npc_ball_of_flame::npc_ball_of_flameAI, boss_deathbringer_saurfang::boss_deathbringer_saurfangAI, npc_vengeful_shade::npc_vengeful_shadeAI, boss_valithria_dreamwalker::boss_valithria_dreamwalkerAI, npc_green_dragon_combat_trigger::npc_green_dragon_combat_triggerAI, npc_the_lich_king_controller::npc_the_lich_king_controllerAI, npc_valithria_cloud::npc_valithria_cloudAI, boss_malygos, npc_scion_of_eternity, npc_hover_disk, npc_alexstrasza, boss_drakos::boss_drakosAI, npc_oculus_unstable_sphere::npc_oculus_unstable_sphereAI, boss_eregos::boss_eregosAI, boss_urom::boss_uromAI, boss_varos::boss_varosAI, npc_spark_of_ionar, boss_sjonnir_malformed_ooze::boss_sjonnir_malformed_oozeAI, npc_assembly_lightning, boss_flame_leviathan, npc_mimirons_inferno, boss_vezax, boss_hodir, npc_ulduar_hodir_priest, npc_ulduar_hodir_druid, npc_ulduar_hodir_shaman, npc_ulduar_hodir_mage, npc_ulduar_iron_construct, boss_ignis, boss_kologarn_arms, boss_mimiron, npc_ulduar_leviathan_mkii, npc_ulduar_vx001, npc_ulduar_aerial_command_unit, npc_ulduar_proximity_mine, npc_ulduar_emergency_fire_bot, boss_razorscale, boss_thorim_sif, boss_thorim_lightning_orb, boss_thorim_sif_blizzard, npc_xt002_heart, boss_yoggsaron_sara, boss_yoggsaron_cloud, boss_cyanigosa, boss_erekem, npc_erekem_guard, boss_ichoron, npc_ichor_globule, boss_lavanthor, boss_moragg, boss_xevozz, boss_zuramat, npc_azure_saboteur, npc_mrfloppy::npc_mrfloppyAI, npc_tournament_training_dummy::npc_tournament_training_dummyAI, npc_blessed_banner::npc_blessed_bannerAI, boss_illidari_council, npc_warden_mellichar::npc_warden_mellicharAI, boss_alar, npc_lord_illidan_stormrage::npc_lord_illidan_stormrageAI, npc_pet_hunter_snake_trap, npc_brew_bubble, boss_sartharion_dragonAI, TotemAI, npc_escortAI, SmartAI, boss_nightbane, npc_dkc1_gothik::npc_dkc1_gothikAI, npc_a_special_surprise::npc_a_special_surpriseAI, boss_muru, boss_twilight_corrupter, npc_grand_magister_rommath::npc_grand_magister_rommathAI, npc_the_scourge_cauldron::npc_the_scourge_cauldronAI, npc_andorhal_tower::npc_andorhal_towerAI, boss_nalorakk, npc_amanishi_lookout, npc_eagle_trash_aggro_trigger, npc_brewfest_keg_thrower, npc_brewfest_keg_reciver, npc_brewfest_bark_trigger, npc_coren_direbrew, npc_winterfin_playmate, npc_snowfall_glade_playmate, npc_the_biggest_tree, npc_high_oracle_soo_roo, npc_elder_kekek, npc_the_etymidian, npc_alexstraza_the_lifebinder, npc_cw_area_trigger::npc_cw_area_triggerAI, npc_grizzlemaw_cw_trigger::npc_grizzlemaw_cw_triggerAI, npc_love_in_air_supply_sentry, npc_love_in_air_snivel, npc_cos_stratholme_citizien::npc_cos_stratholme_citizienAI, boss_aeonus, boss_chrono_lord_deja, boss_temporus, npc_medivh_bm, boss_ossirian, npc_general_andorov, boss_eye_of_cthun, npc_ouro_spawner, npc_draenei_survivor::npc_draenei_survivorAI, npc_kerlonian::npc_kerlonianAI, npc_aged_dying_ancient_kodo, npc_custodian_of_time::npc_custodian_of_timeAI, npc_tooga::npc_toogaAI, npc_twiggy_flathead::npc_twiggy_flatheadAI, npc_ringo::npc_ringoAI, boss_anub_arak, npc_hadronox_crusherPackAI, boss_krik_thir::boss_krik_thirAI, npc_toc5_grand_champion_minion::npc_toc5_grand_champion_minionAI, boss_grand_champion::boss_grand_championAI, boss_anubarak_trial::boss_anubarak_trialAI, npc_living_mojo::npc_living_mojoAI, npc_blood_queen_lana_thel::npc_blood_queen_lana_thelAI, boss_lord_marrowgar, boss_professor_putricide::boss_professor_putricideAI, boss_sindragosa::boss_sindragosaAI, npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI, npc_icc_vengeful_fleshreaper::npc_icc_vengeful_fleshreaperAI, npc_icc_nerubar_broodkeeper::npc_icc_nerubar_broodkeeperAI, boss_anubrekhan, boss_faerlina::boss_faerlinaAI, boss_gluth::boss_gluthAI, boss_kelthuzad::boss_kelthuzadAI, boss_kelthuzad_minion::boss_kelthuzad_minionAI, boss_loken, boss_kologarn, npc_ulduar_expedition_commander::npc_ulduar_expedition_commanderAI, npc_ulduar_snow_mound, boss_palehoof::boss_palehoofAI, npc_massive_jormungar::npc_massive_jormungarAI, npc_ferocious_rhino::npc_ferocious_rhinoAI, npc_ravenous_furbolg::npc_ravenous_furbolgAI, npc_frenzied_worgen::npc_frenzied_worgenAI, violet_hold_trashAI, npc_khunok_the_behemoth::npc_khunok_the_behemothAI, npc_jenny, npc_mageguard_dalaran::npc_mageguard_dalaranAI, npc_future_you::npc_future_youAI, npc_black_knight_graveyard::npc_black_knight_graveyardAI, npc_guardian_pavilion::npc_guardian_pavilionAI, npc_jungle_punch_target::npc_jungle_punch_targetAI, npc_overlord_drakuru_betrayal, boss_exarch_maladaar, boss_nexusprince_shaffar, boss_talon_king_ikiss, boss_ambassador_hellmaw, boss_grandmaster_vorpil, boss_reliquary_of_souls::boss_reliquary_of_soulsAI, boss_doomwalker, boss_lady_vashj, boss_warlord_kalithresh, boss_watchkeeper_gargolmar, npc_shattered_hand_scout, boss_wrath_scryer_soccothrates, boss_thorngrin_the_tender, boss_kaelthas, npc_nether_drake::npc_nether_drakeAI, npc_daranelle::npc_daranelleAI, npc_ancestral_wolf::npc_ancestral_wolfAI, npc_creditmarker_visit_with_ancestors::npc_creditmarker_visit_with_ancestorsAI, npc_captain_saeed::npc_captain_saeedAI, and npc_air_force_bots::npc_air_force_botsAI.

181{
182 if (me->IsEngaged())
183 return;
184
185 // pussywizard: civilian, non-combat pet or any other NOT HOSTILE TO ANYONE (!)
187 if (me->GetCreatureType() == CREATURE_TYPE_NON_COMBAT_PET || // nothing more to do, return
188 !who->IsInCombat() || // if not in combat, nothing more to do
189 !me->IsWithinDist(who, ATTACK_DISTANCE, true, false, false)) // if in combat and in dist - neutral to all can actually assist other creatures
190 return;
191
193 AttackStart(who);
194}
#define ATTACK_DISTANCE
Definition ObjectDefines.h:25
@ CREATURE_TYPE_NON_COMBAT_PET
Definition SharedDefines.h:2633
@ REACT_AGGRESSIVE
Definition Unit.h:568
bool HasReactState(ReactStates state) const
Definition Creature.h:102
bool IsEngaged() const override
Definition Creature.cpp:2919
bool CanStartAttack(Unit const *u, bool force=false) const
Definition Creature.cpp:1900
bool IsMoveInLineOfSightDisabled()
Definition Creature.h:282
virtual void AttackStart(Unit *)
Definition UnitAI.cpp:28
uint32 GetCreatureType() const
Definition Unit.cpp:11920
bool IsInCombat() const
Definition Unit.h:935
bool IsWithinDist(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
Definition Object.cpp:1372

References ATTACK_DISTANCE, UnitAI::AttackStart(), Creature::CanStartAttack(), CREATURE_TYPE_NON_COMBAT_PET, Unit::GetCreatureType(), Creature::HasReactState(), Creature::IsEngaged(), Unit::IsInCombat(), Creature::IsMoveInLineOfSightDisabled(), WorldObject::IsWithinDist(), me, and REACT_AGGRESSIVE.

Referenced by boss_sartharion_dragonAI::MoveInLineOfSight(), boss_nightbane::MoveInLineOfSight(), npc_dkc1_gothik::npc_dkc1_gothikAI::MoveInLineOfSight(), boss_twilight_corrupter::MoveInLineOfSight(), boss_nalorakk::MoveInLineOfSight(), npc_cos_stratholme_citizien::npc_cos_stratholme_citizienAI::MoveInLineOfSight(), boss_aeonus::MoveInLineOfSight(), boss_chrono_lord_deja::MoveInLineOfSight(), boss_temporus::MoveInLineOfSight(), boss_ossirian::MoveInLineOfSight(), npc_general_andorov::MoveInLineOfSight(), npc_ouro_spawner::MoveInLineOfSight(), boss_anub_arak::MoveInLineOfSight(), npc_hadronox_crusherPackAI::MoveInLineOfSight(), npc_toc5_grand_champion_minion::npc_toc5_grand_champion_minionAI::MoveInLineOfSight(), boss_anubarak_trial::boss_anubarak_trialAI::MoveInLineOfSight(), npc_living_mojo::npc_living_mojoAI::MoveInLineOfSight(), boss_lord_marrowgar::MoveInLineOfSight(), boss_professor_putricide::boss_professor_putricideAI::MoveInLineOfSight(), boss_sindragosa::boss_sindragosaAI::MoveInLineOfSight(), npc_icc_vengeful_fleshreaper::npc_icc_vengeful_fleshreaperAI::MoveInLineOfSight(), npc_icc_nerubar_broodkeeper::npc_icc_nerubar_broodkeeperAI::MoveInLineOfSight(), boss_anubrekhan::MoveInLineOfSight(), boss_faerlina::boss_faerlinaAI::MoveInLineOfSight(), boss_gluth::boss_gluthAI::MoveInLineOfSight(), boss_kelthuzad_minion::boss_kelthuzad_minionAI::MoveInLineOfSight(), boss_loken::MoveInLineOfSight(), boss_kologarn::MoveInLineOfSight(), boss_palehoof::boss_palehoofAI::MoveInLineOfSight(), npc_massive_jormungar::npc_massive_jormungarAI::MoveInLineOfSight(), npc_ferocious_rhino::npc_ferocious_rhinoAI::MoveInLineOfSight(), npc_ravenous_furbolg::npc_ravenous_furbolgAI::MoveInLineOfSight(), npc_frenzied_worgen::npc_frenzied_worgenAI::MoveInLineOfSight(), violet_hold_trashAI::MoveInLineOfSight(), npc_khunok_the_behemoth::npc_khunok_the_behemothAI::MoveInLineOfSight(), npc_overlord_drakuru_betrayal::MoveInLineOfSight(), boss_exarch_maladaar::MoveInLineOfSight(), boss_talon_king_ikiss::MoveInLineOfSight(), boss_ambassador_hellmaw::MoveInLineOfSight(), boss_grandmaster_vorpil::MoveInLineOfSight(), boss_lady_vashj::MoveInLineOfSight(), boss_warlord_kalithresh::MoveInLineOfSight(), boss_watchkeeper_gargolmar::MoveInLineOfSight(), boss_thorngrin_the_tender::MoveInLineOfSight(), npc_nether_drake::npc_nether_drakeAI::MoveInLineOfSight(), npc_daranelle::npc_daranelleAI::MoveInLineOfSight(), and MoveInLineOfSight_Safe().

◆ MoveInLineOfSight_Safe()

void CreatureAI::MoveInLineOfSight_Safe ( Unit who)

== Reactions At =================================

170{
172 {
173 return;
174 }
178}
virtual void MoveInLineOfSight(Unit *)
Definition CreatureAI.cpp:180

References m_MoveInLineOfSight_locked, and MoveInLineOfSight().

Referenced by CreatureUnitRelocationWorker().

◆ MovementInform()

virtual void CreatureAI::MovementInform ( uint32  ,
uint32   
)
inlinevirtual

Reimplemented in FollowerAI, npc_tooga::npc_toogaAI, npc_earthen_ring_flamecaller, SmartAI, boss_hadronox, boss_algalon_the_observer, npc_brann_bronzebeard_algalon, npc_chesspiece, PetAI, npc_spirit_shade::npc_spirit_shadeAI, npc_forest_frog, npc_enslaved_netherwing_drake, CritterAI, boss_rend_blackhand, boss_ebonroc, boss_nefarian, boss_nightbane, boss_selin_fireheart, npc_koltira_deathweaver::npc_koltira_deathweaverAI, npc_scarlet_courier::npc_scarlet_courierAI, npc_acherus_necromancer::npc_acherus_necromancerAI, npc_gothik_the_harvester::npc_gothik_the_harvesterAI, boss_kirtonos_the_herald::boss_kirtonos_the_heraldAI, npc_sentinel_leader, npc_sentinel_infiltrator, npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI, boss_zuljin, npc_harrison_jones, npc_amanishi_lookout, boss_mandokir::boss_mandokirAI, boss_captain_skarloc, boss_onyxia, npc_belnistrasz::npc_belnistraszAI, boss_ayamiss, npc_hive_zara_larva, boss_bug_trio, npc_stillpine_capitive::npc_stillpine_capitiveAI, npc_troll_volunteer::npc_troll_volunteerAI, npc_twilight_volunteer, boss_taldaram, npc_hadronox_crusherPackAI, boss_eadric::boss_eadricAI, boss_paletress::boss_paletressAI, boss_grand_champion::boss_grand_championAI, npc_concentrated_ball::npc_concentrated_ballAI, npc_fos_leader_second::npc_fos_leader_secondAI, boss_garfrost::boss_garfrostAI, npc_pos_deathwhisper_necrolyte::npc_pos_deathwhisper_necrolyteAI, npc_pos_after_first_boss::npc_pos_after_first_bossAI, npc_pos_tyrannus_events::npc_pos_tyrannus_eventsAI, npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI, npc_pos_leader_second::npc_pos_leader_secondAI, boss_eck, npc_blood_queen_lana_thel::npc_blood_queen_lana_thelAI, boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI, boss_deathbringer_saurfang::boss_deathbringer_saurfangAI, npc_high_overlord_saurfang_icc::npc_high_overlord_saurfangAI, npc_muradin_bronzebeard_icc::npc_muradin_bronzebeard_iccAI, npc_darnavan::npc_darnavanAI, boss_lord_marrowgar, boss_professor_putricide::boss_professor_putricideAI, npc_tirion_fordring_tft::npc_tirion_fordringAI, npc_valkyr_shadowguard::npc_valkyr_shadowguardAI, boss_sister_svalna::boss_sister_svalnaAI, npc_icc_spire_frostwyrm, npc_icc_vengeful_fleshreaper::npc_icc_vengeful_fleshreaperAI, npc_icc_nerubar_broodkeeper::npc_icc_nerubar_broodkeeperAI, boss_four_horsemen::boss_four_horsemenAI, boss_razuvious::boss_razuviousAI, boss_sapphiron::boss_sapphironAI, boss_malygos, npc_hover_disk, npc_oculus_unstable_sphere::npc_oculus_unstable_sphereAI, npc_oculus_drake::npc_oculus_drakeAI, boss_volkhan, npc_ulduar_emergency_fire_bot, boss_razorscale, npc_enslaved_proto_drake, npc_preparations_for_war_vehicle, npc_wintergarde_gryphon, npc_commander_eligor_dawnbringer::npc_commander_eligor_dawnbringerAI, npc_frostbrood_skytalon::npc_frostbrood_skytalonAI, npc_vehicle_d16_propelled_delivery::npc_vehicle_d16_propelled_deliveryAI, npc_wild_wyrm, boss_illidan_stormrage, npc_akama_illidan, boss_essence_of_suffering::boss_essence_of_sufferingAI, boss_essence_of_desire::boss_essence_of_desireAI, boss_lady_vashj, boss_vazruden_the_herald, boss_nazan, boss_alar, npc_nether_drake::npc_nether_drakeAI, npc_fel_guard_hound::npc_fel_guard_houndAI, npc_mature_netherwing_drake::npc_mature_netherwing_drakeAI, npc_korkron_or_wildhammer, npc_pet_gen_plump_turkey, npc_pet_gen_toxic_wasteling, boss_mr_smite::boss_mr_smiteAI, boss_servant_quarters, npc_scarlet_ghoul::npc_scarlet_ghoulAI, npc_highlord_darion_mograine::npc_highlord_darion_mograineAI, boss_felmyst, npc_hallows_end_soh, boss_headless_horseman, boss_lieutenant_drake, npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, boss_saviana_ragefire::boss_saviana_ragefireAI, boss_sindragosa::boss_sindragosaAI, npc_spinestalker::npc_spinestalkerAI, npc_rimefang::npc_rimefangAI, npc_lk_spirit_bomb::npc_lk_spirit_bombAI, boss_sjonnir_malformed_ooze::boss_sjonnir_malformed_oozeAI, boss_stormcaller_brundir, npc_injured_7th_legion_soldier::npc_injured_7th_legion_soldierAI, boss_shade_of_akama, npc_akama_shade, npc_ashtongue_sorcerer, npc_shattered_hand_scout, boss_kaelthas, npc_pet_dk_ebon_gargoyle, boss_sartharion_dragonAI, boss_majordomo, npc_apothecary_genericAI, npc_chained_spirit, npc_omen::npc_omenAI, boss_jedoga_shadowseeker, gunship_npc_AI, npc_gunship_boarding_addAI, npc_gunship_mage::npc_gunship_mageAI, npc_gunship_gunner::npc_gunship_gunnerAI, npc_gunship_rocketeer::npc_gunship_rocketeerAI, boss_the_lich_king::boss_the_lich_kingAI, boss_freya, boss_ghazan, npc_burning_spirit, boss_kagani_nightstrike, npc_balance_of_light_and_shadow::npc_balance_of_light_and_shadowAI, npc_dark_iron_guzzler, npc_sergeant_bly::npc_sergeant_blyAI, npc_weegli_blastfuse::npc_weegli_blastfuseAI, npc_announcer_toc5::npc_announcer_toc5AI, npc_hor_lich_king, npc_hor_leader_second::npc_hor_leader_secondAI, npc_ball_of_flame::npc_ball_of_flameAI, npc_assembly_lightning, npc_hodirs_fury, npc_xt002_scrapbot, npc_xt002_boombot, boss_skadi_grauf::boss_skadi_graufAI, npc_iron_watcher::npc_iron_watcherAI, npc_freed_protodrake::npc_freed_protodrakeAI, npc_released_offspring_harkoa::npc_released_offspring_harkoaAI, boss_warchief_kargath_bladefist, boss_ymiron::boss_ymironAI, npc_marzon_silent_blade::npc_marzon_silent_bladeAI, boss_glob_of_viscidus, boss_icehowl::boss_icehowlAI, npc_oculus_drakegiver::npc_oculus_drakegiverAI, boss_flame_leviathan_safety_container, npc_dragonmaw_peon::npc_dragonmaw_peonAI, dragonmaw_race_npc, ScriptedAI, npc_escortAI, npc_akilzon_eagle, npc_janalai_hatcher, and npc_attracted_reef_bull::npc_attracted_reef_bullAI.

187{}

Referenced by RotateMovementGenerator::Finalize(), EffectMovementGenerator::Finalize(), FormationMovementGenerator::MovementInform(), and SplineHandler::operator()().

◆ OnAuraRemove()

virtual void CreatureAI::OnAuraRemove ( AuraApplication ,
AuraRemoveMode   
)
inlinevirtual

Reimplemented in boss_taldaram, boss_high_nethermancer_zerevor, and boss_loken.

268{ }

Referenced by Unit::_UnapplyAura().

◆ OnChannelFinished()

virtual void CreatureAI::OnChannelFinished ( SpellInfo const *  )
inlinevirtual

Reimplemented in BossAI, and boss_stormcaller_brundir.

177{}

Referenced by BossAI::OnChannelFinished().

◆ OnCharmed()

void CreatureAI::OnCharmed ( bool  apply)
overridevirtual

Called when unit is charmed.

Implements UnitAI.

Reimplemented in npc_vengeful_spirit, VehicleAI, SmartAI, npc_chesspiece, npc_toc5_player_vehicle::npc_toc5_player_vehicleAI, npc_pet_dk_risen_ally, npc_controller, NullCreatureAI, npc_valkyr_shadowguard::npc_valkyr_shadowguardAI, npc_strangulate_vehicle::npc_strangulate_vehicleAI, npc_assembly_lightning, npc_ulduar_arachnopod_destroyer, and npc_frosthound.

37{
38 if (!me->IsCharmed() && !me->LastCharmerGUID.IsEmpty())
39 {
41 {
42 if (Unit* lastCharmer = ObjectAccessor::GetUnit(*me, me->LastCharmerGUID))
43 me->EngageWithTarget(lastCharmer);
44 }
45
47
48 if (!me->IsInCombat())
50 }
51
52 // trigger AI switch
53 me->NeedChangeAI = true;
54 me->IsAIEnabled = false;
55}
@ REACT_PASSIVE
Definition Unit.h:566
bool IsEmpty() const
Definition ObjectGuid.h:161
void Clear()
Definition ObjectGuid.h:138
bool IsCharmed() const
Definition Unit.h:1310
bool NeedChangeAI
Definition Unit.h:2099
bool IsAIEnabled
Definition Unit.h:2098
ObjectGuid LastCharmerGUID
Definition Unit.h:2097
Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
Definition ObjectAccessor.cpp:199

References ObjectGuid::Clear(), Unit::EngageWithTarget(), EnterEvadeMode(), EVADE_REASON_NO_HOSTILES, ObjectAccessor::GetUnit(), Creature::HasReactState(), Unit::IsAIEnabled, Unit::IsCharmed(), ObjectGuid::IsEmpty(), Unit::IsInCombat(), Unit::LastCharmerGUID, me, Unit::NeedChangeAI, and REACT_PASSIVE.

Referenced by Unit::SetCharmedBy().

◆ OnOwnerCombatInteraction()

void CreatureAI::OnOwnerCombatInteraction ( Unit target)
197{
198 if (!target || !me->IsAlive())
199 return;
200
201 // Prevent guardian from disengaging from current target
202 if (me->GetVictim() && me->GetVictim()->IsAlive())
203 return;
204
205 if (!me->HasReactState(REACT_PASSIVE) && me->CanStartAttack(target, true))
206 AttackStart(target);
207}

References UnitAI::AttackStart(), Creature::CanStartAttack(), Unit::GetVictim(), Creature::HasReactState(), Unit::IsAlive(), me, and REACT_PASSIVE.

Referenced by OwnerAttacked(), and OwnerAttackedBy().

◆ OnSpellCast()

virtual void CreatureAI::OnSpellCast ( SpellInfo const *  )
inlinevirtual

Reimplemented in BossAI, and boss_stormcaller_brundir.

171{}

Referenced by BossAI::OnSpellCast().

◆ OnSpellClick()

virtual void CreatureAI::OnSpellClick ( Unit ,
bool &   
)
inlinevirtual

◆ OnSpellFailed()

virtual void CreatureAI::OnSpellFailed ( SpellInfo const *  )
inlinevirtual

◆ OnSpellStart()

virtual void CreatureAI::OnSpellStart ( SpellInfo const *  )
inlinevirtual
168{}

◆ OnTeleportUnreacheablePlayer()

virtual bool CreatureAI::OnTeleportUnreacheablePlayer ( Player )
inlinevirtual

Reimplemented in boss_mandokir::boss_mandokirAI.

265{ return false; }

Referenced by UnitAI::EvadeTimerExpired().

◆ OwnerAttacked()

virtual void CreatureAI::OwnerAttacked ( Unit target)
inlinevirtual

Reimplemented in PetAI, npc_pet_dk_army_of_the_dead, and npc_pet_gen_valkyr_guardian.

213{ OnOwnerCombatInteraction(target); }
void OnOwnerCombatInteraction(Unit *target)
Definition CreatureAI.cpp:196

References OnOwnerCombatInteraction().

◆ OwnerAttackedBy()

virtual void CreatureAI::OwnerAttackedBy ( Unit attacker)
inlinevirtual

◆ PassengerBoarded()

◆ PathEndReached()

◆ PetStopAttack()

virtual void CreatureAI::PetStopAttack ( )
inlinevirtual

Reimplemented in PetAI.

250{ }

Referenced by Pet::Update().

◆ ReceiveEmote()

◆ SetBoundary()

◆ SetGazeOn()

void CreatureAI::SetGazeOn ( Unit target)
protected
324{
325 if (me->IsValidAttackTarget(target))
326 {
327 AttackStart(target);
329 }
330}
void SetReactState(ReactStates state)
A creature can have 3 ReactStates : Agressive, Passive, Neutral.
Definition Creature.h:100
bool IsValidAttackTarget(Unit const *target, SpellInfo const *bySpell=nullptr) const
Definition Unit.cpp:10731

References UnitAI::AttackStart(), Unit::IsValidAttackTarget(), me, REACT_PASSIVE, and Creature::SetReactState().

Referenced by boss_gluth::boss_gluthAI::MoveInLineOfSight(), npc_pet_dk_ebon_gargoyle::MySelectNextTarget(), and npc_pet_dk_ebon_gargoyle::UpdateAI().

◆ SpellHit()

virtual void CreatureAI::SpellHit ( Unit ,
SpellInfo const *   
)
inlinevirtual

Reimplemented in TotemAI, ScriptedAI, npc_mistress_of_pain::npc_mistress_of_painAI, npc_kerlonian::npc_kerlonianAI, npc_ringo::npc_ringoAI, boss_pyroguard_emberseer, npc_netherspite_infernal, boss_terestian_illhoof, boss_strawman, boss_julianne, boss_halazzi, npc_harrison_jones, npc_crate_helper::npc_crate_helperAI, boss_buru, boss_ossirian, npc_omen::npc_omenAI, npc_taskmaster_fizzule::npc_taskmaster_fizzuleAI, boss_eadric::boss_eadricAI, npc_black_knight_ghoul::npc_black_knight_ghoulAI, boss_grand_champion::boss_grand_championAI, npc_frost_sphere::npc_frost_sphereAI, boss_prince_keleseth_icc::boss_prince_kelesethAI, boss_prince_taldaram_icc::boss_prince_taldaramAI, boss_prince_valanar_icc::boss_prince_valanarAI, npc_high_overlord_saurfang_icc::npc_high_overlord_saurfangAI, npc_muradin_bronzebeard_icc::npc_muradin_bronzebeard_iccAI, npc_saurfang_event::npc_saurfang_eventAI, npc_cult_fanatic::npc_cult_fanaticAI, npc_cult_adherent::npc_cult_adherentAI, npc_putricide_oozeAI, boss_the_lich_king::boss_the_lich_kingAI, npc_tirion_fordring_tft::npc_tirion_fordringAI, boss_valithria_dreamwalker::boss_valithria_dreamwalkerAI, npc_argent_captainAI, npc_gothik_trigger::npc_gothik_triggerAI, boss_malygos, boss_urom::boss_uromAI, boss_ionar, npc_ulduar_toasty_fire, npc_ulduar_hodir_priest, npc_ulduar_hodir_druid, npc_ulduar_hodir_shaman, npc_ulduar_hodir_mage, npc_ulduar_iron_construct, npc_ulduar_leviathan_mkii, npc_ulduar_vx001, npc_ulduar_aerial_command_unit, npc_ulduar_flames_spread, npc_ichor_globule, npc_preparations_for_war_vehicle, npc_wintergarde_gryphon, npc_frostbrood_skytalon::npc_frostbrood_skytalonAI, npc_maiev_illidan, boss_shade_of_akama, npc_infernal_attacker::npc_infernal_attackerAI, npc_shadowmoon_tuber_node::npc_shadowmoon_tuber_nodeAI, npc_artorius::npc_artoriusAI, npc_simone::npc_simoneAI, npc_nelson::npc_nelsonAI, npc_franklin::npc_franklinAI, npc_venomhide_hatchling::npc_venomhide_hatchlingAI, npc_necropolis, npc_necropolis_health, npc_necropolis_relay, boss_majordomo, boss_attumen, npc_balance_of_light_and_shadow::npc_balance_of_light_and_shadowAI, npc_dark_iron_guzzler, boss_headless_horseman, boss_headless_horseman_pumpkin, npc_pilgrims_bounty_chair, npc_pilgrims_bounty_plate, boss_veklor, npc_rabid_thistle_bear::npc_rabid_thistle_bearAI, boss_gal_darah, npc_isle_of_conquest_turret::npc_isle_of_conquest_turretAI, boss_steelbreaker, boss_runemaster_molgeim, boss_stormcaller_brundir, npc_pool_of_tar, boss_freya, boss_hodir, boss_mimiron, boss_thorim_pillar, boss_thorim_runic_colossus, boss_yoggsaron, npc_ulduar_keeper::npc_ulduar_keeperAI, npc_overlord_drakuru_betrayal, npc_earthen_ring_flamecaller, npc_pet_darting_hatchling, npc_necropolis_proxy, boss_tenris_mirkblood, npc_forest_frog, npc_zulian_prowler::npc_zulian_prowlerAI, npc_midsummer_ribbon_pole_target, npc_draenei_survivor::npc_draenei_survivorAI, npc_aged_dying_ancient_kodo, npc_troll_volunteer::npc_troll_volunteerAI, boss_jaraxxus::boss_jaraxxusAI, boss_sister_svalna::boss_sister_svalnaAI, boss_faerlina::boss_faerlinaAI, boss_razuvious::boss_razuviousAI, npc_living_constellation, boss_ignis, boss_razorscale, npc_sinkhole_kill_credit::npc_sinkhole_kill_creditAI, npc_torturer_lecraft::npc_torturer_lecraftAI, npc_wounded_skirmisher, npc_venture_co_straggler::npc_venture_co_stragglerAI, npc_tournament_training_dummy::npc_tournament_training_dummyAI, npc_brunnhildar_prisoner::npc_brunnhildar_prisonerAI, boss_kaelthas, advisor_baseAI, npc_deaths_door_fell_cannon_target_bunny::npc_deaths_door_fell_cannon_target_bunnyAI, npc_nether_drake::npc_nether_drakeAI, npc_enslaved_netherwing_drake, npc_dragonmaw_peon::npc_dragonmaw_peonAI, npc_injured_patient::npc_injured_patientAI, npc_garments_of_quests::npc_garments_of_questsAI, npc_necrotic_shard, PetAI, npc_dark_iron_attack_generator, npc_soh_fire_trigger, npc_hallows_end_train_fire, boss_headless_horseman_head, npc_midsummer_bonfire, npc_cos_stratholme_citizien::npc_cos_stratholme_citizienAI, boss_viscidus, boss_magus_telestra, boss_flame_leviathan, boss_thorim, boss_yoggsaron_immortal_guardian, npc_attracted_reef_bull::npc_attracted_reef_bullAI, npc_still_at_it_trigger::npc_still_at_it_triggerAI, npc_jungle_punch_target::npc_jungle_punch_targetAI, npc_iron_watcher::npc_iron_watcherAI, npc_wild_wyrm, npc_mature_netherwing_drake::npc_mature_netherwing_drakeAI, npc_imprisoned_beryl_sorcerer::npc_imprisoned_beryl_sorcererAI, and SmartAI.

162{}

Referenced by Spell::DoAllEffectOnTarget().

◆ SpellHitTarget()

virtual void CreatureAI::SpellHitTarget ( Unit ,
SpellInfo const *   
)
inlinevirtual

Reimplemented in ScriptedAI, boss_black_knight::boss_black_knightAI, boss_bronjahm, boss_garfrost::boss_garfrostAI, boss_deathbringer_saurfang::boss_deathbringer_saurfangAI, npc_vengeful_shade::npc_vengeful_shadeAI, npc_putricide_oozeAI, boss_the_lich_king::boss_the_lich_kingAI, npc_maghar_captive::npc_maghar_captiveAI, npc_kurenai_captive::npc_kurenai_captiveAI, npc_necropolis_relay, boss_quartermaster_zigris, npc_demonic_vapor_trail, boss_headless_horseman_head, boss_taldaram, boss_anub_arak, boss_moorabi::boss_moorabiAI, boss_volkhan, boss_stormcaller_brundir, boss_ymiron::boss_ymironAI, npc_necropolis_proxy, npc_necrotic_shard, npc_frostwing_vrykul::npc_frostwing_vrykulAI, boss_felmyst, boss_malchezaar, boss_onyxia, npc_nerubian_burrower::npc_nerubian_burrowerAI, boss_devourer_of_souls, npc_hor_lich_king, boss_ick::boss_ickAI, npc_pos_collapsing_icicle::npc_pos_collapsing_icicleAI, npc_pos_leader_second::npc_pos_leader_secondAI, boss_eck, boss_lady_deathwhisper::boss_lady_deathwhisperAI, boss_lord_marrowgar, boss_rotface::boss_rotfaceAI, boss_sindragosa::boss_sindragosaAI, boss_sister_svalna::boss_sister_svalnaAI, npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI, npc_oculus_drake::npc_oculus_drakeAI, boss_flame_leviathan, boss_freya, boss_vezax, boss_hodir, npc_ulduar_hodir_shaman, npc_ulduar_rocket_strike_trigger, boss_cyanigosa, npc_q24545_lich_king::npc_q24545_lich_kingAI, npc_simon_bunny::npc_simon_bunnyAI, boss_lethon::boss_lethonAI, SmartAI, npc_chesspiece, boss_darkmaster_gandling::boss_darkmaster_gandlingAI, boss_zuljin, boss_headless_horseman, npc_pilgrims_bounty_chair, boss_epoch::boss_epochAI, boss_ouro, npc_anubisath_sentinel::aqsentinelAI, boss_krik_thir::boss_krik_thirAI, boss_sapphiron::boss_sapphironAI, boss_thorim, npc_xt002_heart, boss_yoggsaron_sara, boss_yoggsaron_voice, boss_emalon::boss_emalonAI, npc_overlord_drakuru_betrayal, boss_shirrak_the_dead_watcher, npc_pet_gen_soul_trader_beacon, npc_pet_gen_fetch_ball, and npc_necropolis_health.

165{}

Referenced by Spell::DoAllEffectOnTarget().

◆ SummonedCreatureDespawn()

◆ SummonedCreatureDespawnAll()

virtual void CreatureAI::SummonedCreatureDespawnAll ( )
inlinevirtual

Reimplemented in BossAI.

157{}

Referenced by Creature::DespawnOnEvade().

◆ SummonedCreatureDies()

virtual void CreatureAI::SummonedCreatureDies ( Creature ,
Unit  
)
inlinevirtual

Reimplemented in boss_rend_blackhand, boss_priestess_delrissa, boss_moam, boss_sartharion_shadron, boss_sartharion_vesperon, npc_hor_lich_king, boss_loatheb::boss_loathebAI, boss_the_lurker_below, boss_taerar::boss_taerarAI, npc_nelson::npc_nelsonAI, npc_arthas::npc_arthasAI, boss_gluth::boss_gluthAI, boss_auriaya, boss_emalon::boss_emalonAI, boss_dorothee, npc_highlord_darion_mograine::npc_highlord_darion_mograineAI, npc_daphne_stilwell::npc_daphne_stilwellAI, npc_time_rift, boss_cthun, npc_cork_gizelton::npc_cork_gizeltonAI, npc_grimstone, boss_victor_nefarius, npc_drakonid_spawner, boss_majordomo, boss_ragnaros, npc_koltira_deathweaver::npc_koltira_deathweaverAI, boss_apothecary_hummel::boss_apothecary_hummelAI, npc_kiljaeden_controller, npc_varian_wrynn::npc_varian_wrynnAI, npc_thrall_bfu::npc_thrall_bfuAI, boss_hazzarah, npc_coren_direbrew, npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, boss_elder_nadox, boss_anub_arak, boss_krik_thir::boss_krik_thirAI, boss_novos, boss_drakkari_colossus::boss_drakkari_colossusAI, boss_the_lich_king::boss_the_lich_kingAI, npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI, npc_icc_putricades_trap::npc_icc_putricades_trapAI, boss_anubrekhan, boss_anzu, npc_akama_illidan, boss_reliquary_of_souls::boss_reliquary_of_soulsAI, npc_creature_generator_akama, boss_the_black_stalker, boss_vazruden_the_herald, boss_warchief_kargath_bladefist, npc_warden_mellichar::npc_warden_mellicharAI, boss_high_botanist_freywinn, SmartAI, boss_selin_fireheart, boss_vexallus, boss_viscidus, and boss_jedoga_shadowseeker.

156{}

Referenced by boss_selin_fireheart::SummonedCreatureDies().

◆ SummonedCreatureEvade()

virtual void CreatureAI::SummonedCreatureEvade ( Creature )
inlinevirtual

Reimplemented in npc_amanishi_tempest, boss_anub_arak, SmartAI, and boss_hadronox.

159{}

◆ Talk() [1/2]

void CreatureAI::Talk ( uint8  id,
Milliseconds  delay 
)
inline
96{ Talk(id, nullptr, delay); }
Talk
Definition hyjal.cpp:82

References Talk().

Referenced by Talk().

◆ Talk() [2/2]

void CreatureAI::Talk ( uint8  id,
WorldObject const *  target = nullptr,
Milliseconds  delay = 0ms 
)

Causes the creature to talk/say the text assigned to their entry in the creature_text database table.

Parameters
uint8id Text ID from creature_text.
WorldObjecttarget The target of the speech, in case it has elements such as $n, where the target's name will be referrenced.
Millisecondsdelay Delay until the creature says the text line. Creatures will talk immediately by default.
68{
69 if (delay > 0ms)
70 {
71 ObjectGuid targetGuid;
72
73 if (target)
74 targetGuid = target->GetGUID();
75
76 me->m_Events.AddEventAtOffset([this, id, targetGuid]()
77 {
78 // Target can be nullptr here, it will be handled inside the function.
79 sCreatureTextMgr->SendChat(me, id, ObjectAccessor::GetUnit(*me, targetGuid));
80 }, delay);
81 }
82 else
83 sCreatureTextMgr->SendChat(me, id, target);
84}
#define sCreatureTextMgr
Definition CreatureTextMgr.h:110
void AddEventAtOffset(BasicEvent *event, Milliseconds offset, uint8 eventGroup=0)
Definition EventProcessor.h:108
Definition ObjectGuid.h:118
EventProcessor m_Events
Definition Object.h:736

References EventProcessor::AddEventAtOffset(), Object::GetGUID(), ObjectAccessor::GetUnit(), WorldObject::m_Events, me, and sCreatureTextMgr.

Referenced by BattlegroundAV::ChangeMineOwner(), npc_still_at_it_trigger::npc_still_at_it_triggerAI::CheckAction(), npc_riggle_bassbait::npc_riggle_bassbaitAI::CheckTournamentState(), DelayedTalk::Execute(), UtherBatteredHiltEvent::Execute(), CaptainSurviveTalk::Execute(), ChargeRifts::Execute(), npc_anachronos_the_ancient::npc_anachronos_the_ancientAI::HandleAnimation(), spell_item_lil_xt::HandleDummy(), spell_q12096_q12092_dummy::HandleDummy(), spell_q12589_shoot_rjr::HandleDummy(), spell_herald_volzaj_insanity::HandleDummyEffect(), spell_chapter2_persuasive_strike::HandleHit(), spell_chapter5_return_to_capital::HandleHit(), spell_festergut_pungent_blight::HandleScript(), spell_rotface_large_ooze_combine::HandleScript(), spell_rotface_large_ooze_buff_combine::HandleScript(), spell_q13011_bear_flank_master::HandleScript(), spell_volazj_whisper::HandleScriptEffect(), spell_marrowgar_bone_spike_graveyard::HandleSpikes(), npc_mr_bigglesworth::JustDied(), boss_anubrekhan::JustSummoned(), npc_eris_hevenfire::npc_eris_hevenfireAI::JustSummoned(), boss_midnight::JustSummoned(), npc_maghar_captive::npc_maghar_captiveAI::JustSummoned(), npc_kurenai_captive::npc_kurenai_captiveAI::JustSummoned(), npc_love_in_air_supply_sentry::MoveInLineOfSight(), instance_blackrock_spire::OnCreatureCreate(), go_main_chambers_access_panel::OnGossipHello(), npc_hyjal_jaina::OnGossipSelect(), npc_hyjal_thrall::OnGossipSelect(), npc_ulduar_keeper::OnGossipSelect(), npc_vekjik::OnGossipSelect(), npc_adventurous_dwarf::OnGossipSelect(), npc_daphne_stilwell::OnQuestAccept(), npc_kerlonian::OnQuestAccept(), npc_gilthares::OnQuestAccept(), npc_lakota_windsong::OnQuestAccept(), npc_paoka_swiftmountain::OnQuestAccept(), npc_engineer_helice::OnQuestAccept(), npc_maghar_captive::OnQuestAccept(), npc_deathstalker_erland::OnQuestAccept(), npc_kaya_flathoof::OnQuestAccept(), npc_wizzlecrank_shredder::OnQuestAccept(), npc_ame::OnQuestAccept(), npc_ranshalla::OnQuestAccept(), npc_mootoo_the_younger::OnQuestAccept(), npc_bonker_togglevolt::OnQuestAccept(), npc_emily::OnQuestAccept(), npc_bessy::OnQuestAccept(), npc_riggle_bassbait::OnQuestReward(), spell_q12937_relief_for_the_fallen::OnRemove(), npc_jungle_punch_target::npc_jungle_punch_targetAI::proceedCwEvent(), SmartScript::ProcessAction(), instance_stratholme::instance_stratholme_InstanceMapScript::ProcessSlaughterEvent(), boss_yoggsaron_lich_king::Say(), boss_yoggsaron_llane::Say(), boss_yoggsaron_neltharion::Say(), spell_malygos_surge_of_power_warning_selector_25::SendThreeTargets(), npc_still_at_it_trigger::npc_still_at_it_triggerAI::Start(), boss_anubrekhan::SummonedCreatureDies(), npc_barnes::npc_barnesAI::Talk(), npc_love_in_air_snivel_real::Talk(), instance_stratholme::instance_stratholme_InstanceMapScript::Update(), go_blood_drenched_door::go_blood_drenched_doorAI::UpdateAI(), npc_kalecgos_kj::UpdateAI(), npc_winterfin_playmate::UpdateAI(), npc_snowfall_glade_playmate::UpdateAI(), npc_the_biggest_tree::UpdateAI(), npc_high_oracle_soo_roo::UpdateAI(), npc_elder_kekek::UpdateAI(), npc_the_etymidian::UpdateAI(), npc_alexstraza_the_lifebinder::UpdateAI(), npc_cos_stratholme_citizien::npc_cos_stratholme_citizienAI::UpdateAI(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::UpdateAI(), boss_prince_valanar_icc::boss_prince_valanarAI::UpdateAI(), npc_still_at_it_trigger::npc_still_at_it_triggerAI::UpdateAI(), npc_commander_dawnforge::npc_commander_dawnforgeAI::UpdateAI(), npc_tooga::npc_toogaAI::UpdateFollowerAI(), npc_ringo::npc_ringoAI::UpdateFollowerAI(), npc_ranger_lilatha::WaypointReached(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::WaypointReached(), npc_ancestral_wolf::npc_ancestral_wolfAI::WaypointReached(), and npc_bessy::npc_bessyAI::WaypointReached().

◆ TriggerAlert()

void CreatureAI::TriggerAlert ( Unit const *  who) const
211{
212 // If there's no target, or target isn't a player do nothing
213 if (!who || !who->IsPlayer())
214 return;
215 // If this unit isn't an NPC, is already distracted, is in combat, is confused, stunned or fleeing, do nothing
217 return;
218 // If the creature is immune to players, it should not be alerted by them
219 if (me->IsImmuneToPC())
220 return;
221 // Only alert for hostiles!
223 return;
224 // Only alert if target is within line of sight
225 if (!me->IsWithinLOSInMap(who))
226 return;
227 // Send alert sound (if any) for this creature
229 // Face the unit (stealthed player) and set distracted state for 5 seconds
230 me->SetFacingTo(me->GetAngle(who->GetPositionX(), who->GetPositionY()));
231 me->StopMoving();
233}
constexpr auto IN_MILLISECONDS
Definition Common.h:53
@ AI_REACTION_ALERT
Definition SharedDefines.h:3473
@ UNIT_STATE_DISTRACTED
Definition UnitDefines.h:185
@ UNIT_STATE_CONFUSED
Definition UnitDefines.h:184
@ UNIT_STATE_FLEEING
Definition UnitDefines.h:180
@ UNIT_STATE_STUNNED
Definition UnitDefines.h:176
bool _IsTargetAcceptable(Unit const *target) const
Definition Creature.cpp:2587
bool IsCivilian() const
Definition Creature.h:79
void SendAIReaction(AiReaction reactionType)
Definition Creature.cpp:2447
void MoveDistract(uint32 time)
Enable the target's distract movement. Doesn't work with UNIT_FLAG_DISABLE_MOVE and if the unit has M...
Definition MotionMaster.cpp:859
void SetFacingTo(float ori)
Definition Unit.cpp:16446
void StopMoving()
Definition Unit.cpp:13023
bool HasUnitState(const uint32 f) const
Definition Unit.h:736
bool IsHostileTo(Unit const *unit) const
Definition Unit.cpp:7253
bool IsImmuneToPC() const
Definition Unit.h:927
bool IsWithinLOSInMap(WorldObject const *obj, VMAP::ModelIgnoreFlags ignoreFlags=VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks=LINEOFSIGHT_ALL_CHECKS, Optional< float > collisionHeight={ }, Optional< float > combatReach={ }) const
Definition Object.cpp:1403
float GetAngle(const Position *pos) const
Definition Position.cpp:85

References Creature::_IsTargetAcceptable(), AI_REACTION_ALERT, Position::GetAngle(), Unit::GetMotionMaster(), Position::GetPositionX(), Position::GetPositionY(), Creature::HasReactState(), Unit::HasUnitState(), IN_MILLISECONDS, Creature::IsCivilian(), Object::IsCreature(), Creature::IsEngaged(), Unit::IsHostileTo(), Unit::IsImmuneToPC(), Object::IsPlayer(), WorldObject::IsWithinLOSInMap(), me, MotionMaster::MoveDistract(), REACT_PASSIVE, Creature::SendAIReaction(), Unit::SetFacingTo(), Unit::StopMoving(), UNIT_STATE_CONFUSED, UNIT_STATE_DISTRACTED, UNIT_STATE_FLEEING, and UNIT_STATE_STUNNED.

Referenced by CreatureUnitRelocationWorker().

◆ UpdateVictim()

bool CreatureAI::UpdateVictim ( )
protected
351{
352 if (!me->IsEngaged())
353 return false;
354
355 if (!me->IsAlive())
356 {
358 return false;
359 }
360
361 // Charmed creatures: the charmer controls target selection, don't interfere
362 if (me->IsCharmed())
363 return me->GetVictim() != nullptr;
364
366 {
367 if (Unit* victim = me->SelectVictim())
368 if (victim != me->GetVictim())
369 AttackStart(victim);
370 return me->GetVictim() != nullptr;
371 }
372 else if (!me->IsInCombat())
373 {
375 return false;
376 }
377 else if (me->GetVictim())
378 me->AttackStop();
379
380 return true;
381}
Unit * SelectVictim()
Definition Unit.cpp:11479
bool AttackStop()
Force the unit to stop attacking. This will clear UNIT_STATE_MELEE_ATTACKING, Interrupt current spell...
Definition Unit.cpp:7453

References UnitAI::AttackStart(), Unit::AttackStop(), EngagementOver(), EnterEvadeMode(), EVADE_REASON_NO_HOSTILES, Unit::GetVictim(), Creature::HasReactState(), Unit::IsAlive(), Unit::IsCharmed(), Creature::IsEngaged(), Unit::IsInCombat(), me, REACT_PASSIVE, and Creature::SelectVictim().

Referenced by SmartAI::JustReachedHome(), boss_four_horsemen::boss_four_horsemenAI::MovementInform(), npc_daphne_stilwell::npc_daphne_stilwellAI::Update(), npc_flameshocker::UpdateAI(), npc_pallid_horror::UpdateAI(), boss_sartharion_dragonAI::UpdateAI(), CombatAI::UpdateAI(), CasterAI::UpdateAI(), ArcherAI::UpdateAI(), TurretAI::UpdateAI(), ReactorAI::UpdateAI(), ScriptedAI::UpdateAI(), BossAI::UpdateAI(), WorldBossAI::UpdateAI(), SmartAI::UpdateAI(), npc_av_marshal_or_warmaster::npc_av_marshal_or_warmasterAI::UpdateAI(), boss_drekthar::boss_drektharAI::UpdateAI(), boss_galvangar::boss_galvangarAI::UpdateAI(), boss_vanndar::boss_vanndarAI::UpdateAI(), npc_phalanx::UpdateAI(), boss_ambassador_flamelash::UpdateAI(), boss_anubshiah::UpdateAI(), boss_emperor_dagran_thaurissan::UpdateAI(), boss_eviscerator::UpdateAI(), boss_general_angerforge::UpdateAI(), boss_gorosh_the_dervish::UpdateAI(), boss_grizzle::UpdateAI(), boss_hedrum::UpdateAI(), boss_high_interrogator_gerstahn::UpdateAI(), boss_magmus::UpdateAI(), boss_moira_bronzebeard::UpdateAI(), boss_high_priestess_thaurissan::UpdateAI(), boss_okthor::UpdateAI(), boss_doomrel::UpdateAI(), boss_drakkisath::UpdateAI(), boss_gyth::UpdateAI(), boss_halycon::UpdateAI(), boss_highlord_omokk::UpdateAI(), boss_lord_valthalak::UpdateAI(), boss_mor_grayhoof::UpdateAI(), boss_overlord_wyrmthalak::UpdateAI(), boss_pyroguard_emberseer::UpdateAI(), npc_blackhand_incarcerator::UpdateAI(), boss_quartermaster_zigris::UpdateAI(), boss_rend_blackhand::UpdateAI(), npc_rookery_hatcher::UpdateAI(), boss_solakar_flamewreath::UpdateAI(), boss_the_beast::UpdateAI(), boss_urok_doomhowl::UpdateAI(), npc_vaelastrasz_the_red::UpdateAI(), boss_broodlord::UpdateAI(), boss_chromaggus::UpdateAI(), boss_ebonroc::UpdateAI(), boss_firemaw::UpdateAI(), boss_flamegor::UpdateAI(), boss_victor_nefarius::UpdateAI(), boss_nefarian::UpdateAI(), boss_razorgore::UpdateAI(), boss_vaelastrasz::UpdateAI(), boss_garr::UpdateAI(), boss_golemagg::UpdateAI(), npc_core_rager::UpdateAI(), boss_majordomo::UpdateAI(), boss_ragnaros::UpdateAI(), npc_flamewaker_priest::UpdateAI(), npc_mc_core_hound::UpdateAI(), npc_lava_spawn::UpdateAI(), boss_mr_smite::boss_mr_smiteAI::UpdateAI(), boss_attumen::UpdateAI(), boss_midnight::UpdateAI(), boss_moroes::UpdateAI(), boss_netherspite::UpdateAI(), boss_nightbane::UpdateAI(), npc_malchezaar_axe::UpdateAI(), boss_servant_quarters::UpdateAI(), boss_shade_of_aran::UpdateAI(), npc_sanguine_spirit::UpdateAI(), npc_kilrek::UpdateAI(), npc_tito::UpdateAI(), boss_roar::UpdateAI(), boss_strawman::UpdateAI(), boss_tinhead::UpdateAI(), boss_crone::UpdateAI(), boss_bigbadwolf::UpdateAI(), boss_julianne::UpdateAI(), boss_romulo::UpdateAI(), boss_priestess_lackey_commonAI::UpdateAI(), npc_scarlet_ghoul::npc_scarlet_ghoulAI::UpdateAI(), npc_scarlet_courier::npc_scarlet_courierAI::UpdateAI(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI(), boss_darkmaster_gandling::boss_darkmaster_gandlingAI::UpdateAI(), boss_kirtonos_the_herald::boss_kirtonos_the_heraldAI::UpdateAI(), boss_kormok::UpdateAI(), npc_scholomance_occultist::npc_scholomance_occultistAI::UpdateAI(), boss_apothecary_hummel::boss_apothecary_hummelAI::UpdateAI(), npc_apothecary_baxter::UpdateAI(), boss_baroness_anastari::boss_baroness_anastariAI::UpdateAI(), boss_jarien::UpdateAI(), boss_sothos::UpdateAI(), boss_felmyst::UpdateAI(), boss_kalec::UpdateAI(), boss_sathrovarr::UpdateAI(), boss_entropius::UpdateAI(), npc_sunblade_arch_mage::UpdateAI(), boss_twilight_corrupter::UpdateAI(), npc_supervisor_raelen::UpdateAI(), npc_eastvale_peasent::UpdateAI(), npc_partygoer_pather::UpdateAI(), npc_partygoer::UpdateAI(), npc_sentinel_leader::UpdateAI(), npc_sentinel_infiltrator::UpdateAI(), npc_king_magni_bronzebeard::UpdateAI(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::UpdateAI(), npc_corporal_keeshan::npc_corporal_keeshanAI::UpdateAI(), npc_lady_sylvanas_windrunner::npc_lady_sylvanas_windrunnerAI::UpdateAI(), npc_varian_wrynn::npc_varian_wrynnAI::UpdateAI(), boss_blight_worm::boss_blight_wormAI::UpdateAI(), npc_thrall_bfu::npc_thrall_bfuAI::UpdateAI(), boss_alyson_antille::UpdateAI(), boss_arlokk::boss_arlokkAI::UpdateAI(), npc_zulian_prowler::npc_zulian_prowlerAI::UpdateAI(), boss_grilek::boss_grilekAI::UpdateAI(), boss_hakkar::boss_hakkarAI::UpdateAI(), boss_hazzarah::UpdateAI(), boss_jindo::UpdateAI(), boss_mandokir::boss_mandokirAI::UpdateAI(), npc_ohgan::npc_ohganAI::UpdateAI(), npc_vilebranch_speaker::UpdateAI(), npc_spawn_of_marli::UpdateAI(), boss_renataki::boss_renatakiAI::UpdateAI(), boss_thekal::UpdateAI(), npc_zealot_lorkhan::UpdateAI(), npc_zealot_zath::UpdateAI(), boss_wushoolay::boss_wushoolayAI::UpdateAI(), npc_coren_direbrew::UpdateAI(), npc_hallows_end_soh::UpdateAI(), boss_headless_horseman::UpdateAI(), boss_azuregos::boss_azuregosAI::UpdateAI(), npc_hyjal_jaina::hyjalJainaAI::UpdateAI(), npc_hyjal_thrall::hyjalThrallAI::UpdateAI(), npc_hyjal_tyrande::hyjalTyrandeAI::UpdateAI(), npc_hyjal_ground_trash::UpdateAI(), npc_hyjal_gargoyle::UpdateAI(), npc_hyjal_frost_wyrm::UpdateAI(), boss_epoch::boss_epochAI::UpdateAI(), boss_infinite_corruptor::boss_infinite_corruptorAI::UpdateAI(), boss_mal_ganis::boss_mal_ganisAI::UpdateAI(), boss_meathook::boss_meathookAI::UpdateAI(), boss_salramm::boss_salrammAI::UpdateAI(), boss_lieutenant_drake::UpdateAI(), boss_isalien::UpdateAI(), boss_onyxia::UpdateAI(), npc_onyxian_lair_guard::UpdateAI(), npc_belnistrasz::npc_belnistraszAI::UpdateAI(), boss_buru::UpdateAI(), boss_moam::UpdateAI(), boss_ossirian::UpdateAI(), npc_anubisath_guardian::UpdateAI(), npc_hivezara_stinger::UpdateAI(), npc_obsidian_destroyer::UpdateAI(), boss_bug_trio::UpdateAI(), boss_cthun::UpdateAI(), npc_eye_tentacle::UpdateAI(), npc_claw_tentacle::UpdateAI(), npc_giant_claw_tentacle::UpdateAI(), npc_giant_eye_tentacle::UpdateAI(), boss_huhuran::UpdateAI(), boss_ouro::UpdateAI(), npc_dirt_mound::UpdateAI(), boss_sartura::UpdateAI(), npc_sartura_royal_guard::UpdateAI(), boss_skeram::UpdateAI(), boss_twinemperorsAI::UpdateAI(), boss_viscidus::UpdateAI(), npc_anubisath_defender::UpdateAI(), npc_vekniss_stinger::UpdateAI(), npc_anubisath_warder::UpdateAI(), npc_death_ravager::npc_death_ravagerAI::UpdateAI(), npc_murkdeep::npc_murkdeepAI::UpdateAI(), npc_rabid_thistle_bear::npc_rabid_thistle_bearAI::UpdateAI(), npc_tharnarian::npc_tharnarianAI::UpdateAI(), npc_tiger_matriarch::npc_tiger_matriarchAI::UpdateAI(), npc_omen::npc_omenAI::UpdateAI(), npc_shenthul::npc_shenthulAI::UpdateAI(), npc_qiraj_war_spawn::npc_qiraj_war_spawnAI::UpdateAI(), npc_aquementas::npc_aquementasAI::UpdateAI(), npc_taskmaster_fizzule::npc_taskmaster_fizzuleAI::UpdateAI(), npc_plucky::npc_pluckyAI::UpdateAI(), npc_cairne_bloodhoof::npc_cairne_bloodhoofAI::UpdateAI(), npc_ame::npc_ameAI::UpdateAI(), npc_sergeant_bly::npc_sergeant_blyAI::UpdateAI(), npc_weegli_blastfuse::npc_weegli_blastfuseAI::UpdateAI(), npc_shadowpriest_sezziz::npc_shadowpriest_sezzizAI::UpdateAI(), boss_elder_nadox::UpdateAI(), npc_ahnkahar_nerubian::UpdateAI(), boss_volazj::UpdateAI(), boss_jedoga_shadowseeker::UpdateAI(), npc_twilight_volunteer::UpdateAI(), boss_anub_arak::UpdateAI(), boss_hadronox::UpdateAI(), npc_hadronox_crusherPackAI::UpdateAI(), boss_sartharion::UpdateAI(), npc_twilight_summon::UpdateAI(), boss_baltharus_the_warborn::boss_baltharus_the_warbornAI::UpdateAI(), npc_baltharus_the_warborn_clone::npc_baltharus_the_warborn_cloneAI::UpdateAI(), boss_general_zarithrian::boss_general_zarithrianAI::UpdateAI(), boss_halion::boss_halionAI::UpdateAI(), boss_twilight_halion::boss_twilight_halionAI::UpdateAI(), boss_saviana_ragefire::boss_saviana_ragefireAI::UpdateAI(), boss_eadric::boss_eadricAI::UpdateAI(), boss_paletress::boss_paletressAI::UpdateAI(), npc_memory::npc_memoryAI::UpdateAI(), npc_argent_soldier::npc_argent_soldierAI::UpdateAI(), boss_black_knight::boss_black_knightAI::UpdateAI(), npc_black_knight_ghoul::npc_black_knight_ghoulAI::UpdateAI(), npc_toc5_grand_champion_minion::npc_toc5_grand_champion_minionAI::UpdateAI(), boss_grand_champion::boss_grand_championAI::UpdateAI(), boss_anubarak_trial::boss_anubarak_trialAI::UpdateAI(), npc_swarm_scarab::npc_swarm_scarabAI::UpdateAI(), npc_nerubian_burrower::npc_nerubian_burrowerAI::UpdateAI(), npc_toc_druid::npc_toc_druidAI::UpdateAI(), npc_toc_shaman::npc_toc_shamanAI::UpdateAI(), npc_toc_paladin::npc_toc_paladinAI::UpdateAI(), npc_toc_priest::npc_toc_priestAI::UpdateAI(), npc_toc_shadow_priest::npc_toc_shadow_priestAI::UpdateAI(), npc_toc_warlock::npc_toc_warlockAI::UpdateAI(), npc_toc_mage::npc_toc_mageAI::UpdateAI(), npc_toc_hunter::npc_toc_hunterAI::UpdateAI(), npc_toc_boomkin::npc_toc_boomkinAI::UpdateAI(), npc_toc_warrior::npc_toc_warriorAI::UpdateAI(), npc_toc_dk::npc_toc_dkAI::UpdateAI(), npc_toc_rogue::npc_toc_rogueAI::UpdateAI(), npc_toc_enh_shaman::npc_toc_enh_shamanAI::UpdateAI(), npc_toc_retro_paladin::npc_toc_retro_paladinAI::UpdateAI(), npc_toc_pet_warlock::npc_toc_pet_warlockAI::UpdateAI(), npc_toc_pet_hunter::npc_toc_pet_hunterAI::UpdateAI(), boss_jaraxxus::boss_jaraxxusAI::UpdateAI(), npc_fel_infernal::npc_fel_infernalAI::UpdateAI(), npc_mistress_of_pain::npc_mistress_of_painAI::UpdateAI(), boss_gormok::boss_gormokAI::UpdateAI(), boss_jormungarAI::UpdateAI(), boss_icehowl::boss_icehowlAI::UpdateAI(), boss_twin_valkyrAI::UpdateAI(), boss_novos::UpdateAI(), boss_tharon_ja::boss_tharon_jaAI::UpdateAI(), boss_trollgore::boss_trollgoreAI::UpdateAI(), boss_bronjahm::UpdateAI(), boss_devourer_of_souls::UpdateAI(), npc_fos_leader::npc_fos_leaderAI::UpdateAI(), boss_falric::UpdateAI(), boss_marwyn::UpdateAI(), npc_ghostly_priest::UpdateAI(), npc_phantom_mage::UpdateAI(), npc_shadowy_mercenary::UpdateAI(), npc_spectral_footman::UpdateAI(), npc_tortured_rifleman::UpdateAI(), boss_frostsworn_general::UpdateAI(), npc_hor_spiritual_reflection::UpdateAI(), npc_hor_risen_witch_doctor::UpdateAI(), npc_hor_lumbering_abomination::UpdateAI(), boss_garfrost::boss_garfrostAI::UpdateAI(), boss_ick::boss_ickAI::UpdateAI(), boss_tyrannus::boss_tyrannusAI::UpdateAI(), npc_pos_leader::npc_pos_leaderAI::UpdateAI(), npc_pos_deathwhisper_necrolyte::npc_pos_deathwhisper_necrolyteAI::UpdateAI(), npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI::UpdateAI(), boss_drakkari_colossus::boss_drakkari_colossusAI::UpdateAI(), boss_drakkari_elemental::boss_drakkari_elementalAI::UpdateAI(), npc_living_mojo::npc_living_mojoAI::UpdateAI(), boss_moorabi::boss_moorabiAI::UpdateAI(), boss_prince_keleseth_icc::boss_prince_kelesethAI::UpdateAI(), boss_prince_taldaram_icc::boss_prince_taldaramAI::UpdateAI(), boss_prince_valanar_icc::boss_prince_valanarAI::UpdateAI(), npc_dark_nucleus::npc_dark_nucleusAI::UpdateAI(), boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI::UpdateAI(), boss_deathbringer_saurfang::boss_deathbringer_saurfangAI::UpdateAI(), boss_festergut::boss_festergutAI::UpdateAI(), npc_stinky_icc::npc_stinky_iccAI::UpdateAI(), npc_high_overlord_saurfang_igb::npc_high_overlord_saurfang_igbAI::UpdateAI(), npc_muradin_bronzebeard_igb::npc_muradin_bronzebeard_igbAI::UpdateAI(), npc_gunship_boarding_leader::npc_gunship_boarding_leaderAI::UpdateAI(), npc_gunship_boarding_add::npc_gunship_boarding_add_realAI::UpdateAI(), npc_gunship_gunner::npc_gunship_gunnerAI::UpdateAI(), boss_lady_deathwhisper::boss_lady_deathwhisperAI::UpdateAI(), npc_cult_fanatic::npc_cult_fanaticAI::UpdateAI(), npc_cult_adherent::npc_cult_adherentAI::UpdateAI(), npc_vengeful_shade::npc_vengeful_shadeAI::UpdateAI(), npc_darnavan::npc_darnavanAI::UpdateAI(), boss_lord_marrowgar::UpdateAI(), boss_professor_putricide::boss_professor_putricideAI::UpdateAI(), boss_rotface::boss_rotfaceAI::UpdateAI(), npc_little_ooze::npc_little_oozeAI::UpdateAI(), npc_big_ooze::npc_big_oozeAI::UpdateAI(), npc_precious_icc::npc_precious_iccAI::UpdateAI(), boss_sindragosa::boss_sindragosaAI::UpdateAI(), npc_spinestalker::npc_spinestalkerAI::UpdateAI(), npc_rimefang::npc_rimefangAI::UpdateAI(), npc_sindragosa_trash::npc_sindragosa_trashAI::UpdateAI(), boss_the_lich_king::boss_the_lich_kingAI::UpdateAI(), npc_tirion_fordring_tft::npc_tirion_fordringAI::UpdateAI(), npc_shambling_horror_icc::npc_shambling_horror_iccAI::UpdateAI(), npc_raging_spirit::npc_raging_spiritAI::UpdateAI(), npc_terenas_menethil::npc_terenas_menethilAI::UpdateAI(), npc_spirit_warden::npc_spirit_wardenAI::UpdateAI(), npc_risen_archmage::npc_risen_archmageAI::UpdateAI(), npc_blazing_skeleton::npc_blazing_skeletonAI::UpdateAI(), npc_blistering_zombie::npc_blistering_zombieAI::UpdateAI(), npc_gluttonous_abomination::npc_gluttonous_abominationAI::UpdateAI(), npc_rotting_frost_giant::npc_rotting_frost_giantAI::UpdateAI(), npc_crok_scourgebane::npc_crok_scourgebaneAI::UpdateAI(), boss_sister_svalna::boss_sister_svalnaAI::UpdateAI(), npc_captain_arnath::npc_captain_arnathAI::UpdateAI(), npc_captain_brandon::npc_captain_brandonAI::UpdateAI(), npc_captain_grondel::npc_captain_grondelAI::UpdateAI(), npc_captain_rupert::npc_captain_rupertAI::UpdateAI(), npc_frostwing_vrykul::npc_frostwing_vrykulAI::UpdateAI(), npc_icc_skybreaker_hierophant::npc_icc_skybreaker_hierophantAI::UpdateAI(), npc_icc_skybreaker_marksman::npc_icc_skybreaker_marksmanAI::UpdateAI(), npc_icc_skybreaker_vicar::npc_icc_skybreaker_vicarAI::UpdateAI(), npc_icc_skybreaker_luminary::npc_icc_skybreaker_luminaryAI::UpdateAI(), npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI::UpdateAI(), npc_icc_severed_essence::npc_icc_severed_essenceAI::UpdateAI(), npc_icc_spire_frostwyrm::UpdateAI(), npc_icc_vengeful_fleshreaper::npc_icc_vengeful_fleshreaperAI::UpdateAI(), npc_icc_nerubar_broodkeeper::npc_icc_nerubar_broodkeeperAI::UpdateAI(), boss_isle_of_conquest::boss_isle_of_conquestAI::UpdateAI(), boss_four_horsemen::boss_four_horsemenAI::UpdateAI(), boss_gothik::boss_gothikAI::UpdateAI(), boss_grobbulus::boss_grobbulusAI::UpdateAI(), boss_heigan::UpdateAI(), boss_kelthuzad::boss_kelthuzadAI::UpdateAI(), boss_kelthuzad_minion::boss_kelthuzad_minionAI::UpdateAI(), boss_loatheb::boss_loathebAI::UpdateAI(), boss_maexxna::boss_maexxnaAI::UpdateAI(), boss_noth::boss_nothAI::UpdateAI(), boss_patchwerk::boss_patchwerkAI::UpdateAI(), boss_razuvious_minion::boss_razuvious_minionAI::UpdateAI(), boss_sapphiron::boss_sapphironAI::UpdateAI(), boss_thaddius::boss_thaddiusAI::UpdateAI(), boss_thaddius_summon::boss_thaddius_summonAI::UpdateAI(), boss_malygos::UpdateAI(), npc_nexus_lord::UpdateAI(), boss_anomalus::UpdateAI(), boss_keristrasza::UpdateAI(), boss_magus_telestra::UpdateAI(), boss_ormorok::UpdateAI(), npc_crystalline_frayer::UpdateAI(), boss_drakos::boss_drakosAI::UpdateAI(), boss_eregos::boss_eregosAI::UpdateAI(), boss_urom::boss_uromAI::UpdateAI(), boss_varos::boss_varosAI::UpdateAI(), npc_stormforged_lieutenant::UpdateAI(), boss_ionar::UpdateAI(), boss_volkhan::UpdateAI(), npc_molten_golem::UpdateAI(), boss_krystallus::boss_krystallusAI::UpdateAI(), boss_maiden_of_grief::boss_maiden_of_griefAI::UpdateAI(), boss_sjonnir_iron_sludge::boss_sjonnir_iron_sludgeAI::UpdateAI(), boss_algalon_the_observer::UpdateAI(), npc_brann_bronzebeard_algalon::UpdateAI(), npc_living_constellation::UpdateAI(), boss_steelbreaker::UpdateAI(), boss_runemaster_molgeim::UpdateAI(), boss_stormcaller_brundir::UpdateAI(), npc_auriaya_sanctum_sentry::UpdateAI(), npc_auriaya_feral_defender::UpdateAI(), boss_flame_leviathan::UpdateAI(), boss_freya::UpdateAI(), boss_freya_elder_stonebark::UpdateAI(), boss_freya_elder_brightleaf::UpdateAI(), boss_freya_elder_ironbranch::UpdateAI(), boss_freya_summons::UpdateAI(), boss_vezax::UpdateAI(), npc_ulduar_saronite_animus::UpdateAI(), boss_hodir::UpdateAI(), npc_ulduar_iron_construct::UpdateAI(), boss_ignis::UpdateAI(), boss_kologarn::UpdateAI(), npc_ulduar_leviathan_mkii::UpdateAI(), npc_ulduar_aerial_command_unit::UpdateAI(), boss_razorscale::UpdateAI(), npc_ulduar_dark_rune_guardian::UpdateAI(), npc_ulduar_dark_rune_watcher::UpdateAI(), npc_ulduar_dark_rune_sentinel::UpdateAI(), boss_thorim::UpdateAI(), boss_thorim_start_npcs::UpdateAI(), boss_thorim_gauntlet_npcs::UpdateAI(), boss_thorim_runic_colossus::UpdateAI(), boss_thorim_ancient_rune_giant::UpdateAI(), boss_thorim_arena_npcs::UpdateAI(), boss_xt002::UpdateAI(), npc_xt002_pummeller::UpdateAI(), boss_yoggsaron_guardian_of_ys::UpdateAI(), boss_yoggsaron_immortal_guardian::UpdateAI(), npc_ulduar_storm_tempered_keeper::UpdateAI(), npc_ulduar_arachnopod_destroyer::UpdateAI(), boss_ingvar_the_plunderer::UpdateAI(), npc_vrykul_skeleton::UpdateAI(), boss_skarvald_the_constructor::UpdateAI(), boss_dalronn_the_controller::UpdateAI(), npc_enslaved_proto_drake::UpdateAI(), boss_palehoof::boss_palehoofAI::UpdateAI(), npc_massive_jormungar::npc_massive_jormungarAI::UpdateAI(), npc_ferocious_rhino::npc_ferocious_rhinoAI::UpdateAI(), npc_ravenous_furbolg::npc_ravenous_furbolgAI::UpdateAI(), npc_frenzied_worgen::npc_frenzied_worgenAI::UpdateAI(), boss_skadi::boss_skadiAI::UpdateAI(), boss_svala::boss_svalaAI::UpdateAI(), boss_ymiron::boss_ymironAI::UpdateAI(), boss_archavon::boss_archavonAI::UpdateAI(), boss_emalon::boss_emalonAI::UpdateAI(), boss_koralon::boss_koralonAI::UpdateAI(), boss_toravon::boss_toravonAI::UpdateAI(), npc_erekem_guard::UpdateAI(), boss_ichoron::UpdateAI(), npc_azure_invader::UpdateAI(), npc_azure_binder::UpdateAI(), npc_azure_mage_slayer::UpdateAI(), npc_azure_raider::UpdateAI(), npc_azure_stalker::UpdateAI(), npc_azure_spellbreaker::UpdateAI(), npc_azure_captain::UpdateAI(), npc_azure_sorceror::UpdateAI(), npc_lurgglbr::npc_lurgglbrAI::UpdateAI(), npc_imprisoned_beryl_sorcerer::npc_imprisoned_beryl_sorcererAI::UpdateAI(), npc_valiance_keep_cannoneer::npc_valiance_keep_cannoneerAI::UpdateAI(), npc_hidden_cultist::npc_hidden_cultistAI::UpdateAI(), npc_bloodmage_laurith::npc_bloodmage_laurithAI::UpdateAI(), npc_dalaran_mage::npc_dalaran_mageAI::UpdateAI(), npc_dalaran_warrior::npc_dalaran_warriorAI::UpdateAI(), npc_q24545_vegard::npc_q24545_vegardAI::UpdateAI(), npc_torturer_lecraft::npc_torturer_lecraftAI::UpdateAI(), npc_wounded_skirmisher::UpdateAI(), npc_venture_co_straggler::npc_venture_co_stragglerAI::UpdateAI(), npc_tournament_training_dummy::npc_tournament_training_dummyAI::UpdateAI(), npc_frosthound::UpdateAI(), npc_iron_watcher::npc_iron_watcherAI::UpdateAI(), npc_time_lost_proto_drake::npc_time_lost_proto_drakeAI::UpdateAI(), npc_wild_wyrm::UpdateAI(), npc_overlord_drakuru_betrayal::UpdateAI(), npc_crusade_recruit::npc_crusade_recruitAI::UpdateAI(), boss_exarch_maladaar::UpdateAI(), npc_stolen_soul::UpdateAI(), boss_shirrak_the_dead_watcher::UpdateAI(), boss_nexusprince_shaffar::UpdateAI(), npc_yor::UpdateAI(), boss_anzu::UpdateAI(), boss_ambassador_hellmaw::UpdateAI(), boss_blackheart_the_inciter::UpdateAI(), npc_akama_illidan::UpdateAI(), npc_maiev_illidan::UpdateAI(), npc_parasitic_shadowfiend::UpdateAI(), npc_flame_of_azzinoth::UpdateAI(), boss_gathios_the_shatterer::UpdateAI(), boss_high_nethermancer_zerevor::UpdateAI(), boss_lady_malande::UpdateAI(), boss_veras_darkshadow::UpdateAI(), boss_reliquary_of_souls::boss_reliquary_of_soulsAI::UpdateAI(), boss_essence_of_suffering::boss_essence_of_sufferingAI::UpdateAI(), boss_essence_of_desire::boss_essence_of_desireAI::UpdateAI(), boss_essence_of_anger::boss_essence_of_angerAI::UpdateAI(), npc_supremus_punch_invisible_stalker::UpdateAI(), boss_teron_gorefiend::UpdateAI(), boss_doomlord_kazzak::boss_doomlordkazzakAI::UpdateAI(), boss_doomwalker::UpdateAI(), boss_fathomguard_sharkkis::UpdateAI(), boss_fathomguard_tidalvess::UpdateAI(), boss_fathomguard_caribdis::UpdateAI(), boss_lady_vashj::UpdateAI(), boss_leotheras_the_blind::UpdateAI(), npc_inner_demon::UpdateAI(), boss_the_lurker_below::UpdateAI(), boss_ghazan::UpdateAI(), boss_hungarfen::UpdateAI(), boss_the_black_stalker::UpdateAI(), npc_underbat::UpdateAI(), boss_gruul::UpdateAI(), boss_high_king_maulgar::UpdateAI(), boss_olm_the_summoner::UpdateAI(), boss_kiggler_the_crazed::UpdateAI(), boss_blindeye_the_seer::UpdateAI(), boss_krosh_firehand::UpdateAI(), boss_omor_the_unscarred::UpdateAI(), boss_nazan::UpdateAI(), boss_vazruden::UpdateAI(), boss_watchkeeper_gargolmar::UpdateAI(), boss_magtheridon::UpdateAI(), boss_grand_warlock_nethekurse::UpdateAI(), boss_warbringer_omrogg::UpdateAI(), boss_warchief_kargath_bladefist::UpdateAI(), npc_millhouse_manastorm::npc_millhouse_manastormAI::UpdateAI(), boss_alar::UpdateAI(), advisor_baseAI::UpdateAI(), npc_raging_flames::UpdateAI(), npc_nether_drake::npc_nether_drakeAI::UpdateAI(), npc_aeranas::npc_aeranasAI::UpdateAI(), npc_fel_guard_hound::npc_fel_guard_houndAI::UpdateAI(), npc_maghar_captive::npc_maghar_captiveAI::UpdateAI(), npc_captain_saeed::npc_captain_saeedAI::UpdateAI(), npc_mature_netherwing_drake::npc_mature_netherwing_drakeAI::UpdateAI(), npc_enslaved_netherwing_drake::UpdateAI(), npc_dragonmaw_peon::npc_dragonmaw_peonAI::UpdateAI(), npc_illidari_spawn::npc_illidari_spawnAI::UpdateAI(), npc_unkor_the_ruthless::npc_unkor_the_ruthlessAI::UpdateAI(), npc_pet_gen_valkyr_guardian::UpdateAI(), npc_pet_hunter_snake_trap::UpdateAI(), npc_pet_shaman_earth_elemental::UpdateAI(), npc_pet_shaman_fire_elemental::UpdateAI(), emerald_dragonAI::UpdateAI(), npc_dream_fog::npc_dream_fogAI::UpdateAI(), guard_shattrath_scryer::guard_shattrath_scryerAI::UpdateAI(), guard_shattrath_aldor::guard_shattrath_aldorAI::UpdateAI(), npc_artorius::npc_artoriusAI::UpdateAI(), npc_simone::npc_simoneAI::UpdateAI(), npc_nelson::npc_nelsonAI::UpdateAI(), npc_franklin::npc_franklinAI::UpdateAI(), npc_chicken_cluck::npc_chicken_cluckAI::UpdateAI(), npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI::UpdateAI(), npc_tyrion_spybot::npc_tyrion_spybotAI::UpdateAI(), npc_warmage_coldarra::npc_warmage_coldarraAI::UpdateAI(), AggressorAI::UpdateAI(), npc_dark_fiend::UpdateAI(), npc_lor_themar_theron::UpdateAI(), npc_marzon_silent_blade::npc_marzon_silent_bladeAI::UpdateAI(), npc_king_varian_wrynn::UpdateAI(), npc_zuljin_vortex::UpdateAI(), npc_batrider::UpdateAI(), npc_prophet_velen::UpdateAI(), npc_tyrande_whisperwind::UpdateAI(), npc_hor_raging_ghoul::UpdateAI(), npc_gunship_rocketeer::npc_gunship_rocketeerAI::UpdateAI(), npc_suppresser::npc_suppresserAI::UpdateAI(), npc_centrifuge_construct::npc_centrifuge_constructAI::UpdateAI(), boss_sjonnir_dwarf::boss_sjonnir_dwarfAI::UpdateAI(), npc_xt002_life_spark::UpdateAI(), boss_yoggsaron_crusher_tentacle::UpdateAI(), npc_future_you::npc_future_youAI::UpdateAI(), npc_mrfloppy::npc_mrfloppyAI::UpdateAI(), npc_bushwhacker::npc_bushwhackerAI::UpdateAI(), npc_infernal_attacker::npc_infernal_attackerAI::UpdateAI(), npc_pet_dk_army_of_the_dead::UpdateAI(), npc_precious::npc_preciousAI::UpdateAI(), npc_escortAI::UpdateEscortAI(), npc_rinji::npc_rinjiAI::UpdateEscortAI(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::UpdateEscortAI(), npc_general_andorov::UpdateEscortAI(), npc_cork_gizelton::npc_cork_gizeltonAI::UpdateEscortAI(), npc_wizzlecrank_shredder::npc_wizzlecrank_shredderAI::UpdateEscortAI(), npc_onyx_flamecaller::npc_onyx_flamecallerAI::UpdateEscortAI(), boss_bjarngrim::UpdateEscortAI(), npc_apothecary_hanes::npc_Apothecary_HanesAI::UpdateEscortAI(), npc_kurenai_captive::npc_kurenai_captiveAI::UpdateEscortAI(), npc_isla_starmane::npc_isla_starmaneAI::UpdateEscortAI(), npc_bonker_togglevolt::npc_bonker_togglevoltAI::UpdateEscortAI(), npc_kerlonian::npc_kerlonianAI::UpdateFollowerAI(), npc_tooga::npc_toogaAI::UpdateFollowerAI(), npc_ringo::npc_ringoAI::UpdateFollowerAI(), and FollowerAI::UpdateFollowerAI().

◆ UpdateVictimWithGaze()

bool CreatureAI::UpdateVictimWithGaze ( )
protected
333{
334 if (!me->IsEngaged())
335 return false;
336
338 {
339 if (me->GetVictim())
340 return true;
341 else
343 }
344
345 if (Unit* victim = me->SelectVictim())
346 AttackStart(victim);
347 return me->GetVictim();
348}

References UnitAI::AttackStart(), Unit::GetVictim(), Creature::HasReactState(), Creature::IsEngaged(), me, REACT_AGGRESSIVE, REACT_PASSIVE, Creature::SelectVictim(), and Creature::SetReactState().

Referenced by boss_gluth::boss_gluthAI::UpdateAI(), and npc_pet_dk_ebon_gargoyle::UpdateAI().

◆ VisualizeBoundary()

int32 CreatureAI::VisualizeBoundary ( uint32  duration,
Unit owner = nullptr,
bool  fill = false,
bool  checkZ = false 
) const
482{
483 static constexpr float BOUNDARY_STEP = 5.0f;
484 static constexpr uint32 BOUNDARY_VISUALIZE_CREATURE = 21659; // Floaty Flavor Eye
485 static constexpr float BOUNDARY_VISUALIZE_CREATURE_SCALE = 0.25f;
486 static constexpr uint32 BOUNDARY_MAX_SPAWNS = 8000;
487 static constexpr float BOUNDARY_MAX_DISTANCE = MAX_SEARCHER_DISTANCE;
488
489 float boundaryStep = fill && checkZ ? BOUNDARY_STEP * 2 : BOUNDARY_STEP;
490
491 Position const boundaryDirections[6] = {
492 {boundaryStep, 0, 0 },
493 {-boundaryStep, 0, 0 },
494 {0, boundaryStep, 0 },
495 {0, -boundaryStep, 0 },
496 {0, 0, boundaryStep },
497 {0, 0, -boundaryStep}
498 };
499
500 if (!owner)
501 return -1;
502
503 if (!_boundary || _boundary->empty())
505
506 Position startPosition = owner->GetPosition();
507 if (!IsInBoundary(&startPosition)) // fall back to creature position
508 {
509 startPosition = me->GetPosition();
510 if (!IsInBoundary(&startPosition)) // fall back to creature home position
511 {
512 startPosition = me->GetHomePosition();
513 if (!IsInBoundary(&startPosition))
515 }
516 }
517
518 // Helper to spawn visualization creature
519 auto spawnVisualizationCreature = [owner, duration, checkZ](Position const& pos)
520 {
521 if (TempSummon* summon =
522 owner->SummonCreature(BOUNDARY_VISUALIZE_CREATURE, pos, TEMPSUMMON_TIMED_DESPAWN, duration))
523 {
524 summon->SetObjectScale(BOUNDARY_VISUALIZE_CREATURE_SCALE);
525 summon->SetUnitFlag(UNIT_FLAG_STUNNED);
526 summon->SetImmuneToAll(true);
527 summon->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE_2);
528 if (!checkZ)
529 summon->SetDisableGravity(false);
530 }
531 };
532
533 struct PositionHash
534 {
535 std::size_t operator()(Position const& pos) const
536 {
537 // Convert to fixed precision coordinates.
538 // We lose precision here, but we don't care about the exact position
539 int32 x = int32(pos.m_positionX);
540 int32 y = int32(pos.m_positionY);
541 int32 z = int32(pos.m_positionZ);
542
543 return std::hash<int32_t>()(x) ^ std::hash<int32_t>()(y) ^ std::hash<int32_t>()(z);
544 }
545 };
546
547 std::unordered_set<Position, PositionHash> visited;
548 std::queue<Position> queue;
549 queue.push(startPosition);
550 visited.insert(startPosition);
551 uint8 maxDirections = checkZ ? 6 : 4;
552 uint32 spawns = 0;
553
554 while (!queue.empty())
555 {
556 Position currentPosition = queue.front();
557 queue.pop();
558
559 for (uint8 i = 0; i < maxDirections; ++i)
560 {
561 Position const& direction = boundaryDirections[i];
562 Position nextPosition = currentPosition;
563 nextPosition.RelocateOffset(direction);
564
565 if (startPosition.GetExactDist(&nextPosition) > BOUNDARY_MAX_DISTANCE)
566 break;
567
568 if (visited.find(nextPosition) != visited.end())
569 continue; // already visited
570
571 visited.insert(nextPosition);
572
573 bool isInBoundary = IsInBoundary(&nextPosition);
574
575 if ((isInBoundary && fill) || !isInBoundary)
576 {
577 spawnVisualizationCreature(currentPosition);
578 ++spawns;
579 if (spawns > BOUNDARY_MAX_SPAWNS)
581 }
582
583 if (isInBoundary)
584 queue.push(nextPosition); // continue visiting
585 }
586 }
587 return 0;
588}
std::int32_t int32
Definition Define.h:103
std::uint8_t uint8
Definition Define.h:109
std::uint32_t uint32
Definition Define.h:107
@ LANG_CREATURE_MOVEMENT_MAYBE_UNBOUNDED
Definition Language.h:1387
@ LANG_CREATURE_MOVEMENT_NOT_BOUNDED
Definition Language.h:1386
@ LANG_CREATURE_NO_INTERIOR_POINT_FOUND
Definition Language.h:1385
#define MAX_SEARCHER_DISTANCE
Definition ObjectDefines.h:32
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:51
@ UNIT_FLAG_STUNNED
Definition UnitDefines.h:275
@ UNIT_FLAG_NON_ATTACKABLE_2
Definition UnitDefines.h:273
void GetHomePosition(float &x, float &y, float &z, float &ori) const
Definition Creature.h:349
void RelocateOffset(const Position &offset)
Definition Position.cpp:66
float GetExactDist(float x, float y, float z) const
Definition Position.h:182
float m_positionX
Definition Position.h:55
float m_positionY
Definition Position.h:56
void GetPosition(float &x, float &y) const
Definition Position.h:126

References _boundary, Position::GetExactDist(), Creature::GetHomePosition(), Position::GetPosition(), IsInBoundary(), LANG_CREATURE_MOVEMENT_MAYBE_UNBOUNDED, LANG_CREATURE_MOVEMENT_NOT_BOUNDED, LANG_CREATURE_NO_INTERIOR_POINT_FOUND, Position::m_positionX, Position::m_positionY, Position::m_positionZ, MAX_SEARCHER_DISTANCE, me, Position::RelocateOffset(), WorldObject::SummonCreature(), TEMPSUMMON_TIMED_DESPAWN, UNIT_FLAG_NON_ATTACKABLE_2, and UNIT_FLAG_STUNNED.

Referenced by debug_commandscript::HandleDebugBoundaryCommand().

◆ WaypointPathEnded()

virtual void CreatureAI::WaypointPathEnded ( uint32  ,
uint32   
)
inlinevirtual

Reimplemented in SmartAI.

197{ }

◆ WaypointPathStarted()

virtual void CreatureAI::WaypointPathStarted ( uint32  )
inlinevirtual

== Waypoints system =============================

Reimplemented in SmartAI.

194{ }

◆ WaypointReached()

virtual void CreatureAI::WaypointReached ( uint32  ,
uint32   
)
inlinevirtual

Reimplemented in SmartAI, npc_escortAI, npc_grimstone, npc_rocknot, npc_barnes::npc_barnesAI, npc_professor_phizzlethorpe::npc_professor_phizzlethorpeAI, npc_ranger_lilatha, npc_rinji::npc_rinjiAI, npc_corporal_keeshan::npc_corporal_keeshanAI, npc_deathstalker_erland::npc_deathstalker_erlandAI, npc_lord_gregor_lescovar::npc_lord_gregor_lescovarAI, npc_tyrion_spybot::npc_tyrion_spybotAI, npc_varian_wrynn::npc_varian_wrynnAI, npc_thrall_bfu::npc_thrall_bfuAI, npc_daphne_stilwell::npc_daphne_stilwellAI, npc_tapoke_slim_jahn::npc_tapoke_slim_jahnAI, npc_arthas::npc_arthasAI, npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, npc_taretha::npc_tarethaAI, npc_general_andorov, npc_muglash::npc_muglashAI, npc_magwin::npc_magwinAI, npc_prospector_remtravel::npc_prospector_remtravelAI, npc_cork_gizelton::npc_cork_gizeltonAI, npc_clintar_spirit::npc_clintar_spiritAI, npc_kaya_flathoof::npc_kaya_flathoofAI, npc_custodian_of_time::npc_custodian_of_timeAI, npc_gilthares::npc_giltharesAI, npc_wizzlecrank_shredder::npc_wizzlecrank_shredderAI, npc_lakota_windsong::npc_lakota_windsongAI, npc_paoka_swiftmountain::npc_paoka_swiftmountainAI, npc_ame::npc_ameAI, npc_ranshalla::npc_ranshallaAI, npc_onyx_flamecaller::npc_onyx_flamecallerAI, npc_argent_soldier::npc_argent_soldierAI, npc_black_knight_skeletal_gryphon::npc_black_knight_skeletal_gryphonAI, boss_grand_champion::boss_grand_championAI, npc_crok_scourgebane::npc_crok_scourgebaneAI, boss_bjarngrim, brann_bronzebeard::brann_bronzebeardAI, npc_mimirons_inferno, boss_thorim_lightning_orb, boss_thorim_sif_blizzard, boss_yoggsaron_cloud, violet_hold_trashAI, npc_azure_saboteur, npc_lurgglbr::npc_lurgglbrAI, npc_mootoo_the_younger::npc_mootoo_the_youngerAI, npc_bonker_togglevolt::npc_bonker_togglevoltAI, npc_emily::npc_emilyAI, npc_apothecary_hanes::npc_Apothecary_HanesAI, npc_plaguehound_tracker::npc_plaguehound_trackerAI, npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI, npc_engineer_helice::npc_engineer_heliceAI, npc_frosthound, npc_ancestral_wolf::npc_ancestral_wolfAI, npc_wounded_blood_elf::npc_wounded_blood_elfAI, npc_maghar_captive::npc_maghar_captiveAI, npc_kurenai_captive::npc_kurenai_captiveAI, npc_captain_saeed::npc_captain_saeedAI, npc_bessy::npc_bessyAI, npc_maxx_a_million_escort::npc_maxx_a_million_escortAI, npc_kservant::npc_kservantAI, npc_isla_starmane::npc_isla_starmaneAI, and npc_garments_of_quests::npc_garments_of_questsAI.

196{ }

◆ WaypointStarted()

virtual void CreatureAI::WaypointStarted ( uint32  ,
uint32   
)
inlinevirtual

Reimplemented in SmartAI.

195{ }

Member Data Documentation

◆ _boundary

CreatureBoundary const* CreatureAI::_boundary
protected

◆ _isEngaged

bool CreatureAI::_isEngaged
protected

◆ _negateBoundary

bool CreatureAI::_negateBoundary
protected

Referenced by IsInBoundary(), and SetBoundary().

◆ events

EventMap CreatureAI::events
protected

◆ m_MoveInLineOfSight_locked

bool CreatureAI::m_MoveInLineOfSight_locked
private

Referenced by MoveInLineOfSight_Safe().

◆ me

Creature* const CreatureAI::me
protected

Referenced by PetAI::_canMeleeAttack(), _EnterEvadeMode(), PetAI::_needToStop(), PetAI::_stopAttack(), npc_love_in_air_snivel::AllowAction(), ArcherAI::ArcherAI(), SmartAI::AssistPlayerInCombatAgainst(), PetAI::AttackedBy(), npc_ritual_channeler::npc_ritual_channelerAI::AttackStart(), PossessedAI::AttackStart(), PetAI::AttackStart(), TotemAI::AttackStart(), ArcherAI::AttackStart(), TurretAI::AttackStart(), SmartAI::AttackStart(), npc_ravenous_worg::npc_ravenous_worgAI::AttackStart(), npc_salvaged_siege_engine::BeforeSpellClick(), boss_flame_leviathan_seat::boss_flame_leviathan_seat(), boss_yoggsaron_brain::boss_yoggsaron_brain(), boss_yoggsaron_death_orb::boss_yoggsaron_death_orb(), boss_yoggsaron_influence_tentacle::boss_yoggsaron_influence_tentacle(), npc_pet_dk_army_of_the_dead::CanAIAttack(), TurretAI::CanAIAttack(), PetAI::CanAttack(), npc_wg_siege_machine::npc_wg_siege_machineAI::CanControlVehicle(), npc_still_at_it_trigger::npc_still_at_it_triggerAI::CheckAction(), SmartAI::CheckConditions(), VehicleAI::CheckConditions(), npc_q24545_lich_king::npc_q24545_lich_kingAI::CleanAll(), PetAI::ClearCharmInfoFlags(), boss_yoggsaron_influence_tentacle::DamageTaken(), npc_mc_core_hound::DamageTaken(), npc_batrider::DamageTaken(), npc_announcer_toc5::npc_announcer_toc5AI::DamageTaken(), npc_frost_sphere::npc_frost_sphereAI::DamageTaken(), npc_gunship::npc_gunshipAI::DamageTaken(), npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::DamageTaken(), npc_power_spark::DamageTaken(), npc_collapsing_star::DamageTaken(), npc_xt002_boombot::DamageTaken(), npc_wild_wyrm::DamageTaken(), npc_hor_leader_second::npc_hor_leader_secondAI::DamageTaken(), npc_ice_tomb::npc_ice_tombAI::DamageTaken(), npc_training_dummy::DamageTaken(), SmartAI::DamageTaken(), npc_heated_battle::npc_heated_battleAI::DamageTaken(), npc_infra_green_bomber_generic::npc_infra_green_bomber_genericAI::DamageTaken(), boss_yoggsaron_brain::DamageTaken(), SmartAI::DistanceYourself(), npc_grand_magister_rommath::npc_grand_magister_rommathAI::DoAction(), boss_krick::boss_krickAI::DoAction(), npc_ulduar_toasty_fire::DoAction(), npc_amanishi_lookout::DoAction(), npc_orb_carrier::npc_orb_carrierAI::DoAction(), npc_kinetic_bomb::npc_kinetic_bombAI::DoAction(), npc_bone_spike::npc_bone_spikeAI::DoAction(), npc_strangulate_vehicle::npc_strangulate_vehicleAI::DoAction(), npc_brann_bronzebeard_algalon::DoAction(), npc_wild_wyrm::DoAction(), npc_shattrath_daily_quest::DoAction(), npc_hor_leader_second::npc_hor_leader_secondAI::DoAction(), npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI::DoAction(), npc_pos_leader_second::npc_pos_leader_secondAI::DoAction(), npc_madrigosa::DoAction(), npc_kalecgos_kj::DoAction(), npc_pilgrims_bounty_chair::DoAction(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::DoAction(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::DoAction(), npc_power_spark::DoAction(), npc_hover_disk::DoAction(), npc_ulduar_bot_summon_trigger::DoAction(), npc_xt002_heart::DoAction(), boss_yoggsaron_brain::DoAction(), boss_yoggsaron_keeper::DoAction(), npc_ulduar_keeper::npc_ulduar_keeperAI::DoAction(), boss_skadi_grauf::boss_skadi_graufAI::DoAction(), PetAI::DoAttack(), DoSummon(), DoSummon(), npc_time_rift::DoSummonAtRift(), DoSummonFlyer(), DoZoneInCombat(), npc_ravenclaw_apparition::npc_ravenclaw_apparitionAI::EmoteCrowd(), SmartAI::EndPath(), EngagementOver(), EngagementStart(), CritterAI::EnterEvadeMode(), npc_black_morass_summoned_add::EnterEvadeMode(), EnterEvadeMode(), SmartAI::EnterEvadeMode(), TotemAI::EnterEvadeMode(), npc_pos_freed_slave::npc_pos_freed_slaveAI::EnterEvadeMode(), npc_pet_mage_mirror_image::EnterEvadeMode(), npc_xt002_boombot::Explode(), npc_singularity::FindAndFollowTarget(), SmartAI::GenerateWayPointArray(), npc_ulduar_harpoonfirestate::GetHarpoonGunIdForThisHFS(), npc_still_at_it_trigger::npc_still_at_it_triggerAI::GetManus(), npc_pilgrims_bounty_chair::GetPlate(), npc_spiritual_insight::npc_spiritual_insightAI::GetSpeachId(), npc_infra_green_bomber_generic::npc_infra_green_bomber_genericAI::GetSummoner(), GetSummoner(), npc_wintergarde_gryphon::getVillager(), npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::GoSiphon(), PetAI::HandleReturnMovement(), npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::HandleSpeedChangeIfNeeded(), npc_wounded_skirmisher::Initialize(), CombatAI::InitializeAI(), SmartAI::InitializeAI(), npc_ulduar_mimiron_rocket::InitializeAI(), npc_pet_dk_dancing_rune_weapon::InitializeAI(), npc_pet_gen_imp_in_a_bottle::InitializeAI(), npc_pet_mage_mirror_image::InitializeAI(), npc_pet_pri_lightwell::InitializeAI(), npc_wild_wyrm::InitSpellsForPhase(), SmartAI::IsEscortInvokerInRange(), npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::IsHeroic(), npc_strangulate_vehicle::npc_strangulate_vehicleAI::IsHeroic(), IsInBoundary(), SmartAI::IsMainSpellPrevented(), npc_taldaram_flamesphere::IsSummonedBy(), npc_kinetic_bomb::npc_kinetic_bombAI::IsSummonedBy(), npc_coldflame::npc_coldflameAI::IsSummonedBy(), npc_lk_spirit_bomb::npc_lk_spirit_bombAI::IsSummonedBy(), TriggerAI::IsSummonedBy(), npc_vaelastrasz_the_red::IsSummonedBy(), npc_demonic_vapor::IsSummonedBy(), npc_bone_spike::npc_bone_spikeAI::IsSummonedBy(), npc_strangulate_vehicle::npc_strangulate_vehicleAI::IsSummonedBy(), npc_eoe_wyrmrest_skytalon::IsSummonedBy(), npc_oculus_drake::npc_oculus_drakeAI::IsSummonedBy(), npc_wintergarde_gryphon::IsSummonedBy(), npc_spiritual_insight::npc_spiritual_insightAI::IsSummonedBy(), npc_infra_green_bomber_generic::npc_infra_green_bomber_genericAI::IsSummonedBy(), npc_frostbrood_skytalon::npc_frostbrood_skytalonAI::IsSummonedBy(), npc_pet_gen_fetch_ball::IsSummonedBy(), npc_spirit_shade::npc_spirit_shadeAI::IsSummonedBy(), PossessedAI::JustDied(), npc_balance_of_light_and_shadow::npc_balance_of_light_and_shadowAI::JustDied(), npc_gunship::npc_gunshipAI::JustDied(), npc_ice_tomb::npc_ice_tombAI::JustDied(), npc_isle_of_conquest_turret::npc_isle_of_conquest_turretAI::JustDied(), npc_boss_gothik_minion::npc_boss_gothik_minionAI::JustDied(), boss_maexxna_webwrap::boss_maexxna_webwrapAI::JustDied(), npc_mr_bigglesworth::JustDied(), npc_eoe_wyrmrest_skytalon::JustDied(), boss_freya_iron_root::JustDied(), npc_ulduar_saronite_vapors::JustDied(), npc_xt002_heart::JustDied(), npc_xt002_boombot::JustDied(), boss_yoggsaron_influence_tentacle::JustDied(), boss_skadi_grauf::boss_skadi_graufAI::JustDied(), npc_vh_void_sentry::JustDied(), npc_wintergarde_gryphon::JustDied(), npc_pet_dk_ghoul::JustDied(), CombatAI::JustDied(), npc_four_car_garage::npc_four_car_garageAI::JustDied(), boss_flame_leviathan_defense_turret::JustDied(), npc_xt002_scrapbot::JustDied(), npc_frost_tomb::JustDied(), npc_nerubar_victim::npc_nerubar_victimAI::JustDied(), CasterAI::JustEngagedWith(), CritterAI::JustEngagedWith(), npc_boss_gothik_minion::npc_boss_gothik_minionAI::JustEngagedWith(), boss_yoggsaron_keeper::JustEngagedWith(), SmartAI::JustEngagedWith(), CombatAI::JustEngagedWith(), JustEnteredCombat(), SmartAI::JustReachedHome(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::JustReachedHome(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::JustReachedHome(), SmartAI::JustRespawned(), npc_xt002_heart::JustSummoned(), npc_frozen_orb_stalker::npc_frozen_orb_stalkerAI::JustSummoned(), npc_ravenclaw_apparition::npc_ravenclaw_apparitionAI::JustSummoned(), npc_collapsing_star::JustSummoned(), npc_algalon_worm_hole::JustSummoned(), PetAI::KilledUnit(), npc_boss_gothik_minion::npc_boss_gothik_minionAI::KilledUnit(), boss_grobbulus_poison_cloud::boss_grobbulus_poison_cloudAI::KilledUnit(), VehicleAI::LoadConditions(), MoveBackwardsChecks(), MoveCircleChecks(), MoveInLineOfSight(), npc_brew_bubble::MoveInLineOfSight(), SmartAI::MoveInLineOfSight(), npc_grand_magister_rommath::npc_grand_magister_rommathAI::MoveInLineOfSight(), npc_amanishi_lookout::MoveInLineOfSight(), npc_love_in_air_snivel::MoveInLineOfSight(), npc_ulduar_expedition_commander::npc_ulduar_expedition_commanderAI::MoveInLineOfSight(), SmartAI::MovementInform(), npc_brann_bronzebeard_algalon::MovementInform(), PetAI::MovementInform(), npc_spirit_shade::npc_spirit_shadeAI::MovementInform(), npc_amanishi_lookout::MovementInform(), npc_concentrated_ball::npc_concentrated_ballAI::MovementInform(), npc_pos_tyrannus_events::npc_pos_tyrannus_eventsAI::MovementInform(), npc_pos_leader_second::npc_pos_leader_secondAI::MovementInform(), npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::MovementInform(), npc_hover_disk::MovementInform(), npc_oculus_drake::npc_oculus_drakeAI::MovementInform(), npc_frostbrood_skytalon::npc_frostbrood_skytalonAI::MovementInform(), npc_vehicle_d16_propelled_delivery::npc_vehicle_d16_propelled_deliveryAI::MovementInform(), npc_wild_wyrm::MovementInform(), npc_pet_gen_plump_turkey::MovementInform(), npc_injured_7th_legion_soldier::npc_injured_7th_legion_soldierAI::MovementInform(), npc_ashtongue_sorcerer::MovementInform(), npc_balance_of_light_and_shadow::npc_balance_of_light_and_shadowAI::MovementInform(), npc_announcer_toc5::npc_announcer_toc5AI::MovementInform(), npc_hor_lich_king::MovementInform(), npc_hor_leader_second::npc_hor_leader_secondAI::MovementInform(), npc_hodirs_fury::MovementInform(), npc_xt002_scrapbot::MovementInform(), boss_skadi_grauf::boss_skadi_graufAI::MovementInform(), npc_freed_protodrake::npc_freed_protodrakeAI::MovementInform(), boss_flame_leviathan_safety_container::MovementInform(), npc_attracted_reef_bull::npc_attracted_reef_bullAI::MovementInform(), SmartAI::MovepointReached(), npc_concentrated_ball::npc_concentrated_ballAI::MoveToNextPoint(), npc_hor_leader_second::npc_hor_leader_secondAI::MoveToNextStopPoint(), npc_pet_mage_mirror_image::MySelectNextTarget(), npc_attracted_reef_bull::npc_attracted_reef_bullAI::npc_attracted_reef_bullAI(), npc_batrider::npc_batrider(), npc_boss_gothik_minion::npc_boss_gothik_minionAI::npc_boss_gothik_minionAI(), npc_concentrated_ball::npc_concentrated_ballAI::npc_concentrated_ballAI(), npc_fos_corrupted_soul_fragment::npc_fos_corrupted_soul_fragment(), npc_frost_freeze_trap::npc_frost_freeze_trapAI::npc_frost_freeze_trapAI(), npc_frost_sphere::npc_frost_sphereAI::npc_frost_sphereAI(), npc_frost_tomb::npc_frost_tomb(), npc_grand_magister_rommath::npc_grand_magister_rommathAI::npc_grand_magister_rommathAI(), npc_gunship::npc_gunshipAI::npc_gunshipAI(), npc_hor_leader_second::npc_hor_leader_secondAI::npc_hor_leader_secondAI(), npc_hor_leader::npc_hor_leaderAI::npc_hor_leaderAI(), npc_hor_lich_king::npc_hor_lich_king(), npc_hyldsmeet_protodrake::npc_hyldsmeet_protodrake(), npc_ice_tomb::npc_ice_tombAI::npc_ice_tombAI(), npc_lk_spirit_bomb::npc_lk_spirit_bombAI::npc_lk_spirit_bombAI(), npc_nightbane_helper_target::npc_nightbane_helper_target(), npc_oculus_drake::npc_oculus_drakeAI::npc_oculus_drakeAI(), npc_pet_gen_moth::npc_pet_gen_moth(), npc_pet_gen_target_following_bomb::npc_pet_gen_target_following_bomb(), npc_pet_gen_wind_rider_cub::npc_pet_gen_wind_rider_cub(), npc_pilgrims_bounty_chair::npc_pilgrims_bounty_chair(), npc_pos_after_first_boss::npc_pos_after_first_bossAI::npc_pos_after_first_bossAI(), npc_pos_collapsing_icicle::npc_pos_collapsing_icicleAI::npc_pos_collapsing_icicleAI(), npc_pos_freed_slave::npc_pos_freed_slaveAI::npc_pos_freed_slaveAI(), npc_pos_icicle_trigger::npc_pos_icicle_triggerAI::npc_pos_icicle_triggerAI(), npc_pos_leader_second::npc_pos_leader_secondAI::npc_pos_leader_secondAI(), npc_pos_leader::npc_pos_leaderAI::npc_pos_leaderAI(), npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI::npc_pos_martin_or_gorkun_secondAI(), npc_pos_tyrannus_events::npc_pos_tyrannus_eventsAI::npc_pos_tyrannus_eventsAI(), npc_power_spark::npc_power_spark(), npc_ulduar_expedition_commander::npc_ulduar_expedition_commanderAI::npc_ulduar_expedition_commanderAI(), npc_ulduar_expedition_engineer::npc_ulduar_expedition_engineer(), npc_ulduar_flames_initial::npc_ulduar_flames_initial(), npc_ulduar_flash_freeze::npc_ulduar_flash_freeze(), npc_ulduar_harpoonfirestate::npc_ulduar_harpoonfirestate(), npc_ulduar_saronite_vapors::npc_ulduar_saronite_vapors(), npc_ulduar_toasty_fire::npc_ulduar_toasty_fire(), npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::npc_valkyr_shadowguardAI(), npc_vh_void_sentry::npc_vh_void_sentry(), npc_xt002_heart::npc_xt002_heart(), npc_zafod_boombox::npc_zafod_boomboxAI::npc_zafod_boomboxAI(), NullCreatureAI::NullCreatureAI(), npc_vengeful_spirit::OnCharmed(), VehicleAI::OnCharmed(), OnCharmed(), SmartAI::OnCharmed(), npc_toc5_player_vehicle::npc_toc5_player_vehicleAI::OnCharmed(), npc_pet_dk_risen_ally::OnCharmed(), OnOwnerCombatInteraction(), npc_valithria_portal::npc_valithria_portalAI::OnSpellClick(), boss_flame_leviathan_overload_device::OnSpellClick(), boss_yoggsaron_descend_portal::OnSpellClick(), PetAI::OwnerAttacked(), npc_pet_dk_army_of_the_dead::OwnerAttacked(), PetAI::OwnerAttackedBy(), npc_pet_dk_army_of_the_dead::OwnerAttackedBy(), npc_vehicle_d16_propelled_delivery::npc_vehicle_d16_propelled_deliveryAI::PassengerBoarded(), npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::PassengerBoarded(), npc_eoe_wyrmrest_skytalon::PassengerBoarded(), npc_wintergarde_gryphon::PassengerBoarded(), npc_wild_wyrm::PassengerBoarded(), npc_oculus_drake::npc_oculus_drakeAI::PassengerBoarded(), boss_flame_leviathan_seat::PassengerBoarded(), npc_pilgrims_bounty_chair::PassengerBoarded(), npc_toc5_player_vehicle::npc_toc5_player_vehicleAI::PassengerBoarded(), npc_four_car_garage::npc_four_car_garageAI::PassengerBoarded(), npc_hover_disk::PassengerBoarded(), npc_preparations_for_war_vehicle::PassengerBoarded(), PassiveAI::PassiveAI(), SmartAI::PathEndReached(), SmartAI::PausePath(), PossessedAI::PossessedAI(), boss_yoggsaron_brain::PrepareChamberIllusion(), boss_yoggsaron_brain::PrepareIceCrownIllusion(), boss_yoggsaron_brain::PrepareStormwindIllusion(), PetAI::ReceiveEmote(), npc_ulduar_flames_initial::RemoveAll(), npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::Reset(), npc_demonic_vapor::Reset(), npc_demonic_vapor_trail::Reset(), npc_kiljaeden_controller::Reset(), npc_singularity::Reset(), npc_amanishi_lookout::Reset(), npc_batrider::Reset(), npc_brew_bubble::Reset(), npc_soh_fire_trigger::Reset(), npc_love_in_air_snivel::Reset(), npc_toc5_player_vehicle::npc_toc5_player_vehicleAI::Reset(), npc_announcer_toc5::npc_announcer_toc5AI::Reset(), npc_hor_leader::npc_hor_leaderAI::Reset(), npc_pos_leader::npc_pos_leaderAI::Reset(), npc_kinetic_bomb::npc_kinetic_bombAI::Reset(), npc_impaling_spear::npc_impaling_spearAI::Reset(), npc_boss_gothik_minion::npc_boss_gothik_minionAI::Reset(), boss_grobbulus_poison_cloud::boss_grobbulus_poison_cloudAI::Reset(), npc_crystal_spike::Reset(), boss_flame_leviathan_seat::Reset(), npc_freya_ward::Reset(), npc_hodirs_fury::Reset(), npc_thorims_hammer::Reset(), boss_freya_lifebinder::Reset(), boss_freya_healthy_spore::Reset(), boss_freya_nature_bomb::Reset(), boss_kologarn_pit_kill_bunny::Reset(), npc_ulduar_mimiron_rocket::Reset(), boss_thorim_pillar::Reset(), npc_xt002_scrapbot::Reset(), npc_xt002_boombot::Reset(), boss_yoggsaron_voice::Reset(), boss_skadi_grauf::boss_skadi_graufAI::Reset(), npc_frozen_orb_stalker::npc_frozen_orb_stalkerAI::Reset(), npc_injured_7th_legion_soldier::npc_injured_7th_legion_soldierAI::Reset(), npc_heated_battle::npc_heated_battleAI::Reset(), npc_q24545_lich_king::npc_q24545_lich_kingAI::Reset(), npc_wounded_skirmisher::Reset(), npc_freed_protodrake::npc_freed_protodrakeAI::Reset(), npc_wild_wyrm::Reset(), npc_ashtongue_channeler::Reset(), npc_pet_proto_drake_whelp::Reset(), npc_target_dummy::Reset(), SmartAI::ResumePath(), SmartAI::ReturnToLastOOCPos(), boss_yoggsaron_lich_king::Say(), boss_yoggsaron_llane::Say(), PetAI::SelectNextTarget(), npc_xt002_heart::SendEnergyToCorner(), SetBoundary(), SmartAI::SetCombatMovement(), SmartAI::SetCurrentRangeMode(), npc_ulduar_harpoonfirestate::SetData(), npc_ulduar_expedition_engineer::SetData(), npc_q24545_lich_king::npc_q24545_lich_kingAI::SetData(), npc_pos_tyrannus_events::npc_pos_tyrannus_eventsAI::SetData(), npc_pos_leader::npc_pos_leaderAI::SetData(), npc_idol_room_spawner::npc_idol_room_spawnerAI::SetData(), npc_ulduar_mimiron_rocket::SetData(), SmartAI::SetFly(), SmartAI::SetFollow(), SetGazeOn(), npc_gunship::npc_gunshipAI::SetGUID(), npc_q24545_lich_king::npc_q24545_lich_kingAI::SetGUID(), SmartAI::SetSwim(), npc_zafod_boombox::npc_zafod_boomboxAI::sGossipSelect(), SmartAI::SmartAI(), npc_frost_sphere::npc_frost_sphereAI::SpellHit(), npc_ulduar_flames_spread::SpellHit(), npc_preparations_for_war_vehicle::SpellHit(), npc_wintergarde_gryphon::SpellHit(), npc_frostbrood_skytalon::npc_frostbrood_skytalonAI::SpellHit(), npc_balance_of_light_and_shadow::npc_balance_of_light_and_shadowAI::SpellHit(), npc_pilgrims_bounty_chair::SpellHit(), npc_pilgrims_bounty_plate::SpellHit(), npc_isle_of_conquest_turret::npc_isle_of_conquest_turretAI::SpellHit(), npc_pool_of_tar::SpellHit(), boss_thorim_pillar::SpellHit(), npc_ulduar_keeper::npc_ulduar_keeperAI::SpellHit(), npc_wounded_skirmisher::SpellHit(), PetAI::SpellHit(), npc_soh_fire_trigger::SpellHit(), npc_hallows_end_train_fire::SpellHit(), npc_attracted_reef_bull::npc_attracted_reef_bullAI::SpellHit(), npc_wild_wyrm::SpellHit(), npc_hor_lich_king::SpellHitTarget(), npc_pos_leader_second::npc_pos_leader_secondAI::SpellHitTarget(), npc_oculus_drake::npc_oculus_drakeAI::SpellHitTarget(), npc_ulduar_rocket_strike_trigger::SpellHitTarget(), npc_xt002_heart::SpellHitTarget(), boss_yoggsaron_voice::SpellHitTarget(), npc_pet_gen_fetch_ball::SpellHitTarget(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SpidersMoveDown(), npc_infra_green_bomber_generic::npc_infra_green_bomber_genericAI::SpreadFire(), npc_ulduar_flames_initial::SpreadFlame(), SmartAI::StartPath(), SmartAI::StopFollow(), SmartAI::StopPath(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SummonBroodling(), npc_ravenclaw_apparition::npc_ravenclaw_apparitionAI::SummonCrowd(), npc_time_rift::SummonedCreatureDies(), npc_kiljaeden_controller::SummonedCreatureDies(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SummonedCreatureDies(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SummonFrostwardens(), npc_xt002_heart::SummonPiles(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SummonSpiders(), Talk(), trigger_periodic::trigger_periodicAI::trigger_periodicAI(), TriggerAlert(), TurretAI::TurretAI(), CombatAI::UpdateAI(), CasterAI::UpdateAI(), ArcherAI::UpdateAI(), TurretAI::UpdateAI(), VehicleAI::UpdateAI(), TotemAI::UpdateAI(), SmartAI::UpdateAI(), brd_ironhand_guardian::UpdateAI(), npc_rookery_hatcher::UpdateAI(), npc_vaelastrasz_the_red::UpdateAI(), npc_mc_core_hound::UpdateAI(), npc_kernobee::npc_kernobeeAI::UpdateAI(), npc_valkyr_battle_maiden::npc_valkyr_battle_maidenAI::UpdateAI(), npc_madrigosa::UpdateAI(), npc_demonic_vapor::UpdateAI(), npc_demonic_vapor_trail::UpdateAI(), npc_kalecgos_kj::UpdateAI(), npc_balance_of_light_and_shadow::npc_balance_of_light_and_shadowAI::UpdateAI(), npc_grand_magister_rommath::npc_grand_magister_rommathAI::UpdateAI(), npc_ravenclaw_apparition::npc_ravenclaw_apparitionAI::UpdateAI(), npc_brew_bubble::UpdateAI(), npc_hallows_end_train_fire::UpdateAI(), npc_pilgrims_bounty_chair::UpdateAI(), npc_time_rift::UpdateAI(), npc_taldaram_flamesphere::UpdateAI(), npc_halion_controller::npc_halion_controllerAI::UpdateAI(), npc_frost_sphere::npc_frost_sphereAI::UpdateAI(), npc_fos_corrupted_soul_fragment::UpdateAI(), npc_hor_leader::npc_hor_leaderAI::UpdateAI(), npc_hor_lich_king::UpdateAI(), npc_hor_leader_second::npc_hor_leader_secondAI::UpdateAI(), boss_krick::boss_krickAI::UpdateAI(), npc_pos_leader::npc_pos_leaderAI::UpdateAI(), npc_pos_after_first_boss::npc_pos_after_first_bossAI::UpdateAI(), npc_pos_tyrannus_events::npc_pos_tyrannus_eventsAI::UpdateAI(), npc_pos_icicle_trigger::npc_pos_icicle_triggerAI::UpdateAI(), npc_pos_collapsing_icicle::npc_pos_collapsing_icicleAI::UpdateAI(), npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI::UpdateAI(), npc_pos_leader_second::npc_pos_leader_secondAI::UpdateAI(), npc_kinetic_bomb::npc_kinetic_bombAI::UpdateAI(), npc_coldflame::npc_coldflameAI::UpdateAI(), npc_bone_spike::npc_bone_spikeAI::UpdateAI(), npc_ice_tomb::npc_ice_tombAI::UpdateAI(), npc_valkyr_shadowguard::npc_valkyr_shadowguardAI::UpdateAI(), npc_strangulate_vehicle::npc_strangulate_vehicleAI::UpdateAI(), npc_lk_spirit_bomb::npc_lk_spirit_bombAI::UpdateAI(), npc_frost_freeze_trap::npc_frost_freeze_trapAI::UpdateAI(), npc_impaling_spear::npc_impaling_spearAI::UpdateAI(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::UpdateAI(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::UpdateAI(), npc_isle_of_conquest_turret::npc_isle_of_conquest_turretAI::UpdateAI(), npc_boss_gothik_minion::npc_boss_gothik_minionAI::UpdateAI(), boss_grobbulus_poison_cloud::boss_grobbulus_poison_cloudAI::UpdateAI(), npc_naxxramas_trigger::UpdateAI(), npc_power_spark::UpdateAI(), npc_crystal_spike::UpdateAI(), npc_oculus_drake::npc_oculus_drakeAI::UpdateAI(), npc_brann_bronzebeard_algalon::UpdateAI(), npc_algalon_worm_hole::UpdateAI(), boss_flame_leviathan_seat::UpdateAI(), boss_flame_leviathan_defense_turret::UpdateAI(), npc_freya_ward::UpdateAI(), npc_hodirs_fury::UpdateAI(), npc_thorims_hammer::UpdateAI(), npc_storm_beacon_spawn::UpdateAI(), boss_flame_leviathan_safety_container::UpdateAI(), boss_freya_lifebinder::UpdateAI(), boss_freya_healthy_spore::UpdateAI(), boss_freya_nature_bomb::UpdateAI(), npc_ulduar_icicle::UpdateAI(), npc_ulduar_flash_freeze::UpdateAI(), npc_ulduar_bot_summon_trigger::UpdateAI(), npc_ulduar_flames_initial::UpdateAI(), npc_ulduar_expedition_engineer::UpdateAI(), boss_thorim_trap::UpdateAI(), npc_xt002_heart::UpdateAI(), boss_yoggsaron_death_orb::UpdateAI(), boss_yoggsaron_voice::UpdateAI(), boss_skadi_grauf::boss_skadi_graufAI::UpdateAI(), npc_vh_void_sentry::UpdateAI(), npc_vh_teleportation_portal::UpdateAI(), npc_sinkhole_kill_credit::npc_sinkhole_kill_creditAI::UpdateAI(), npc_preparations_for_war_vehicle::UpdateAI(), npc_wintergarde_gryphon::UpdateAI(), npc_q24545_lich_king::npc_q24545_lich_kingAI::UpdateAI(), npc_ravenous_worg::npc_ravenous_worgAI::UpdateAI(), npc_wounded_skirmisher::UpdateAI(), npc_llod_generic::npc_llod_genericAI::UpdateAI(), npc_infra_green_bomber_generic::npc_infra_green_bomber_genericAI::UpdateAI(), npc_frostbrood_skytalon::npc_frostbrood_skytalonAI::UpdateAI(), npc_still_at_it_trigger::npc_still_at_it_triggerAI::UpdateAI(), npc_freed_protodrake::npc_freed_protodrakeAI::UpdateAI(), npc_hyldsmeet_protodrake::UpdateAI(), npc_wg_siege_machine::npc_wg_siege_machineAI::UpdateAI(), npc_pet_dk_ghoul::UpdateAI(), npc_pet_gen_target_following_bomb::UpdateAI(), npc_pet_gen_imp_in_a_bottle::UpdateAI(), npc_pet_gen_wind_rider_cub::UpdateAI(), npc_pet_gen_plump_turkey::UpdateAI(), npc_pet_gen_toxic_wasteling::UpdateAI(), npc_pet_gen_fetch_ball::UpdateAI(), npc_pet_darting_hatchling::UpdateAI(), npc_pet_mage_mirror_image::UpdateAI(), trigger_periodic::trigger_periodicAI::UpdateAI(), npc_training_dummy::UpdateAI(), npc_target_dummy::UpdateAI(), PassiveAI::UpdateAI(), PossessedAI::UpdateAI(), PetAI::UpdateAI(), npc_batrider::UpdateAI(), npc_orb_carrier::npc_orb_carrierAI::UpdateAI(), npc_concentrated_ball::npc_concentrated_ballAI::UpdateAI(), npc_gunship::npc_gunshipAI::UpdateAI(), boss_maexxna_webwrap::boss_maexxna_webwrapAI::UpdateAI(), npc_living_poison::UpdateAI(), npc_ulduar_mimiron_rocket::UpdateAI(), npc_xt002_scrapbot::UpdateAI(), npc_xt002_boombot::UpdateAI(), npc_frost_tomb::UpdateAI(), npc_q24545_vegard_dummy::npc_q24545_vegard_dummyAI::UpdateAI(), npc_pet_dk_army_of_the_dead::UpdateAI(), PetAI::UpdateAllies(), npc_halion_controller::npc_halion_controllerAI::UpdateCorporeality(), SmartAI::UpdateDespawn(), SmartAI::UpdateFollow(), SmartAI::UpdatePath(), UpdateVictim(), UpdateVictimWithGaze(), VisualizeBoundary(), and npc_hor_lich_king::WallCompleted().

◆ scheduler

TaskScheduler CreatureAI::scheduler
protected

Referenced by BossAI::_CheckHealthAfterCast(), BossAI::_JustDied(), BossAI::_Reset(), boss_marli::_schedulePhaseSpider(), boss_marli::_schedulePhaseTroll(), boss_high_nethermancer_zerevor::CastDampenMagicIfPossible(), boss_thekal::CheckPhaseTransition(), boss_ouro::DamageTaken(), boss_freya::DamageTaken(), boss_hodir::DamageTaken(), npc_wild_wyrm::DamageTaken(), npc_overlord_drakuru_betrayal::DamageTaken(), boss_essence_of_suffering::boss_essence_of_sufferingAI::DamageTaken(), boss_essence_of_desire::boss_essence_of_desireAI::DamageTaken(), advisor_baseAI::DamageTaken(), boss_felblood_kaelthas::DamageTaken(), boss_viscidus::DamageTaken(), boss_leotheras_the_blind::DemonTime(), npc_drakonid_spawner::DoAction(), boss_nightbane::DoAction(), boss_apothecary_hummel::boss_apothecary_hummelAI::DoAction(), npc_harrison_jones::DoAction(), boss_twinemperorsAI::DoAction(), npc_thrall_warchief::npc_thrall_warchiefAI::DoAction(), boss_razuvious_minion::boss_razuvious_minionAI::DoAction(), boss_broggok::DoAction(), boss_magtheridon::DoAction(), boss_grand_warlock_nethekurse::DoAction(), boss_akilzon::DoAction(), boss_leotheras_the_blind::DoAction(), boss_pathaleon_the_calculator::DoAction(), boss_sacrolash::DoAction(), boss_alythess::DoAction(), boss_kalecgos::DoAction(), npc_ulduar_keeper::npc_ulduar_keeperAI::DoAction(), boss_illidan_stormrage::DoAction(), npc_maiev_illidan::DoAction(), npc_creature_generator_akama::DoAction(), boss_alar::DoDiveBomb(), npc_midsummer_ribbon_pole_target::DoFireworkChecks(), boss_leotheras_the_blind::ElfTime(), boss_ouro::Emerge(), npc_amanishi_tempest::EnterEvadeMode(), boss_halazzi::EnterPhase(), boss_zuljin::EnterPhase(), boss_kaelthas::ExecuteMiddleEvent(), npc_singularity::FindAndFollowTarget(), boss_felblood_kaelthas::GravityLapseSequence(), boss_glob_of_viscidus::InitializeAI(), npc_rancid_mushroom::InitializeAI(), boss_moroes::InitializeGuests(), boss_kaelthas::IntroduceNewAdvisor(), boss_grand_warlock_nethekurse::IntroRP(), npc_corrupted_totem::IsSummonedBy(), npc_parasitic_shadowfiend::IsSummonedBy(), npc_supremus_punch_invisible_stalker::IsSummonedBy(), npc_raging_flames::IsSummonedBy(), npc_drakonid_spawner::IsSummonedBy(), boss_attumen::IsSummonedBy(), npc_inner_demon::IsSummonedBy(), advisor_baseAI::JustDied(), npc_cultist_engineer::JustDied(), boss_malchezaar::JustEngagedWith(), npc_malchezaar_axe::JustEngagedWith(), boss_shade_of_aran::JustEngagedWith(), boss_terestian_illhoof::JustEngagedWith(), boss_priestess_delrissa::JustEngagedWith(), boss_kalec::JustEngagedWith(), boss_sathrovarr::JustEngagedWith(), npc_sunblade_scout::JustEngagedWith(), boss_akilzon::JustEngagedWith(), npc_amanishi_tempest::JustEngagedWith(), npc_amanishi_scout::JustEngagedWith(), boss_thekal::JustEngagedWith(), boss_venoxis::JustEngagedWith(), boss_azuregos::boss_azuregosAI::JustEngagedWith(), boss_archimonde::JustEngagedWith(), npc_hyjal_jaina::hyjalJainaAI::JustEngagedWith(), npc_hyjal_thrall::hyjalThrallAI::JustEngagedWith(), npc_hyjal_tyrande::hyjalTyrandeAI::JustEngagedWith(), npc_hyjal_ground_trash::JustEngagedWith(), npc_hyjal_gargoyle::JustEngagedWith(), npc_hyjal_frost_wyrm::JustEngagedWith(), boss_epoch_hunter::JustEngagedWith(), boss_lieutenant_drake::JustEngagedWith(), boss_aeonus::JustEngagedWith(), boss_chrono_lord_deja::JustEngagedWith(), boss_temporus::JustEngagedWith(), npc_obsidian_destroyer::JustEngagedWith(), npc_eye_tentacle::JustEngagedWith(), npc_claw_tentacle::JustEngagedWith(), npc_dirt_mound::JustEngagedWith(), npc_anubisath_defender::JustEngagedWith(), npc_obsidian_eradicator::JustEngagedWith(), npc_anubisath_warder::JustEngagedWith(), npc_obsidian_nullifier::JustEngagedWith(), boss_amanitar::JustEngagedWith(), boss_yoggsaron_keeper::JustEngagedWith(), npc_overlord_drakuru_betrayal::JustEngagedWith(), boss_exarch_maladaar::JustEngagedWith(), boss_shirrak_the_dead_watcher::JustEngagedWith(), boss_nexusprince_shaffar::JustEngagedWith(), boss_tavarok::JustEngagedWith(), boss_anzu::JustEngagedWith(), boss_darkweaver_syth::JustEngagedWith(), boss_talon_king_ikiss::JustEngagedWith(), boss_ambassador_hellmaw::JustEngagedWith(), boss_blackheart_the_inciter::JustEngagedWith(), boss_grandmaster_vorpil::JustEngagedWith(), boss_essence_of_desire::boss_essence_of_desireAI::JustEngagedWith(), boss_doomlord_kazzak::boss_doomlordkazzakAI::JustEngagedWith(), boss_doomwalker::JustEngagedWith(), boss_mennu_the_betrayer::JustEngagedWith(), boss_quagmirran::JustEngagedWith(), boss_rokmar_the_crackler::JustEngagedWith(), boss_hydromancer_thespia::JustEngagedWith(), boss_mekgineer_steamrigger::JustEngagedWith(), boss_warlord_kalithresh::JustEngagedWith(), boss_ghazan::JustEngagedWith(), boss_swamplord_muselek::JustEngagedWith(), boss_the_black_stalker::JustEngagedWith(), boss_gruul::JustEngagedWith(), boss_high_king_maulgar::JustEngagedWith(), boss_kelidan_the_breaker::JustEngagedWith(), boss_the_maker::JustEngagedWith(), boss_omor_the_unscarred::JustEngagedWith(), boss_watchkeeper_gargolmar::JustEngagedWith(), boss_dalliah_the_doomsayer::JustEngagedWith(), boss_harbinger_skyriss::JustEngagedWith(), boss_zereketh_the_unbound::JustEngagedWith(), boss_high_botanist_freywinn::JustEngagedWith(), boss_thorngrin_the_tender::JustEngagedWith(), boss_warp_splinter::JustEngagedWith(), boss_gatewatcher_gyrokill::JustEngagedWith(), boss_gatewatcher_iron_hand::JustEngagedWith(), boss_mechano_lord_capacitus::JustEngagedWith(), boss_nethermancer_sepethrea::JustEngagedWith(), boss_pathaleon_the_calculator::JustEngagedWith(), boss_curator::JustEngagedWith(), boss_maiden_of_virtue::JustEngagedWith(), boss_midnight::JustEngagedWith(), boss_moroes::JustEngagedWith(), boss_netherspite::JustEngagedWith(), boss_priestess_lackey_commonAI::JustEngagedWith(), boss_kagani_nightstrike::JustEngagedWith(), boss_yazzai::JustEngagedWith(), boss_selin_fireheart::JustEngagedWith(), boss_sacrolash::JustEngagedWith(), boss_alythess::JustEngagedWith(), boss_kalecgos::JustEngagedWith(), boss_hexlord_malacrass::JustEngagedWith(), boss_janalai::JustEngagedWith(), boss_nalorakk::JustEngagedWith(), boss_marli::JustEngagedWith(), boss_anetheron::JustEngagedWith(), boss_azgalor::JustEngagedWith(), boss_kazrogal::JustEngagedWith(), boss_rage_winterchill::JustEngagedWith(), boss_kurinnaxx::JustEngagedWith(), npc_hivezara_stinger::JustEngagedWith(), boss_fankriss::JustEngagedWith(), boss_twinemperorsAI::JustEngagedWith(), boss_veknilash::JustEngagedWith(), boss_veklor::JustEngagedWith(), npc_vekniss_stinger::JustEngagedWith(), boss_krik_thir::boss_krik_thirAI::JustEngagedWith(), boss_novos::JustEngagedWith(), boss_anubrekhan::JustEngagedWith(), boss_faerlina::boss_faerlinaAI::JustEngagedWith(), boss_razuvious_minion::boss_razuvious_minionAI::JustEngagedWith(), boss_pandemonius::JustEngagedWith(), boss_murmur::JustEngagedWith(), boss_gurtogg_bloodboil::JustEngagedWith(), boss_supremus::JustEngagedWith(), boss_najentus::JustEngagedWith(), boss_fathomlord_karathress::JustEngagedWith(), boss_fathomguard_sharkkis::JustEngagedWith(), boss_hydross_the_unstable::JustEngagedWith(), boss_morogrim_tidewalker::JustEngagedWith(), boss_magtheridon::JustEngagedWith(), boss_grand_warlock_nethekurse::JustEngagedWith(), boss_porung::JustEngagedWith(), boss_warchief_kargath_bladefist::JustEngagedWith(), boss_alar::JustEngagedWith(), boss_high_astromancer_solarian::JustEngagedWith(), boss_void_reaver::JustEngagedWith(), boss_fathomlord_karathress::KilledUnit(), boss_hydross_the_unstable::KilledUnit(), boss_lady_vashj::KilledUnit(), boss_morogrim_tidewalker::KilledUnit(), boss_gruul::KilledUnit(), boss_high_king_maulgar::KilledUnit(), boss_omor_the_unscarred::KilledUnit(), boss_watchkeeper_gargolmar::KilledUnit(), boss_magtheridon::KilledUnit(), boss_void_reaver::KilledUnit(), boss_moroes::KilledUnit(), boss_anetheron::KilledUnit(), boss_azgalor::KilledUnit(), boss_kazrogal::KilledUnit(), boss_rage_winterchill::KilledUnit(), npc_midsummer_ribbon_pole_target::LocateRibbonPole(), boss_nightbane::MovementInform(), npc_koltira_deathweaver::npc_koltira_deathweaverAI::MovementInform(), npc_harrison_jones::MovementInform(), boss_ayamiss::MovementInform(), boss_illidan_stormrage::MovementInform(), boss_lady_vashj::MovementInform(), boss_alar::MovementInform(), boss_felmyst::MovementInform(), boss_shade_of_akama::MovementInform(), boss_kaelthas::MovementInform(), boss_warchief_kargath_bladefist::MovementInform(), npc_janalai_hatcher::MovementInform(), npc_janalai_hatcher::MoveToNewWaypoint(), npc_midsummer_bonfire::npc_midsummer_bonfire(), npc_midsummer_ribbon_pole_target::npc_midsummer_ribbon_pole_target(), boss_taldaram::OnAuraRemove(), boss_high_nethermancer_zerevor::OnAuraRemove(), boss_selin_fireheart::OnPowerUpdate(), npc_wild_wyrm::PassengerBoarded(), boss_nightbane::PathEndReached(), boss_jeklik::PathEndReached(), boss_kaelthas::PhaseEnchantedWeaponsExecute(), boss_alar::PretendToDie(), npc_corrupted_totem::Reset(), boss_malchezaar::Reset(), npc_sanguine_spirit::Reset(), boss_felblood_kaelthas::Reset(), boss_priestess_delrissa::Reset(), boss_priestess_lackey_commonAI::Reset(), boss_vexallus::Reset(), npc_koltira_deathweaver::npc_koltira_deathweaverAI::Reset(), npc_kiljaeden_controller::Reset(), boss_kiljaeden::Reset(), boss_entropius::Reset(), npc_sunblade_scout::Reset(), boss_hexlord_malacrass::Reset(), boss_alyson_antille::Reset(), npc_janalai_hatcher::Reset(), npc_amanishi_tempest::Reset(), npc_amanishi_scout::Reset(), boss_thekal::Reset(), boss_azuregos::boss_azuregosAI::Reset(), boss_archimonde::Reset(), npc_hyjal_jaina::hyjalJainaAI::Reset(), npc_hyjal_thrall::hyjalThrallAI::Reset(), npc_hyjal_tyrande::hyjalTyrandeAI::Reset(), npc_hyjal_ground_trash::Reset(), npc_hyjal_gargoyle::Reset(), npc_hyjal_frost_wyrm::Reset(), boss_ayamiss::Reset(), npc_hivezara_stinger::Reset(), npc_obsidian_destroyer::Reset(), npc_eye_tentacle::Reset(), npc_claw_tentacle::Reset(), npc_giant_claw_tentacle::Reset(), npc_giant_eye_tentacle::Reset(), boss_ouro::Reset(), npc_anubisath_defender::Reset(), npc_vekniss_stinger::Reset(), npc_obsidian_eradicator::Reset(), npc_anubisath_warder::Reset(), npc_obsidian_nullifier::Reset(), npc_ahnqiraji_critter::Reset(), boss_volazj::Reset(), boss_taldaram::Reset(), boss_krik_thir::boss_krik_thirAI::Reset(), boss_razuvious_minion::boss_razuvious_minionAI::Reset(), boss_sjonnir::boss_sjonnirAI::Reset(), boss_kologarn_pit_kill_bunny::Reset(), npc_ulduar_keeper::npc_ulduar_keeperAI::Reset(), npc_enslaved_proto_drake::Reset(), npc_cosmetic_toy_plane::Reset(), npc_time_lost_proto_drake::npc_time_lost_proto_drakeAI::Reset(), npc_wild_wyrm::Reset(), npc_overlord_drakuru_betrayal::Reset(), boss_exarch_maladaar::Reset(), boss_anzu::Reset(), boss_talon_king_ikiss::Reset(), boss_illidan_stormrage::Reset(), npc_akama_illidan::Reset(), npc_maiev_illidan::Reset(), boss_high_nethermancer_zerevor::Reset(), boss_essence_of_suffering::boss_essence_of_sufferingAI::Reset(), boss_essence_of_desire::boss_essence_of_desireAI::Reset(), boss_essence_of_anger::boss_essence_of_angerAI::Reset(), npc_akama_shade::Reset(), npc_creature_generator_akama::Reset(), boss_doomlord_kazzak::boss_doomlordkazzakAI::Reset(), boss_doomwalker::Reset(), boss_fathomguard_sharkkis::Reset(), boss_lady_vashj::Reset(), boss_leotheras_the_blind::Reset(), boss_high_king_maulgar::Reset(), boss_omor_the_unscarred::Reset(), boss_watchkeeper_gargolmar::Reset(), boss_magtheridon::Reset(), boss_high_astromancer_solarian::Reset(), boss_kaelthas::Reset(), advisor_baseAI::Reset(), npc_raging_flames::Reset(), npc_enslaved_netherwing_drake::Reset(), npc_necrotic_shard::Reset(), npc_minion_spawner::Reset(), npc_cultist_engineer::Reset(), npc_flameshocker::Reset(), boss_alar::ScheduleAbilities(), boss_illidan_stormrage::ScheduleAbilities(), boss_razuvious_minion::boss_razuvious_minionAI::ScheduleAttackDummy(), boss_warbringer_omrogg::ScheduleBurningPhase(), boss_taldaram::ScheduleCombatEvents(), boss_magtheridon::ScheduleCombatEvents(), npc_necrotic_shard::ScheduleCultistSpawnTask(), npc_amanishi_tempest::ScheduleEvents(), boss_gal_darah::ScheduleEvents(), npc_dream_fog::npc_dream_fogAI::ScheduleEvents(), boss_nightbane::ScheduleFly(), boss_nightbane::ScheduleGround(), boss_felmyst::ScheduleGroundAbilities(), boss_razuvious::boss_razuviousAI::ScheduleInteractWithDeathKnight(), boss_nightbane::ScheduleLand(), boss_alar::ScheduleMainSpellAttack(), npc_necrotic_shard::ScheduleMinionSpawnTask(), boss_warbringer_omrogg::ScheduleNonBurningPhase(), boss_supremus::SchedulePhase(), boss_commander_sarannis::ScheduleReinforcements(), boss_razuvious::boss_razuviousAI::ScheduleRP(), boss_the_lurker_below::SchedulerPhaseOne(), boss_the_lurker_below::SchedulerPhaseTwo(), boss_lady_vashj::ScheduleSpells(), boss_eye_of_cthun::ScheduleTask(), npc_giant_claw_tentacle::ScheduleTasks(), npc_necrotic_shard::ScheduleTasks(), npc_pallid_horror::ScheduleTasks(), boss_attumen::ScheduleTasks(), boss_ayamiss::ScheduleTasks(), boss_cthun::ScheduleTasks(), boss_dred::boss_dredAI::ScheduleTasks(), boss_sjonnir::boss_sjonnirAI::ScheduleTasks(), boss_laj::ScheduleTasks(), ScriptedAI::ScheduleTimedEvent(), boss_grand_warlock_nethekurse::SetData(), boss_warbringer_omrogg::SetData(), boss_thekal::SetData(), boss_hydross_the_unstable::SetForm(), npc_harrison_jones::sGossipSelect(), boss_nalorakk::ShapeShift(), npc_netherspite_infernal::SpellHit(), boss_terestian_illhoof::SpellHit(), npc_harrison_jones::SpellHit(), boss_attumen::SpellHit(), boss_gal_darah::SpellHit(), boss_faerlina::boss_faerlinaAI::SpellHit(), advisor_baseAI::SpellHit(), npc_enslaved_netherwing_drake::SpellHit(), npc_deathstalker_fearleia::sQuestAccept(), boss_heigan::StartFightPhase(), boss_felmyst::StartIntro(), npc_giant_claw_tentacle::Submerge(), boss_ouro::Submerge(), boss_cthun::SummonedCreatureDies(), npc_drakonid_spawner::SummonedCreatureDies(), npc_kiljaeden_controller::SummonedCreatureDies(), boss_warchief_kargath_bladefist::SummonedCreatureDies(), boss_netherspite::SwitchToBanishPhase(), boss_netherspite::SwitchToPortalPhase(), boss_nightbane::TriggerHealthTakeOff(), npc_flameshocker::UpdateAI(), npc_pallid_horror::UpdateAI(), BossAI::UpdateAI(), npc_drakonid_spawner::UpdateAI(), boss_attumen::UpdateAI(), boss_midnight::UpdateAI(), boss_moroes::UpdateAI(), boss_netherspite::UpdateAI(), boss_nightbane::UpdateAI(), npc_netherspite_infernal::UpdateAI(), npc_malchezaar_axe::UpdateAI(), boss_shade_of_aran::UpdateAI(), npc_sanguine_spirit::UpdateAI(), boss_priestess_lackey_commonAI::UpdateAI(), boss_apothecary_hummel::boss_apothecary_hummelAI::UpdateAI(), boss_felmyst::UpdateAI(), boss_kalec::UpdateAI(), boss_sathrovarr::UpdateAI(), npc_kiljaeden_controller::UpdateAI(), boss_entropius::UpdateAI(), npc_singularity::UpdateAI(), npc_king_magni_bronzebeard::UpdateAI(), boss_alyson_antille::UpdateAI(), npc_janalai_hatcher::UpdateAI(), npc_harrison_jones::UpdateAI(), npc_amanishi_tempest::UpdateAI(), boss_thekal::UpdateAI(), npc_midsummer_ribbon_pole_target::UpdateAI(), boss_azuregos::boss_azuregosAI::UpdateAI(), npc_doomfire_spirit::UpdateAI(), npc_hyjal_jaina::hyjalJainaAI::UpdateAI(), npc_hyjal_thrall::hyjalThrallAI::UpdateAI(), npc_hyjal_tyrande::hyjalTyrandeAI::UpdateAI(), npc_hyjal_ground_trash::UpdateAI(), npc_hyjal_gargoyle::UpdateAI(), npc_hyjal_frost_wyrm::UpdateAI(), boss_lieutenant_drake::UpdateAI(), npc_hivezara_stinger::UpdateAI(), npc_obsidian_destroyer::UpdateAI(), boss_cthun::UpdateAI(), npc_eye_tentacle::UpdateAI(), npc_claw_tentacle::UpdateAI(), npc_giant_claw_tentacle::UpdateAI(), npc_giant_eye_tentacle::UpdateAI(), boss_ouro::UpdateAI(), npc_dirt_mound::UpdateAI(), boss_twinemperorsAI::UpdateAI(), boss_viscidus::UpdateAI(), boss_glob_of_viscidus::UpdateAI(), npc_anubisath_defender::UpdateAI(), npc_vekniss_stinger::UpdateAI(), npc_anubisath_warder::UpdateAI(), boss_volazj::UpdateAI(), boss_anub_arak::UpdateAI(), boss_sartharion::UpdateAI(), boss_novos::UpdateAI(), boss_heigan::UpdateAI(), boss_razuvious_minion::boss_razuvious_minionAI::UpdateAI(), npc_nexus_lord::UpdateAI(), npc_scion_of_eternity::UpdateAI(), npc_alexstrasza::UpdateAI(), boss_freya::UpdateAI(), boss_hodir::UpdateAI(), boss_kologarn_pit_kill_bunny::UpdateAI(), boss_yoggsaron_keeper::UpdateAI(), npc_ulduar_keeper::npc_ulduar_keeperAI::UpdateAI(), npc_enslaved_proto_drake::UpdateAI(), npc_cosmetic_toy_plane::UpdateAI(), npc_time_lost_proto_drake::npc_time_lost_proto_drakeAI::UpdateAI(), npc_wild_wyrm::UpdateAI(), npc_overlord_drakuru_betrayal::UpdateAI(), boss_exarch_maladaar::UpdateAI(), boss_shirrak_the_dead_watcher::UpdateAI(), boss_nexusprince_shaffar::UpdateAI(), boss_anzu::UpdateAI(), boss_ambassador_hellmaw::UpdateAI(), boss_blackheart_the_inciter::UpdateAI(), npc_akama_illidan::UpdateAI(), npc_maiev_illidan::UpdateAI(), npc_parasitic_shadowfiend::UpdateAI(), npc_flame_of_azzinoth::UpdateAI(), boss_illidari_council::UpdateAI(), boss_high_nethermancer_zerevor::UpdateAI(), boss_reliquary_of_souls::boss_reliquary_of_soulsAI::UpdateAI(), boss_essence_of_suffering::boss_essence_of_sufferingAI::UpdateAI(), boss_essence_of_desire::boss_essence_of_desireAI::UpdateAI(), boss_essence_of_anger::boss_essence_of_angerAI::UpdateAI(), boss_shade_of_akama::UpdateAI(), npc_akama_shade::UpdateAI(), npc_creature_generator_akama::UpdateAI(), npc_supremus_punch_invisible_stalker::UpdateAI(), boss_teron_gorefiend::UpdateAI(), boss_doomlord_kazzak::boss_doomlordkazzakAI::UpdateAI(), boss_doomwalker::UpdateAI(), boss_fathomguard_sharkkis::UpdateAI(), boss_lady_vashj::UpdateAI(), boss_leotheras_the_blind::UpdateAI(), npc_inner_demon::UpdateAI(), boss_the_lurker_below::UpdateAI(), npc_rancid_mushroom::UpdateAI(), boss_ghazan::UpdateAI(), boss_the_black_stalker::UpdateAI(), boss_gruul::UpdateAI(), boss_high_king_maulgar::UpdateAI(), boss_omor_the_unscarred::UpdateAI(), boss_watchkeeper_gargolmar::UpdateAI(), boss_magtheridon::UpdateAI(), boss_grand_warlock_nethekurse::UpdateAI(), boss_warbringer_omrogg::UpdateAI(), boss_warchief_kargath_bladefist::UpdateAI(), boss_alar::UpdateAI(), advisor_baseAI::UpdateAI(), npc_raging_flames::UpdateAI(), npc_enslaved_netherwing_drake::UpdateAI(), npc_dream_fog::npc_dream_fogAI::UpdateAI(), npc_herald_of_the_lich_king::UpdateAI(), npc_necrotic_shard::UpdateAI(), npc_minion_spawner::UpdateAI(), and npc_cultist_engineer::UpdateAI().


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