AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
npc_varian_wrynn::npc_varian_wrynnAI Struct Reference
Inheritance diagram for npc_varian_wrynn::npc_varian_wrynnAI:
npc_escortAI ScriptedAI CreatureAI UnitAI

Public Member Functions

 npc_varian_wrynnAI (Creature *creature)
 
void EnterEvadeMode (EvadeReason) override
 
void Reset () override
 
void JustSummoned (Creature *summonedCreature) override
 
void SummonedCreatureDies (Creature *summon, Unit *) override
 
void UpdateWorldState (Map *map, uint32 id, uint32 state)
 
void SetHoldState (bool bOnHold)
 
void JumpToNextStep (uint32 uiTimer)
 
void SpawnWave (uint32 waveId)
 
void WaypointReached (uint32 waypointId) override
 
void UpdateAI (uint32 diff) override
 
- Public Member Functions inherited from npc_escortAI
 npc_escortAI (Creature *creature)
 
 ~npc_escortAI () override
 
void AttackStart (Unit *who) override
 
void MoveInLineOfSight (Unit *who) override
 
void JustDied (Unit *) override
 
void JustRespawned () override
 
void ReturnToLastPoint ()
 
void EnterEvadeMode (EvadeReason=EVADE_REASON_OTHER) override
 
void UpdateAI (uint32 diff) override
 
virtual void UpdateEscortAI (uint32 diff)
 
void MovementInform (uint32, uint32) override
 
void AddWaypoint (uint32 id, float x, float y, float z, uint32 waitTime=0)
 
bool SetNextWaypoint (uint32 pointId, float x, float y, float z, float orientation)
 
bool SetNextWaypoint (uint32 pointId, bool setPosition=true)
 
bool GetWaypointPosition (uint32 pointId, float &x, float &y, float &z)
 
void GenerateWaypointArray (Movement::PointsArray *points)
 
virtual void WaypointReached (uint32 pointId)=0
 
virtual void WaypointStart (uint32)
 
void Start (bool isActiveAttacker=true, bool run=false, ObjectGuid playerGUID=ObjectGuid::Empty, Quest const *quest=nullptr, bool instantRespawn=false, bool canLoopPath=false, bool resetWaypoints=true)
 
void SetRun (bool on=true)
 
void SetEscortPaused (bool on)
 
bool HasEscortState (uint32 escortState)
 
bool IsEscorted () override
 
void SetMaxPlayerDistance (float newMax)
 
float GetMaxPlayerDistance ()
 
void SetDespawnAtEnd (bool despawn)
 
void SetDespawnAtFar (bool despawn)
 
bool GetAttack ()
 
void SetCanAttack (bool attack)
 
ObjectGuid GetEventStarterGUID ()
 
void AddEscortState (uint32 escortState)
 
void RemoveEscortState (uint32 escortState)
 
- Public Member Functions inherited from ScriptedAI
 ScriptedAI (Creature *creature)
 
 ~ScriptedAI () override
 
void AttackStartNoMove (Unit *target)
 
void DamageTaken (Unit *, uint32 &, DamageEffectType, SpellSchoolMask) override
 
void UpdateAI (uint32 diff) override
 
void JustDied (Unit *) override
 
void KilledUnit (Unit *) override
 
void JustSummoned (Creature *) override
 
void SummonedCreatureDespawn (Creature *) override
 
void SpellHit (Unit *, SpellInfo const *) override
 
void SpellHitTarget (Unit *, SpellInfo const *) override
 
void MovementInform (uint32, uint32) override
 
void OnPossess (bool)
 
bool IsInRoom (const Position *pos, Axis axis, bool above)
 
void Reset () override
 
void JustEngagedWith (Unit *) override
 Called for reaction when initially engaged.
 
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 DoPlayMusic (uint32 soundId, bool zone)
 
void DoAddThreat (Unit *unit, float amount)
 
void DoModifyThreatByPercent (Unit *unit, int32 pct)
 
void DoResetThreat (Unit *unit)
 
void DoResetThreatList ()
 
float DoGetThreat (Unit *unit)
 
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)
 
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, uint32 despawntime)
 
bool IsUniqueTimedEventDone (uint32 id) const
 
void SetUniqueTimedEventDone (uint32 id)
 
void ResetUniqueTimedEvent (uint32 id)
 
void ClearUniqueTimedEventsDone ()
 
void ScheduleTimedEvent (Milliseconds timerMin, Milliseconds timerMax, std::function< void()> exec, Milliseconds repeatMin, Milliseconds repeatMax=0s, uint32 uniqueId=0)
 
void ScheduleTimedEvent (Milliseconds timerMax, std::function< void()> exec, Milliseconds repeatMin, Milliseconds repeatMax=0s, uint32 uniqueId=0)
 
void ScheduleUniqueTimedEvent (Milliseconds timer, std::function< void()> exec, uint32 uniqueId)
 
bool HealthBelowPct (uint32 pct) const
 
bool HealthAbovePct (uint32 pct) const
 
