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
 Use to start attacking a target. Called just before JustEngagedWith()
 
- 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 ()
 
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 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
 Called at any Damage from any attacker (before damage apply)
 
void UpdateAI (uint32 diff) override
 Use to start attacking a target. Called just before JustEngagedWith()
 
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 DoTeleportPlayer (Unit *unit, Position pos)
 
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)
 
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
 
void SetInvincibility (bool apply)
 
bool IsInvincible () const
 
void SetAutoAttackAllowed (bool allow)
 
bool IsAutoAttackAllowed () 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)
 
WorldObjectGetSummoner () const
 Returns the summoner creature/object, if the creature is a temporary summon.
 
 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 IsSummonedBy (WorldObject *)
 
virtual void SummonedCreatureDespawnAll ()
 
virtual void SummonedCreatureEvade (Creature *)
 
virtual void OnSpellCastFinished (SpellInfo const *, SpellFinishReason)
 
virtual void AttackedBy (Unit *)
 
virtual void PathEndReached (uint32)
 
void OnCharmed (bool apply) override
 Called when unit is charmed.
 
virtual void JustReachedHome ()
 
void DoZoneInCombat (Creature *creature=nullptr, float maxRangeToNearestTarget=250.0f)
 
virtual void ReceiveEmote (Player *, uint32)
 
virtual void OwnerAttackedBy (Unit *)
 
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 ()
 
int32 VisualizeBoundary (uint32 duration, Unit *owner=nullptr, bool fill=false, bool checkZ=false) const
 
virtual bool CheckInRoom ()
 
CreatureBoundary const * GetBoundary () const
 
void SetBoundary (CreatureBoundary const *boundary, bool negativeBoundaries=false)
 
bool IsInBoundary (Position const *who=nullptr) const
 
virtual void CalculateThreat (Unit *, float &, SpellInfo const *)
 
virtual bool OnTeleportUnreacheablePlayer (Player *)
 
virtual void OnAuraRemove (AuraApplication *, AuraRemoveMode)
 
virtual void DistancingStarted ()
 
virtual void DistancingEnded ()
 
- Public Member Functions inherited from UnitAI
 UnitAI (Unit *unit)
 
virtual ~UnitAI ()
 
virtual bool CanAIAttack (Unit const *) const
 
virtual void InitializeAI ()
 
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)
 Select the best (up to) <num> targets (in <targetType> order) from the threat list that fulfill the following:
 
template<class PREDICATE >
void SelectTargetList (std::list< Unit * > &targetList, uint32 num, SelectTargetMethod targetType, uint32 position, PREDICATE const &predicate)
 
virtual void JustEnteredCombat (Unit *)
 Called when the unit enters combat.
 
virtual void JustExitedCombat ()
 Called when the unit leaves combat.
 
virtual void DamageDealt (Unit *, uint32 &, DamageEffectType, SpellSchoolMask)
 Called at any Damage to any victim (before damage apply)
 
virtual void HealReceived (Unit *, uint32 &)
 Called when the creature receives heal.
 
virtual void OnPowerUpdate (Powers, int32, int32, uint32)
 Called when the creature power updates.
 
virtual void HealDone (Unit *, uint32 &)
 Called when the unit heals.
 
virtual void OnCalculateMeleeDamageReceived (uint32 &, Unit *)
 Called during damage calculations.
 
virtual void OnCalculateSpellDamageReceived (int32 &, Unit *)
 
virtual void OnCalculatePeriodicTickReceived (uint32 &, Unit *)
 Called during calculation when receiving periodic healing or damage (DoT or HoT)
 
void AttackStartCaster (Unit *victim, float dist)
 
SpellCastResult DoAddAuraToAllHostilePlayers (uint32 spellid)
 
SpellCastResult DoCast (uint32 spellId)
 
