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 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:275
bool _isEngaged
Definition CreatureAI.h:277
bool _negateBoundary
Definition CreatureAI.h:276
bool m_MoveInLineOfSight_locked
Definition CreatureAI.h:280
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
383{
384 if (me->IsInEvadeMode())
385 return false;
386
387 if (!me->IsAlive())
388 {
390 return false;
391 }
392
393 // Set evade state early to prevent recursion: CombatStop below purges combat
394 // refs, which triggers JustExitedCombat -> EnterEvadeMode -> _EnterEvadeMode.
395 // The IsInEvadeMode() check above will catch it.
396 // EnterEvadeMode will clear this for owned creatures (pets/guardians) that
397 // use MoveFollow instead of MoveTargetedHome.
399
400 // don't remove vehicle auras, passengers aren't supposed to drop off the vehicle
401 // don't remove clone caster on evade (to be verified)
403
404 me->ClearComboPointHolders(); // Remove all combo points targeting this unit
405 me->CombatStop(true);
406 me->LoadCreaturesAddon(true);
407 me->SetLootRecipient(nullptr);
411
412 if (ZoneScript* zoneScript = me->GetZoneScript() ? me->GetZoneScript() : (ZoneScript*)me->GetInstanceScript())
413 zoneScript->OnCreatureEvade(me);
414
415 if (CreatureGroup* formation = me->GetFormation())
416 formation->MemberEvaded(me);
417
418 if (TempSummon* summon = me->ToTempSummon())
419 {
420 if (WorldObject* summoner = summon->GetSummoner())
421 {
422 if (summoner->ToCreature() && summoner->ToCreature()->IsAIEnabled)
423 {
424 summoner->ToCreature()->AI()->SummonedCreatureEvade(me);
425 }
426 else if (summoner->ToGameObject() && summoner->ToGameObject()->AI())
427 {
428 summoner->ToGameObject()->AI()->SummonedCreatureEvade(me);
429 }
430 }
431 }
432
434
435 return true;
436}
@ 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:2680
void SetLootRecipient(Unit *unit, bool withGroup=true)
Definition Creature.cpp:1282
void SetCannotReachTarget(ObjectGuid const &target=ObjectGuid::Empty)
Definition Creature.cpp:3580
CreatureGroup const * GetFormation() const
Definition Creature.h:370
void ResetPlayerDamageReq()
Definition Creature.cpp:3772
void ClearLastLeashExtensionTimePtr()
Definition Creature.cpp:3621
bool IsInEvadeMode() const
Definition Creature.h:137
Definition TemporarySummon.h:50
void RemoveEvadeAuras()
Definition Unit.cpp:5698
bool IsAlive() const
Definition Unit.h:1793
TempSummon * ToTempSummon()
Definition Unit.h:731
void AddUnitState(uint32 f)
Definition Unit.h:735
void ClearComboPointHolders()
Definition Unit.cpp:13282
void CombatStop(bool includingCast=false, bool mutualPvP=true)
Definition Unit.cpp:7469
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.

260{ }

◆ CanAlwaysBeDetectable()

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

Reimplemented in boss_renataki::boss_renatakiAI.