SpellInfo const * SelectSpell (Unit *target, uint32 school, uint32 mechanic, SelectTargetType targets, uint32 powerCostMin, uint32 powerCostMax, 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
 
virtual bool CheckEvadeIfOutOfCombatArea () const
 
bool IsHeroic () const
 
Difficulty GetDifficulty () const
 
bool Is25ManRaid () const
 
template<class T >
const T & DUNGEON_MODE (const T &normal5, const T &heroic10) const
 
template<class T >
const T & RAID_MODE (const T &normal10, const T &normal25) const
 
template<class T >
const T & RAID_MODE (const T &normal10, const T &normal25, const T &heroic10, const T &heroic25) const
 
PlayerSelectTargetFromPlayerList (float maxdist, uint32 excludeAura=0, bool mustBeInLOS=false) const
 
- Public Member Functions inherited from CreatureAI
void Talk (uint8 id, WorldObject const *whisperTarget=nullptr, Milliseconds delay=0s)
 Causes the creature to talk/say the text assigned to their entry in the creature_text database table.
 
void Talk (uint8 id, Milliseconds delay)
 
 CreatureAI (Creature *creature)
 
 ~CreatureAI () override
 
void MoveCircleChecks ()
 
void MoveBackwardsChecks ()
 
void MoveInLineOfSight_Safe (Unit *who)
 == Reactions At =================================
 
void TriggerAlert (Unit const *who) const
 
virtual bool CanRespawn ()
 
virtual void EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 
virtual void JustEngagedWith (Unit *)
 Called for reaction when initially engaged.
 
virtual void JustDied (Unit *)
 
virtual void KilledUnit (Unit *)
 
virtual void JustSummoned (Creature *)
 
virtual void IsSummonedBy (WorldObject *)
 
virtual void SummonedCreatureDespawn (Creature *)
 
virtual void SummonedCreatureDies (Creature *, Unit *)
 
virtual void SummonedCreatureDespawnAll ()
 
virtual void SpellHit (Unit *, SpellInfo const *)
 
virtual void SpellHitTarget (Unit *, SpellInfo const *)
 
virtual void AttackedBy (Unit *)
 
virtual bool IsEscorted ()
 
virtual void JustRespawned ()
 
virtual void MovementInform (uint32, uint32)
 
virtual void PathEndReached (uint32)
 
void OnCharmed (bool apply) override
 
virtual void JustReachedHome ()
 
void DoZoneInCombat (Creature *creature=nullptr, float maxRangeToNearestTarget=250.0f)
 
virtual void ReceiveEmote (Player *, uint32)
 
virtual void OwnerAttackedBy (Unit *)
 
virtual void OwnerAttacked (Unit *)
 
virtual void CorpseRemoved (uint32 &)
 == Triggered Actions Requested ==================
 
virtual void PassengerBoarded (Unit *, int8, bool)
 == Fields =======================================
 
virtual bool BeforeSpellClick (Unit *)
 
virtual void OnSpellClick (Unit *, bool &)
 
virtual bool CanSeeAlways (WorldObject const *)
 
virtual bool CanBeSeen (Player const *)
 
virtual bool CanAlwaysBeDetectable (WorldObject const *)
 
virtual void PetStopAttack ()
 
virtual bool CheckInRoom ()
 
CreatureBoundary const * GetBoundary () const
 
void SetBoundary (CreatureBoundary const *boundary, bool negativeBoundaries=false)
 
bool IsInBoundary (Position const *who=nullptr) const
 
virtual void CalculateThreat (Unit *, float &, SpellInfo const *)
 
virtual bool OnTeleportUnreacheablePlayer (Player *)
 
- Public Member Functions inherited from UnitAI
 UnitAI (Unit *unit)
 
virtual ~UnitAI ()
 
virtual bool CanAIAttack (Unit const *) const
 
virtual void AttackStart (Unit *)
 
virtual void UpdateAI (uint32)=0
 
virtual void InitializeAI ()
 
virtual void Reset ()
 
virtual void OnCharmed (bool apply)=0
 
virtual void DoAction (int32)
 
virtual uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void SetGUID (ObjectGuid, int32=0)
 
virtual ObjectGuid GetGUID (int32=0) const
 
UnitSelectTarget (SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
UnitSelectTarget (SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
 
template<class PREDICATE >
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
virtual void JustEnteredCombat (Unit *)
 Called when the unit enters combat (NOTE: Creature engage logic should NOT be here, but in JustEngagedWith, which happens once threat is established!)
 
virtual void JustExitedCombat ()
 Called when the unit leaves combat.
 
virtual void DamageDealt (Unit *, uint32 &, DamageEffectType)
 
virtual void DamageTaken (Unit *, uint32 &, DamageEffectType, SpellSchoolMask)
 
virtual void HealReceived (Unit *, uint32 &)
 
virtual void OnPowerUpdate (Powers, int32, int32, uint32)
 
virtual void HealDone (Unit *, uint32 &)
 
virtual void OnCalculateMeleeDamageReceived (uint32 &, Unit *)
 
virtual void OnCalculateSpellDamageReceived (int32 &, Unit *)
 
virtual void OnCalculatePeriodicTickReceived (uint32 &, Unit *)
 
void AttackStartCaster (Unit *victim, float dist)
 
SpellCastResult DoAddAuraToAllHostilePlayers (uint32 spellid)
 
SpellCastResult DoCast (uint32 spellId)
 
SpellCastResult DoCast (Unit *victim, uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastSelf (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastToAllHostilePlayers (uint32 spellid, bool triggered=false)
 
SpellCastResult DoCastVictim (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastAOE (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastRandomTarget (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false)
 
SpellCastResult DoCastMaxThreat (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false)
 Cast spell on the max threat target, which may not always be the current victim.
 
float DoGetSpellMaxRange (uint32 spellId, bool positive=false)
 
void DoMeleeAttackIfReady ()
 
bool DoSpellAttackIfReady (uint32 spell)
 
void DoSpellAttackToRandomTargetIfReady (uint32 spell, uint32 threatTablePosition=0, float dist=0.f, bool playerOnly=true)
 
virtual void SummonMovementInform (Creature *, uint32, uint32)
 
virtual void sGossipHello (Player *)
 
virtual void sGossipSelect (Player *, uint32, uint32)
 
virtual void sGossipSelectCode (Player *, uint32, uint32, char const *)
 
virtual void sQuestAccept (Player *, Quest const *)
 
virtual void sQuestSelect (Player *, Quest const *)
 
virtual void sQuestComplete (Player *, Quest const *)
 
virtual void sQuestReward (Player *, Quest const *, uint32)
 
virtual void sOnGameEvent (bool, uint16)
 
virtual std::string GetDebugInfo () const
 

Public Attributes

bool bStepping
 
bool summoned
 
uint32 step
 
uint32 phaseTimer
 
uint32 whirlwindTimer
 
ObjectGuid jainaGUID
 
ObjectGuid putressGUID
 
ObjectGuid blightWormGUID
 
ObjectGuid khanokGUID
 
ObjectGuid thrallGUID
 
ObjectGuid sylvanasGUID
 
ObjectGuid generatorGUID [GENERATOR_MAXCOUNT]
 
ObjectGuid allianceForcesGUID [ALLIANCE_FORCE_MAXCOUNT]
 
ObjectGuid hordeForcesGUID [HORDE_FORCE_MAXCOUNT]
 
GuidVector allianceGuardsGUID
 
EventMap _events
 
- Public Attributes inherited from ScriptedAI
Creatureme
 
bool IsFleeing
 

Additional Inherited Members

- Public Types inherited from ScriptedAI
enum class  Axis {
  AXIS_X ,
  AXIS_Y
}
 
- Public Types inherited from CreatureAI
enum  EvadeReason {
  EVADE_REASON_NO_HOSTILES ,
  EVADE_REASON_BOUNDARY ,
  EVADE_REASON_SEQUENCE_BREAK ,
  EVADE_REASON_NO_PATH ,
  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 AISpellInfoTypeAISpellInfo
 
- Protected Member Functions inherited from npc_escortAI
PlayerGetPlayerForEscort ()
 
- Protected Member Functions inherited from CreatureAI
bool UpdateVictim ()
 
bool UpdateVictimWithGaze ()
 
void SetGazeOn (Unit *target)
 
CreatureDoSummon (uint32 entry, Position const &pos, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
CreatureDoSummon (uint32 entry, WorldObject *obj, float radius=5.0f, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
CreatureDoSummonFlyer (uint32 entry, WorldObject *obj, float flightZ, float radius=5.0f, uint32 despawnTime=30000, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
 
virtual void MoveInLineOfSight (Unit *)
 
bool _EnterEvadeMode (EvadeReason why=EVADE_REASON_OTHER)
 
- Protected Attributes inherited from CreatureAI
Creature *const me
 
EventMap events
 
TaskScheduler scheduler
 
CreatureBoundary const * _boundary
 
bool _negateBoundary
 
- Protected Attributes inherited from UnitAI
Unit *const me
 

Detailed Description

Constructor & Destructor Documentation

◆ npc_varian_wrynnAI()

npc_varian_wrynn::npc_varian_wrynnAI::npc_varian_wrynnAI ( Creature creature)
inline
987 : npc_escortAI(creature)
988 {
989 allianceGuardsGUID.clear();
990 }
Definition: ScriptedEscortAI.h:53
GuidVector allianceGuardsGUID
Definition: zone_undercity.cpp:1010

References allianceGuardsGUID.

Member Function Documentation

◆ EnterEvadeMode()

void npc_varian_wrynn::npc_varian_wrynnAI::EnterEvadeMode ( EvadeReason  )
inlineoverridevirtual

Reimplemented from npc_escortAI.

1015 {
1017 me->CombatStop(true);
1018 me->SetLootRecipient(nullptr);
1019
1021 {
1024 }
1025 else
1026 {
1028 Reset();
1029 }
1030 }
@ STATE_ESCORT_ESCORTING
Definition: ScriptedEscortAI.h:47
@ STATE_ESCORT_RETURNING
Definition: ScriptedEscortAI.h:48
Creature * me
Definition: ScriptedCreature.h:282
bool HasEscortState(uint32 escortState)
Definition: ScriptedEscortAI.h:98
void AddEscortState(uint32 escortState)
Definition: ScriptedEscortAI.h:110
void ReturnToLastPoint()
Definition: ScriptedEscortAI.cpp:193
void ClearAllThreat()
Definition: ThreatMgr.cpp:417
void SetLootRecipient(Unit *unit, bool withGroup=true)
Definition: Creature.cpp:1258
void CombatStop(bool includingCast=false)
Definition: Unit.cpp:10440
MotionMaster * GetMotionMaster()
Definition: Unit.h:2276
ThreatMgr & GetThreatMgr()
Definition: Unit.h:2159
void MoveTargetedHome(bool walk=false)
Definition: MotionMaster.cpp:252
void Reset() override
Definition: zone_undercity.cpp:1032

References npc_escortAI::AddEscortState(), ThreatMgr::ClearAllThreat(), Unit::CombatStop(), Unit::GetMotionMaster(), Unit::GetThreatMgr(), npc_escortAI::HasEscortState(), ScriptedAI::me, MotionMaster::MoveTargetedHome(), Reset(), npc_escortAI::ReturnToLastPoint(), Creature::SetLootRecipient(), STATE_ESCORT_ESCORTING, and STATE_ESCORT_RETURNING.

◆ JumpToNextStep()

void npc_varian_wrynn::npc_varian_wrynnAI::JumpToNextStep ( uint32  uiTimer)
inline
1169 {
1170 phaseTimer = uiTimer;
1171 ++step;
1172 }
uint32 step
Definition: zone_undercity.cpp:995
uint32 phaseTimer
Definition: zone_undercity.cpp:996

References phaseTimer, and step.

Referenced by UpdateAI().

◆ JustSummoned()

void npc_varian_wrynn::npc_varian_wrynnAI::JustSummoned ( Creature summonedCreature)
inlineoverridevirtual

Reimplemented from ScriptedAI.

1116 {
1117 switch (summonedCreature->GetEntry())
1118 {
1119 case NPC_GENERATOR:
1120 summonedCreature->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
1121 summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_WRYNN_BUFF, true);
1122 summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_THRALL_BUFF, true);
1123 summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true);
1124 break;
1125 default:
1126 break;
1127 }
1128 }
@ UNIT_FLAG_NOT_SELECTABLE
Definition: Unit.h:473
@ SPELL_WRYNN_BUFF
Definition: zone_undercity.cpp:406
@ SPELL_SYLVANAS_BUFF
Definition: zone_undercity.cpp:563
@ NPC_GENERATOR
Definition: zone_undercity.cpp:608
@ SPELL_THRALL_BUFF
Definition: zone_undercity.cpp:497
@ IMMUNITY_ID
Definition: SharedDefines.h:1400
uint32 GetEntry() const
Definition: Object.h:109
void ApplySpellImmune(uint32 spellId, uint32 op, uint32 type, bool apply, SpellImmuneBlockType blockType=SPELL_BLOCK_TYPE_ALL)
Definition: Unit.cpp:13383
void SetUnitFlag(UnitFlags flags)
Definition: Unit.h:1495

References Unit::ApplySpellImmune(), Object::GetEntry(), IMMUNITY_ID, NPC_GENERATOR, Unit::SetUnitFlag(), SPELL_SYLVANAS_BUFF, SPELL_THRALL_BUFF, SPELL_WRYNN_BUFF, and UNIT_FLAG_NOT_SELECTABLE.

◆ Reset()

void npc_varian_wrynn::npc_varian_wrynnAI::Reset ( )
inlineoverridevirtual

Reimplemented from ScriptedAI.

1033 {
1035 {
1036 me->SetCorpseDelay(1);
1037 me->SetRespawnTime(1);
1039
1040 bStepping = false;
1041 step = 0;
1042 phaseTimer = 0;
1043 jainaGUID.Clear();
1049
1051 {
1052 putress->DespawnOrUnsummon();
1054 }
1055
1057 {
1058 blightWorm->DespawnOrUnsummon();
1060 }
1061
1063 {
1064 khanok->DespawnOrUnsummon();
1065 khanokGUID.Clear();
1066 }
1067
1069 {
1070 thrall->DespawnOrUnsummon();
1071 thrallGUID.Clear();
1072 }
1073
1075 {
1076 sylvanas->DespawnOrUnsummon();
1078 }
1079
1080 for (uint8 i = 0; i < GENERATOR_MAXCOUNT; ++i)
1081 {
1083 {
1084 generatorGUID[i].Clear();
1085 temp->DespawnOrUnsummon();
1086 }
1087 }
1088
1089 for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
1090 {
1092 {
1094 temp->DespawnOrUnsummon();
1095 }
1096 }
1097
1098 for (ObjectGuid const& guid : allianceGuardsGUID)
1099 if (Creature* temp = ObjectAccessor::GetCreature(*me, guid))
1100 temp->DespawnOrUnsummon();
1101
1102 allianceGuardsGUID.clear();
1103
1104 for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
1105 {
1107 {
1109 temp->DespawnOrUnsummon();
1110 }
1111 }
1112 }
1113 }
std::uint8_t uint8
Definition: Define.h:110
@ UNIT_NPC_FLAG_GOSSIP
Definition: Unit.h:516
@ EVENT_HEROIC_LEAP
Definition: zone_undercity.cpp:411
@ EVENT_WRYNN_BUFF
Definition: zone_undercity.cpp:413
@ EVENT_WHIRLWIND
Definition: zone_undercity.cpp:410
@ EVENT_AGGRO_JAINA
Definition: zone_undercity.cpp:412
@ HORDE_FORCE_MAXCOUNT
Definition: zone_undercity.cpp:720
@ ALLIANCE_FORCE_MAXCOUNT
Definition: zone_undercity.cpp:719
@ GENERATOR_MAXCOUNT
Definition: zone_undercity.cpp:718
Creature * GetCreature(WorldObject const &u, ObjectGuid const guid)
Definition: ObjectAccessor.cpp:213
void ScheduleEvent(uint32 eventId, uint32 time, uint32 group=0, uint32 phase=0)
Definition: EventMap.cpp:56
Definition: Creature.h:46
void SetRespawnTime(uint32 respawn)
Definition: Creature.cpp:3675
void SetCorpseDelay(uint32 delay)
Definition: Creature.h:72
Definition: ObjectGuid.h:120
void Clear()
Definition: ObjectGuid.h:140
void SetNpcFlag(NPCFlags flags)
Definition: Unit.h:1661
bool bStepping
Definition: zone_undercity.cpp:992
ObjectGuid jainaGUID
Definition: zone_undercity.cpp:1000
ObjectGuid putressGUID
Definition: zone_undercity.cpp:1001
ObjectGuid blightWormGUID
Definition: zone_undercity.cpp:1002
EventMap _events
Definition: zone_undercity.cpp:1012
ObjectGuid sylvanasGUID
Definition: zone_undercity.cpp:1005
ObjectGuid allianceForcesGUID[ALLIANCE_FORCE_MAXCOUNT]
Definition: zone_undercity.cpp:1008
ObjectGuid generatorGUID[GENERATOR_MAXCOUNT]
Definition: zone_undercity.cpp:1007
ObjectGuid khanokGUID
Definition: zone_undercity.cpp:1003
ObjectGuid hordeForcesGUID[HORDE_FORCE_MAXCOUNT]
Definition: zone_undercity.cpp:1009
ObjectGuid thrallGUID
Definition: zone_undercity.cpp:1004

References _events, ALLIANCE_FORCE_MAXCOUNT, allianceForcesGUID, allianceGuardsGUID, Unit::ApplySpellImmune(), blightWormGUID, bStepping, ObjectGuid::Clear(), EVENT_AGGRO_JAINA, EVENT_HEROIC_LEAP, EVENT_WHIRLWIND, EVENT_WRYNN_BUFF, GENERATOR_MAXCOUNT, generatorGUID, ObjectAccessor::GetCreature(), npc_escortAI::HasEscortState(), HORDE_FORCE_MAXCOUNT, hordeForcesGUID, IMMUNITY_ID, jainaGUID, khanokGUID, ScriptedAI::me, phaseTimer, putressGUID, EventMap::ScheduleEvent(), Creature::SetCorpseDelay(), Unit::SetNpcFlag(), Creature::SetRespawnTime(), SPELL_SYLVANAS_BUFF, STATE_ESCORT_ESCORTING, step, sylvanasGUID, thrallGUID, and UNIT_NPC_FLAG_GOSSIP.

Referenced by EnterEvadeMode().

◆ SetHoldState()

void npc_varian_wrynn::npc_varian_wrynnAI::SetHoldState ( bool  bOnHold)
inline
1164 {
1165 SetEscortPaused(bOnHold);
1166 }
void SetEscortPaused(bool on)
Definition: ScriptedEscortAI.cpp:523

References npc_escortAI::SetEscortPaused().

Referenced by WaypointReached().

◆ SpawnWave()

void npc_varian_wrynn::npc_varian_wrynnAI::SpawnWave ( uint32  waveId)
inline
1175 {
1176 switch (waveId)
1177 {
1178 case 0:
1180 break;
1181 case 1:
1182 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1183 {
1184 switch (urand(0, 12))
1185 {
1186 case 0:
1188 break;
1189 case 1:
1190 case 2:
1191 case 3:
1193 break;
1194 case 4:
1195 case 5:
1196 case 6:
1198 break;
1199 case 7:
1200 case 8:
1201 case 9:
1203 break;
1204 case 10:
1205 case 11:
1206 case 12:
1208 break;
1209 }
1210 }
1211 break;
1212 case 2:
1213 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1214 {
1215 switch (urand(0, 3))
1216 {
1217 case 0:
1219 break;
1220 case 1:
1222 break;
1223 case 2:
1225 break;
1226 case 3:
1228 break;
1229 }
1230 }
1231 break;
1232 case 3:
1233 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1234 {
1235 switch (urand(0, 4))
1236 {
1237 case 0:
1239 break;
1240 case 1:
1241 case 2:
1243 break;
1244 case 3:
1245 case 4:
1247 break;
1248 }
1249 }
1250 break;
1251 case 4:
1252 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1253 {
1254 switch (urand(0, 5))
1255 {
1256 case 0:
1258 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1259 break;
1260 case 1:
1262 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1263 break;
1264 case 2:
1266 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1267 break;
1268 case 3:
1270 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1271 break;
1272 case 4:
1274 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1275 break;
1276 case 5:
1278 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1279 break;
1280 }
1281 }
1282 break;
1283 case 5:
1284 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1286 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1287 break;
1288 case 6:
1290 {
1291 blightWormGUID = temp->GetGUID();
1292 temp->AddThreat(me, 100.0f);
1293 me->AddThreat(temp, 100.0f);
1295 {
1296 temp->AddThreat(jaina, 100.0f);
1297 jaina->AddThreat(temp, 100.0f);
1298 }
1299 }
1301 {
1302 khanokGUID = temp->GetGUID();
1304 khanok->setDeathState(DeathState::JustDied);
1305 }
1307 {
1308 putressGUID = temp->GetGUID();
1309 temp->CastSpell(temp, SPELL_PUTRESS_CASTING_STATE);
1310 }
1311 for (uint8 i = 0; i < GENERATOR_MAXCOUNT; ++i)
1312 {
1313 switch (i)
1314 {
1315 case 0:
1316 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1433.142212f, 402.493835f, -80.515945f, TEMPSUMMON_MANUAL_DESPAWN))
1317 {
1318 generatorGUID[i] = temp->GetGUID();
1320 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT);
1321 }
1322 break;
1323 case 1:
1324 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1428.677979f, 399.753418f, -79.141609f, TEMPSUMMON_MANUAL_DESPAWN))
1325 {
1326 generatorGUID[i] = temp->GetGUID();
1328 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1329 }
1330 break;
1331 case 2:
1332 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1425.163330f, 402.268951f, -79.299744f, TEMPSUMMON_MANUAL_DESPAWN))
1333 {
1334 generatorGUID[i] = temp->GetGUID();
1336 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1337 }
1338 break;
1339 case 3:
1340 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1427.323242f, 406.853088f, -78.195641f, TEMPSUMMON_MANUAL_DESPAWN))
1341 {
1342 generatorGUID[i] = temp->GetGUID();
1344 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1345 }
1346 break;
1347 case 4:
1348 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1432.465210f, 407.460022f, -81.689384f, TEMPSUMMON_MANUAL_DESPAWN))
1349 {
1350 generatorGUID[i] = temp->GetGUID();
1352 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1353 }
1354 break;
1355 }
1356 }
1357 break;
1358 case 7:
1360 {
1361 allianceGuardsGUID.push_back(temp->GetGUID());
1362 temp->GetMotionMaster()->MovePath(NPC_SW_SOLDIER * 10, false);
1363 }
1365 {
1366 allianceGuardsGUID.push_back(temp->GetGUID());
1367 temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 1, false);
1368 }
1370 {
1371 allianceGuardsGUID.push_back(temp->GetGUID());
1372 temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 2, false);
1373 }
1375 {
1376 allianceGuardsGUID.push_back(temp->GetGUID());
1377 temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 3, false);
1378 }
1379 break;
1380 case 8:
1381 break;
1382 case 9:
1383 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1385 break;
1386 case 10:
1388 {
1389 temp->GetMotionMaster()->MovePath(NPC_DREADLORD * 10, false);
1390 temp->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);
1391 temp->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK_DEST, true);
1392 }
1393 break;
1394 case 11:
1395 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1396 {
1397 switch (urand(0, 3))
1398 {
1399 case 0:
1401 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1402 break;
1403 case 1:
1405 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1406 break;
1407 case 2:
1409 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1410 break;
1411 case 3:
1413 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1414 break;
1415 }
1416 }
1417 break;
1418 case 12:
1420 {
1421 thrallGUID = temp->GetGUID();
1422 temp->SetReactState(REACT_PASSIVE);
1423 temp->SetImmuneToAll(true);
1424 temp->CastSpell(temp, SPELL_THRALL_BUFF);
1425 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1426 }
1428 {
1429 sylvanasGUID = temp->GetGUID();
1430 temp->SetReactState(REACT_PASSIVE);
1431 temp->SetImmuneToAll(true);
1432 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1433 }
1434 for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
1435 {
1437 {
1438 hordeForcesGUID[i] = temp->GetGUID();
1439 temp->SetReactState(REACT_PASSIVE);
1440 temp->SetImmuneToAll(true);
1441 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1442 }
1443 }
1444 break;
1445 case 13:
1446 for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
1447 {
1449 {
1450 allianceForcesGUID[i] = temp->GetGUID();
1451 temp->SetImmuneToAll(true);
1452 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1453 }
1454 }
1455 break;
1456 }
1457 }
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:44
uint32 rand32()
Definition: Random.cpp:72
@ TEMPSUMMON_DEAD_DESPAWN
Definition: Object.h:48
@ TEMPSUMMON_MANUAL_DESPAWN
Definition: Object.h:49
@ TEMPSUMMON_TIMED_DESPAWN
Definition: Object.h:44
@ UNIT_NPC_EMOTESTATE
Definition: UpdateFields.h:140
@ REACT_PASSIVE
Definition: Unit.h:1035
@ NPC_GUARDIAN
Definition: zone_undercity.cpp:673
@ NPC_CHEMIST
Definition: zone_undercity.cpp:674
@ NPC_DOCTOR
Definition: zone_undercity.cpp:677
@ NPC_SW_SOLDIER
Definition: zone_undercity.cpp:679
@ NPC_FELBEAST
Definition: zone_undercity.cpp:676
@ NPC_DREADLORD
Definition: zone_undercity.cpp:672
@ NPC_BETRAYER
Definition: zone_undercity.cpp:675
@ NPC_COLLABORATOR
Definition: zone_undercity.cpp:678
@ NPC_HORDE_SOLDIER
Definition: zone_undercity.cpp:680
@ NPC_KHANOK
Definition: zone_undercity.cpp:634
@ NPC_SYLVANAS
Definition: zone_undercity.cpp:550
static LocationXYZO HordeSpawn[]
Definition: zone_undercity.cpp:805
@ WAVE_MAXCOUNT
Definition: zone_undercity.cpp:717
static LocationXYZO AllianceSpawn[]
Definition: zone_undercity.cpp:756
@ NPC_BLIGHTWORM
Definition: zone_undercity.cpp:590
@ NPC_PUTRESS
Definition: zone_undercity.cpp:605
@ SPELL_PUTRESS_CASTING_STATE
Definition: zone_undercity.cpp:615
@ SPELL_BLIGHT_EMPOWERMENT
Definition: zone_undercity.cpp:611
@ NPC_EXPERIMENT
Definition: zone_undercity.cpp:607
@ NPC_THRALL
Definition: zone_undercity.cpp:448
@ EMOTE_STATE_READY2H
Definition: SharedDefines.h:1970
@ SPELL_EFFECT_KNOCK_BACK_DEST
Definition: SharedDefines.h:922
@ SPELL_EFFECT_KNOCK_BACK
Definition: SharedDefines.h:876
@ IMMUNITY_EFFECT
Definition: SharedDefines.h:1394
TempSummon * SummonCreature(uint32 id, const Position &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false) const
Definition: Object.cpp:2343
float GetPositionZ() const
Definition: Position.h:119
float GetPositionX() const
Definition: Position.h:117
float GetPositionY() const
Definition: Position.h:118
Definition: Unit.h:1302
void AddThreat(Unit *victim, float fThreat, SpellSchoolMask schoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *threatSpell=nullptr)
Definition: Unit.cpp:14639
void MovePoint(uint32 id, const Position &pos, bool generatePath=true, bool forceDestination=true)
Definition: MotionMaster.h:211
void MovePath(uint32 path_id, bool repeatable)
Definition: MotionMaster.cpp:800
float o
Definition: zone_undercity.cpp:753
float y
Definition: zone_undercity.cpp:753
float x
Definition: zone_undercity.cpp:753
float z
Definition: zone_undercity.cpp:753

