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

References allianceGuardsGUID.

Member Function Documentation

◆ EnterEvadeMode()

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

Reimplemented from npc_escortAI.

977 {
979 me->CombatStop(true);
980 me->SetLootRecipient(nullptr);
981
983 {
986 }
987 else
988 {
990 Reset();
991 }
992 }
@ STATE_ESCORT_ESCORTING
Definition ScriptedEscortAI.h:47
@ STATE_ESCORT_RETURNING
Definition ScriptedEscortAI.h:48
void SetLootRecipient(Unit *unit, bool withGroup=true)
Definition Creature.cpp:1326
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:10480
MotionMaster * GetMotionMaster()
Definition Unit.h:1664
ThreatMgr & GetThreatMgr()
Definition Unit.h:896
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:994

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

References phaseTimer, and step.

Referenced by UpdateAI().

◆ JustSummoned()

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

Reimplemented from CreatureAI.

1078 {
1079 switch (summonedCreature->GetEntry())
1080 {
1081 case NPC_GENERATOR:
1082 summonedCreature->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
1083 summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_WRYNN_BUFF, true);
1084 summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_THRALL_BUFF, true);
1085 summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true);
1086 break;
1087 default:
1088 break;
1089 }
1090 }
@ IMMUNITY_ID
Definition SharedDefines.h:1400
@ UNIT_FLAG_NOT_SELECTABLE
Definition UnitDefines.h:275
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:13433
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.