SpellCastResult DoCast (Unit *victim, uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastSelf (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastToAllHostilePlayers (uint32 spellid, bool triggered=false)
 To specify the caster as target if the spell is self-cast.
 
SpellCastResult DoCastVictim (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastAOE (uint32 spellId, bool triggered=false)
 
SpellCastResult DoCastRandomTarget (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false, bool withTank=true)
 Cast the spell on a random unit from the threat list.
 
SpellCastResult DoCastMaxThreat (uint32 spellId, uint32 threatTablePosition=0, float dist=0.0f, bool playerOnly=true, bool triggered=false)
 Cast spell on the top threat target, which may not be the current victim.
 
float DoGetSpellMaxRange (uint32 spellId, bool positive=false)
 
void DoMeleeAttackIfReady ()
 
bool DoSpellAttackIfReady (uint32 spell)
 
void DoSpellAttackToRandomTargetIfReady (uint32 spell, uint32 threatTablePosition=0, float dist=0.f, bool playerOnly=true)
 
virtual void SummonMovementInform (Creature *, uint32, uint32)
 Called when a summon reaches a waypoint or point movement finished.
 
virtual void sGossipHello (Player *)
 
virtual void sGossipSelect (Player *, uint32, uint32)
 
virtual void sGossipSelectCode (Player *, uint32, uint32, char const *)
 
virtual void sQuestAccept (Player *, Quest const *)
 
virtual void sQuestSelect (Player *, Quest const *)
 
virtual void sQuestComplete (Player *, Quest const *)
 
virtual void sQuestReward (Player *, Quest const *, uint32)
 
virtual void sOnGameEvent (bool, uint16)
 
virtual std::string GetDebugInfo () const
 

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
 

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)
 
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
950 : npc_escortAI(creature)
951 {
952 allianceGuardsGUID.clear();
953 }
Definition ScriptedEscortAI.h:53
GuidVector allianceGuardsGUID
Definition zone_undercity.cpp:973

References allianceGuardsGUID.

Member Function Documentation

◆ EnterEvadeMode()

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

Reimplemented from npc_escortAI.

978 {
980 me->CombatStop(true);
981 me->SetLootRecipient(nullptr);
982
984 {
987 }
988 else
989 {
991 Reset();
992 }
993 }
@ STATE_ESCORT_ESCORTING
Definition ScriptedEscortAI.h:47
@ STATE_ESCORT_RETURNING
Definition ScriptedEscortAI.h:48
void SetLootRecipient(Unit *unit, bool withGroup=true)
Definition Creature.cpp:1331
void MoveTargetedHome(bool walk=false)
The unit will return this initial position (owner for pets and summoned creatures)....
Definition MotionMaster.cpp:259
void ClearAllThreat()
Definition ThreatMgr.cpp:417
void CombatStop(bool includingCast=false)
Definition Unit.cpp:10531
MotionMaster * GetMotionMaster()
Definition Unit.h:1676
ThreatMgr & GetThreatMgr()
Definition Unit.h:900
Creature * me
Definition ScriptedCreature.h:280
bool HasEscortState(uint32 escortState)
Definition ScriptedEscortAI.h:98
void AddEscortState(uint32 escortState)
Definition ScriptedEscortAI.h:110
void ReturnToLastPoint()
Definition ScriptedEscortAI.cpp:186
void Reset() override
Definition zone_undercity.cpp:995

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
1132 {
1133 phaseTimer = uiTimer;
1134 ++step;
1135 }
uint32 step
Definition zone_undercity.cpp:958
uint32 phaseTimer
Definition zone_undercity.cpp:959

References phaseTimer, and step.

Referenced by UpdateAI().

◆ JustSummoned()

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

Reimplemented from CreatureAI.

1079 {
1080 switch (summonedCreature->GetEntry())
1081 {
1082 case NPC_GENERATOR:
1083 summonedCreature->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
1084 summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_WRYNN_BUFF, true);
1085 summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_THRALL_BUFF, true);
1086 summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true);
1087 break;
1088 default:
1089 break;
1090 }
1091 }
@ IMMUNITY_ID
Definition SharedDefines.h:1411
@ UNIT_FLAG_NOT_SELECTABLE
Definition UnitDefines.h:277
uint32 GetEntry() const
Definition Object.h:116
void ApplySpellImmune(uint32 spellId, uint32 op, uint32 type, bool apply, SpellImmuneBlockType blockType=SPELL_BLOCK_TYPE_ALL)
Definition Unit.cpp:13483
void SetUnitFlag(UnitFlags flags)
UnitFlags available in UnitDefines.h.
Definition Unit.h:703
@ SPELL_WRYNN_BUFF
Definition zone_undercity.cpp:393
@ SPELL_SYLVANAS_BUFF
Definition zone_undercity.cpp:550
@ NPC_GENERATOR
Definition zone_undercity.cpp:595
@ SPELL_THRALL_BUFF
Definition zone_undercity.cpp:484

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

996 {
998 {
999 me->SetCorpseDelay(1);
1000 me->SetRespawnTime(1);
1002
1003 bStepping = false;
1004 step = 0;
1005 phaseTimer = 0;
1006 jainaGUID.Clear();
1012
1014 {
1015 putress->DespawnOrUnsummon();
1017 }
1018
1020 {
1021 blightWorm->DespawnOrUnsummon();
1023 }
1024
1026 {
1027 khanok->DespawnOrUnsummon();
1028 khanokGUID.Clear();
1029 }
1030
1032 {
1033 thrall->DespawnOrUnsummon();
1034 thrallGUID.Clear();
1035 }
1036
1038 {
1039 sylvanas->DespawnOrUnsummon();
1041 }
1042
1043 for (uint8 i = 0; i < GENERATOR_MAXCOUNT; ++i)
1044 {
1046 {
1047 generatorGUID[i].Clear();
1048 temp->DespawnOrUnsummon();
1049 }
1050 }
1051
1052 for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
1053 {
1055 {
1057 temp->DespawnOrUnsummon();
1058 }
1059 }
1060
1061 for (ObjectGuid const& guid : allianceGuardsGUID)
1062 if (Creature* temp = ObjectAccessor::GetCreature(*me, guid))
1063 temp->DespawnOrUnsummon();
1064
1065 allianceGuardsGUID.clear();
1066
1067 for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
1068 {
1070 {
1072 temp->DespawnOrUnsummon();
1073 }
1074 }
1075 }
1076 }
std::uint8_t uint8
Definition Define.h:109
@ UNIT_NPC_FLAG_GOSSIP
Definition UnitDefines.h:317
Definition Creature.h:43
void SetRespawnTime(uint32 respawn)
Definition Creature.cpp:3801
void SetCorpseDelay(uint32 delay)
Definition Creature.h:70
void ScheduleEvent(uint32 eventId, uint32 time, uint32 group=0, uint32 phase=0)
Definition EventMap.cpp:56
Definition ObjectGuid.h:118
void Clear()
Definition ObjectGuid.h:138
void SetNpcFlag(NPCFlags flags)
Definition Unit.h:719
Definition ObjectAccessor.h:61
Creature * GetCreature(WorldObject const &u, ObjectGuid const guid)
Definition ObjectAccessor.cpp:210
bool bStepping
Definition zone_undercity.cpp:955
ObjectGuid jainaGUID
Definition zone_undercity.cpp:963
ObjectGuid putressGUID
Definition zone_undercity.cpp:964
ObjectGuid blightWormGUID
Definition zone_undercity.cpp:965
EventMap _events
Definition zone_undercity.cpp:975
ObjectGuid sylvanasGUID
Definition zone_undercity.cpp:968
ObjectGuid allianceForcesGUID[ALLIANCE_FORCE_MAXCOUNT]
Definition zone_undercity.cpp:971
ObjectGuid generatorGUID[GENERATOR_MAXCOUNT]
Definition zone_undercity.cpp:970
ObjectGuid khanokGUID
Definition zone_undercity.cpp:966
ObjectGuid hordeForcesGUID[HORDE_FORCE_MAXCOUNT]
Definition zone_undercity.cpp:972
ObjectGuid thrallGUID
Definition zone_undercity.cpp:967
@ EVENT_HEROIC_LEAP
Definition zone_undercity.cpp:398
@ EVENT_WRYNN_BUFF
Definition zone_undercity.cpp:400
@ EVENT_WHIRLWIND
Definition zone_undercity.cpp:397
@ EVENT_AGGRO_JAINA
Definition zone_undercity.cpp:399
@ HORDE_FORCE_MAXCOUNT
Definition zone_undercity.cpp:707
@ ALLIANCE_FORCE_MAXCOUNT
Definition zone_undercity.cpp:706
@ GENERATOR_MAXCOUNT
Definition zone_undercity.cpp:705

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
1127 {
1128 SetEscortPaused(bOnHold);
1129 }
void SetEscortPaused(bool on)
Definition ScriptedEscortAI.cpp:516