References Unit::AddThreat(), ALLIANCE_FORCE_MAXCOUNT, allianceForcesGUID, allianceGuardsGUID, AllianceSpawn, blightWormGUID, EMOTE_STATE_READY2H, GENERATOR_MAXCOUNT, generatorGUID, ObjectAccessor::GetCreature(), Unit::GetMotionMaster(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), HORDE_FORCE_MAXCOUNT, hordeForcesGUID, HordeSpawn, IMMUNITY_EFFECT, jainaGUID, khanokGUID, ScriptedAI::me, MotionMaster::MovePath(), MotionMaster::MovePoint(), NPC_BETRAYER, NPC_BLIGHTWORM, NPC_CHEMIST, NPC_COLLABORATOR, NPC_DOCTOR, NPC_DREADLORD, NPC_EXPERIMENT, NPC_FELBEAST, NPC_GENERATOR, NPC_GUARDIAN, NPC_HORDE_SOLDIER, NPC_KHANOK, NPC_PUTRESS, NPC_SW_SOLDIER, NPC_SYLVANAS, NPC_THRALL, LocationXYZO::o, putressGUID, rand32(), REACT_PASSIVE, SPELL_BLIGHT_EMPOWERMENT, SPELL_EFFECT_KNOCK_BACK, SPELL_EFFECT_KNOCK_BACK_DEST, SPELL_PUTRESS_CASTING_STATE, SPELL_THRALL_BUFF, WorldObject::SummonCreature(), sylvanasGUID, TEMPSUMMON_DEAD_DESPAWN, TEMPSUMMON_MANUAL_DESPAWN, TEMPSUMMON_TIMED_DESPAWN, thrallGUID, UNIT_NPC_EMOTESTATE, urand(), WAVE_MAXCOUNT, LocationXYZO::x, LocationXYZO::y, and LocationXYZO::z.

