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 IsHeroic () 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=EVADE_REASON_OTHER)
 
void JustEnteredCombat (Unit *) override
 
virtual void JustStartedThreateningMe (Unit *who)
 
virtual void JustEngagedWith (Unit *)
 
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 (Creature *creature=nullptr)
 
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 *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 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 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 JustExitedCombat ()
 
virtual void LeavingWorld ()
 
virtual void DamageDealt (Unit *, uint32 &, DamageEffectType)
 
virtual void DamageTaken (Unit *, uint32 &, DamageEffectType, SpellInfo const *)
 
virtual void HealReceived (Unit *, uint32 &)
 
virtual void HealDone (Unit *, uint32 &)
 
virtual void SpellInterrupted (uint32, uint32)
 
void AttackStartCaster (Unit *victim, float dist)
 
SpellCastResult DoCast (uint32 spellId)
 
SpellCastResult DoCast (Unit *victim, uint32 spellId, CastSpellExtraArgs const &args={})
 
SpellCastResult DoCastSelf (uint32 spellId, CastSpellExtraArgs const &args={})
 
SpellCastResult DoCastVictim (uint32 spellId, CastSpellExtraArgs const &args={})
 
SpellCastResult DoCastAOE (uint32 spellId, CastSpellExtraArgs const &args={})
 
virtual bool ShouldSparWith (Unit const *) const
 
void DoMeleeAttackIfReady ()
 
bool DoSpellAttackIfReady (uint32 spellId)
 
virtual void OnGameEvent (bool, uint16)
 
virtual std::string GetDebugInfo () const
 

Public Attributes

bool IsFleeing
 

Private Attributes

Difficulty _difficulty
 
bool _isCombatMovementAllowed
 
bool _isHeroic
 

Additional Inherited Members

- Public Types inherited from CreatureAI
enum  EvadeReason {
  EVADE_REASON_NO_HOSTILES, EVADE_REASON_BOUNDARY, EVADE_REASON_NO_PATH, EVADE_REASON_SEQUENCE_BREAK,
  EVADE_REASON_OTHER
}
 
- Static Public Member Functions inherited from CreatureAI
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=EVADE_REASON_OTHER)
 
- Protected Attributes inherited from CreatureAI
Creature *const me
 
CreatureBoundary const * _boundary
 
bool _negateBoundary
 
- Protected Attributes inherited from UnitAI
Unit *const me
 

Constructor & Destructor Documentation

◆ ScriptedAI() [1/2]

ScriptedAI::ScriptedAI ( Creature creature)
explicit
120 : ScriptedAI(creature, creature->GetScriptId()) { }
ScriptedAI(Creature *creature)
Definition: ScriptedCreature.cpp:120
uint32 GetScriptId() const
Definition: Creature.cpp:3003

◆ ScriptedAI() [2/2]

ScriptedAI::ScriptedAI ( Creature creature,
uint32  scriptId 
)
explicit
122  : CreatureAI(creature, scriptId), IsFleeing(false), _isCombatMovementAllowed(true)
123 {
124  _isHeroic = me->GetMap()->IsHeroic();
126 }
Difficulty GetDifficultyID() const
Definition: Map.h:401
bool _isHeroic
Definition: ScriptedCreature.h:308
bool IsFleeing
Definition: ScriptedCreature.h:154
bool IsHeroic() const
Definition: Map.cpp:4440
Map * GetMap() const
Definition: Object.h:555
Creature *const me
Definition: CreatureAI.h:61
Difficulty _difficulty
Definition: ScriptedCreature.h:306
CreatureAI(Creature *creature, uint32 scriptId={})
Definition: CreatureAI.cpp:43
bool _isCombatMovementAllowed
Definition: ScriptedCreature.h:307
+ Here is the call graph for this function:

◆ ~ScriptedAI()

virtual ScriptedAI::~ScriptedAI ( )
inlinevirtual
138 { }
+ Here is the call graph for this function:

Member Function Documentation

◆ AddThreat()

void ScriptedAI::AddThreat ( Unit victim,
float  amount,
Unit who = nullptr 
)
198 {
199  if (!victim)
200  return;
201  if (!who)
202  who = me;
203  who->GetThreatManager().AddThreat(victim, amount, nullptr, true, true);
204 }
Creature *const me
Definition: CreatureAI.h:61
ThreatManager & GetThreatManager()
Definition: Unit.h:1160
void AddThreat(Unit *target, float amount, SpellInfo const *spell=nullptr, bool ignoreModifiers=false, bool ignoreRedirects=false)
== AFFECT MY THREAT LIST ==
Definition: ThreatManager.cpp:298
+ 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_gunship_gunner, npc_scion_of_eternity, npc_phoenix_egg_tk, boss_julianne::boss_julianneAI, boss_grand_astromancer_capernian, npc_lord_illidan_stormrage::npc_lord_illidan_stormrageAI, advisorbase_ai, npc_ashtongue_sorcerer, boss_faction_championsAI, npc_kelthuzad_minionAI, boss_roar::boss_roarAI, boss_veklor::boss_veklorAI, npc_felmyst_trail::npc_felmyst_trailAI, npc_flame_patch_alar, boss_tinhead::boss_tinheadAI, npc_highlord_darion_mograine::npc_highlord_darion_mograineAI, npc_twisted_visage, npc_snobold_vassal, npc_living_mojo, boss_alythess::boss_alythessAI, npc_molten_golem, npc_lesser_shadow_fissure::npc_lesser_shadow_fissureAI, boss_strawman::boss_strawmanAI, boss_deathbringer_saurfang, npc_annhylde_the_caller, boss_valithria_dreamwalker, npc_weegli_blastfuse::npc_weegli_blastfuseAI, npc_warden_mellichar, npc_hive_zara_larva::npc_hive_zara_larvaAI, boss_lady_deathwhisper, boss_archmage_arugal::boss_archmage_arugalAI, boss_olm_the_summoner::boss_olm_the_summonerAI, npc_icefang, boss_alar, boss_dorothee::boss_dorotheeAI, boss_brutallus::boss_brutallusAI, boss_felmyst::boss_felmystAI, npc_medivh_bm, boss_grand_warlock_nethekurse::boss_grand_warlock_nethekurseAI, boss_ingvar_the_plunderer, boss_tyrannus, boss_urom, boss_volkhan, boss_gurtogg_bloodboil, boss_novos, npc_millhouse_manastorm, and npc_mageguard_dalaran.

138 {
141  else
142  AttackStartNoMove(who);
143 }
bool IsCombatMovementAllowed() const
Definition: ScriptedCreature.h:238
void AttackStartNoMove(Unit *target)
Definition: ScriptedCreature.cpp:128
virtual void AttackStart(Unit *)
Definition: UnitAI.cpp:28
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ AttackStartNoMove()

void ScriptedAI::AttackStartNoMove ( Unit target)
129 {
130  if (!who)
131  return;
132 
133  if (me->Attack(who, true))
134  DoStartNoMovement(who);
135 }
bool Attack(Unit *victim, bool meleeAttack)
Definition: Unit.cpp:5514
Creature *const me
Definition: CreatureAI.h:61
void DoStartNoMovement(Unit *target)
Definition: ScriptedCreature.cpp:160
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoCastSpell()

void ScriptedAI::DoCastSpell ( Unit target,
SpellInfo const *  spellInfo,
bool  triggered = false 
)
175 {
176  if (!target || me->IsNonMeleeSpellCast(false))
177  return;
178 
179  me->StopMoving();
180  me->CastSpell(target, spellInfo->Id, triggered ? TRIGGERED_FULL_MASK : TRIGGERED_NONE);
181 }
Definition: SpellDefines.h:240
Creature *const me
Definition: CreatureAI.h:61
Will return SPELL_FAILED_DONT_REPORT in CheckCast functions.
Definition: SpellDefines.h:260
bool IsNonMeleeSpellCast(bool withDelayed, bool skipChanneled=false, bool skipAutorepeat=false, bool isAutoshoot=false, bool skipInstant=true) const
Definition: Unit.cpp:2942
void StopMoving()
Definition: Unit.cpp:9979
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
Definition: Object.cpp:2730
+ Here is the call graph for this function:

◆ DoFindFriendlyCC()

std::list< Creature * > ScriptedAI::DoFindFriendlyCC ( float  range)
439 {
440  std::list<Creature*> list;
441  Trinity::FriendlyCCedInRange u_check(me, range);
443  Cell::VisitAllObjects(me, searcher, range);
444 
445  return list;
446 }
Creature *const me
Definition: CreatureAI.h:61
Definition: GridNotifiers.h:558
Definition: GridNotifiers.h:934
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 
)
449 {
450  std::list<Creature*> list;
451  Trinity::FriendlyMissingBuffInRange u_check(me, range, uiSpellid);
453  Cell::VisitAllObjects(me, searcher, range);
454 
455  return list;
456 }
Creature *const me
Definition: CreatureAI.h:61
Definition: GridNotifiers.h:954
Definition: GridNotifiers.h:558
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:
+ Here is the caller graph for this function:

◆ DoPlaySoundToSet()

void ScriptedAI::DoPlaySoundToSet ( WorldObject source,
uint32  soundId 
)
184 {
185  if (!source)
186  return;
187 
188  if (!sSoundKitStore.LookupEntry(soundId))
189  {
190  TC_LOG_ERROR("scripts.ai", "ScriptedAI::DoPlaySoundToSet: Invalid soundId %u used in DoPlaySoundToSet (Source: %s)", soundId, source->GetGUID().ToString().c_str());
191  return;
192  }
193 
194  source->PlayDirectSound(soundId);
195 }
std::string ToString() const
Definition: ObjectGuid.cpp:531
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:156
#define TC_LOG_ERROR(filterType__,...)
Definition: Log.h:185
void PlayDirectSound(uint32 soundId, Player *target=nullptr, uint32 broadcastTextId=0)
Definition: Object.cpp:3443
DB2Storage< SoundKitEntry > sSoundKitStore("SoundKit.db2", SoundKitLoadInfo::Instance())
+ 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 
)
429 {
430  Unit* unit = nullptr;
431  Trinity::FriendlyBelowHpPctEntryInRange u_check(me, entry, range, minHPDiff, excludeSelf);
433  Cell::VisitAllObjects(me, searcher, range);
434 
435  return unit;
436 }
Creature *const me
Definition: CreatureAI.h:61
Definition: GridNotifiers.h:491
static void VisitAllObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
Definition: CellImpl.h:203
Definition: GridNotifiers.h:912
Definition: Unit.h:746
+ 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 
)
419 {
420  Unit* unit = nullptr;
421  Trinity::MostHPMissingInRange u_check(me, range, minHPDiff);
423  Cell::VisitAllObjects(me, searcher, range);
424 
425  return unit;
426 }
Definition: GridNotifiers.h:870
Creature *const me
Definition: CreatureAI.h:61
Definition: GridNotifiers.h:491
static void VisitAllObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
Definition: CellImpl.h:203
Definition: Unit.h:746
+ 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 
)
286 {
287  return me->SummonCreature(entry, me->GetPositionX() + offsetX, me->GetPositionY() + offsetY, me->GetPositionZ() + offsetZ, angle, TempSummonType(type), despawntime);
288 }
TempSummonType
Definition: ObjectDefines.h:59
float GetPositionY() const
Definition: Position.h:78
Creature *const me
Definition: CreatureAI.h:61
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:1927
float GetPositionZ() const
Definition: Position.h:79
float GetPositionX() 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 
)
155 {
156  if (victim)
157  me->GetMotionMaster()->MoveChase(victim, distance, angle);
158 }
MotionMaster * GetMotionMaster()
Definition: Unit.h:1736
Creature *const me
Definition: CreatureAI.h:61
void MoveChase(Unit *target, Optional< ChaseRange > dist={}, Optional< ChaseAngle > angle={})
Definition: MotionMaster.cpp:618
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoStartNoMovement()

void ScriptedAI::DoStartNoMovement ( Unit target)
161 {
162  if (!victim)
163  return;
164 
166 }
void MoveIdle()
Definition: MotionMaster.cpp:570
MotionMaster * GetMotionMaster()
Definition: Unit.h:1736
Creature *const me
Definition: CreatureAI.h:61
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoStopAttack()

void ScriptedAI::DoStopAttack ( )
169 {
170  if (me->GetVictim())
171  me->AttackStop();
172 }
bool AttackStop()
Definition: Unit.cpp:5624
Creature *const me
Definition: CreatureAI.h:61
Unit * GetVictim() const
Definition: Unit.h:833
+ 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 
)
407 {
408  Map* map = me->GetMap();
409  if (!map->IsDungeon())
410  return;
411 
412  for (MapReference const& mapref : map->GetPlayers())
413  if (Player* player = mapref.GetSource())
414  if (player->IsAlive())
415  player->TeleportTo(me->GetMapId(), x, y, z, o, TELE_TO_NOT_LEAVE_COMBAT);
416 }
bool IsDungeon() const
Definition: Map.cpp:4420
Map * GetMap() const
Definition: Object.h:555
Creature *const me
Definition: CreatureAI.h:61
PlayerList const & GetPlayers() const
Definition: Map.h:438
Definition: Map.h:264
uint32 GetMapId() const
Definition: Position.h:186
Definition: Player.h:811
Definition: Player.h:1131
Definition: MapReference.h:26
+ 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 
)
395 {
396  if (!unit)
397  return;
398 
399  if (Player* player = unit->ToPlayer())
400  player->TeleportTo(unit->GetMapId(), x, y, z, o, TELE_TO_NOT_LEAVE_COMBAT);
401  else
402  TC_LOG_ERROR("scripts.ai", "ScriptedAI::DoTeleportPlayer: Creature %s Tried to teleport non-player unit (%s) to x: %f y:%f z: %f o: %f. Aborted.",
403  me->GetGUID().ToString().c_str(), unit->GetGUID().ToString().c_str(), x, y, z, o);
404 }
static Player * ToPlayer(Object *o)
Definition: Object.h:198
std::string ToString() const
Definition: ObjectGuid.cpp:531
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:156
#define TC_LOG_ERROR(filterType__,...)
Definition: Log.h:185
Creature *const me
Definition: CreatureAI.h:61
uint32 GetMapId() const
Definition: Position.h:186
Definition: Player.h:811
Definition: Player.h:1131
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoTeleportTo() [1/2]

void ScriptedAI::DoTeleportTo ( float  x,
float  y,
float  z,
uint32  time = 0 
)
383 {
384  me->Relocate(x, y, z);
385  float speed = me->GetDistance(x, y, z) / ((float)time * 0.001f);
386  me->MonsterMoveWithSpeed(x, y, z, speed);
387 }
Creature *const me
Definition: CreatureAI.h:61
void Relocate(float x, float y)
Definition: Position.h:64
float GetDistance(WorldObject const *obj) const
Definition: Object.cpp:986
void MonsterMoveWithSpeed(float x, float y, float z, float speed, bool generatePath=false, bool forceDestination=false)
Definition: Unit.cpp:526
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoTeleportTo() [2/2]

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

◆ DUNGEON_MODE()

template<class T >
T const& ScriptedAI::DUNGEON_MODE ( T const &  normal5,
T const &  heroic10 
) const
inline
255  {
256  switch (_difficulty)
257  {
258  case DIFFICULTY_NORMAL:
259  return normal5;
260  case DIFFICULTY_HEROIC:
261  return heroic10;
262  default:
263  break;
264  }
265 
266  return heroic10;
267  }
Definition: DBCEnums.h:668
Difficulty _difficulty
Definition: ScriptedCreature.h:306
Definition: DBCEnums.h:667
+ Here is the caller graph for this function:

◆ ForceCombatStop()

void ScriptedAI::ForceCombatStop ( Creature who,
bool  reset = true 
)
241 {
242  if (!who || !who->IsInCombat())
243  return;
244 
245  who->CombatStop(true);
248 
249  if (reset)
250  {
251  who->LoadCreaturesAddon();
252  who->SetLootRecipient(nullptr);
253  who->ResetPlayerDamageReq();
254  who->SetLastDamagedTime(0);
255  who->SetCannotReachTarget(false);
256  }
257 }
void ResetPlayerDamageReq()
Definition: Creature.h:340
void CombatStop(bool includingCast=false, bool mutualPvP=true)
Definition: Unit.cpp:5670
void SetLastDamagedTime(time_t val)
Definition: Creature.h:367
Definition: MovementDefines.h:61
MotionMaster * GetMotionMaster()
Definition: Unit.h:1736
bool IsInCombat() const
Definition: Unit.h:1149
void Clear()
Definition: MotionMaster.cpp:433
void SetCannotReachTarget(bool cannotReach)
Definition: Creature.cpp:3126
bool LoadCreaturesAddon()
Definition: Creature.cpp:2634
void SetLootRecipient(Unit *unit, bool withGroup=true)
Definition: Creature.cpp:1330
void DoNotReacquireSpellFocusTarget()
Definition: Creature.cpp:3360
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ForceCombatStopForCreatureEntry() [1/2]

void ScriptedAI::ForceCombatStopForCreatureEntry ( uint32  entry,
float  maxSearchRange = 250.0f,
bool  samePhase = true,
bool  reset = true 
)
260 {
261  TC_LOG_DEBUG("scripts.ai", "ScriptedAI::ForceCombatStopForCreatureEntry: called on '%s'. Debug info: %s", me->GetGUID().ToString().c_str(), me->GetDebugInfo().c_str());
262 
263  std::list<Creature*> creatures;
264  Trinity::AllCreaturesOfEntryInRange check(me, entry, maxSearchRange);
266 
267  if (!samePhase)
268  PhasingHandler::SetAlwaysVisible(me, true, false);
269 
270  Cell::VisitGridObjects(me, searcher, maxSearchRange);
271 
272  if (!samePhase)
273  PhasingHandler::SetAlwaysVisible(me, false, false);
274 
275  for (Creature* creature : creatures)
276  ForceCombatStop(creature, reset);
277 }
std::string ToString() const
Definition: ObjectGuid.cpp:531
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:156
static void SetAlwaysVisible(WorldObject *object, bool apply, bool updateVisibility)
Definition: PhasingHandler.cpp:584
Definition: Creature.h:69
static void VisitGridObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
Definition: CellImpl.h:179
Creature *const me
Definition: CreatureAI.h:61
Definition: GridNotifiers.h:558
void ForceCombatStop(Creature *who, bool reset=true)
Definition: ScriptedCreature.cpp:240
Definition: GridNotifiers.h:1538
#define TC_LOG_DEBUG(filterType__,...)
Definition: Log.h:176
std::string GetDebugInfo() const override
Definition: Creature.cpp:3498
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ForceCombatStopForCreatureEntry() [2/2]

void ScriptedAI::ForceCombatStopForCreatureEntry ( std::vector< uint32 creatureEntries,
float  maxSearchRange = 250.0f,
bool  samePhase = true,
bool  reset = true 
)
280 {
281  for (uint32 const entry : creatureEntries)
282  ForceCombatStopForCreatureEntry(entry, maxSearchRange, samePhase, reset);
283 }
uint32_t uint32
Definition: Define.h:143
void ForceCombatStopForCreatureEntry(uint32 entry, float maxSearchRange=250.0f, bool samePhase=true, bool reset=true)
Definition: ScriptedCreature.cpp:259
+ Here is the call graph for this function:

◆ GetDifficulty()

Difficulty ScriptedAI::GetDifficulty ( ) const
inline
248 { return _difficulty; }
Difficulty _difficulty
Definition: ScriptedCreature.h:306
+ Here is the caller graph for this function:

◆ GetPlayerAtMinimumRange()

Player * ScriptedAI::GetPlayerAtMinimumRange ( float  minRange)
459 {
460  Player* player = nullptr;
461 
462  Trinity::PlayerAtMinimumRangeAway check(me, minimumRange);
464  Cell::VisitWorldObjects(me, searcher, minimumRange);
465 
466  return player;
467 }
static void VisitWorldObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
Definition: CellImpl.h:191
Definition: GridNotifiers.h:595
Creature *const me
Definition: CreatureAI.h:61
Definition: GridNotifiers.h:1568
Definition: Player.h:1131
+ Here is the call graph for this function:

◆ GetThreat()

float ScriptedAI::GetThreat ( Unit const *  victim,
Unit const *  who = nullptr 
)
232 {
233  if (!victim)
234  return 0.0f;
235  if (!who)
236  who = me;
237  return who->GetThreatManager().GetThreat(victim);
238 }
Creature *const me
Definition: CreatureAI.h:61
ThreatManager & GetThreatManager()
Definition: Unit.h:1160
float GetThreat(Unit const *who, bool includeOffline=false) const
Definition: ThreatManager.cpp:244
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ HealthAbovePct()

bool ScriptedAI::HealthAbovePct ( uint32  pct) const
296 {
297  return me->HealthAbovePct(pct);
298 }
Creature *const me
Definition: CreatureAI.h:61
bool HealthAbovePct(int32 pct) const
Definition: Unit.h:899
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ HealthBelowPct()

bool ScriptedAI::HealthBelowPct ( uint32  pct) const
291 {
292  return me->HealthBelowPct(pct);
293 }
Creature *const me
Definition: CreatureAI.h:61
bool HealthBelowPct(int32 pct) const
Definition: Unit.h:897
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Is25ManRaid()

bool ScriptedAI::Is25ManRaid ( ) const
inline
Difficulty _difficulty
Definition: ScriptedCreature.h:306
Definition: DBCEnums.h:670
Definition: DBCEnums.h:672
+ Here is the caller graph for this function:

◆ IsCombatMovementAllowed()

bool ScriptedAI::IsCombatMovementAllowed ( ) const
inline
238 { return _isCombatMovementAllowed; }
bool _isCombatMovementAllowed
Definition: ScriptedCreature.h:307
+ Here is the caller graph for this function:

◆ IsHeroic()

bool ScriptedAI::IsHeroic ( ) const
inline
245 { return _isHeroic; }
bool _isHeroic
Definition: ScriptedCreature.h:308
+ Here is the caller graph for this function:

◆ ModifyThreatByPercent()

void ScriptedAI::ModifyThreatByPercent ( Unit victim,
int32  pct,
Unit who = nullptr 
)
207 {
208  if (!victim)
209  return;
210  if (!who)
211  who = me;
212  who->GetThreatManager().ModifyThreatByPercent(victim, pct);
213 }
Creature *const me
Definition: CreatureAI.h:61
ThreatManager & GetThreatManager()
Definition: Unit.h:1160
void ModifyThreatByPercent(Unit *target, int32 percent)
Definition: ThreatManager.h:143
+ 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
271  {
272  switch (_difficulty)
273  {
274  case DIFFICULTY_10_N:
275  return normal10;
276  case DIFFICULTY_25_N:
277  return normal25;
278  default:
279  break;
280  }
281 
282  return normal25;
283  }
Definition: DBCEnums.h:669
Difficulty _difficulty
Definition: ScriptedCreature.h:306
Definition: DBCEnums.h:670
+ 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
287  {
288  switch (_difficulty)
289  {
290  case DIFFICULTY_10_N:
291  return normal10;
292  case DIFFICULTY_25_N:
293  return normal25;
294  case DIFFICULTY_10_HC:
295  return heroic10;
296  case DIFFICULTY_25_HC:
297  return heroic25;
298  default:
299  break;
300  }
301 
302  return heroic25;
303  }
Definition: DBCEnums.h:669
Difficulty _difficulty
Definition: ScriptedCreature.h:306
Definition: DBCEnums.h:671
Definition: DBCEnums.h:670
Definition: DBCEnums.h:672

◆ ResetThreat()

void ScriptedAI::ResetThreat ( Unit victim,
Unit who = nullptr 
)
216 {
217  if (!victim)
218  return;
219  if (!who)
220  who = me;
221  who->GetThreatManager().ResetThreat(victim);
222 }
void ResetThreat(Unit *target)
Definition: ThreatManager.h:145
Creature *const me
Definition: CreatureAI.h:61
ThreatManager & GetThreatManager()
Definition: Unit.h:1160
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ResetThreatList()

void ScriptedAI::ResetThreatList ( Unit who = nullptr)
225 {
226  if (!who)
227  who = me;
229 }
Creature *const me
Definition: CreatureAI.h:61
ThreatManager & GetThreatManager()
Definition: Unit.h:1160
void ResetAllThreat()
Definition: ThreatManager.cpp:462
+ 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 
)
301 {
302  // No target so we can't cast
303  if (!target)
304  return nullptr;
305 
306  // Silenced so we can't cast
308  return nullptr;
309 
310  // Using the extended script system we first create a list of viable spells
311  SpellInfo const* apSpell[MAX_CREATURE_SPELLS];
312  memset(apSpell, 0, MAX_CREATURE_SPELLS * sizeof(SpellInfo*));
313 
314  uint32 spellCount = 0;
315 
316  SpellInfo const* tempSpell = nullptr;
317  AISpellInfoType const* aiSpell = nullptr;
318 
319  // Check if each spell is viable(set it to null if not)
320  for (uint32 spell : me->m_spells)
321  {
322  tempSpell = sSpellMgr->GetSpellInfo(spell, me->GetMap()->GetDifficultyID());
323  aiSpell = GetAISpellInfo(spell, me->GetMap()->GetDifficultyID());
324 
325  // This spell doesn't exist
326  if (!tempSpell || !aiSpell)
327  continue;
328 
329  // Targets and Effects checked first as most used restrictions
330  // Check the spell targets if specified
331  if (targets && !(aiSpell->Targets & (1 << (targets-1))))
332  continue;
333 
334  // Check the type of spell if we are looking for a specific spell type
335  if (effect && !(aiSpell->Effects & (1 << (effect-1))))
336  continue;
337 
338  // Check for school if specified
339  if (school && (tempSpell->SchoolMask & school) == 0)
340  continue;
341 
342  // Check for spell mechanic if specified
343  if (mechanic && tempSpell->Mechanic != mechanic)
344  continue;
345 
346  // Continue if we don't have the mana to actually cast this spell
347  bool hasPower = true;
348  for (SpellPowerCost const& cost : tempSpell->CalcPowerCost(me, tempSpell->GetSchoolMask()))
349  {
350  if (cost.Amount > me->GetPower(cost.Power))
351  {
352  hasPower = false;
353  break;
354  }
355  }
356 
357  if (!hasPower)
358  continue;
359 
360  // Check if the spell meets our range requirements
361  if (rangeMin && me->GetSpellMinRangeForTarget(target, tempSpell) < rangeMin)
362  continue;
363  if (rangeMax && me->GetSpellMaxRangeForTarget(target, tempSpell) > rangeMax)
364  continue;
365 
366  // Check if our target is in range
367  if (me->IsWithinDistInMap(target, float(me->GetSpellMinRangeForTarget(target, tempSpell))) || !me->IsWithinDistInMap(target, float(me->GetSpellMaxRangeForTarget(target, tempSpell))))
368  continue;
369 
370  // All good so lets add it to the spell list
371  apSpell[spellCount] = tempSpell;
372  ++spellCount;
373  }
374 
375  // We got our usable spells so now lets randomly pick one
376  if (!spellCount)
377  return nullptr;
378 
379  return apSpell[urand(0, spellCount - 1)];
380 }
Definition: UnitDefines.h:138
Difficulty GetDifficultyID() const
Definition: Map.h:401
Definition: SpellInfo.h:342
bool IsWithinDistInMap(WorldObject const *obj, float dist2compare, bool is3D=true, bool incOwnRadius=true, bool incTargetRadius=true) const
Definition: Object.cpp:1055
AISpellInfoType * GetAISpellInfo(uint32 spellId, Difficulty difficulty)
Definition: CreatureAI.cpp:38
uint32 SchoolMask
Definition: SpellInfo.h:430
uint32 m_spells[MAX_CREATURE_SPELLS]
Definition: Creature.h:246
uint32 Mechanic
Definition: SpellInfo.h:351
bool HasUnitFlag(UnitFlags flags) const
Definition: Unit.h:948
Map * GetMap() const
Definition: Object.h:555
Definition: SpellInfo.h:336
float GetSpellMaxRangeForTarget(Unit const *target, SpellInfo const *spellInfo) const
Definition: Object.cpp:2181
Creature *const me
Definition: CreatureAI.h:61
const uint32 MAX_CREATURE_SPELLS
Definition: CreatureData.h:370
float GetSpellMinRangeForTarget(Unit const *target, SpellInfo const *spellInfo) const
Definition: Object.cpp:2195
uint8 Effects
Definition: CreatureAIImpl.h:86
#define sSpellMgr
Definition: SpellMgr.h:825
uint32_t uint32
Definition: Define.h:143
SpellSchoolMask GetSchoolMask() const
Definition: SpellInfo.cpp:2362
uint8 Targets
Definition: CreatureAIImpl.h:85
int32 GetPower(Powers power) const
Definition: Unit.cpp:9080
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:42
Definition: CreatureAIImpl.h:75
Optional< SpellPowerCost > CalcPowerCost(Powers powerType, bool optionalCost, WorldObject const *caster, SpellSchoolMask schoolMask, Spell *spell=nullptr) const
Definition: SpellInfo.cpp:3839
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetCombatMovement()

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

146 {
147  // Check if we have a current target
148  if (!UpdateVictim())
149  return;
150 
152 }
bool UpdateVictim()
Definition: CreatureAI.cpp:246
void DoMeleeAttackIfReady()
Definition: UnitAI.cpp:60
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ _difficulty

Difficulty ScriptedAI::_difficulty
private

◆ _isCombatMovementAllowed

bool ScriptedAI::_isCombatMovementAllowed
private

◆ _isHeroic

bool ScriptedAI::_isHeroic
private

◆ IsFleeing

bool ScriptedAI::IsFleeing

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