References npc_escortAI::SetEscortPaused().

Referenced by WaypointReached().

◆ SpawnWave()

void npc_varian_wrynn::npc_varian_wrynnAI::SpawnWave ( uint32  waveId)
inline
1138 {
1139 switch (waveId)
1140 {
1141 case 0:
1143 break;
1144 case 1:
1145 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1146 {
1147 switch (urand(0, 12))
1148 {
1149 case 0:
1151 break;
1152 case 1:
1153 case 2:
1154 case 3:
1156 break;
1157 case 4:
1158 case 5:
1159 case 6:
1161 break;
1162 case 7:
1163 case 8:
1164 case 9:
1166 break;
1167 case 10:
1168 case 11:
1169 case 12:
1171 break;
1172 }
1173 }
1174 break;
1175 case 2:
1176 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1177 {
1178 switch (urand(0, 3))
1179 {
1180 case 0:
1182 break;
1183 case 1:
1185 break;
1186 case 2:
1188 break;
1189 case 3:
1191 break;
1192 }
1193 }
1194 break;
1195 case 3:
1196 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1197 {
1198 switch (urand(0, 4))
1199 {
1200 case 0:
1202 break;
1203 case 1:
1204 case 2:
1206 break;
1207 case 3:
1208 case 4:
1210 break;
1211 }
1212 }
1213 break;
1214 case 4:
1215 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1216 {
1217 switch (urand(0, 5))
1218 {
1219 case 0:
1221 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1222 break;
1223 case 1:
1225 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1226 break;
1227 case 2:
1229 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1230 break;
1231 case 3:
1233 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1234 break;
1235 case 4:
1237 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1238 break;
1239 case 5:
1241 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1242 break;
1243 }
1244 }
1245 break;
1246 case 5:
1247 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1249 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1250 break;
1251 case 6:
1253 {
1254 blightWormGUID = temp->GetGUID();
1255 temp->AddThreat(me, 100.0f);
1256 me->AddThreat(temp, 100.0f);
1258 {
1259 temp->AddThreat(jaina, 100.0f);
1260 jaina->AddThreat(temp, 100.0f);
1261 }
1262 }
1264 {
1265 khanokGUID = temp->GetGUID();
1267 khanok->setDeathState(DeathState::JustDied);
1268 }
1270 {
1271 putressGUID = temp->GetGUID();
1272 temp->CastSpell(temp, SPELL_PUTRESS_CASTING_STATE);
1273 }
1274 for (uint8 i = 0; i < GENERATOR_MAXCOUNT; ++i)
1275 {
1276 switch (i)
1277 {
1278 case 0:
1279 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1433.142212f, 402.493835f, -80.515945f, TEMPSUMMON_MANUAL_DESPAWN))
1280 {
1281 generatorGUID[i] = temp->GetGUID();
1283 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT);
1284 }
1285 break;
1286 case 1:
1287 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1428.677979f, 399.753418f, -79.141609f, TEMPSUMMON_MANUAL_DESPAWN))
1288 {
1289 generatorGUID[i] = temp->GetGUID();
1291 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1292 }
1293 break;
1294 case 2:
1295 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1425.163330f, 402.268951f, -79.299744f, TEMPSUMMON_MANUAL_DESPAWN))
1296 {
1297 generatorGUID[i] = temp->GetGUID();
1299 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1300 }
1301 break;
1302 case 3:
1303 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1427.323242f, 406.853088f, -78.195641f, TEMPSUMMON_MANUAL_DESPAWN))
1304 {
1305 generatorGUID[i] = temp->GetGUID();
1307 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1308 }
1309 break;
1310 case 4:
1311 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1432.465210f, 407.460022f, -81.689384f, TEMPSUMMON_MANUAL_DESPAWN))
1312 {
1313 generatorGUID[i] = temp->GetGUID();
1315 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1316 }
1317 break;
1318 }
1319 }
1320 break;
1321 case 7:
1323 {
1324 allianceGuardsGUID.push_back(temp->GetGUID());
1325 temp->GetMotionMaster()->MovePath(NPC_SW_SOLDIER * 10, false);
1326 }
1328 {
1329 allianceGuardsGUID.push_back(temp->GetGUID());
1330 temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 1, false);
1331 }
1333 {
1334 allianceGuardsGUID.push_back(temp->GetGUID());
1335 temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 2, false);
1336 }
1338 {
1339 allianceGuardsGUID.push_back(temp->GetGUID());
1340 temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 3, false);
1341 }
1342 break;
1343 case 8:
1344 break;
1345 case 9:
1346 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1348 break;
1349 case 10:
1351 {
1352 temp->GetMotionMaster()->MovePath(NPC_DREADLORD * 10, false);
1353 temp->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);
1354 temp->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK_DEST, true);
1355 }
1356 break;
1357 case 11:
1358 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1359 {
1360 switch (urand(0, 3))
1361 {
1362 case 0:
1364 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1365 break;
1366 case 1:
1368 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1369 break;
1370 case 2:
1372 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1373 break;
1374 case 3:
1376 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1377 break;
1378 }
1379 }
1380 break;
1381 case 12:
1383 {
1384 thrallGUID = temp->GetGUID();
1385 temp->SetReactState(REACT_PASSIVE);
1386 temp->SetImmuneToAll(true);
1387 temp->CastSpell(temp, SPELL_THRALL_BUFF);
1388 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1389 }
1391 {
1392 sylvanasGUID = temp->GetGUID();
1393 temp->SetReactState(REACT_PASSIVE);
1394 temp->SetImmuneToAll(true);
1395 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1396 }
1397 for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
1398 {
1400 {
1401 hordeForcesGUID[i] = temp->GetGUID();
1402 temp->SetReactState(REACT_PASSIVE);
1403 temp->SetImmuneToAll(true);
1404 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1405 }
1406 }
1407 break;
1408 case 13:
1409 for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
1410 {
1412 {
1413 allianceForcesGUID[i] = temp->GetGUID();
1414 temp->SetImmuneToAll(true);
1415 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1416 }
1417 }
1418 break;
1419 }
1420 }
@ TEMPSUMMON_DEAD_DESPAWN
Definition Object.h:54
@ TEMPSUMMON_MANUAL_DESPAWN
Definition Object.h:55
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:50
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
uint32 rand32()
Definition Random.cpp:80
@ EMOTE_STATE_READY2H
Definition SharedDefines.h:1981
@ SPELL_EFFECT_KNOCK_BACK_DEST
Definition SharedDefines.h:933
@ SPELL_EFFECT_KNOCK_BACK
Definition SharedDefines.h:887
@ IMMUNITY_EFFECT
Definition SharedDefines.h:1405
@ REACT_PASSIVE
Definition Unit.h:549
@ UNIT_NPC_EMOTESTATE
Definition UpdateFields.h:140
void MovePoint(uint32 id, const Position &pos, bool generatePath=true, bool forceDestination=true)
Definition MotionMaster.h:213
void MovePath(uint32 path_id, bool repeatable)
Move the unit following a specific path. Doesn't work with UNIT_FLAG_DISABLE_MOVE.
Definition MotionMaster.cpp:887
Definition Unit.h:620
void AddThreat(Unit *victim, float fThreat, SpellSchoolMask schoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *threatSpell=nullptr)
Definition Unit.cpp:14754
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:2334
float o
Definition zone_undercity.cpp:715
float y
Definition zone_undercity.cpp:715
float x
Definition zone_undercity.cpp:715
float z
Definition zone_undercity.cpp:715
float GetPositionZ() const
Definition Position.h:123
float GetPositionX() const
Definition Position.h:121
float GetPositionY() const
Definition Position.h:122
@ NPC_GUARDIAN
Definition zone_undercity.cpp:660
@ NPC_CHEMIST
Definition zone_undercity.cpp:661
@ NPC_DOCTOR
Definition zone_undercity.cpp:664
@ NPC_SW_SOLDIER
Definition zone_undercity.cpp:666
@ NPC_FELBEAST
Definition zone_undercity.cpp:663
@ NPC_DREADLORD
Definition zone_undercity.cpp:659
@ NPC_BETRAYER
Definition zone_undercity.cpp:662
@ NPC_COLLABORATOR
Definition zone_undercity.cpp:665
@ NPC_HORDE_SOLDIER
Definition zone_undercity.cpp:667
@ NPC_KHANOK
Definition zone_undercity.cpp:621
@ NPC_SYLVANAS
Definition zone_undercity.cpp:537
static LocationXYZO HordeSpawn[]
Definition zone_undercity.cpp:767
@ WAVE_MAXCOUNT
Definition zone_undercity.cpp:704
static LocationXYZO AllianceSpawn[]
Definition zone_undercity.cpp:718
@ NPC_BLIGHTWORM
Definition zone_undercity.cpp:577
@ NPC_PUTRESS
Definition zone_undercity.cpp:592
@ SPELL_PUTRESS_CASTING_STATE
Definition zone_undercity.cpp:602
@ SPELL_BLIGHT_EMPOWERMENT
Definition zone_undercity.cpp:598
@ NPC_EXPERIMENT
Definition zone_undercity.cpp:594
@ NPC_THRALL
Definition zone_undercity.cpp:435

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