Referenced by UpdateAI().

◆ SummonedCreatureDies()

void npc_varian_wrynn::npc_varian_wrynnAI::SummonedCreatureDies ( Creature summon,
Unit  
)
inlineoverridevirtual

Reimplemented from CreatureAI.

1131 {
1132 switch (summon->GetEntry())
1133 {
1134 case NPC_BLIGHTWORM:
1137 bStepping = true;
1138 break;
1139 case NPC_PUTRESS:
1142 bStepping = true;
1143 break;
1144 default:
1145 break;
1146 }
1147 }
@ WORLD_STATE_SEWERS_FIGHT_A
Definition: zone_undercity.cpp:732
@ WORLD_STATE_APOTHECARIUM_DONE_A
Definition: zone_undercity.cpp:735
@ WORLD_STATE_SEWERS_DONE_A
Definition: zone_undercity.cpp:733
@ WORLD_STATE_APOTHECARIUM_FIGHT_A
Definition: zone_undercity.cpp:734
Map * GetMap() const
Definition: Object.h:517
void UpdateWorldState(Map *map, uint32 id, uint32 state)
Definition: zone_undercity.cpp:1149

References bStepping, Object::GetEntry(), WorldObject::GetMap(), ScriptedAI::me, NPC_BLIGHTWORM, NPC_PUTRESS, UpdateWorldState(), WORLD_STATE_APOTHECARIUM_DONE_A, WORLD_STATE_APOTHECARIUM_FIGHT_A, WORLD_STATE_SEWERS_DONE_A, and WORLD_STATE_SEWERS_FIGHT_A.

◆ UpdateAI()

void npc_varian_wrynn::npc_varian_wrynnAI::UpdateAI ( uint32  diff)
inlineoverridevirtual

Reimplemented from npc_escortAI.

1528 {
1530
1531 if (bStepping)
1532 {
1533 if (phaseTimer <= diff)
1534 {
1535 switch (step)
1536 {
1537 //Preparation
1538 case 0:
1539 me->setActive(true);
1543 break;
1544 case 1:
1547 break;
1548 case 2:
1551 break;
1552 case 3:
1555 break;
1556 case 4:
1561 break;
1562 case 5:
1565 break;
1566 case 6:
1569 break;
1570 case 7:
1571 SetEscortPaused(false);
1573 break;
1574 case 8:
1576 {
1577 jaina->GetMotionMaster()->MovePath(NPC_JAINA * 10, false);
1578 jaina->setActive(true);
1579 }
1580 bStepping = false;
1581 JumpToNextStep(0);
1582 break;
1583 //Sewers
1584 case 9:
1586 SpawnWave(0);
1587 SpawnWave(1);
1588 SpawnWave(2);
1589 SpawnWave(3);
1590 JumpToNextStep(9500);
1591 break;
1592 case 10:
1594 jaina->AI()->Talk(JAINA_SAY_SEWERS_1);
1596 break;
1597 case 11:
1599 jaina->AI()->DoCast(SPELL_JAINA_BUFF);
1601 break;
1602 case 12:
1603 SetEscortPaused(false);
1607 break;
1608 case 13:
1610 {
1611 jaina->GetMotionMaster()->MoveFollow(me, 5, PET_FOLLOW_ANGLE);
1612 jaina->SetReactState(REACT_AGGRESSIVE);
1613 jaina->SetFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE);
1614 }
1615 bStepping = false;
1616 JumpToNextStep(0);
1617 break;
1618 case 14:
1621 break;
1622 case 15:
1623 SpawnWave(4);
1625 break;
1626 case 16:
1627 SpawnWave(5);
1629 break;
1630 case 17:
1631 SpawnWave(4);
1633 break;
1634 case 18:
1635 SpawnWave(4);
1637 break;
1638 case 19:
1639 SpawnWave(5);
1641 break;
1642 case 20:
1643 SpawnWave(6);
1644 bStepping = false;
1645 JumpToNextStep(0);
1646 break;
1647 case 21:
1649 SpawnWave(7);
1651 break;
1652 case 22:
1654 SetRun(false);
1656 {
1657 jaina->GetMotionMaster()->Clear();
1658 jaina->GetMotionMaster()->MoveFollow(me, 1, 0);
1659 }
1661 break;
1662 case 23:
1663 bStepping = false;
1664 SetEscortPaused(false);
1665 JumpToNextStep(0);
1666 break;
1667 //Apothecarium
1668 case 24:
1670 jaina->AI()->Talk(JAINA_SAY_APO_1);
1672 break;
1673 case 25:
1674 SetEscortPaused(false);
1675 bStepping = false;
1676 JumpToNextStep(0);
1677 break;
1678 case 26:
1682 break;
1683 case 27:
1686 break;
1687 case 28:
1690 break;
1691 case 29:
1694 break;
1695 case 30:
1698 putress->AI()->Talk(PUTRESS_SAY_1);
1699 if (Player* player = GetPlayerForEscort())
1700 player->PlayDirectSound(SOUND_PUTRESS, player);
1701 SpawnWave(9);
1703 break;
1704 case 31:
1705 SetRun(true);
1707 jaina->GetMotionMaster()->MoveFollow(me, 1, 0);
1708 SetEscortPaused(false);
1709 bStepping = false;
1710 JumpToNextStep(0);
1711 break;
1712 case 32:
1714 SpawnWave(10);
1716 break;
1717 case 33:
1718 SpawnWave(10);
1720 break;
1721 case 34:
1722 SpawnWave(10);
1724 break;
1725 case 35:
1726 SpawnWave(10);
1728 break;
1729 case 36:
1730 SpawnWave(10);
1732 break;
1733 case 37:
1734 SpawnWave(10);
1736 break;
1737 case 38:
1738 SpawnWave(10);
1740 break;
1741 case 39:
1742 SpawnWave(10);
1744 break;
1745 case 40:
1746 SpawnWave(10);
1748 break;
1749 case 41:
1750 SpawnWave(10);
1752 break;
1753 case 42:
1754 SpawnWave(10);
1756 break;
1757 case 43:
1758 SetEscortPaused(false);
1759 bStepping = false;
1760 JumpToNextStep(0);
1761 break;
1762 case 44:
1765 {
1766 jaina->GetMotionMaster()->Clear();
1767 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[7].x, AllianceWP[7].y, AllianceWP[7].z, false);
1768 }
1770 break;
1771 case 45:
1772 SetEscortPaused(false);
1773 bStepping = false;
1774 JumpToNextStep(0);
1775 break;
1776 case 46:
1779 break;
1780 case 47:
1782 putress->AI()->Talk(PUTRESS_SAY_3);
1783 SpawnWave(11);
1785 break;
1786 case 48:
1788 putress->AI()->Talk(PUTRESS_SAY_4);
1790 break;
1791 case 49:
1793 putress->AI()->Talk(PUTRESS_SAY_5);
1794 SpawnWave(11);
1796 break;
1797 case 50:
1799 putress->AI()->Talk(PUTRESS_SAY_6);
1801 break;
1802 case 51:
1804 putress->AI()->Talk(PUTRESS_SAY_7);
1805 SpawnWave(11);
1807 break;
1808 case 52:
1810 {
1811 putress->AI()->Talk(PUTRESS_SAY_8);
1812 putress->AI()->DoCast(SPELL_BLIGHT_OVERLOAD);
1813 }
1815 break;
1816 case 53:
1818 {
1819 putress->SetImmuneToAll(false);
1820 putress->AddThreat(me, 100.0f);
1821 me->AddThreat(putress, 100.0f);
1822 putress->RemoveAura(SPELL_PUTRESS_CASTING_STATE);
1823 }
1824 bStepping = false;
1825 JumpToNextStep(0);
1826 break;
1827 case 54:
1829 SetRun(false);
1831 break;
1832 case 55:
1837 break;
1838 case 56:
1842 SetEscortPaused(false);
1843 bStepping = false;
1844 JumpToNextStep(0);
1845 break;
1846 case 57:
1848 break;
1849 case 58:
1852 break;
1853 case 59:
1856 break;
1857 case 60:
1859 SpawnWave(12); // thrall sylvanas horde soldiers
1861 break;
1862 case 61:
1864 thrall->AI()->Talk(THRALL_SAY_THRONE_A_1);
1865 if (Player* player = GetPlayerForEscort())
1866 player->PlayDirectSound(SOUND_THRALL_1, player);
1868 break;
1869 case 62:
1871 thrall->AI()->Talk(THRALL_SAY_THRONE_A_2);
1872 if (Player* player = GetPlayerForEscort())
1873 player->PlayDirectSound(SOUND_THRALL_2, player);
1875 break;
1876 case 63:
1879 break;
1880 case 64:
1883 break;
1884 case 65:
1885 SetRun(true);
1886 SetEscortPaused(false);
1888 break;
1889 case 66:
1891 jaina->AI()->Talk(JAINA_SAY_THRONE_1);
1892 me->SetImmuneToNPC(true);
1893 bStepping = false;
1894 JumpToNextStep(0);
1895 break;
1896 case 67:
1899 break;
1900 case 68:
1903 {
1904 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[8].x, AllianceWP[8].y, AllianceWP[8].z);
1905 jaina->SetImmuneToAll(true);
1906 }
1907 SetEscortPaused(false);
1908 bStepping = false;
1909 JumpToNextStep(0);
1910 break;
1911 case 69:
1913 SpawnWave(13); //alliance soldiers
1915 break;
1916 case 70:
1919 break;
1920 case 71:
1923 break;
1924 case 72:
1927 break;
1928 case 73:
1930 me->SetImmuneToAll(false);
1932 {
1933 thrall->SetReactState(REACT_AGGRESSIVE);
1934 thrall->SetImmuneToNPC(false);
1935 thrall->SetImmuneToPC(true);
1936 thrall->AddThreat(me, 100.0f);
1937 me->AddThreat(thrall, 100.0f);
1938 thrall->AI()->AttackStart(me);
1939 }
1941 {
1942 sylvanas->SetReactState(REACT_AGGRESSIVE);
1943 sylvanas->SetImmuneToNPC(false);
1944 sylvanas->SetImmuneToPC(true);
1945 sylvanas->AddThreat(me, 100.0f);
1946 sylvanas->AI()->AttackStart(me);
1947 me->AddThreat(sylvanas, 100.0f);
1948 }
1949 for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
1950 {
1952 {
1953 temp->SetReactState(REACT_AGGRESSIVE);
1954 temp->SetImmuneToNPC(false);
1955 temp->SetImmuneToPC(true);
1956 }
1957 }
1958 for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
1959 {
1961 {
1963 {
1964 temp->SetReactState(REACT_AGGRESSIVE);
1965 temp2->SetReactState(REACT_AGGRESSIVE);
1966 temp->SetImmuneToAll(false);
1967 temp2->SetImmuneToAll(false);
1968 temp->AddThreat(temp2, 100.0f);
1969 temp->AI()->AttackStart(temp2);
1970 temp2->AddThreat(temp, 100.0f);
1971 }
1972 }
1973 }
1975 break;
1976 case 74:
1978 {
1979 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[9].x, AllianceWP[9].y, AllianceWP[9].z);
1980 jaina->AI()->Talk(JAINA_SAY_THRONE_2);
1981 }
1983 break;
1984 case 75:
1986 {
1987 jaina->AI()->DoCastAOE(SPELL_DEEPFREEZE);
1988 jaina->AI()->Talk(JAINA_SAY_THRONE_3);
1989 }
1991 break;
1992 case 76:
1993 std::list<Creature*> HelperList;
1994 me->GetCreatureListWithEntryInGrid(HelperList, NPC_SW_SOLDIER, 100.0f);
1996 me->GetCreatureListWithEntryInGrid(HelperList, NPC_JAINA, 100.0f);
1997 me->GetCreatureListWithEntryInGrid(HelperList, NPC_SYLVANAS, 100.0f);
1998 me->GetCreatureListWithEntryInGrid(HelperList, NPC_THRALL, 100.0f);
1999 if (!HelperList.empty())
2000 for (std::list<Creature*>::iterator itr = HelperList.begin(); itr != HelperList.end(); itr++)
2001 (*itr)->DespawnOrUnsummon();
2002 if (Map* map = me->GetMap())
2003 {
2004 Map::PlayerList const& PlayerList = map->GetPlayers();
2005 for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
2006 {
2007 if (Player* player = i->GetSource())
2008 {
2009 if (me->IsInRange(player, 0.0f, 50.0f))
2010 {
2011 if (player->GetTeamId() == TEAM_ALLIANCE)
2012 {
2013 player->RemoveAura(SPELL_WRYNN_BUFF);
2014 player->RemoveAura(SPELL_JAINA_BUFF);
2015 player->CompleteQuest(QUEST_BATTLE_A);
2016 player->NearTeleportTo(-8445.213867f, 337.384277f, 121.746056f, 5.401534f, false);
2017 }
2018 }
2019 }
2020 }
2021 }
2026 break;
2027 }
2028 }
2029 else phaseTimer -= diff;
2030 }
2031
2032 if (!UpdateVictim())
2033 return;
2034
2035 _events.Update(diff);
2036
2038 return;
2039
2040 while (uint32 eventId = _events.ExecuteEvent())
2041 {
2042 switch (eventId)
2043 {
2044 case EVENT_WHIRLWIND:
2047 break;
2048 case EVENT_HEROIC_LEAP:
2051 break;
2052 case EVENT_AGGRO_JAINA:
2053 if (me->GetVictim())
2054 {
2056 {
2057 jaina->AI()->AttackStart(me->GetVictim());
2058 }
2059 }
2062 break;
2063 case EVENT_WRYNN_BUFF:
2066 break;
2067 default:
2068 break;
2069 }
2070 }
2071
2073 }
constexpr auto IN_MILLISECONDS
Definition: Common.h:55
std::uint32_t uint32
Definition: Define.h:108
#define PET_FOLLOW_ANGLE
Definition: PetDefines.h:199
@ REACT_AGGRESSIVE
Definition: Unit.h:1037
@ UNIT_STAND_STATE_KNEEL
Definition: Unit.h:61
@ UNIT_STAND_STATE_STAND
Definition: Unit.h:53
@ UNIT_STATE_CASTING
Definition: Unit.h:340
@ FACTION_ESCORT_N_NEUTRAL_ACTIVE
Definition: ScriptSystem.h:37
@ WRYNN_SAY_APO_12
Definition: zone_undercity.cpp:393
@ WRYNN_SAY_SEWERS_4
Definition: zone_undercity.cpp:381
@ WRYNN_SAY_APO_6
Definition: zone_undercity.cpp:387
@ WRYNN_SAY_THRONE_9
Definition: zone_undercity.cpp:402
@ WRYNN_SAY_THRONE_2
Definition: zone_undercity.cpp:395
@ WRYNN_SAY_THRONE_4
Definition: zone_undercity.cpp:397
@ SPELL_HEROIC_LEAP
Definition: zone_undercity.cpp:407
@ WRYNN_SAY_PREP_1
Definition: zone_undercity.cpp:372
@ WRYNN_SAY_THRONE_5
Definition: zone_undercity.cpp:398
@ WRYNN_SAY_APO_2
Definition: zone_undercity.cpp:383
@ WRYNN_SAY_APO_11
Definition: zone_undercity.cpp:392
@ WRYNN_SAY_APO_4
Definition: zone_undercity.cpp:385
@ WRYNN_SAY_APO_7
Definition: zone_undercity.cpp:388
@ WRYNN_SAY_APO_5
Definition: zone_undercity.cpp:386
@ WRYNN_SAY_APO_3
Definition: zone_undercity.cpp:384
@ WRYNN_SAY_THRONE_3
Definition: zone_undercity.cpp:396
@ WRYNN_SAY_SEWERS_2
Definition: zone_undercity.cpp:379
@ WRYNN_SAY_APO_8
Definition: zone_undercity.cpp:389
@ WRYNN_SAY_THRONE_1
Definition: zone_undercity.cpp:394
@ WRYNN_SAY_THRONE_6
Definition: zone_undercity.cpp:399
@ WRYNN_SAY_SEWERS_1
Definition: zone_undercity.cpp:378
@ WRYNN_SAY_APO_10
Definition: zone_undercity.cpp:391
@ WRYNN_SAY_PREP_4
Definition: zone_undercity.cpp:375
@ WRYNN_SAY_PREP_2
Definition: zone_undercity.cpp:373
@ WRYNN_SAY_THRONE_8
Definition: zone_undercity.cpp:401
@ WRYNN_SAY_PREP_6
Definition: zone_undercity.cpp:377
@ WRYNN_SAY_THRONE_7
Definition: zone_undercity.cpp:400
@ WRYNN_SAY_PREP_5
Definition: zone_undercity.cpp:376
@ WRYNN_SAY_PREP_3
Definition: zone_undercity.cpp:374
@ SPELL_WHIRLWIND
Definition: zone_undercity.cpp:405
@ WRYNN_SAY_APO_1
Definition: zone_undercity.cpp:382
@ WRYNN_SAY_APO_9
Definition: zone_undercity.cpp:390
@ WRYNN_SAY_SEWERS_3
Definition: zone_undercity.cpp:380
@ SPELL_JAINA_BUFF
Definition: zone_undercity.cpp:433
@ JAINA_SAY_THRONE_1
Definition: zone_undercity.cpp:424
@ JAINA_SAY_THRONE_2
Definition: zone_undercity.cpp:425
@ JAINA_SAY_THRONE_3
Definition: zone_undercity.cpp:426
@ NPC_JAINA
Definition: zone_undercity.cpp:419
@ JAINA_SAY_SEWERS_1
Definition: zone_undercity.cpp:422
@ JAINA_SAY_APO_1
Definition: zone_undercity.cpp:423
@ SPELL_DEEPFREEZE
Definition: zone_undercity.cpp:432
@ QUEST_BATTLE_A
Definition: zone_undercity.cpp:708
@ WORLD_STATE_MANHUNT_COUNTDOWN_A
Definition: zone_undercity.cpp:730
@ WORLD_STATE_MANHUNT_STARTS_A
Definition: zone_undercity.cpp:731
@ PUTRESS_SAY_3
Definition: zone_undercity.cpp:620
@ SPELL_BLIGHT_OVERLOAD
Definition: zone_undercity.cpp:612
@ PUTRESS_SAY_6
Definition: zone_undercity.cpp:623
@ PUTRESS_SAY_5
Definition: zone_undercity.cpp:622
@ SOUND_PUTRESS
Definition: zone_undercity.cpp:628
@ PUTRESS_SAY_8
Definition: zone_undercity.cpp:625
@ PUTRESS_SAY_7
Definition: zone_undercity.cpp:624
@ PUTRESS_SAY_4
Definition: zone_undercity.cpp:621
@ PUTRESS_SAY_1
Definition: zone_undercity.cpp:618
@ THRALL_SAY_THRONE_A_2
Definition: zone_undercity.cpp:455
@ SOUND_THRALL_1
Definition: zone_undercity.cpp:493
@ SPELL_THUNDER
Definition: zone_undercity.cpp:516
@ SOUND_THRALL_2
Definition: zone_undercity.cpp:494
@ THRALL_SAY_THRONE_A_1
Definition: zone_undercity.cpp:454
static LocationXYZO AllianceWP[]
Definition: zone_undercity.cpp:791
Talk
Definition: boss_fathomlord_karathress.cpp:25
@ TEAM_ALLIANCE
Definition: SharedDefines.h:760
Definition: LinkedList.h:139
uint32 ExecuteEvent()
Definition: EventMap.cpp:114
void Update(uint32 time)
Definition: EventMap.h:54
void DoMeleeAttackIfReady()
Definition: UnitAI.cpp:39
SpellCastResult DoCastVictim(uint32 spellId, bool triggered=false)
Definition: UnitAI.cpp:240
SpellCastResult DoCast(uint32 spellId)
Definition: UnitAI.cpp:177
bool UpdateVictim()
Definition: CreatureAI.cpp:268
void UpdateAI(uint32 diff) override
Definition: ScriptedEscortAI.cpp:240
Player * GetPlayerForEscort()
Definition: ScriptedEscortAI.h:114
void SetRun(bool on=true)
Definition: ScriptedEscortAI.cpp:428
void SetTarget(ObjectGuid guid=ObjectGuid::Empty) override
Definition: Creature.cpp:3441
void DespawnOrUnsummon(Milliseconds msTimeToDespawn, Seconds forcedRespawnTimer)
Definition: Creature.cpp:2117
void setActive(bool isActiveObject)
Definition: Object.cpp:1085
void GetCreatureListWithEntryInGrid(std::list< Creature * > &lList, uint32 uiEntry, float fMaxSearchRange) const
Definition: Object.cpp:2488
bool IsInRange(WorldObject const *obj, float minRange, float maxRange, bool is3D=true) const
Definition: Object.cpp:1404
Definition: Player.h:1056
void SetImmuneToNPC(bool apply, bool keepCombat=false)
Definition: Unit.cpp:13610
void RemoveStandFlags(uint8 flags)
Definition: Unit.h:1554
Unit * GetVictim() const
Definition: Unit.h:1398
bool HasUnitState(const uint32 f) const
Definition: Unit.h:1410
void SetStandState(uint8 state)
Definition: Unit.cpp:16994
void SetImmuneToAll(bool apply, bool keepCombat=false)
Definition: Unit.h:1692
void SetStandFlags(uint8 flags)
Definition: Unit.h:1553
Definition: Map.h:313
Definition: MapRefMgr.h:26
iterator begin()
Definition: MapRefMgr.h:36
iterator end()
Definition: MapRefMgr.h:37
void SpawnWave(uint32 waveId)
Definition: zone_undercity.cpp:1174
void JumpToNextStep(uint32 uiTimer)
Definition: zone_undercity.cpp:1168