995 {
997 {
998 me->SetCorpseDelay(1);
999 me->SetRespawnTime(1);
1001
1002 bStepping = false;
1003 step = 0;
1004 phaseTimer = 0;
1005 jainaGUID.Clear();
1011
1013 {
1014 putress->DespawnOrUnsummon();
1016 }
1017
1019 {
1020 blightWorm->DespawnOrUnsummon();
1022 }
1023
1025 {
1026 khanok->DespawnOrUnsummon();
1027 khanokGUID.Clear();
1028 }
1029
1031 {
1032 thrall->DespawnOrUnsummon();
1033 thrallGUID.Clear();
1034 }
1035
1037 {
1038 sylvanas->DespawnOrUnsummon();
1040 }
1041
1042 for (uint8 i = 0; i < GENERATOR_MAXCOUNT; ++i)
1043 {
1045 {
1046 generatorGUID[i].Clear();
1047 temp->DespawnOrUnsummon();
1048 }
1049 }
1050
1051 for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
1052 {
1054 {
1056 temp->DespawnOrUnsummon();
1057 }
1058 }
1059
1060 for (ObjectGuid const& guid : allianceGuardsGUID)
1061 if (Creature* temp = ObjectAccessor::GetCreature(*me, guid))
1062 temp->DespawnOrUnsummon();
1063
1064 allianceGuardsGUID.clear();
1065
1066 for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
1067 {
1069 {
1071 temp->DespawnOrUnsummon();
1072 }
1073 }
1074 }
1075 }
std::uint8_t uint8
Definition Define.h:109
@ UNIT_NPC_FLAG_GOSSIP
Definition UnitDefines.h:315
Definition Creature.h:43
void SetRespawnTime(uint32 respawn)
Definition Creature.cpp:3800
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:954
ObjectGuid jainaGUID
Definition zone_undercity.cpp:962
ObjectGuid putressGUID
Definition zone_undercity.cpp:963
ObjectGuid blightWormGUID
Definition zone_undercity.cpp:964
EventMap _events
Definition zone_undercity.cpp:974
ObjectGuid sylvanasGUID
Definition zone_undercity.cpp:967
ObjectGuid allianceForcesGUID[ALLIANCE_FORCE_MAXCOUNT]
Definition zone_undercity.cpp:970
ObjectGuid generatorGUID[GENERATOR_MAXCOUNT]
Definition zone_undercity.cpp:969
ObjectGuid khanokGUID
Definition zone_undercity.cpp:965
ObjectGuid hordeForcesGUID[HORDE_FORCE_MAXCOUNT]
Definition zone_undercity.cpp:971
ObjectGuid thrallGUID
Definition zone_undercity.cpp:966
@ 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
1126 {
1127 SetEscortPaused(bOnHold);
1128 }
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
1137 {
1138 switch (waveId)
1139 {
1140 case 0:
1142 break;
1143 case 1:
1144 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1145 {
1146 switch (urand(0, 12))
1147 {
1148 case 0:
1150 break;
1151 case 1:
1152 case 2:
1153 case 3:
1155 break;
1156 case 4:
1157 case 5:
1158 case 6:
1160 break;
1161 case 7:
1162 case 8:
1163 case 9:
1165 break;
1166 case 10:
1167 case 11:
1168 case 12:
1170 break;
1171 }
1172 }
1173 break;
1174 case 2:
1175 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1176 {
1177 switch (urand(0, 3))
1178 {
1179 case 0:
1181 break;
1182 case 1:
1184 break;
1185 case 2:
1187 break;
1188 case 3:
1190 break;
1191 }
1192 }
1193 break;
1194 case 3:
1195 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1196 {
1197 switch (urand(0, 4))
1198 {
1199 case 0:
1201 break;
1202 case 1:
1203 case 2:
1205 break;
1206 case 3:
1207 case 4:
1209 break;
1210 }
1211 }
1212 break;
1213 case 4:
1214 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1215 {
1216 switch (urand(0, 5))
1217 {
1218 case 0:
1220 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1221 break;
1222 case 1:
1224 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1225 break;
1226 case 2:
1228 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1229 break;
1230 case 3:
1232 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1233 break;
1234 case 4:
1236 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1237 break;
1238 case 5:
1240 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1241 break;
1242 }
1243 }
1244 break;
1245 case 5:
1246 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1248 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1249 break;
1250 case 6:
1252 {
1253 blightWormGUID = temp->GetGUID();
1254 temp->AddThreat(me, 100.0f);
1255 me->AddThreat(temp, 100.0f);
1257 {
1258 temp->AddThreat(jaina, 100.0f);
1259 jaina->AddThreat(temp, 100.0f);
1260 }
1261 }
1263 {
1264 khanokGUID = temp->GetGUID();
1266 khanok->setDeathState(DeathState::JustDied);
1267 }
1269 {
1270 putressGUID = temp->GetGUID();
1271 temp->CastSpell(temp, SPELL_PUTRESS_CASTING_STATE);
1272 }
1273 for (uint8 i = 0; i < GENERATOR_MAXCOUNT; ++i)
1274 {
1275 switch (i)
1276 {
1277 case 0:
1278 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1433.142212f, 402.493835f, -80.515945f, TEMPSUMMON_MANUAL_DESPAWN))
1279 {
1280 generatorGUID[i] = temp->GetGUID();
1282 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT);
1283 }
1284 break;
1285 case 1:
1286 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1428.677979f, 399.753418f, -79.141609f, TEMPSUMMON_MANUAL_DESPAWN))
1287 {
1288 generatorGUID[i] = temp->GetGUID();
1290 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1291 }
1292 break;
1293 case 2:
1294 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1425.163330f, 402.268951f, -79.299744f, TEMPSUMMON_MANUAL_DESPAWN))
1295 {
1296 generatorGUID[i] = temp->GetGUID();
1298 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1299 }
1300 break;
1301 case 3:
1302 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1427.323242f, 406.853088f, -78.195641f, TEMPSUMMON_MANUAL_DESPAWN))
1303 {
1304 generatorGUID[i] = temp->GetGUID();
1306 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1307 }
1308 break;
1309 case 4:
1310 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1432.465210f, 407.460022f, -81.689384f, TEMPSUMMON_MANUAL_DESPAWN))
1311 {
1312 generatorGUID[i] = temp->GetGUID();
1314 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1315 }
1316 break;
1317 }
1318 }
1319 break;
1320 case 7:
1322 {
1323 allianceGuardsGUID.push_back(temp->GetGUID());
1324 temp->GetMotionMaster()->MovePath(NPC_SW_SOLDIER * 10, false);
1325 }
1327 {
1328 allianceGuardsGUID.push_back(temp->GetGUID());
1329 temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 1, false);
1330 }
1332 {
1333 allianceGuardsGUID.push_back(temp->GetGUID());
1334 temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 2, false);
1335 }
1337 {
1338 allianceGuardsGUID.push_back(temp->GetGUID());
1339 temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 3, false);
1340 }
1341 break;
1342 case 8:
1343 break;
1344 case 9:
1345 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1347 break;
1348 case 10:
1350 {
1351 temp->GetMotionMaster()->MovePath(NPC_DREADLORD * 10, false);
1352 temp->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);
1353 temp->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK_DEST, true);
1354 }
1355 break;
1356 case 11:
1357 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1358 {
1359 switch (urand(0, 3))
1360 {
1361 case 0:
1363 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1364 break;
1365 case 1:
1367 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1368 break;
1369 case 2:
1371 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1372 break;
1373 case 3:
1375 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1376 break;
1377 }
1378 }
1379 break;
1380 case 12:
1382 {
1383 thrallGUID = temp->GetGUID();
1384 temp->SetReactState(REACT_PASSIVE);
1385 temp->SetImmuneToAll(true);
1386 temp->CastSpell(temp, SPELL_THRALL_BUFF);
1387 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1388 }
1390 {
1391 sylvanasGUID = temp->GetGUID();
1392 temp->SetReactState(REACT_PASSIVE);
1393 temp->SetImmuneToAll(true);
1394 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1395 }
1396 for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
1397 {
1399 {
1400 hordeForcesGUID[i] = temp->GetGUID();
1401 temp->SetReactState(REACT_PASSIVE);
1402 temp->SetImmuneToAll(true);
1403 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1404 }
1405 }
1406 break;
1407 case 13:
1408 for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
1409 {
1411 {
1412 allianceForcesGUID[i] = temp->GetGUID();
1413 temp->SetImmuneToAll(true);
1414 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1415 }
1416 }
1417 break;
1418 }
1419 }
@ TEMPSUMMON_DEAD_DESPAWN
Definition Object.h:53
@ TEMPSUMMON_MANUAL_DESPAWN
Definition Object.h:54
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:49
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
uint32 rand32()
Definition Random.cpp:80
@ 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
@ 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:852
Definition Unit.h:620
void AddThreat(Unit *victim, float fThreat, SpellSchoolMask schoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *threatSpell=nullptr)
Definition Unit.cpp:14704
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:2368
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.