245{ 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.

242{ 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.

610{
611 if (IsInBoundary())
612 return true;
613 else
614 {
616 return false;
617 }
618}
bool IsInBoundary(Position const *who=nullptr) const
Definition CreatureAI.cpp:589
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.

230{}

Referenced by Creature::RemoveCorpse().

◆ DistancingEnded()

virtual void CreatureAI::DistancingEnded ( )
inlinevirtual

Reimplemented in SmartAI.

268{}

◆ DistancingStarted()

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

◆ DoSummon() [1/2]

Creature * CreatureAI::DoSummon ( uint32  entry,
Position const &  pos,
uint32  despawnTime = 30000,
TempSummonType  summonType = TEMPSUMMON_CORPSE_TIMED_DESPAWN 
)
protected
628{
629 return me->SummonCreature(entry, pos, summonType, despawnTime);
630}
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:2394

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(), npc_vh_teleportation_portal::npc_vh_teleportation_portalAI::UpdateAI(), npc_blessed_banner::npc_blessed_bannerAI::UpdateAI(), and boss_ichoron::boss_ichoronAI::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
633{
634 Position pos = obj->GetRandomNearPosition(radius);
635 return me->SummonCreature(entry, pos, summonType, despawnTime);
636}
Position GetRandomNearPosition(float radius)
Definition Object.cpp:2802
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
639{
640 Position pos = obj->GetRandomNearPosition(radius);
641 pos.m_positionZ += flightZ;
642 return me->SummonCreature(entry, pos, summonType, despawnTime);
643}
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:158
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:164
bool IsDungeon() const
Definition Map.h:295
uint32 GetId() const
Definition Map.h:230
PlayerList const & GetPlayers() const
Definition Map.h:326
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:14967
void EngageWithTarget(Unit *who)
Definition Unit.cpp:7502
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(), boss_cthun::DoAction(), boss_pathaleon_the_calculator::DoAction(), boss_tyrannus::boss_tyrannusAI::DoAction(), boss_bug_trio::DoFinalSpell(), SummonList::DoZoneInCombat(), StartMovementEvent::Execute(), 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_cyanigosa::boss_cyanigosaAI::JustEngagedWith(), boss_ichoron::boss_ichoronAI::JustEngagedWith(), boss_lavanthor::boss_lavanthorAI::JustEngagedWith(), boss_moragg::boss_moraggAI::JustEngagedWith(), boss_xevozz::boss_xevozzAI::JustEngagedWith(), boss_zuramat::boss_zuramatAI::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(), boss_erekem::boss_erekemAI::JustEngagedWith(), npc_erekem_guard::npc_erekem_guardAI::JustEngagedWith(), 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(), boss_sister_svalna::boss_sister_svalnaAI::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(), npc_ahune_bunny::UpdateAI(), boss_ichoron::boss_ichoronAI::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:170
void AtDisengage() override
Definition Creature.cpp:2842
std::string GetDebugInfo() const override
Definition Creature.cpp:3815

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

Referenced by _EnterEvadeMode(), PossessedAI::JustExitedCombat(), 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:2795

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

Referenced by PossessedAI::JustEnteredCombat(), 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_ragnaros, 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_cyanigosaAI, boss_erekem::boss_erekemAI, boss_ichoron::boss_ichoronAI, boss_lavanthor::boss_lavanthorAI, boss_moragg::boss_moraggAI, boss_xevozz::boss_xevozzAI, boss_zuramat::boss_zuramatAI, 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, npc_green_dragon_combat_trigger::npc_green_dragon_combat_triggerAI, 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_icefang::npc_icefangAI, 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:1712
constexpr float PET_FOLLOW_DIST
Definition PetDefines.h:206
#define sScriptMgr
Definition ScriptMgr.h:734
bool _EnterEvadeMode(EvadeReason why=EVADE_REASON_OTHER)
Definition CreatureAI.cpp:382
void DespawnOnEvade(Seconds respawnDelay=20s)
Definition Creature.cpp:2134
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:1926
MotionMaster * GetMotionMaster()
Definition Unit.h:1758
Unit * GetCharmerOrOwner() const
Definition Unit.h:1286
virtual float GetFollowAngle() const
Definition Unit.h:1895
Vehicle * GetVehicleKit() const
Definition Unit.h:1925
void Reset(bool evading=false)
Definition Vehicle.cpp:121
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_simone::npc_simoneAI::CorpseRemoved(), 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(), boss_cyanigosa::boss_cyanigosaAI::EnterEvadeMode(), boss_erekem::boss_erekemAI::EnterEvadeMode(), boss_ichoron::boss_ichoronAI::EnterEvadeMode(), boss_lavanthor::boss_lavanthorAI::EnterEvadeMode(), boss_moragg::boss_moraggAI::EnterEvadeMode(), boss_xevozz::boss_xevozzAI::EnterEvadeMode(), boss_zuramat::boss_zuramatAI::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(), npc_green_dragon_combat_trigger::npc_green_dragon_combat_triggerAI::EnterEvadeMode(), boss_skadi::boss_skadiAI::EnterEvadeMode(), NPCStaveQuestAI::EvadeOnFeignDeath(), UnitAI::EvadeTimerExpired(), spell_illidari_council_empyreal_balance::HandleAfterCast(), ScriptedAI::IsInRoom(), npc_dragonflayer_forge_master::JustEngagedWith(), JustExitedCombat(), npc_maiev_illidan::JustExitedCombat(), OnCharmed(), FrostwingGauntletRespawner::operator()(), npc_wild_wyrm::PassengerBoarded(), Creature::SelectVictim(), npc_warden_mellichar::npc_warden_mellicharAI::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_magister_aledis::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
254{ 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()

bool CreatureAI::IsEngaged ( ) const
inline

Check if creature is currently engaged in combat.

105{ return _isEngaged; }

References _isEngaged.

Referenced by JustEnteredCombat(), JustStartedThreateningMe(), and SmartAI::UpdateAI().

◆ IsEscorted()

virtual bool CreatureAI::IsEscorted ( )
inlinevirtual

Reimplemented in npc_escortAI, and SmartAI.

178{ return false; }

◆ IsInBoundary()

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

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
601{
602 for (AreaBoundary const* areaBoundary : boundary)
603 if (!areaBoundary->IsWithinBoundary(pos))
604 return false;
605
606 return true;
607}
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.

150{}

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, boss_cyanigosa::boss_cyanigosaAI, boss_erekem::boss_erekemAI, boss_ichoron::boss_ichoronAI, npc_ichor_globule::npc_ichor_globuleAI, boss_lavanthor::boss_lavanthorAI, boss_moragg::boss_moraggAI, boss_xevozz::boss_xevozzAI, boss_zuramat::boss_zuramatAI, npc_vh_void_sentry::npc_vh_void_sentryAI, npc_vh_teleportation_portal::npc_vh_teleportation_portalAI, 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, npc_icefang::npc_icefangAI, 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, 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.

143{}

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_unworthy_initiate::npc_unworthy_initiateAI, 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, npc_risen_archmage::npc_risen_archmageAI, 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, boss_cyanigosa::boss_cyanigosaAI, boss_ichoron::boss_ichoronAI, boss_lavanthor::boss_lavanthorAI, boss_moragg::boss_moraggAI, boss_xevozz::boss_xevozzAI, boss_zuramat::boss_zuramatAI, 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_icefang::npc_icefangAI, 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, npc_green_dragon_combat_trigger::npc_green_dragon_combat_triggerAI, 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_erekem::boss_erekemAI, npc_erekem_guard::npc_erekem_guardAI, 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.

133{}

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, PossessedAI, 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:11394

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_maiev_illidan, and npc_pet_dk_ebon_gargoyle.

311{
313
314 // If creature is alive, in world, and not already evading, trigger evade to return home
315 // Check IsInWorld to avoid evade during server shutdown/cleanup
316 if (me->IsAlive() && me->IsInWorld() && !me->IsInEvadeMode())
318}
bool IsInWorld() const
Definition Object.h:109

References EngagementOver(), EnterEvadeMode(), EVADE_REASON_NO_HOSTILES, Unit::IsAlive(), Creature::IsInEvadeMode(), Object::IsInWorld(), and me.

◆ 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, npc_green_dragon_combat_trigger::npc_green_dragon_combat_triggerAI, 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_mature_netherwing_drake::npc_mature_netherwing_drakeAI, and npc_precious::npc_preciousAI.

199{}

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

◆ JustStartedThreateningMe()

virtual void CreatureAI::JustStartedThreateningMe ( Unit who)
inlinevirtual

Reimplemented in PossessedAI, and NullCreatureAI.

128{ 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_ichoron::boss_ichoronAI, boss_xevozz::boss_xevozzAI, boss_zuramat::boss_zuramatAI, npc_vh_teleportation_portal::npc_vh_teleportation_portalAI, 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, 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.

149{}

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_xevozz::boss_xevozzAI, 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_cyanigosaAI, boss_erekem::boss_erekemAI, boss_ichoron::boss_ichoronAI, boss_zuramat::boss_zuramatAI, 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.

146{}

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

461{
462 Unit *victim = me->GetVictim();
463
465 return;
466
470 if (!sWorld->getBoolConfig(CONFIG_CREATURE_REPOSITION_AGAINST_NPCS) && !victim->IsPlayer() && !victim->IsPet())
471 {
472 return;
473 }
474
475 float moveDist = me->GetMeleeRange(victim) / 2;
476
477 me->GetMotionMaster()->MoveBackwards(victim, moveDist);
478}
@ MOVEMENTFLAG_ROOT
Definition UnitDefines.h:383
@ CONFIG_CREATURE_REPOSITION_AGAINST_NPCS
Definition WorldConfig.h:81
bool IsFreeToMove()
Definition Creature.cpp:929
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:800
#define sWorld
Definition World.h:316

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

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

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_cyanigosaAI, boss_erekem::boss_erekemAI, npc_erekem_guard::npc_erekem_guardAI, boss_ichoron::boss_ichoronAI, npc_ichor_globule::npc_ichor_globuleAI, boss_lavanthor::boss_lavanthorAI, boss_moragg::boss_moraggAI, boss_xevozz::boss_xevozzAI, boss_zuramat::boss_zuramatAI, npc_azure_saboteur::npc_azure_saboteurAI, 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:2635
@ REACT_AGGRESSIVE
Definition Unit.h:568
bool HasReactState(ReactStates state) const
Definition Creature.h:101
bool IsEngaged() const override
Definition Creature.cpp:2858
bool CanStartAttack(Unit const *u, bool force=false) const
Definition Creature.cpp:1870
bool IsMoveInLineOfSightDisabled()
Definition Creature.h:280
virtual void AttackStart(Unit *)
Definition UnitAI.cpp:28
uint32 GetCreatureType() const
Definition Unit.cpp:11894
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_unworthy_initiate::npc_unworthy_initiateAI, 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_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.

184{}

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.

265{ }

Referenced by Unit::_UnapplyAura().

◆ OnChannelFinished()

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

Reimplemented in BossAI, and boss_stormcaller_brundir.

174{}

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, npc_frosthound, and npc_icefang::npc_icefangAI.

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:2098
bool IsAIEnabled
Definition Unit.h:2097
ObjectGuid LastCharmerGUID
Definition Unit.h:2096
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.

168{}

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
165{}

◆ OnTeleportUnreacheablePlayer()

virtual bool CreatureAI::OnTeleportUnreacheablePlayer ( Player )
inlinevirtual

Reimplemented in boss_mandokir::boss_mandokirAI.

262{ 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.

210{ 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.

247{ }

Referenced by Pet::Update().

◆ ReceiveEmote()

◆ SetBoundary()

◆ SetGazeOn()

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

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_ichor_globuleAI, 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, boss_skadi_grauf::boss_skadi_graufAI, 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.

159{}

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::boss_cyanigosaAI, 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.

162{}

Referenced by Spell::DoAllEffectOnTarget().

◆ SummonedCreatureDespawn()

virtual void CreatureAI::SummonedCreatureDespawn ( Creature )
inlinevirtual

◆ SummonedCreatureDespawnAll()

virtual void CreatureAI::SummonedCreatureDespawnAll ( )
inlinevirtual

Reimplemented in BossAI.

154{}

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

153{}

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.

156{}

◆ 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:3475
@ 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:2527
bool IsCivilian() const
Definition Creature.h:79
void SendAIReaction(AiReaction reactionType)
Definition Creature.cpp:2387
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:16411
void StopMoving()
Definition Unit.cpp:12997
bool HasUnitState(const uint32 f) const
Definition Unit.h:736
bool IsHostileTo(Unit const *unit) const
Definition Unit.cpp:7236
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
354{
355 if (!me->IsEngaged())
356 return false;
357
358 if (!me->IsAlive())
359 {
361 return false;
362 }
363
365 {
366 if (Unit* victim = me->SelectVictim())
367 if (victim != me->GetVictim())
368 AttackStart(victim);
369 return me->GetVictim() != nullptr;
370 }
371 else if (!me->IsInCombat())
372 {
374 return false;
375 }
376 else if (me->GetVictim())
377 me->AttackStop();
378
379 return true;
380}
Unit * SelectVictim()
Definition Unit.cpp:11453
bool AttackStop()
Force the unit to stop attacking. This will clear UNIT_STATE_MELEE_ATTACKING, Interrupt current spell...
Definition Unit.cpp:7436

References UnitAI::AttackStart(), Unit::AttackStop(), EngagementOver(), EnterEvadeMode(), EVADE_REASON_NO_HOSTILES, Unit::GetVictim(), Creature::HasReactState(), Unit::IsAlive(), 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_unworthy_initiate::npc_unworthy_initiateAI::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(), boss_cyanigosa::boss_cyanigosaAI::UpdateAI(), boss_erekem::boss_erekemAI::UpdateAI(), npc_erekem_guard::npc_erekem_guardAI::UpdateAI(), boss_lavanthor::boss_lavanthorAI::UpdateAI(), boss_moragg::boss_moraggAI::UpdateAI(), boss_xevozz::boss_xevozzAI::UpdateAI(), boss_zuramat::boss_zuramatAI::UpdateAI(), npc_azure_invader::npc_azure_invaderAI::UpdateAI(), npc_azure_binder::npc_azure_binderAI::UpdateAI(), npc_azure_mage_slayer::npc_azure_mage_slayerAI::UpdateAI(), npc_azure_raider::npc_azure_raiderAI::UpdateAI(), npc_azure_stalker::npc_azure_stalkerAI::UpdateAI(), npc_azure_spellbreaker::npc_azure_spellbreakerAI::UpdateAI(), npc_azure_captain::npc_azure_captainAI::UpdateAI(), npc_azure_sorceror::npc_azure_sorcerorAI::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_icefang::npc_icefangAI::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_magister_aledis::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(), boss_ichoron::boss_ichoronAI::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_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
336{
337 if (!me->IsEngaged())
338 return false;
339
341 {
342 if (me->GetVictim())
343 return true;
344 else
346 }
347
348 if (Unit* victim = me->SelectVictim())
349 AttackStart(victim);
350 return me->GetVictim();
351}

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

194{ }

◆ WaypointPathStarted()

virtual void CreatureAI::WaypointPathStarted ( uint32  )
inlinevirtual

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

Reimplemented in SmartAI.

191{ }

◆ 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_azure_saboteurAI, 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_icefang::npc_icefangAI, 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.

193{ }

◆ WaypointStarted()

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

Reimplemented in SmartAI.

192{ }

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(), 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_hor_lich_king::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::npc_vh_void_sentryAI::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(), JustExitedCombat(), 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_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_target_dummy::npc_target_dummy(), npc_training_dummy::npc_training_dummy(), 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_sentryAI::npc_vh_void_sentryAI(), 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::npc_vh_void_sentryAI::UpdateAI(), npc_vh_teleportation_portal::npc_vh_teleportation_portalAI::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(), PetAI::UpdateAllies(), npc_halion_controller::npc_halion_controllerAI::UpdateCorporeality(), SmartAI::UpdateDespawn(), SmartAI::UpdateFollow(), SmartAI::UpdatePath(), UpdateVictim(), UpdateVictimWithGaze(), and VisualizeBoundary().

◆ 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_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_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: