TrinityCore
ScriptedAI Struct Reference

#include <ScriptedCreature.h>

Public Member Functions

 ScriptedAI (Creature *creature)
 
 ScriptedAI (Creature *creature, uint32 scriptId)
 
virtual ~ScriptedAI ()
 
void AttackStartNoMove (Unit *target)
 
virtual void UpdateAI (uint32 diff) override
 
void AttackStart (Unit *) override
 
void DoStartMovement (Unit *target, float distance=0.0f, float angle=0.0f)
 
void DoStartNoMovement (Unit *target)
 
void DoStopAttack ()
 
void DoCastSpell (Unit *target, SpellInfo const *spellInfo, bool triggered=false)
 
void DoPlaySoundToSet (WorldObject *source, uint32 soundId)
 
void AddThreat (Unit *victim, float amount, Unit *who=nullptr)
 
void ModifyThreatByPercent (Unit *victim, int32 pct, Unit *who=nullptr)
 
void ResetThreat (Unit *victim, Unit *who=nullptr)
 
void ResetThreatList (Unit *who=nullptr)
 
float GetThreat (Unit const *victim, Unit const *who=nullptr)
 
void ForceCombatStop (Creature *who, bool reset=true)
 
void ForceCombatStopForCreatureEntry (uint32 entry, float maxSearchRange=250.0f, bool samePhase=true, bool reset=true)
 
void ForceCombatStopForCreatureEntry (std::vector< uint32 > creatureEntries, float maxSearchRange=250.0f, bool samePhase=true, bool reset=true)
 
void DoTeleportTo (float x, float y, float z, uint32 time=0)
 
void DoTeleportTo (float const pos[4])
 
void DoTeleportPlayer (Unit *unit, float x, float y, float z, float o)
 
void DoTeleportAll (float x, float y, float z, float o)
 
UnitDoSelectLowestHpFriendly (float range, uint32 minHPDiff=1)
 
UnitDoSelectBelowHpPctFriendlyWithEntry (uint32 entry, float range, uint8 hpPct=1, bool excludeSelf=true)
 
std::list< Creature * > DoFindFriendlyCC (float range)
 
std::list< Creature * > DoFindFriendlyMissingBuff (float range, uint32 spellId)
 
PlayerGetPlayerAtMinimumRange (float minRange)
 
CreatureDoSpawnCreature (uint32 entry, float offsetX, float offsetY, float offsetZ, float angle, uint32 type, Milliseconds despawntime)
 
bool HealthBelowPct (uint32 pct) const
 
bool HealthAbovePct (uint32 pct) const
 
SpellInfo const * SelectSpell (Unit *target, uint32 school, uint32 mechanic, SelectTargetType targets, float rangeMin, float rangeMax, SelectEffect effect)
 
void SetEquipmentSlots (bool loadDefault, int32 mainHand=EQUIP_NO_CHANGE, int32 offHand=EQUIP_NO_CHANGE, int32 ranged=EQUIP_NO_CHANGE)
 
void SetCombatMovement (bool allowMovement)
 
bool IsCombatMovementAllowed () const
 
bool IsLFR () const
 
bool IsNormal () const
 
bool IsHeroic () const
 
bool IsMythic () const
 
bool IsMythicPlus () const
 
bool IsHeroicOrHigher () const
 
bool IsTimewalking () const
 
Difficulty GetDifficulty () const
 
bool Is25ManRaid () const
 
template<class T >
T const & DUNGEON_MODE (T const &normal5, T const &heroic10) const
 
template<class T >
T const & RAID_MODE (T const &normal10, T const &normal25) const
 
template<class T >
T const & RAID_MODE (T const &normal10, T const &normal25, T const &heroic10, T const &heroic25) const
 
- Public Member Functions inherited from CreatureAI
 CreatureAI (Creature *creature, uint32 scriptId={})
 
virtual ~CreatureAI ()
 
uint32 GetId () const
 
bool IsEngaged () const
 
void Talk (uint8 id, WorldObject const *whisperTarget=nullptr)
 
void MoveInLineOfSight_Safe (Unit *who)
 == Reactions At ================================= More...
 
void TriggerAlert (Unit const *who) const
 
virtual void EnterEvadeMode (EvadeReason why=EvadeReason::Other)
 
void JustEnteredCombat (Unit *) override
 
virtual void JustStartedThreateningMe (Unit *who)
 
virtual void JustEngagedWith (Unit *)
 
virtual void OnHealthDepleted (Unit *, bool)
 
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 JustSummonedGameobject (GameObject *)
 
virtual void SummonedGameobjectDespawn (GameObject *)
 
virtual void JustRegisteredDynObject (DynamicObject *)
 
virtual void JustUnregisteredDynObject (DynamicObject *)
 
virtual void JustRegisteredAreaTrigger (AreaTrigger *)
 
virtual void JustUnregisteredAreaTrigger (AreaTrigger *)
 
virtual void SpellHit (WorldObject *, SpellInfo const *)
 
virtual void SpellHitTarget (WorldObject *, SpellInfo const *)
 
virtual void OnSpellCast (SpellInfo const *)
 