References _events, Unit::AddThreat(), ALLIANCE_FORCE_MAXCOUNT, allianceForcesGUID, AllianceWP, MapRefMgr::begin(), bStepping, Creature::DespawnOrUnsummon(), UnitAI::DoCast(), UnitAI::DoCastVictim(), UnitAI::DoMeleeAttackIfReady(), MapRefMgr::end(), EVENT_AGGRO_JAINA, EVENT_HEROIC_LEAP, EVENT_WHIRLWIND, EVENT_WRYNN_BUFF, EventMap::ExecuteEvent(), FACTION_ESCORT_N_NEUTRAL_ACTIVE, ObjectAccessor::GetCreature(), WorldObject::GetCreatureListWithEntryInGrid(), WorldObject::GetMap(), npc_escortAI::GetPlayerForEscort(), Unit::GetVictim(), Unit::HasUnitState(), HORDE_FORCE_MAXCOUNT, hordeForcesGUID, IN_MILLISECONDS, WorldObject::IsInRange(), JAINA_SAY_APO_1, JAINA_SAY_SEWERS_1, JAINA_SAY_THRONE_1, JAINA_SAY_THRONE_2, JAINA_SAY_THRONE_3, jainaGUID, JumpToNextStep(), khanokGUID, ScriptedAI::me, NPC_HORDE_SOLDIER, NPC_JAINA, NPC_SW_SOLDIER, NPC_SYLVANAS, NPC_THRALL, PET_FOLLOW_ANGLE, phaseTimer, PUTRESS_SAY_1, PUTRESS_SAY_3, PUTRESS_SAY_4, PUTRESS_SAY_5, PUTRESS_SAY_6, PUTRESS_SAY_7, PUTRESS_SAY_8, putressGUID, QUEST_BATTLE_A, REACT_AGGRESSIVE, Unit::RemoveStandFlags(), EventMap::ScheduleEvent(), WorldObject::setActive(), npc_escortAI::SetEscortPaused(), Unit::SetImmuneToAll(), Unit::SetImmuneToNPC(), npc_escortAI::SetRun(), Unit::SetStandFlags(), Unit::SetStandState(), Creature::SetTarget(), SOUND_PUTRESS, SOUND_THRALL_1, SOUND_THRALL_2, SpawnWave(), SPELL_BLIGHT_OVERLOAD, SPELL_DEEPFREEZE, SPELL_HEROIC_LEAP, SPELL_JAINA_BUFF, SPELL_PUTRESS_CASTING_STATE, SPELL_THUNDER, SPELL_WHIRLWIND, SPELL_WRYNN_BUFF, step, sylvanasGUID, TEAM_ALLIANCE, THRALL_SAY_THRONE_A_1, THRALL_SAY_THRONE_A_2, thrallGUID, UNIT_STAND_STATE_KNEEL, UNIT_STAND_STATE_STAND, UNIT_STATE_CASTING, EventMap::Update(), npc_escortAI::UpdateAI(), CreatureAI::UpdateVictim(), UpdateWorldState(), WORLD_STATE_APOTHECARIUM_DONE_A, WORLD_STATE_APOTHECARIUM_FIGHT_A, WORLD_STATE_MANHUNT_COUNTDOWN_A, WORLD_STATE_MANHUNT_STARTS_A, WORLD_STATE_SEWERS_DONE_A, WORLD_STATE_SEWERS_FIGHT_A, WRYNN_SAY_APO_1, WRYNN_SAY_APO_10, WRYNN_SAY_APO_11, WRYNN_SAY_APO_12, WRYNN_SAY_APO_2, WRYNN_SAY_APO_3, WRYNN_SAY_APO_4, WRYNN_SAY_APO_5, WRYNN_SAY_APO_6, WRYNN_SAY_APO_7, WRYNN_SAY_APO_8, WRYNN_SAY_APO_9, WRYNN_SAY_PREP_1, WRYNN_SAY_PREP_2, WRYNN_SAY_PREP_3, WRYNN_SAY_PREP_4, WRYNN_SAY_PREP_5, WRYNN_SAY_PREP_6, WRYNN_SAY_SEWERS_1, WRYNN_SAY_SEWERS_2, WRYNN_SAY_SEWERS_3, WRYNN_SAY_SEWERS_4, WRYNN_SAY_THRONE_1, WRYNN_SAY_THRONE_2, WRYNN_SAY_THRONE_3, WRYNN_SAY_THRONE_4, WRYNN_SAY_THRONE_5, WRYNN_SAY_THRONE_6, WRYNN_SAY_THRONE_7, WRYNN_SAY_THRONE_8, and WRYNN_SAY_THRONE_9.