1093 {
1094 switch (summon->GetEntry())
1095 {
1096 case NPC_BLIGHTWORM:
1099 bStepping = true;
1100 break;
1101 case NPC_PUTRESS:
1104 bStepping = true;
1105 break;
1106 default:
1107 break;
1108 }
1109 }
@ 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:537
void UpdateWorldState(Map *map, uint32 id, uint32 state)
Definition zone_undercity.cpp:1111

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.

1490 {
1492
1493 if (bStepping)
1494 {
1495 if (phaseTimer <= diff)
1496 {
1497 switch (step)
1498 {
1499 //Preparation
1500 case 0:
1501 me->setActive(true);
1505 break;
1506 case 1:
1509 break;
1510 case 2:
1513 break;
1514 case 3:
1517 break;
1518 case 4:
1523 break;
1524 case 5:
1527 break;
1528 case 6:
1531 break;
1532 case 7:
1533 SetEscortPaused(false);
1535 break;
1536 case 8:
1538 {
1539 jaina->GetMotionMaster()->MovePath(NPC_JAINA * 10, false);
1540 jaina->setActive(true);
1541 }
1542 bStepping = false;
1543 JumpToNextStep(0);
1544 break;
1545 //Sewers
1546 case 9:
1548 SpawnWave(0);
1549 SpawnWave(1);
1550 SpawnWave(2);
1551 SpawnWave(3);
1552 JumpToNextStep(9500);
1553 break;
1554 case 10:
1556 jaina->AI()->Talk(JAINA_SAY_SEWERS_1);
1558 break;
1559 case 11:
1561 jaina->AI()->DoCast(SPELL_JAINA_BUFF);
1563 break;
1564 case 12:
1565 SetEscortPaused(false);
1569 break;
1570 case 13:
1572 {
1573 jaina->GetMotionMaster()->MoveFollow(me, 5, PET_FOLLOW_ANGLE);
1574 jaina->SetReactState(REACT_AGGRESSIVE);
1575 jaina->SetFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE);
1576 }
1577 bStepping = false;
1578 JumpToNextStep(0);
1579 break;
1580 case 14:
1583 break;
1584 case 15:
1585 SpawnWave(4);
1587 break;
1588 case 16:
1589 SpawnWave(5);
1591 break;
1592 case 17:
1593 SpawnWave(4);
1595 break;
1596 case 18:
1597 SpawnWave(4);
1599 break;
1600 case 19:
1601 SpawnWave(5);
1603 break;
1604 case 20:
1605 SpawnWave(6);
1606 bStepping = false;
1607 JumpToNextStep(0);
1608 break;
1609 case 21:
1611 SpawnWave(7);
1613 break;
1614 case 22:
1616 SetRun(false);
1618 {
1619 jaina->GetMotionMaster()->Clear();
1620 jaina->GetMotionMaster()->MoveFollow(me, 1, 0);
1621 }
1623 break;
1624 case 23:
1625 bStepping = false;
1626 SetEscortPaused(false);
1627 JumpToNextStep(0);
1628 break;
1629 //Apothecarium
1630 case 24:
1632 jaina->AI()->Talk(JAINA_SAY_APO_1);
1634 break;
1635 case 25:
1636 SetEscortPaused(false);
1637 bStepping = false;
1638 JumpToNextStep(0);
1639 break;
1640 case 26:
1644 break;
1645 case 27:
1648 break;
1649 case 28:
1652 break;
1653 case 29:
1656 break;
1657 case 30:
1660 putress->AI()->Talk(PUTRESS_SAY_1);
1661 if (Player* player = GetPlayerForEscort())
1662 player->PlayDirectSound(SOUND_PUTRESS, player);
1663 SpawnWave(9);
1665 break;
1666 case 31:
1667 SetRun(true);
1669 jaina->GetMotionMaster()->MoveFollow(me, 1, 0);
1670 SetEscortPaused(false);
1671 bStepping = false;
1672 JumpToNextStep(0);
1673 break;
1674 case 32:
1676 SpawnWave(10);
1678 break;
1679 case 33:
1680 SpawnWave(10);
1682 break;
1683 case 34:
1684 SpawnWave(10);
1686 break;
1687 case 35:
1688 SpawnWave(10);
1690 break;
1691 case 36:
1692 SpawnWave(10);
1694 break;
1695 case 37:
1696 SpawnWave(10);
1698 break;
1699 case 38:
1700 SpawnWave(10);
1702 break;
1703 case 39:
1704 SpawnWave(10);
1706 break;
1707 case 40:
1708 SpawnWave(10);
1710 break;
1711 case 41:
1712 SpawnWave(10);
1714 break;
1715 case 42:
1716 SpawnWave(10);
1718 break;
1719 case 43:
1720 SetEscortPaused(false);
1721 bStepping = false;
1722 JumpToNextStep(0);
1723 break;
1724 case 44:
1727 {
1728 jaina->GetMotionMaster()->Clear();
1729 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[7].x, AllianceWP[7].y, AllianceWP[7].z, false);
1730 }
1732 break;
1733 case 45:
1734 SetEscortPaused(false);
1735 bStepping = false;
1736 JumpToNextStep(0);
1737 break;
1738 case 46:
1741 break;
1742 case 47:
1744 putress->AI()->Talk(PUTRESS_SAY_3);
1745 SpawnWave(11);
1747 break;
1748 case 48:
1750 putress->AI()->Talk(PUTRESS_SAY_4);
1752 break;
1753 case 49:
1755 putress->AI()->Talk(PUTRESS_SAY_5);
1756 SpawnWave(11);
1758 break;
1759 case 50:
1761 putress->AI()->Talk(PUTRESS_SAY_6);
1763 break;
1764 case 51:
1766 putress->AI()->Talk(PUTRESS_SAY_7);
1767 SpawnWave(11);
1769 break;
1770 case 52:
1772 {
1773 putress->AI()->Talk(PUTRESS_SAY_8);
1774 putress->AI()->DoCast(SPELL_BLIGHT_OVERLOAD);
1775 }
1777 break;
1778 case 53:
1780 {
1781 putress->SetImmuneToAll(false);
1782 putress->AddThreat(me, 100.0f);
1783 me->AddThreat(putress, 100.0f);
1784 putress->RemoveAura(SPELL_PUTRESS_CASTING_STATE);
1785 }
1786 bStepping = false;
1787 JumpToNextStep(0);
1788 break;
1789 case 54:
1791 SetRun(false);
1793 break;
1794 case 55:
1799 break;
1800 case 56:
1804 SetEscortPaused(false);
1805 bStepping = false;
1806 JumpToNextStep(0);
1807 break;
1808 case 57:
1810 break;
1811 case 58:
1814 break;
1815 case 59:
1818 break;
1819 case 60:
1821 SpawnWave(12); // thrall sylvanas horde soldiers
1823 break;
1824 case 61:
1826 thrall->AI()->Talk(THRALL_SAY_THRONE_A_1);
1827 if (Player* player = GetPlayerForEscort())
1828 player->PlayDirectSound(SOUND_THRALL_1, player);
1830 break;
1831 case 62:
1833 thrall->AI()->Talk(THRALL_SAY_THRONE_A_2);
1834 if (Player* player = GetPlayerForEscort())
1835 player->PlayDirectSound(SOUND_THRALL_2, player);
1837 break;
1838 case 63:
1841 break;
1842 case 64:
1845 break;
1846 case 65:
1847 SetRun(true);
1848 SetEscortPaused(false);
1850 break;
1851 case 66:
1853 jaina->AI()->Talk(JAINA_SAY_THRONE_1);
1854 me->SetImmuneToNPC(true);
1855 bStepping = false;
1856 JumpToNextStep(0);
1857 break;
1858 case 67:
1861 break;
1862 case 68:
1865 {
1866 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[8].x, AllianceWP[8].y, AllianceWP[8].z);
1867 jaina->SetImmuneToAll(true);
1868 }
1869 SetEscortPaused(false);
1870 bStepping = false;
1871 JumpToNextStep(0);
1872 break;
1873 case 69:
1875 SpawnWave(13); //alliance soldiers
1877 break;
1878 case 70:
1881 break;
1882 case 71:
1885 break;
1886 case 72:
1889 break;
1890 case 73:
1892 me->SetImmuneToAll(false);
1894 {
1895 thrall->SetReactState(REACT_AGGRESSIVE);
1896 thrall->SetImmuneToNPC(false);
1897 thrall->SetImmuneToPC(true);
1898 thrall->AddThreat(me, 100.0f);
1899 me->AddThreat(thrall, 100.0f);
1900 thrall->AI()->AttackStart(me);
1901 }
1903 {
1904 sylvanas->SetReactState(REACT_AGGRESSIVE);
1905 sylvanas->SetImmuneToNPC(false);
1906 sylvanas->SetImmuneToPC(true);
1907 sylvanas->AddThreat(me, 100.0f);
1908 sylvanas->AI()->AttackStart(me);
1909 me->AddThreat(sylvanas, 100.0f);
1910 }
1911 for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
1912 {
1914 {
1915 temp->SetReactState(REACT_AGGRESSIVE);
1916 temp->SetImmuneToNPC(false);
1917 temp->SetImmuneToPC(true);
1918 }
1919 }
1920 for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
1921 {
1923 {
1925 {
1926 temp->SetReactState(REACT_AGGRESSIVE);
1927 temp2->SetReactState(REACT_AGGRESSIVE);
1928 temp->SetImmuneToAll(false);
1929 temp2->SetImmuneToAll(false);
1930 temp->AddThreat(temp2, 100.0f);
1931 temp->AI()->AttackStart(temp2);
1932 temp2->AddThreat(temp, 100.0f);
1933 }
1934 }
1935 }
1937 break;
1938 case 74:
1940 {
1941 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[9].x, AllianceWP[9].y, AllianceWP[9].z);
1942 jaina->AI()->Talk(JAINA_SAY_THRONE_2);
1943 }
1945 break;
1946 case 75:
1948 {
1949 jaina->AI()->DoCastAOE(SPELL_DEEPFREEZE);
1950 jaina->AI()->Talk(JAINA_SAY_THRONE_3);
1951 }
1953 break;
1954 case 76:
1955 std::list<Creature*> HelperList;
1956 me->GetCreatureListWithEntryInGrid(HelperList, NPC_SW_SOLDIER, 100.0f);
1958 me->GetCreatureListWithEntryInGrid(HelperList, NPC_JAINA, 100.0f);
1959 me->GetCreatureListWithEntryInGrid(HelperList, NPC_SYLVANAS, 100.0f);
1960 me->GetCreatureListWithEntryInGrid(HelperList, NPC_THRALL, 100.0f);
1961 if (!HelperList.empty())
1962 for (std::list<Creature*>::iterator itr = HelperList.begin(); itr != HelperList.end(); itr++)
1963 (*itr)->DespawnOrUnsummon();
1964 if (Map* map = me->GetMap())
1965 {
1966 Map::PlayerList const& PlayerList = map->GetPlayers();
1967 for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
1968 {
1969 if (Player* player = i->GetSource())
1970 {
1971 if (me->IsInRange(player, 0.0f, 50.0f))
1972 {
1973 if (player->GetTeamId() == TEAM_ALLIANCE)
1974 {
1975 player->RemoveAura(SPELL_WRYNN_BUFF);
1976 player->RemoveAura(SPELL_JAINA_BUFF);
1977 player->CompleteQuest(QUEST_BATTLE_A);
1978 player->NearTeleportTo(-8445.213867f, 337.384277f, 121.746056f, 5.401534f, false);
1979 }
1980 }
1981 }
1982 }
1983 }
1988 break;
1989 }
1990 }
1991 else phaseTimer -= diff;
1992 }
1993
1994 if (!UpdateVictim())
1995 return;
1996
1997 _events.Update(diff);
1998
2000 return;
2001
2002 while (uint32 eventId = _events.ExecuteEvent())
2003 {
2004 switch (eventId)
2005 {
2006 case EVENT_WHIRLWIND:
2009 break;
2010 case EVENT_HEROIC_LEAP:
2013 break;
2014 case EVENT_AGGRO_JAINA:
2015 if (me->GetVictim())
2016 {
2018 {
2019 jaina->AI()->AttackStart(me->GetVictim());
2020 }
2021 }
2024 break;
2025 case EVENT_WRYNN_BUFF:
2028 break;
2029 default:
2030 break;
2031 }
2032 }
2033
2035 }
constexpr auto IN_MILLISECONDS
Definition Common.h:53
std::uint32_t uint32
Definition Define.h:107
#define PET_FOLLOW_ANGLE
Definition PetDefines.h:203
@ FACTION_ESCORT_N_NEUTRAL_ACTIVE
Definition ScriptSystem.h:37
@ TEAM_ALLIANCE
Definition SharedDefines.h:760
@ 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:282
void SetTarget(ObjectGuid guid=ObjectGuid::Empty) override
Definition Creature.cpp:3560
void DespawnOrUnsummon(Milliseconds msTimeToDespawn, Seconds forcedRespawnTimer)
Definition Creature.cpp:2177
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:156
Definition Player.h:1082
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
void SetImmuneToNPC(bool apply, bool keepCombat=false)
Definition Unit.cpp:13661
void RemoveStandFlags(uint8 flags)
Definition Unit.h:1692
Unit * GetVictim() const
Definition Unit.h:846
bool HasUnitState(const uint32 f) const
Definition Unit.h:691
void SetStandState(uint8 state)
Definition Unit.cpp:16759
void SetImmuneToAll(bool apply, bool keepCombat=false)
Definition Unit.h:867
void SetStandFlags(uint8 flags)
Definition Unit.h:1691
void setActive(bool isActiveObject)
Definition Object.cpp:1094
void GetCreatureListWithEntryInGrid(std::list< Creature * > &lList, uint32 uiEntry, float fMaxSearchRange) const
Definition Object.cpp:2513
bool IsInRange(WorldObject const *obj, float minRange, float maxRange, bool is3D=true) const
Definition Object.cpp:1415
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:1136
void JumpToNextStep(uint32 uiTimer)
Definition zone_undercity.cpp:1130
@ 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
1112 {
1113 Map::PlayerList const& players = map->GetPlayers();
1114
1115 if (!players.IsEmpty())
1116 {
1117 for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
1118 {
1119 if (Player* player = itr->GetSource())
1120 player->SendUpdateWorldState(id, state);
1121 }
1122 }
1123 }
bool IsEmpty() const
Definition LinkedList.h:97
PlayerList const & GetPlayers() const
Definition Map.h:333

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.

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