virtual void OnSpellFailed (SpellInfo const *)
 
virtual void OnSpellStart (SpellInfo const *)
 
virtual void OnChannelFinished (SpellInfo const *)
 
virtual bool IsEscorted () const
 
virtual void JustAppeared ()
 
virtual void MovementInform (uint32, uint32)
 
void OnCharmed (bool isNew) override
 
virtual void JustReachedHome ()
 
void DoZoneInCombat ()
 
virtual void ReceiveEmote (Player *, uint32)
 
virtual void OwnerAttackedBy (Unit *attacker)
 
virtual void OwnerAttacked (Unit *target)
 
virtual void CorpseRemoved (uint32 &)
 == Triggered Actions Requested ================== More...
 
virtual Optional< QuestGiverStatusGetDialogStatus (Player const *player)
 == Gossip system ================================ More...
 
virtual bool OnGossipHello (Player *)
 
virtual bool OnGossipSelect (Player *, uint32, uint32)
 
virtual bool OnGossipSelectCode (Player *, uint32, uint32, char const *)
 
virtual void OnQuestAccept (Player *, Quest const *)
 
virtual void OnQuestReward (Player *, Quest const *, LootItemType, uint32)
 
virtual void WaypointStarted (uint32, uint32)
 == Waypoints system ============================= More...
 
virtual void WaypointReached (uint32, uint32)
 
virtual void WaypointPathEnded (uint32, uint32)
 
virtual void PassengerBoarded (Unit *, int8, bool)
 == Fields ======================================= More...
 
virtual void OnSpellClick (Unit *, bool)
 
virtual bool CanSeeAlways (WorldObject const *)
 
virtual PlayerAIGetAIForCharmedPlayer (Player *)
 
int32 VisualizeBoundary (Seconds duration, Unit *owner=nullptr, bool fill=false) const
 
virtual bool CheckInRoom ()
 
CreatureBoundary const * GetBoundary () const
 
void SetBoundary (CreatureBoundary const *boundary, bool negativeBoundaries=false)
 
bool IsInBoundary (Position const *who=nullptr) const
 
- 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 diff)=0
 
virtual void InitializeAI ()
 
virtual void Reset ()
 
virtual void OnCharmed (bool isNew)
 
virtual void DoAction (int32)
 
virtual uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void SetGUID (ObjectGuid const &, int32=0)
 
virtual ObjectGuid GetGUID (int32=0) const
 
UnitSelectTarget (SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
UnitSelectTarget (SelectTargetMethod targetType, uint32 offset, PREDICATE const &predicate)
 
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 offset, PREDICATE const &predicate)
 
virtual void JustEnteredCombat (Unit *)
 
virtual void JustExitedCombat ()
 
virtual void OnDespawn ()
 
virtual void DamageDealt (Unit *, uint32 &, DamageEffectType)
 
virtual void DamageTaken (Unit *, uint32 &, DamageEffectType, SpellInfo const *)
 
virtual void HealReceived (Unit *, uint32 &)
 
virtual void HealDone (Unit *, uint32 &)
 
virtual void SpellInterrupted (uint32, uint32)
 
void AttackStartCaster (Unit *victim, float dist)
 
SpellCastResult DoCast (uint32 spellId)
 
SpellCastResult DoCast (Unit *victim, uint32 spellId, CastSpellExtraArgs const &args={})
 
SpellCastResult DoCastSelf (uint32 spellId, CastSpellExtraArgs const &args={})
 
SpellCastResult DoCastVictim (uint32 spellId, CastSpellExtraArgs const &args={})
 
SpellCastResult DoCastAOE (uint32 spellId, CastSpellExtraArgs const &args={})
 
bool DoSpellAttackIfReady (uint32 spellId)
 
virtual void OnGameEvent (bool, uint16)
 
virtual std::string GetDebugInfo () const
 

Public Attributes

bool IsFleeing
 

Private Attributes

Difficulty _difficulty
 
bool _isCombatMovementAllowed
 

Additional Inherited Members

- Static Public Member Functions inherited from CreatureAI
static void DoZoneInCombat (Creature *creature)
 
static bool IsInBounds (CreatureBoundary const &boundary, Position const *who)
 
- Static Public Member Functions inherited from UnitAI
static void FillAISpellInfo ()
 
- Static Public Attributes inherited from UnitAI
static std::unordered_map< std::pair< uint32, Difficulty >, AISpellInfoTypeAISpellInfo
 
- Protected Member Functions inherited from CreatureAI
bool UpdateVictim ()
 
CreatureDoSummon (uint32 entry, Position const &pos, Milliseconds despawnTime=30s, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
CreatureDoSummon (uint32 entry, WorldObject *obj, float radius=5.0f, Milliseconds despawnTime=30s, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
CreatureDoSummonFlyer (uint32 entry, WorldObject *obj, float flightZ, float radius=5.0f, Milliseconds despawnTime=30s, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
void EngagementStart (Unit *who)
 
void EngagementOver ()
 
virtual void MoveInLineOfSight (Unit *)
 
bool _EnterEvadeMode (EvadeReason why=EvadeReason::Other)
 
- Protected Attributes inherited from CreatureAI
Creature *const me
 
CreatureBoundary const * _boundary
 
bool _negateBoundary
 
- Protected Attributes inherited from UnitAI
Unit *const me
 

Detailed Description

Definition at line 133 of file ScriptedCreature.h.

Constructor & Destructor Documentation

◆ ScriptedAI() [1/2]

ScriptedAI::ScriptedAI ( Creature creature)
explicit

Definition at line 125 of file ScriptedCreature.cpp.

125: ScriptedAI(creature, creature->GetScriptId()) { }
uint32 GetScriptId() const
Definition: Creature.cpp:3133
ScriptedAI(Creature *creature)

◆ ScriptedAI() [2/2]

ScriptedAI::ScriptedAI ( Creature creature,
uint32  scriptId 
)
explicit

Definition at line 127 of file ScriptedCreature.cpp.

127 : CreatureAI(creature, scriptId), IsFleeing(false), _isCombatMovementAllowed(true)
128{
130}
CreatureAI(Creature *creature, uint32 scriptId={})
Definition: CreatureAI.cpp:45
Creature *const me
Definition: CreatureAI.h:61
Difficulty GetDifficultyID() const
Definition: Map.h:320
Map * GetMap() const
Definition: Object.h:604
Difficulty _difficulty
bool _isCombatMovementAllowed
+ Here is the call graph for this function:

◆ ~ScriptedAI()

virtual ScriptedAI::~ScriptedAI ( )
inlinevirtual

Definition at line 138 of file ScriptedCreature.h.

138{ }

Member Function Documentation

◆ AddThreat()

void ScriptedAI::AddThreat ( Unit victim,
float  amount,
Unit who = nullptr 
)

Definition at line 198 of file ScriptedCreature.cpp.

199{
200 if (!victim)
201 return;
202 if (!who)
203 who = me;
204 who->GetThreatManager().AddThreat(victim, amount, nullptr, true, true);
205}
void AddThreat(Unit *target, float amount, SpellInfo const *spell=nullptr, bool ignoreModifiers=false, bool ignoreRedirects=false)
== AFFECT MY THREAT LIST ==
ThreatManager & GetThreatManager()
Definition: Unit.h:1049
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AttackStart()

void ScriptedAI::AttackStart ( Unit who)
overridevirtual

Reimplemented from UnitAI.

Reimplemented in npc_the_lich_king_tirion_dawn::npc_the_lich_king_tirion_dawnAI, npc_felmyst_trail, npc_medivh_bm, boss_valithria_dreamwalker, npc_scion_of_eternity, npc_annhylde_the_caller, npc_mageguard_dalaran, npc_icefang, npc_lesser_shadow_fissure::npc_lesser_shadow_fissureAI, npc_warden_mellichar, npc_flame_patch_alar, npc_lord_illidan_stormrage::npc_lord_illidan_stormrageAI, npc_living_mojo, boss_novos, npc_gunship_gunner, npc_hive_zara_larva::npc_hive_zara_larvaAI, npc_weegli_blastfuse::npc_weegli_blastfuseAI, npc_snobold_vassal, boss_tyrannus, boss_deathbringer_saurfang, boss_lady_deathwhisper, boss_dorothee::boss_dorotheeAI, boss_strawman::boss_strawmanAI, boss_tinhead::boss_tinheadAI, boss_roar::boss_roarAI, boss_julianne::boss_julianneAI, npc_hearthglen_crusader, npc_highlord_darion_mograine::npc_highlord_darion_mograineAI, boss_brutallus, boss_alythess::boss_alythessAI, boss_felmyst, boss_veklor::boss_veklorAI, npc_twisted_visage, boss_faction_championsAI, npc_kelthuzad_minionAI, boss_magus_telestra, boss_urom, boss_ingvar_the_plunderer, boss_gurtogg_bloodboil, npc_ashtongue_sorcerer, boss_olm_the_summoner::boss_olm_the_summonerAI, boss_grand_warlock_nethekurse::boss_grand_warlock_nethekurseAI, npc_millhouse_manastorm, boss_alar, advisorbase_ai, boss_grand_astromancer_capernian, and npc_phoenix_egg_tk.

Definition at line 141 of file ScriptedCreature.cpp.

142{
145 else
147}
virtual void AttackStart(Unit *)
Definition: UnitAI.cpp:29
bool IsCombatMovementAllowed() const
void AttackStartNoMove(Unit *target)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AttackStartNoMove()

void ScriptedAI::AttackStartNoMove ( Unit target)

Definition at line 132 of file ScriptedCreature.cpp.

133{
134 if (!who)
135 return;
136
137 if (me->Attack(who, true))
139}
bool Attack(Unit *victim, bool meleeAttack)
Definition: Unit.cpp:5651
void DoStartNoMovement(Unit *target)
+ Here is the caller graph for this function:

◆ DoCastSpell()

void ScriptedAI::DoCastSpell ( Unit target,
SpellInfo const *  spellInfo,
bool  triggered = false 
)

Definition at line 175 of file ScriptedCreature.cpp.

176{
177 if (!target || me->IsNonMeleeSpellCast(false))
178 return;
179
180 me->StopMoving();
181 me->CastSpell(target, spellInfo->Id, triggered ? TRIGGERED_FULL_MASK : TRIGGERED_NONE);
182}
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
Definition: SpellDefines.h:266
@ TRIGGERED_NONE
Not triggered.
Definition: SpellDefines.h:246
bool IsNonMeleeSpellCast(bool withDelayed, bool skipChanneled=false, bool skipAutorepeat=false, bool isAutoshoot=false, bool skipInstant=true) const
Definition: Unit.cpp:3056
void StopMoving()
Definition: Unit.cpp:9983
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition: Object.cpp:2884
+ Here is the call graph for this function:

◆ DoFindFriendlyCC()

std::list< Creature * > ScriptedAI::DoFindFriendlyCC ( float  range)

Definition at line 476 of file ScriptedCreature.cpp.

477{
478 std::list<Creature*> list;
479 Trinity::FriendlyCCedInRange u_check(me, range);
481 Cell::VisitAllObjects(me, searcher, range);
482
483 return list;
484}
static void VisitAllObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
Definition: CellImpl.h:203
+ Here is the call graph for this function:

◆ DoFindFriendlyMissingBuff()

std::list< Creature * > ScriptedAI::DoFindFriendlyMissingBuff ( float  range,
uint32  spellId 
)

Definition at line 486 of file ScriptedCreature.cpp.

487{
488 std::list<Creature*> list;
489 Trinity::FriendlyMissingBuffInRange u_check(me, range, uiSpellid);
491 Cell::VisitAllObjects(me, searcher, range);
492
493 return list;
494}
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoPlaySoundToSet()

void ScriptedAI::DoPlaySoundToSet ( WorldObject source,
uint32  soundId 
)

Definition at line 184 of file ScriptedCreature.cpp.

185{
186 if (!source)
187 return;
188
189 if (!sSoundKitStore.LookupEntry(soundId))
190 {
191 TC_LOG_ERROR("scripts.ai", "ScriptedAI::DoPlaySoundToSet: Invalid soundId {} used in DoPlaySoundToSet (Source: {})", soundId, source->GetGUID().ToString());
192 return;
193 }
194
195 source->PlayDirectSound(soundId);
196}
DB2Storage< SoundKitEntry > sSoundKitStore("SoundKit.db2", &SoundKitLoadInfo::Instance)
#define TC_LOG_ERROR(filterType__,...)
Definition: Log.h:165
std::string ToString() const
Definition: ObjectGuid.cpp:554
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:158
void PlayDirectSound(uint32 soundId, Player *target=nullptr, uint32 broadcastTextId=0)
Definition: Object.cpp:3572
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoSelectBelowHpPctFriendlyWithEntry()

Unit * ScriptedAI::DoSelectBelowHpPctFriendlyWithEntry ( uint32  entry,
float  range,
uint8  hpPct = 1,
bool  excludeSelf = true 
)

Definition at line 466 of file ScriptedCreature.cpp.

467{
468 Unit* unit = nullptr;
469 Trinity::FriendlyBelowHpPctEntryInRange u_check(me, entry, range, minHPDiff, excludeSelf);
471 Cell::VisitAllObjects(me, searcher, range);
472
473 return unit;
474}
Definition: Unit.h:622
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoSelectLowestHpFriendly()

Unit * ScriptedAI::DoSelectLowestHpFriendly ( float  range,
uint32  minHPDiff = 1 
)

Definition at line 456 of file ScriptedCreature.cpp.

457{
458 Unit* unit = nullptr;
459 Trinity::MostHPMissingInRange u_check(me, range, minHPDiff);
461 Cell::VisitAllObjects(me, searcher, range);
462
463 return unit;
464}
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoSpawnCreature()

Creature * ScriptedAI::DoSpawnCreature ( uint32  entry,
float  offsetX,
float  offsetY,
float  offsetZ,
float  angle,
uint32  type,
Milliseconds  despawntime 
)

Definition at line 288 of file ScriptedCreature.cpp.

289{
290 return me->SummonCreature(entry, me->GetPositionX() + offsetX, me->GetPositionY() + offsetY, me->GetPositionZ() + offsetZ, angle, TempSummonType(type), despawntime);
291}
TempSummonType
Definition: ObjectDefines.h:62
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
Definition: Object.cpp:2013
float GetPositionZ() const
Definition: Position.h:78
float GetPositionX() const
Definition: Position.h:76
float GetPositionY() const
Definition: Position.h:77
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoStartMovement()

void ScriptedAI::DoStartMovement ( Unit target,
float  distance = 0.0f,
float  angle = 0.0f 
)

Definition at line 155 of file ScriptedCreature.cpp.

156{
157 if (victim)
158 me->GetMotionMaster()->MoveChase(victim, distance, angle);
159}
void MoveChase(Unit *target, Optional< ChaseRange > dist={}, Optional< ChaseAngle > angle={})
MotionMaster * GetMotionMaster()
Definition: Unit.h:1637
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoStartNoMovement()

void ScriptedAI::DoStartNoMovement ( Unit target)

Definition at line 161 of file ScriptedCreature.cpp.

162{
163 if (!victim)
164 return;
165
167}
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoStopAttack()

void ScriptedAI::DoStopAttack ( )

Definition at line 169 of file ScriptedCreature.cpp.

170{
171 if (me->GetVictim())
172 me->AttackStop();
173}
Unit * GetVictim() const
Definition: Unit.h:710
bool AttackStop()
Definition: Unit.cpp:5762
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoTeleportAll()

void ScriptedAI::DoTeleportAll ( float  x,
float  y,
float  z,
float  o 
)

Definition at line 444 of file ScriptedCreature.cpp.

445{
446 Map* map = me->GetMap();
447 if (!map->IsDungeon())
448 return;
449
450 for (MapReference const& mapref : map->GetPlayers())
451 if (Player* player = mapref.GetSource())
452 if (player->IsAlive())
453 player->TeleportTo(me->GetMapId(), x, y, z, o, TELE_TO_NOT_LEAVE_COMBAT);
454}
@ TELE_TO_NOT_LEAVE_COMBAT
Definition: Player.h:804
Definition: Map.h:187
bool IsDungeon() const
Definition: Map.cpp:3205
PlayerList const & GetPlayers() const
Definition: Map.h:363
uint32 GetMapId() const
Definition: Position.h:185
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoTeleportPlayer()

void ScriptedAI::DoTeleportPlayer ( Unit unit,
float  x,
float  y,
float  z,
float  o 
)

Definition at line 432 of file ScriptedCreature.cpp.

433{
434 if (!unit)
435 return;
436
437 if (Player* player = unit->ToPlayer())
438 player->TeleportTo(unit->GetMapId(), x, y, z, o, TELE_TO_NOT_LEAVE_COMBAT);
439 else
440 TC_LOG_ERROR("scripts.ai", "ScriptedAI::DoTeleportPlayer: Creature {} Tried to teleport non-player unit ({}) to x: {} y:{} z: {} o: {}. Aborted.",
441 me->GetGUID().ToString(), unit->GetGUID().ToString(), x, y, z, o);
442}
static Player * ToPlayer(Object *o)
Definition: Object.h:200
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoTeleportTo() [1/2]

void ScriptedAI::DoTeleportTo ( float const  pos[4])

Definition at line 427 of file ScriptedCreature.cpp.

428{
429 me->NearTeleportTo(position[0], position[1], position[2], position[3]);
430}
void NearTeleportTo(Position const &pos, bool casting=false)
Definition: Unit.cpp:12250
+ Here is the call graph for this function:

◆ DoTeleportTo() [2/2]

void ScriptedAI::DoTeleportTo ( float  x,
float  y,
float  z,
uint32  time = 0 
)

Definition at line 420 of file ScriptedCreature.cpp.

421{
422 me->Relocate(x, y, z);
423 float speed = me->GetDistance(x, y, z) / ((float)time * 0.001f);
424 me->MonsterMoveWithSpeed(x, y, z, speed);
425}
void MonsterMoveWithSpeed(float x, float y, float z, float speed, bool generatePath=false, bool forceDestination=false)
Definition: Unit.cpp:504
float GetDistance(WorldObject const *obj) const
Definition: Object.cpp:1070
void Relocate(float x, float y)
Definition: Position.h:63
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DUNGEON_MODE()

template<class T >
T const & ScriptedAI::DUNGEON_MODE ( T const &  normal5,
T const &  heroic10 
) const
inline

Definition at line 255 of file ScriptedCreature.h.

256 {
257 switch (_difficulty)
258 {
260 return normal5;
262 return heroic10;
263 default:
264 break;
265 }
266
267 return heroic10;
268 }
@ DIFFICULTY_NORMAL
Definition: DBCEnums.h:875
@ DIFFICULTY_HEROIC
Definition: DBCEnums.h:876
+ Here is the caller graph for this function:

◆ ForceCombatStop()

void ScriptedAI::ForceCombatStop ( Creature who,
bool  reset = true 
)

Definition at line 241 of file ScriptedCreature.cpp.

242{
243 if (!who || !who->IsInCombat())
244 return;
245
246 who->CombatStop(true);
249
250 if (reset)
251 {
252 who->LoadCreaturesAddon();
254 who->SetTappedBy(nullptr);
255
257 who->SetLastDamagedTime(0);
258 who->SetCannotReachTarget(false);
259 }
260}
@ MOTION_PRIORITY_NORMAL
bool LoadCreaturesAddon()
Definition: Creature.cpp:2756
bool IsTapListNotClearedOnEvade() const
Definition: Creature.h:255
void SetLastDamagedTime(time_t val)
Definition: Creature.h:389
void DoNotReacquireSpellFocusTarget()
Definition: Creature.cpp:3514
void ResetPlayerDamageReq()
Definition: Creature.h:362
void SetCannotReachTarget(bool cannotReach)
Definition: Creature.cpp:3280
void SetTappedBy(Unit const *unit, bool withGroup=true)
Definition: Creature.cpp:1342
void CombatStop(bool includingCast=false, bool mutualPvP=true)
Definition: Unit.cpp:5808
bool IsInCombat() const
Definition: Unit.h:1038
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ForceCombatStopForCreatureEntry() [1/2]

void ScriptedAI::ForceCombatStopForCreatureEntry ( std::vector< uint32 creatureEntries,
float  maxSearchRange = 250.0f,
bool  samePhase = true,
bool  reset = true 
)

Definition at line 282 of file ScriptedCreature.cpp.

283{
284 for (uint32 const entry : creatureEntries)
285 ForceCombatStopForCreatureEntry(entry, maxSearchRange, samePhase, reset);
286}
uint32_t uint32
Definition: Define.h:143
void ForceCombatStopForCreatureEntry(uint32 entry, float maxSearchRange=250.0f, bool samePhase=true, bool reset=true)
+ Here is the call graph for this function:

◆ ForceCombatStopForCreatureEntry() [2/2]

void ScriptedAI::ForceCombatStopForCreatureEntry ( uint32  entry,
float  maxSearchRange = 250.0f,
bool  samePhase = true,
bool  reset = true 
)

Definition at line 262 of file ScriptedCreature.cpp.

263{
264 TC_LOG_DEBUG("scripts.ai", "ScriptedAI::ForceCombatStopForCreatureEntry: called on '{}'. Debug info: {}", me->GetGUID().ToString(), me->GetDebugInfo());
265
266 std::list<Creature*> creatures;
267 Trinity::AllCreaturesOfEntryInRange check(me, entry, maxSearchRange);
269
270 if (!samePhase)
272
273 Cell::VisitGridObjects(me, searcher, maxSearchRange);
274
275 if (!samePhase)
277
278 for (Creature* creature : creatures)
279 ForceCombatStop(creature, reset);
280}
#define TC_LOG_DEBUG(filterType__,...)
Definition: Log.h:156
std::string GetDebugInfo() const override
Definition: Creature.cpp:3638
static void SetAlwaysVisible(WorldObject *object, bool apply, bool updateVisibility)
static void VisitGridObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
Definition: CellImpl.h:179
void ForceCombatStop(Creature *who, bool reset=true)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetDifficulty()

Difficulty ScriptedAI::GetDifficulty ( ) const
inline

Definition at line 249 of file ScriptedCreature.h.

249{ return _difficulty; }
+ Here is the caller graph for this function:

◆ GetPlayerAtMinimumRange()

Player * ScriptedAI::GetPlayerAtMinimumRange ( float  minRange)

Definition at line 496 of file ScriptedCreature.cpp.

497{
498 Player* player = nullptr;
499
500 Trinity::PlayerAtMinimumRangeAway check(me, minimumRange);
502 Cell::VisitWorldObjects(me, searcher, minimumRange);
503
504 return player;
505}
static void VisitWorldObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
Definition: CellImpl.h:191
+ Here is the call graph for this function:

◆ GetThreat()

float ScriptedAI::GetThreat ( Unit const *  victim,
Unit const *  who = nullptr 
)

Definition at line 232 of file ScriptedCreature.cpp.

233{
234 if (!victim)
235 return 0.0f;
236 if (!who)
237 who = me;
238 return who->GetThreatManager().GetThreat(victim);
239}
float GetThreat(Unit const *who, bool includeOffline=false) const
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ HealthAbovePct()

bool ScriptedAI::HealthAbovePct ( uint32  pct) const

Definition at line 298 of file ScriptedCreature.cpp.

299{
300 return me->HealthAbovePct(pct);
301}
bool HealthAbovePct(int32 pct) const
Definition: Unit.h:777
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ HealthBelowPct()

bool ScriptedAI::HealthBelowPct ( uint32  pct) const

Definition at line 293 of file ScriptedCreature.cpp.

294{
295 return me->HealthBelowPct(pct);
296}
bool HealthBelowPct(int32 pct) const
Definition: Unit.h:775
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Is25ManRaid()

bool ScriptedAI::Is25ManRaid ( ) const
inline

Definition at line 252 of file ScriptedCreature.h.

@ DIFFICULTY_25_HC
Definition: DBCEnums.h:880
@ DIFFICULTY_25_N
Definition: DBCEnums.h:878
+ Here is the caller graph for this function:

◆ IsCombatMovementAllowed()

bool ScriptedAI::IsCombatMovementAllowed ( ) const
inline

Definition at line 238 of file ScriptedCreature.h.

238{ return _isCombatMovementAllowed; }
+ Here is the caller graph for this function:

◆ IsHeroic()

bool ScriptedAI::IsHeroic ( ) const

Definition at line 313 of file ScriptedCreature.cpp.

314{
315 return me->GetMap()->IsHeroic();
316}
bool IsHeroic() const
Definition: Map.cpp:3249
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsHeroicOrHigher()

bool ScriptedAI::IsHeroicOrHigher ( ) const

Definition at line 328 of file ScriptedCreature.cpp.

329{
330 return me->GetMap()->IsHeroicOrHigher();
331}
bool IsHeroicOrHigher() const
Definition: Map.cpp:3282
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsLFR()

bool ScriptedAI::IsLFR ( ) const

Definition at line 303 of file ScriptedCreature.cpp.

304{
305 return me->GetMap()->IsLFR();
306}
bool IsLFR() const
Definition: Map.cpp:3220
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsMythic()

bool ScriptedAI::IsMythic ( ) const

Definition at line 318 of file ScriptedCreature.cpp.

319{
320 return me->GetMap()->IsMythic();
321}
bool IsMythic() const
Definition: Map.cpp:3270
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsMythicPlus()

bool ScriptedAI::IsMythicPlus ( ) const

Definition at line 323 of file ScriptedCreature.cpp.

324{
325 return me->GetMap()->IsMythicPlus();
326}
bool IsMythicPlus() const
Definition: Map.cpp:3277
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsNormal()

bool ScriptedAI::IsNormal ( ) const

Definition at line 308 of file ScriptedCreature.cpp.

309{
310 return me->GetMap()->IsNormal();
311}
bool IsNormal() const
Definition: Map.cpp:3233
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsTimewalking()

bool ScriptedAI::IsTimewalking ( ) const

Definition at line 333 of file ScriptedCreature.cpp.

334{
335 return me->GetMap()->IsTimewalking();
336}
bool IsTimewalking() const
Definition: Map.cpp:3292
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ModifyThreatByPercent()

void ScriptedAI::ModifyThreatByPercent ( Unit victim,
int32  pct,
Unit who = nullptr 
)

Definition at line 207 of file ScriptedCreature.cpp.

208{
209 if (!victim)
210 return;
211 if (!who)
212 who = me;
213 who->GetThreatManager().ModifyThreatByPercent(victim, pct);
214}
void ModifyThreatByPercent(Unit *target, int32 percent)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ RAID_MODE() [1/2]

template<class T >
T const & ScriptedAI::RAID_MODE ( T const &  normal10,
T const &  normal25 
) const
inline

Definition at line 271 of file ScriptedCreature.h.

272 {
273 switch (_difficulty)
274 {
275 case DIFFICULTY_10_N:
276 return normal10;
277 case DIFFICULTY_25_N:
278 return normal25;
279 default:
280 break;
281 }
282
283 return normal25;
284 }
@ DIFFICULTY_10_N
Definition: DBCEnums.h:877
+ Here is the caller graph for this function:

◆ RAID_MODE() [2/2]

template<class T >
T const & ScriptedAI::RAID_MODE ( T const &  normal10,
T const &  normal25,
T const &  heroic10,
T const &  heroic25 
) const
inline

Definition at line 287 of file ScriptedCreature.h.

288 {
289 switch (_difficulty)
290 {
291 case DIFFICULTY_10_N:
292 return normal10;
293 case DIFFICULTY_25_N:
294 return normal25;
295 case DIFFICULTY_10_HC:
296 return heroic10;
297 case DIFFICULTY_25_HC:
298 return heroic25;
299 default:
300 break;
301 }
302
303 return heroic25;
304 }
@ DIFFICULTY_10_HC
Definition: DBCEnums.h:879

◆ ResetThreat()

void ScriptedAI::ResetThreat ( Unit victim,
Unit who = nullptr 
)

Definition at line 216 of file ScriptedCreature.cpp.

217{
218 if (!victim)
219 return;
220 if (!who)
221 who = me;
222 who->GetThreatManager().ResetThreat(victim);
223}
void ResetThreat(Unit *target)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ResetThreatList()

void ScriptedAI::ResetThreatList ( Unit who = nullptr)

Definition at line 225 of file ScriptedCreature.cpp.

226{
227 if (!who)
228 who = me;
230}
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SelectSpell()

SpellInfo const * ScriptedAI::SelectSpell ( Unit target,
uint32  school,
uint32  mechanic,
SelectTargetType  targets,
float  rangeMin,
float  rangeMax,
SelectEffect  effect 
)

Definition at line 338 of file ScriptedCreature.cpp.

339{
340 // No target so we can't cast
341 if (!target)
342 return nullptr;
343
344 // Silenced so we can't cast
345 if (me->IsSilenced(school ? SpellSchoolMask(school) : SPELL_SCHOOL_MASK_MAGIC))
346 return nullptr;
347
348 // Using the extended script system we first create a list of viable spells
349 SpellInfo const* apSpell[MAX_CREATURE_SPELLS];
350 memset(apSpell, 0, MAX_CREATURE_SPELLS * sizeof(SpellInfo*));
351
352 uint32 spellCount = 0;
353
354 SpellInfo const* tempSpell = nullptr;
355 AISpellInfoType const* aiSpell = nullptr;
356
357 // Check if each spell is viable(set it to null if not)
358 for (uint32 spell : me->m_spells)
359 {
360 tempSpell = sSpellMgr->GetSpellInfo(spell, me->GetMap()->GetDifficultyID());
361 aiSpell = GetAISpellInfo(spell, me->GetMap()->GetDifficultyID());
362
363 // This spell doesn't exist
364 if (!tempSpell || !aiSpell)
365 continue;
366
367 // Targets and Effects checked first as most used restrictions
368 // Check the spell targets if specified
369 if (targets && !(aiSpell->Targets & (1 << (targets-1))))
370 continue;
371
372 // Check the type of spell if we are looking for a specific spell type
373 if (effect && !(aiSpell->Effects & (1 << (effect-1))))
374 continue;
375
376 // Check for school if specified
377 if (school && (tempSpell->SchoolMask & school) == 0)
378 continue;
379
380 // Check for spell mechanic if specified
381 if (mechanic && tempSpell->Mechanic != mechanic)
382 continue;
383
384 // Continue if we don't have the mana to actually cast this spell
385 bool hasPower = true;
386 for (SpellPowerCost const& cost : tempSpell->CalcPowerCost(me, tempSpell->GetSchoolMask()))
387 {
388 if (cost.Amount > me->GetPower(cost.Power))
389 {
390 hasPower = false;
391 break;
392 }
393 }
394
395 if (!hasPower)
396 continue;
397
398 // Check if the spell meets our range requirements
399 if (rangeMin && me->GetSpellMinRangeForTarget(target, tempSpell) < rangeMin)
400 continue;
401 if (rangeMax && me->GetSpellMaxRangeForTarget(target, tempSpell) > rangeMax)
402 continue;
403
404 // Check if our target is in range
405 if (me->IsWithinDistInMap(target, float(me->GetSpellMinRangeForTarget(target, tempSpell))) || !me->IsWithinDistInMap(target, float(me->GetSpellMaxRangeForTarget(target, tempSpell))))
406 continue;
407
408 // All good so lets add it to the spell list
409 apSpell[spellCount] = tempSpell;
410 ++spellCount;
411 }
412
413 // We got our usable spells so now lets randomly pick one
414 if (!spellCount)
415 return nullptr;
416
417 return apSpell[urand(0, spellCount - 1)];
418}
AISpellInfoType * GetAISpellInfo(uint32 spellId, Difficulty difficulty)
Definition: CreatureAI.cpp:40
const uint32 MAX_CREATURE_SPELLS
Definition: CreatureData.h:443
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:42
SpellSchoolMask
@ SPELL_SCHOOL_MASK_MAGIC
#define sSpellMgr
Definition: SpellMgr.h:849
uint32 m_spells[MAX_CREATURE_SPELLS]
Definition: Creature.h:272
Optional< SpellPowerCost > CalcPowerCost(Powers powerType, bool optionalCost, WorldObject const *caster, SpellSchoolMask schoolMask, Spell *spell=nullptr) const
Definition: SpellInfo.cpp:3870
uint32 Mechanic
Definition: SpellInfo.h:329
uint32 SchoolMask
Definition: SpellInfo.h:413
SpellSchoolMask GetSchoolMask() const
Definition: SpellInfo.cpp:2465
bool IsSilenced(SpellSchoolMask schoolMask) const
Definition: Unit.h:1439
int32 GetPower(Powers power) const
Definition: Unit.cpp:9337
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
Definition: Object.cpp:1139
float GetSpellMinRangeForTarget(Unit const *target, SpellInfo const *spellInfo) const
Definition: Object.cpp:2307
float GetSpellMaxRangeForTarget(Unit const *target, SpellInfo const *spellInfo) const
Definition: Object.cpp:2293
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetCombatMovement()

void ScriptedAI::SetCombatMovement ( bool  allowMovement)

Definition at line 525 of file ScriptedCreature.cpp.

526{
527 _isCombatMovementAllowed = allowMovement;
528}
+ Here is the caller graph for this function:

◆ SetEquipmentSlots()

void ScriptedAI::SetEquipmentSlots ( bool  loadDefault,
int32  mainHand = EQUIP_NO_CHANGE,
int32  offHand = EQUIP_NO_CHANGE,
int32  ranged = EQUIP_NO_CHANGE 
)

Definition at line 507 of file ScriptedCreature.cpp.

508{
509 if (loadDefault)
510 {
512 return;
513 }
514
515 if (mainHand >= 0)
516 me->SetVirtualItem(0, uint32(mainHand));
517
518 if (offHand >= 0)
519 me->SetVirtualItem(1, uint32(offHand));
520
521 if (ranged >= 0)
522 me->SetVirtualItem(2, uint32(ranged));
523}
int8 GetOriginalEquipmentId() const
Definition: Creature.h:210
void LoadEquipment(int8 id=1, bool force=false)
Definition: Creature.cpp:1945
void SetVirtualItem(uint32 slot, uint32 itemId, uint16 appearanceModId=0, uint16 itemVisual=0)
Definition: Unit.cpp:13517
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ UpdateAI()

void ScriptedAI::UpdateAI ( uint32  diff)
overridevirtual

Implements UnitAI.

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

Definition at line 149 of file ScriptedCreature.cpp.

150{
151 // Check if we have a current target
152 UpdateVictim();
153}
bool UpdateVictim()
Definition: CreatureAI.cpp:245
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ _difficulty

Difficulty ScriptedAI::_difficulty
private

Definition at line 307 of file ScriptedCreature.h.

◆ _isCombatMovementAllowed

bool ScriptedAI::_isCombatMovementAllowed
private

Definition at line 308 of file ScriptedCreature.h.

◆ IsFleeing

bool ScriptedAI::IsFleeing

Definition at line 154 of file ScriptedCreature.h.


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