◆ UpdateWorldState()

void npc_varian_wrynn::npc_varian_wrynnAI::UpdateWorldState ( Map map,
uint32  id,
uint32  state 
)
inline
1150 {
1151 Map::PlayerList const& players = map->GetPlayers();
1152
1153 if (!players.IsEmpty())
1154 {
1155 for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
1156 {
1157 if (Player* player = itr->GetSource())
1158 player->SendUpdateWorldState(id, state);
1159 }
1160 }
1161 }
bool IsEmpty() const
Definition: LinkedList.h:97
PlayerList const & GetPlayers() const
Definition: Map.h:485

References MapRefMgr::begin(), MapRefMgr::end(), Map::GetPlayers(), and LinkedListHead::IsEmpty().

Referenced by SummonedCreatureDies(), and UpdateAI().

◆ WaypointReached()

void npc_varian_wrynn::npc_varian_wrynnAI::WaypointReached ( uint32  waypointId)
inlineoverridevirtual

Implements npc_escortAI.

1460 {
1461 switch (waypointId)
1462 {
1463 case 0:
1464 SetHoldState(true);
1465 bStepping = true;
1466 break;
1467 case 2:
1468 SetHoldState(true);
1469 bStepping = true;
1470 break;
1471 case 38:
1473 {
1474 jaina->GetMotionMaster()->Clear();
1475 jaina->SetImmuneToNPC(false);
1476 jaina->SetReactState(REACT_AGGRESSIVE);
1477 }
1478 SetHoldState(true);
1479 bStepping = true;
1480 break;
1481 case 45:
1482 SetHoldState(true);
1483 bStepping = true;
1485 {
1486 jaina->GetMotionMaster()->Clear();
1487 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[6].x, AllianceWP[6].y, AllianceWP[6].z);
1488 }
1489 break;
1490 case 46:
1491 SetHoldState(true);
1492 bStepping = true;
1493 break;
1494 case 48:
1496 putress->AI()->Talk(PUTRESS_SAY_2);
1497 if (Player* player = GetPlayerForEscort())
1498 player->PlayDirectSound(SOUND_PUTRESS, player);
1499 break;
1500 case 50:
1501 SetHoldState(true);
1502 bStepping = true;
1503 break;
1504 case 63:
1505 SetHoldState(true);
1506 bStepping = true;
1507 break;
1508 case 65:
1509 SetHoldState(true);
1510 bStepping = true;
1511 break;
1512 case 66:
1513 SetHoldState(true);
1514 bStepping = true;
1515 break;
1516 case 87:
1517 SetHoldState(true);
1518 bStepping = true;
1519 break;
1520 case 88:
1521 SetHoldState(true);
1522 bStepping = true;
1523 break;
1524 }
1525 }
@ PUTRESS_SAY_2
Definition: zone_undercity.cpp:619
void SetHoldState(bool bOnHold)
Definition: zone_undercity.cpp:1163