1094 {
1095 switch (summon->GetEntry())
1096 {
1097 case NPC_BLIGHTWORM:
1100 bStepping = true;
1101 break;
1102 case NPC_PUTRESS:
1105 bStepping = true;
1106 break;
1107 default:
1108 break;
1109 }
1110 }
@ WORLD_STATE_BATTLE_FOR_UNDERCITY_APOTHECARIUM_FIGHT_A
Definition WorldStateDefines.h:529
@ WORLD_STATE_BATTLE_FOR_UNDERCITY_SEWERS_DONE_A
Definition WorldStateDefines.h:526
@ WORLD_STATE_BATTLE_FOR_UNDERCITY_SEWERS_FIGHT_A
Definition WorldStateDefines.h:524
@ WORLD_STATE_BATTLE_FOR_UNDERCITY_APOTHECARIUM_DONE_A
Definition WorldStateDefines.h:528
Map * GetMap() const
Definition Object.h:621
void UpdateWorldState(Map *map, uint32 id, uint32 state)
Definition zone_undercity.cpp:1112

References bStepping, Object::GetEntry(), WorldObject::GetMap(), ScriptedAI::me, NPC_BLIGHTWORM, NPC_PUTRESS, UpdateWorldState(), WORLD_STATE_BATTLE_FOR_UNDERCITY_APOTHECARIUM_DONE_A, WORLD_STATE_BATTLE_FOR_UNDERCITY_APOTHECARIUM_FIGHT_A, WORLD_STATE_BATTLE_FOR_UNDERCITY_SEWERS_DONE_A, and WORLD_STATE_BATTLE_FOR_UNDERCITY_SEWERS_FIGHT_A.

◆ UpdateAI()

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

Use to start attacking a target. Called just before JustEngagedWith()

Reimplemented from npc_escortAI.

1491 {
1493
1494 if (bStepping)
1495 {
1496 if (phaseTimer <= diff)
1497 {
1498 switch (step)
1499 {
1500 //Preparation
1501 case 0:
1502 me->setActive(true);
1506 break;
1507 case 1:
1510 break;
1511 case 2:
1514 break;
1515 case 3:
1518 break;
1519 case 4:
1524 break;
1525 case 5:
1528 break;
1529 case 6:
1532 break;
1533 case 7:
1534 SetEscortPaused(false);
1536 break;
1537 case 8:
1539 {
1540 jaina->GetMotionMaster()->MovePath(NPC_JAINA * 10, false);
1541 jaina->setActive(true);
1542 }
1543 bStepping = false;
1544 JumpToNextStep(0);
1545 break;
1546 //Sewers
1547 case 9:
1549 SpawnWave(0);
1550 SpawnWave(1);
1551 SpawnWave(2);
1552 SpawnWave(3);
1553 JumpToNextStep(9500);
1554 break;
1555 case 10:
1557 jaina->AI()->Talk(JAINA_SAY_SEWERS_1);
1559 break;
1560 case 11:
1562 jaina->AI()->DoCast(SPELL_JAINA_BUFF);
1564 break;
1565 case 12:
1566 SetEscortPaused(false);
1570 break;
1571 case 13:
1573 {
1574 jaina->GetMotionMaster()->MoveFollow(me, 5, PET_FOLLOW_ANGLE);
1575 jaina->SetReactState(REACT_AGGRESSIVE);
1576 jaina->SetFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE);
1577 }
1578 bStepping = false;
1579 JumpToNextStep(0);
1580 break;
1581 case 14:
1584 break;
1585 case 15:
1586 SpawnWave(4);
1588 break;
1589 case 16:
1590 SpawnWave(5);
1592 break;
1593 case 17:
1594 SpawnWave(4);
1596 break;
1597 case 18:
1598 SpawnWave(4);
1600 break;
1601 case 19:
1602 SpawnWave(5);
1604 break;
1605 case 20:
1606 SpawnWave(6);
1607 bStepping = false;
1608 JumpToNextStep(0);
1609 break;
1610 case 21:
1612 SpawnWave(7);
1614 break;
1615 case 22:
1617 SetRun(false);
1619 {
1620 jaina->GetMotionMaster()->Clear();
1621 jaina->GetMotionMaster()->MoveFollow(me, 1, 0);
1622 }
1624 break;
1625 case 23:
1626 bStepping = false;
1627 SetEscortPaused(false);
1628 JumpToNextStep(0);
1629 break;
1630 //Apothecarium
1631 case 24:
1633 jaina->AI()->Talk(JAINA_SAY_APO_1);
1635 break;
1636 case 25:
1637 SetEscortPaused(false);
1638 bStepping = false;
1639 JumpToNextStep(0);
1640 break;
1641 case 26:
1645 break;
1646 case 27:
1649 break;
1650 case 28:
1653 break;
1654 case 29:
1657 break;
1658 case 30:
1661 putress->AI()->Talk(PUTRESS_SAY_1);
1662 if (Player* player = GetPlayerForEscort())
1663 player->PlayDirectSound(SOUND_PUTRESS, player);
1664 SpawnWave(9);
1666 break;
1667 case 31:
1668 SetRun(true);
1670 jaina->GetMotionMaster()->MoveFollow(me, 1, 0);
1671 SetEscortPaused(false);
1672 bStepping = false;
1673 JumpToNextStep(0);
1674 break;
1675 case 32:
1677 SpawnWave(10);
1679 break;
1680 case 33:
1681 SpawnWave(10);
1683 break;
1684 case 34:
1685 SpawnWave(10);
1687 break;
1688 case 35:
1689 SpawnWave(10);
1691 break;
1692 case 36:
1693 SpawnWave(10);
1695 break;
1696 case 37:
1697 SpawnWave(10);
1699 break;
1700 case 38:
1701 SpawnWave(10);
1703 break;
1704 case 39:
1705 SpawnWave(10);
1707 break;
1708 case 40:
1709 SpawnWave(10);
1711 break;
1712 case 41:
1713 SpawnWave(10);
1715 break;
1716 case 42:
1717 SpawnWave(10);
1719 break;
1720 case 43:
1721 SetEscortPaused(false);
1722 bStepping = false;
1723 JumpToNextStep(0);
1724 break;
1725 case 44:
1728 {
1729 jaina->GetMotionMaster()->Clear();
1730 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[7].x, AllianceWP[7].y, AllianceWP[7].z, false);
1731 }
1733 break;
1734 case 45:
1735 SetEscortPaused(false);
1736 bStepping = false;
1737 JumpToNextStep(0);
1738 break;
1739 case 46:
1742 break;
1743 case 47:
1745 putress->AI()->Talk(PUTRESS_SAY_3);
1746 SpawnWave(11);
1748 break;
1749 case 48:
1751 putress->AI()->Talk(PUTRESS_SAY_4);
1753 break;
1754 case 49:
1756 putress->AI()->Talk(PUTRESS_SAY_5);
1757 SpawnWave(11);
1759 break;
1760 case 50:
1762 putress->AI()->Talk(PUTRESS_SAY_6);
1764 break;
1765 case 51:
1767 putress->AI()->Talk(PUTRESS_SAY_7);
1768 SpawnWave(11);
1770 break;
1771 case 52:
1773 {
1774 putress->AI()->Talk(PUTRESS_SAY_8);
1775 putress->AI()->DoCast(SPELL_BLIGHT_OVERLOAD);
1776 }
1778 break;
1779 case 53:
1781 {
1782 putress->SetImmuneToAll(false);
1783 putress->AddThreat(me, 100.0f);
1784 me->AddThreat(putress, 100.0f);
1785 putress->RemoveAura(SPELL_PUTRESS_CASTING_STATE);
1786 }
1787 bStepping = false;
1788 JumpToNextStep(0);
1789 break;
1790 case 54:
1792 SetRun(false);
1794 break;
1795 case 55:
1800 break;
1801 case 56:
1805 SetEscortPaused(false);
1806 bStepping = false;
1807 JumpToNextStep(0);
1808 break;
1809 case 57:
1811 break;
1812 case 58:
1815 break;
1816 case 59:
1819 break;
1820 case 60:
1822 SpawnWave(12); // thrall sylvanas horde soldiers
1824 break;
1825 case 61:
1827 thrall->AI()->Talk(THRALL_SAY_THRONE_A_1);
1828 if (Player* player = GetPlayerForEscort())
1829 player->PlayDirectSound(SOUND_THRALL_1, player);
1831 break;
1832 case 62:
1834 thrall->AI()->Talk(THRALL_SAY_THRONE_A_2);
1835 if (Player* player = GetPlayerForEscort())
1836 player->PlayDirectSound(SOUND_THRALL_2, player);
1838 break;
1839 case 63:
1842 break;
1843 case 64:
1846 break;
1847 case 65:
1848 SetRun(true);
1849 SetEscortPaused(false);
1851 break;
1852 case 66:
1854 jaina->AI()->Talk(JAINA_SAY_THRONE_1);
1855 me->SetImmuneToNPC(true);
1856 bStepping = false;
1857 JumpToNextStep(0);
1858 break;
1859 case 67:
1862 break;
1863 case 68:
1866 {
1867 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[8].x, AllianceWP[8].y, AllianceWP[8].z);
1868 jaina->SetImmuneToAll(true);
1869 }
1870 SetEscortPaused(false);
1871 bStepping = false;
1872 JumpToNextStep(0);
1873 break;
1874 case 69:
1876 SpawnWave(13); //alliance soldiers
1878 break;
1879 case 70:
1882 break;
1883 case 71:
1886 break;
1887 case 72:
1890 break;
1891 case 73:
1893 me->SetImmuneToAll(false);
1895 {
1896 thrall->SetReactState(REACT_AGGRESSIVE);
1897 thrall->SetImmuneToNPC(false);
1898 thrall->SetImmuneToPC(true);
1899 thrall->AddThreat(me, 100.0f);
1900 me->AddThreat(thrall, 100.0f);
1901 thrall->AI()->AttackStart(me);
1902 }
1904 {
1905 sylvanas->SetReactState(REACT_AGGRESSIVE);
1906 sylvanas->SetImmuneToNPC(false);
1907 sylvanas->SetImmuneToPC(true);
1908 sylvanas->AddThreat(me, 100.0f);
1909 sylvanas->AI()->AttackStart(me);
1910 me->AddThreat(sylvanas, 100.0f);
1911 }
1912 for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
1913 {
1915 {
1916 temp->SetReactState(REACT_AGGRESSIVE);
1917 temp->SetImmuneToNPC(false);
1918 temp->SetImmuneToPC(true);
1919 }
1920 }
1921 for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
1922 {
1924 {
1926 {
1927 temp->SetReactState(REACT_AGGRESSIVE);
1928 temp2->SetReactState(REACT_AGGRESSIVE);
1929 temp->SetImmuneToAll(false);
1930 temp2->SetImmuneToAll(false);
1931 temp->AddThreat(temp2, 100.0f);
1932 temp->AI()->AttackStart(temp2);
1933 temp2->AddThreat(temp, 100.0f);
1934 }
1935 }
1936 }
1938 break;
1939 case 74:
1941 {
1942 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[9].x, AllianceWP[9].y, AllianceWP[9].z);
1943 jaina->AI()->Talk(JAINA_SAY_THRONE_2);
1944 }
1946 break;
1947 case 75:
1949 {
1950 jaina->AI()->DoCastAOE(SPELL_DEEPFREEZE);
1951 jaina->AI()->Talk(JAINA_SAY_THRONE_3);
1952 }
1954 break;
1955 case 76:
1956 std::list<Creature*> HelperList;
1957 me->GetCreatureListWithEntryInGrid(HelperList, NPC_SW_SOLDIER, 100.0f);
1959 me->GetCreatureListWithEntryInGrid(HelperList, NPC_JAINA, 100.0f);
1960 me->GetCreatureListWithEntryInGrid(HelperList, NPC_SYLVANAS, 100.0f);
1961 me->GetCreatureListWithEntryInGrid(HelperList, NPC_THRALL, 100.0f);
1962 if (!HelperList.empty())
1963 for (std::list<Creature*>::iterator itr = HelperList.begin(); itr != HelperList.end(); itr++)
1964 (*itr)->DespawnOrUnsummon();
1965 if (Map* map = me->GetMap())
1966 {
1967 Map::PlayerList const& PlayerList = map->GetPlayers();
1968 for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
1969 {
1970 if (Player* player = i->GetSource())
1971 {
1972 if (me->IsInRange(player, 0.0f, 50.0f))
1973 {
1974 if (player->GetTeamId() == TEAM_ALLIANCE)
1975 {
1976 player->RemoveAura(SPELL_WRYNN_BUFF);
1977 player->RemoveAura(SPELL_JAINA_BUFF);
1978 player->CompleteQuest(QUEST_BATTLE_A);
1979 player->NearTeleportTo(-8445.213867f, 337.384277f, 121.746056f, 5.401534f, false);
1980 }
1981 }
1982 }
1983 }
1984 }
1989 break;
1990 }
1991 }
1992 else phaseTimer -= diff;
1993 }
1994
1995 if (!UpdateVictim())
1996 return;
1997
1998 _events.Update(diff);
1999
2001 return;
2002
2003 while (uint32 eventId = _events.ExecuteEvent())
2004 {
2005 switch (eventId)
2006 {
2007 case EVENT_WHIRLWIND:
2010 break;
2011 case EVENT_HEROIC_LEAP:
2014 break;
2015 case EVENT_AGGRO_JAINA:
2016 if (me->GetVictim())
2017 {
2019 {
2020 jaina->AI()->AttackStart(me->GetVictim());
2021 }
2022 }
2025 break;
2026 case EVENT_WRYNN_BUFF:
2029 break;
2030 default:
2031 break;
2032 }
2033 }
2034
2036 }
constexpr auto IN_MILLISECONDS
Definition Common.h:53
std::uint32_t uint32
Definition Define.h:107
#define PET_FOLLOW_ANGLE
Definition PetDefines.h:206
@ FACTION_ESCORT_N_NEUTRAL_ACTIVE
Definition ScriptSystem.h:37
@ TEAM_ALLIANCE
Definition SharedDefines.h:771
@ UNIT_STAND_STATE_KNEEL
Definition UnitDefines.h:40
@ UNIT_STAND_STATE_STAND
Definition UnitDefines.h:32
@ UNIT_STATE_CASTING
Definition UnitDefines.h:185
@ REACT_AGGRESSIVE
Definition Unit.h:551
@ WORLD_STATE_BATTLE_FOR_UNDERCITY_MANHUNT_COUNTDOWN_A
Definition WorldStateDefines.h:523
@ WORLD_STATE_BATTLE_FOR_UNDERCITY_MANHUNT_STARTS_A
Definition WorldStateDefines.h:527
bool UpdateVictim()
Definition CreatureAI.cpp:287
void SetTarget(ObjectGuid guid=ObjectGuid::Empty) override
Definition Creature.cpp:3561
void DespawnOrUnsummon(Milliseconds msTimeToDespawn, Seconds forcedRespawnTimer)
Definition Creature.cpp:2180
uint32 ExecuteEvent()
Definition EventMap.cpp:114
void Update(uint32 time)
Definition EventMap.h:54
Definition LinkedList.h:139
Definition MapRefMgr.h:26
iterator begin()
Definition MapRefMgr.h:36
iterator end()
Definition MapRefMgr.h:37
Definition Map.h:160
Definition Player.h:1072
void DoMeleeAttackIfReady()
Definition UnitAI.cpp:39
SpellCastResult DoCastVictim(uint32 spellId, bool triggered=false)
Definition UnitAI.cpp:276
SpellCastResult DoCast(uint32 spellId)
Definition UnitAI.cpp:177
void SetImmuneToNPC(bool apply, bool keepCombat=false)
Definition Unit.cpp:13711
void RemoveStandFlags(uint8 flags)
Definition Unit.h:1704
Unit * GetVictim() const
Definition Unit.h:850
bool HasUnitState(const uint32 f) const
Definition Unit.h:691
void SetStandState(uint8 state)
Definition Unit.cpp:16809
void SetImmuneToAll(bool apply, bool keepCombat=false)
Definition Unit.h:871
void SetStandFlags(uint8 flags)
Definition Unit.h:1703
void setActive(bool isActiveObject)
Definition Object.cpp:1065
void GetCreatureListWithEntryInGrid(std::list< Creature * > &lList, uint32 uiEntry, float fMaxSearchRange) const
Definition Object.cpp:2486
bool IsInRange(WorldObject const *obj, float minRange, float maxRange, bool is3D=true) const
Definition Object.cpp:1409
Talk
Definition hyjal.cpp:82
void UpdateAI(uint32 diff) override
Use to start attacking a target. Called just before JustEngagedWith()
Definition ScriptedEscortAI.cpp:233
Player * GetPlayerForEscort()
Definition ScriptedEscortAI.h:114
void SetRun(bool on=true)
Definition ScriptedEscortAI.cpp:421
void SpawnWave(uint32 waveId)
Definition zone_undercity.cpp:1137
void JumpToNextStep(uint32 uiTimer)
Definition zone_undercity.cpp:1131
@ WRYNN_SAY_APO_12
Definition zone_undercity.cpp:380
@ WRYNN_SAY_SEWERS_4
Definition zone_undercity.cpp:368
@ WRYNN_SAY_APO_6
Definition zone_undercity.cpp:374
@ WRYNN_SAY_THRONE_9
Definition zone_undercity.cpp:389
@ WRYNN_SAY_THRONE_2
Definition zone_undercity.cpp:382
@ WRYNN_SAY_THRONE_4
Definition zone_undercity.cpp:384
@ SPELL_HEROIC_LEAP
Definition zone_undercity.cpp:394
@ WRYNN_SAY_PREP_1
Definition zone_undercity.cpp:359
@ WRYNN_SAY_THRONE_5
Definition zone_undercity.cpp:385
@ WRYNN_SAY_APO_2
Definition zone_undercity.cpp:370
@ WRYNN_SAY_APO_11
Definition zone_undercity.cpp:379
@ WRYNN_SAY_APO_4
Definition zone_undercity.cpp:372
@ WRYNN_SAY_APO_7
Definition zone_undercity.cpp:375
@ WRYNN_SAY_APO_5
Definition zone_undercity.cpp:373
@ WRYNN_SAY_APO_3
Definition zone_undercity.cpp:371
@ WRYNN_SAY_THRONE_3
Definition zone_undercity.cpp:383
@ WRYNN_SAY_SEWERS_2
Definition zone_undercity.cpp:366
@ WRYNN_SAY_APO_8
Definition zone_undercity.cpp:376
@ WRYNN_SAY_THRONE_1
Definition zone_undercity.cpp:381
@ WRYNN_SAY_THRONE_6
Definition zone_undercity.cpp:386
@ WRYNN_SAY_SEWERS_1
Definition zone_undercity.cpp:365
@ WRYNN_SAY_APO_10
Definition zone_undercity.cpp:378
@ WRYNN_SAY_PREP_4
Definition zone_undercity.cpp:362
@ WRYNN_SAY_PREP_2
Definition zone_undercity.cpp:360
@ WRYNN_SAY_THRONE_8
Definition zone_undercity.cpp:388
@ WRYNN_SAY_PREP_6
Definition zone_undercity.cpp:364
@ WRYNN_SAY_THRONE_7
Definition zone_undercity.cpp:387
@ WRYNN_SAY_PREP_5
Definition zone_undercity.cpp:363
@ WRYNN_SAY_PREP_3
Definition zone_undercity.cpp:361
@ SPELL_WHIRLWIND
Definition zone_undercity.cpp:392
@ WRYNN_SAY_APO_1
Definition zone_undercity.cpp:369
@ WRYNN_SAY_APO_9
Definition zone_undercity.cpp:377
@ WRYNN_SAY_SEWERS_3
Definition zone_undercity.cpp:367
@ SPELL_JAINA_BUFF
Definition zone_undercity.cpp:420
@ JAINA_SAY_THRONE_1
Definition zone_undercity.cpp:411
@ JAINA_SAY_THRONE_2
Definition zone_undercity.cpp:412
@ JAINA_SAY_THRONE_3
Definition zone_undercity.cpp:413
@ NPC_JAINA
Definition zone_undercity.cpp:406
@ JAINA_SAY_SEWERS_1
Definition zone_undercity.cpp:409
@ JAINA_SAY_APO_1
Definition zone_undercity.cpp:410
@ SPELL_DEEPFREEZE
Definition zone_undercity.cpp:419
@ QUEST_BATTLE_A
Definition zone_undercity.cpp:695
@ PUTRESS_SAY_3
Definition zone_undercity.cpp:607
@ SPELL_BLIGHT_OVERLOAD
Definition zone_undercity.cpp:599
@ PUTRESS_SAY_6
Definition zone_undercity.cpp:610
@ PUTRESS_SAY_5
Definition zone_undercity.cpp:609
@ SOUND_PUTRESS
Definition zone_undercity.cpp:615
@ PUTRESS_SAY_8
Definition zone_undercity.cpp:612
@ PUTRESS_SAY_7
Definition zone_undercity.cpp:611
@ PUTRESS_SAY_4
Definition zone_undercity.cpp:608
@ PUTRESS_SAY_1
Definition zone_undercity.cpp:605
@ THRALL_SAY_THRONE_A_2
Definition zone_undercity.cpp:442
@ SOUND_THRALL_1
Definition zone_undercity.cpp:480
@ SPELL_THUNDER
Definition zone_undercity.cpp:503
@ SOUND_THRALL_2
Definition zone_undercity.cpp:481
@ THRALL_SAY_THRONE_A_1
Definition zone_undercity.cpp:441
static LocationXYZO AllianceWP[]
Definition zone_undercity.cpp:753

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_BATTLE_FOR_UNDERCITY_APOTHECARIUM_DONE_A, WORLD_STATE_BATTLE_FOR_UNDERCITY_APOTHECARIUM_FIGHT_A, WORLD_STATE_BATTLE_FOR_UNDERCITY_MANHUNT_COUNTDOWN_A, WORLD_STATE_BATTLE_FOR_UNDERCITY_MANHUNT_STARTS_A, WORLD_STATE_BATTLE_FOR_UNDERCITY_SEWERS_DONE_A, WORLD_STATE_BATTLE_FOR_UNDERCITY_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
1113 {
1114 Map::PlayerList const& players = map->GetPlayers();
1115
1116 if (!players.IsEmpty())
1117 {
1118 for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
1119 {
1120 if (Player* player = itr->GetSource())
1121 player->SendUpdateWorldState(id, state);
1122 }
1123 }
1124 }
bool IsEmpty() const
Definition LinkedList.h:97
PlayerList const & GetPlayers() const
Definition Map.h:323

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.

1423 {
1424 switch (waypointId)
1425 {
1426 case 0:
1427 SetHoldState(true);
1428 bStepping = true;
1429 break;
1430 case 2:
1431 SetHoldState(true);
1432 bStepping = true;
1433 break;
1434 case 38:
1436 {
1437 jaina->GetMotionMaster()->Clear();
1438 jaina->SetImmuneToNPC(false);
1439 jaina->SetReactState(REACT_AGGRESSIVE);
1440 }
1441 SetHoldState(true);
1442 bStepping = true;
1443 break;
1444 case 45:
1445 SetHoldState(true);
1446 bStepping = true;
1448 {
1449 jaina->GetMotionMaster()->Clear();
1450 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[6].x, AllianceWP[6].y, AllianceWP[6].z);
1451 }
1452 break;
1453 case 46:
1454 SetHoldState(true);
1455 bStepping = true;
1456 break;
1457 case 48:
1459 putress->AI()->Talk(PUTRESS_SAY_2);
1460 if (Player* player = GetPlayerForEscort())
1461 player->PlayDirectSound(SOUND_PUTRESS, player);
1462 break;
1463 case 50:
1464 SetHoldState(true);
1465 bStepping = true;
1466 break;
1467 case 63:
1468 SetHoldState(true);
1469 bStepping = true;
1470 break;
1471 case 65:
1472 SetHoldState(true);
1473 bStepping = true;
1474 break;
1475 case 66:
1476 SetHoldState(true);
1477 bStepping = true;
1478 break;
1479 case 87:
1480 SetHoldState(true);
1481 bStepping = true;
1482 break;
1483 case 88:
1484 SetHoldState(true);
1485 bStepping = true;
1486 break;
1487 }
1488 }
void SetHoldState(bool bOnHold)
Definition zone_undercity.cpp:1126
@ PUTRESS_SAY_2
Definition zone_undercity.cpp:606

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

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