References AllianceWP, bStepping, ObjectAccessor::GetCreature(), npc_escortAI::GetPlayerForEscort(), jainaGUID, ScriptedAI::me, PUTRESS_SAY_2, putressGUID, REACT_AGGRESSIVE, SetHoldState(), and SOUND_PUTRESS.

Member Data Documentation

◆ _events

EventMap npc_varian_wrynn::npc_varian_wrynnAI::_events

Referenced by Reset(), and UpdateAI().

◆ allianceForcesGUID

ObjectGuid npc_varian_wrynn::npc_varian_wrynnAI::allianceForcesGUID[ALLIANCE_FORCE_MAXCOUNT]

Referenced by Reset(), SpawnWave(), and UpdateAI().

◆ allianceGuardsGUID

GuidVector npc_varian_wrynn::npc_varian_wrynnAI::allianceGuardsGUID

◆ blightWormGUID

ObjectGuid npc_varian_wrynn::npc_varian_wrynnAI::blightWormGUID

Referenced by Reset(), and SpawnWave().

◆ bStepping

bool npc_varian_wrynn::npc_varian_wrynnAI::bStepping

◆ generatorGUID

ObjectGuid npc_varian_wrynn::npc_varian_wrynnAI::generatorGUID[GENERATOR_MAXCOUNT]

Referenced by Reset(), and SpawnWave().

◆ hordeForcesGUID

ObjectGuid npc_varian_wrynn::npc_varian_wrynnAI::hordeForcesGUID[HORDE_FORCE_MAXCOUNT]

Referenced by Reset(), SpawnWave(), and UpdateAI().

◆ jainaGUID

ObjectGuid npc_varian_wrynn::npc_varian_wrynnAI::jainaGUID

◆ khanokGUID

ObjectGuid npc_varian_wrynn::npc_varian_wrynnAI::khanokGUID

Referenced by Reset(), SpawnWave(), and UpdateAI().

◆ phaseTimer

uint32 npc_varian_wrynn::npc_varian_wrynnAI::phaseTimer

Referenced by JumpToNextStep(), Reset(), and UpdateAI().

◆ putressGUID

ObjectGuid npc_varian_wrynn::npc_varian_wrynnAI::putressGUID

◆ step

uint32 npc_varian_wrynn::npc_varian_wrynnAI::step

Referenced by JumpToNextStep(), Reset(), and UpdateAI().

◆ summoned

bool npc_varian_wrynn::npc_varian_wrynnAI::summoned

◆ sylvanasGUID

ObjectGuid npc_varian_wrynn::npc_varian_wrynnAI::sylvanasGUID

Referenced by Reset(), SpawnWave(), and UpdateAI().

◆ thrallGUID

ObjectGuid npc_varian_wrynn::npc_varian_wrynnAI::thrallGUID

Referenced by Reset(), SpawnWave(), and UpdateAI().

◆ whirlwindTimer

uint32 npc_varian_wrynn::npc_varian_wrynnAI::whirlwindTimer