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 ()
 
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
962 : npc_escortAI(creature)
963 {
964 allianceGuardsGUID.clear();
965 }
Definition ScriptedEscortAI.h:53
GuidVector allianceGuardsGUID
Definition zone_undercity.cpp:985

References allianceGuardsGUID.

Member Function Documentation

◆ EnterEvadeMode()

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

Reimplemented from npc_escortAI.

990 {
992 me->CombatStop(true);
993 me->SetLootRecipient(nullptr);
994
996 {
999 }
1000 else
1001 {
1003 Reset();
1004 }
1005 }
@ 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:10481
MotionMaster * GetMotionMaster()
Definition Unit.h:1673
ThreatMgr & GetThreatMgr()
Definition Unit.h:912
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:193
void Reset() override
Definition zone_undercity.cpp:1007

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
1144 {
1145 phaseTimer = uiTimer;
1146 ++step;
1147 }
uint32 step
Definition zone_undercity.cpp:970
uint32 phaseTimer
Definition zone_undercity.cpp:971

References phaseTimer, and step.

Referenced by UpdateAI().

◆ JustSummoned()

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

Reimplemented from CreatureAI.

1091 {
1092 switch (summonedCreature->GetEntry())
1093 {
1094 case NPC_GENERATOR:
1095 summonedCreature->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
1096 summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_WRYNN_BUFF, true);
1097 summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_THRALL_BUFF, true);
1098 summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true);
1099 break;
1100 default:
1101 break;
1102 }
1103 }
@ IMMUNITY_ID
Definition SharedDefines.h:1400
@ UNIT_FLAG_NOT_SELECTABLE
Definition UnitDefines.h:275
uint32 GetEntry() const
Definition Object.h:115
void ApplySpellImmune(uint32 spellId, uint32 op, uint32 type, bool apply, SpellImmuneBlockType blockType=SPELL_BLOCK_TYPE_ALL)
Definition Unit.cpp:13434
void SetUnitFlag(UnitFlags flags)
UnitFlags available in UnitDefines.h.
Definition Unit.h:719
@ SPELL_WRYNN_BUFF
Definition zone_undercity.cpp:406
@ SPELL_SYLVANAS_BUFF
Definition zone_undercity.cpp:563
@ NPC_GENERATOR
Definition zone_undercity.cpp:608
@ SPELL_THRALL_BUFF
Definition zone_undercity.cpp:497

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.

1008 {
1010 {
1011 me->SetCorpseDelay(1);
1012 me->SetRespawnTime(1);
1014
1015 bStepping = false;
1016 step = 0;
1017 phaseTimer = 0;
1018 jainaGUID.Clear();
1024
1026 {
1027 putress->DespawnOrUnsummon();
1029 }
1030
1032 {
1033 blightWorm->DespawnOrUnsummon();
1035 }
1036
1038 {
1039 khanok->DespawnOrUnsummon();
1040 khanokGUID.Clear();
1041 }
1042
1044 {
1045 thrall->DespawnOrUnsummon();
1046 thrallGUID.Clear();
1047 }
1048
1050 {
1051 sylvanas->DespawnOrUnsummon();
1053 }
1054
1055 for (uint8 i = 0; i < GENERATOR_MAXCOUNT; ++i)
1056 {
1058 {
1059 generatorGUID[i].Clear();
1060 temp->DespawnOrUnsummon();
1061 }
1062 }
1063
1064 for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
1065 {
1067 {
1069 temp->DespawnOrUnsummon();
1070 }
1071 }
1072
1073 for (ObjectGuid const& guid : allianceGuardsGUID)
1074 if (Creature* temp = ObjectAccessor::GetCreature(*me, guid))
1075 temp->DespawnOrUnsummon();
1076
1077 allianceGuardsGUID.clear();
1078
1079 for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
1080 {
1082 {
1084 temp->DespawnOrUnsummon();
1085 }
1086 }
1087 }
1088 }
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:3792
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:735
Definition ObjectAccessor.h:61
Creature * GetCreature(WorldObject const &u, ObjectGuid const guid)
Definition ObjectAccessor.cpp:210
bool bStepping
Definition zone_undercity.cpp:967
ObjectGuid jainaGUID
Definition zone_undercity.cpp:975
ObjectGuid putressGUID
Definition zone_undercity.cpp:976
ObjectGuid blightWormGUID
Definition zone_undercity.cpp:977
EventMap _events
Definition zone_undercity.cpp:987
ObjectGuid sylvanasGUID
Definition zone_undercity.cpp:980
ObjectGuid allianceForcesGUID[ALLIANCE_FORCE_MAXCOUNT]
Definition zone_undercity.cpp:983
ObjectGuid generatorGUID[GENERATOR_MAXCOUNT]
Definition zone_undercity.cpp:982
ObjectGuid khanokGUID
Definition zone_undercity.cpp:978
ObjectGuid hordeForcesGUID[HORDE_FORCE_MAXCOUNT]
Definition zone_undercity.cpp:984
ObjectGuid thrallGUID
Definition zone_undercity.cpp:979
@ EVENT_HEROIC_LEAP
Definition zone_undercity.cpp:411
@ EVENT_WRYNN_BUFF
Definition zone_undercity.cpp:413
@ EVENT_WHIRLWIND
Definition zone_undercity.cpp:410
@ EVENT_AGGRO_JAINA
Definition zone_undercity.cpp:412
@ HORDE_FORCE_MAXCOUNT
Definition zone_undercity.cpp:720
@ ALLIANCE_FORCE_MAXCOUNT
Definition zone_undercity.cpp:719
@ GENERATOR_MAXCOUNT
Definition zone_undercity.cpp:718

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
1139 {
1140 SetEscortPaused(bOnHold);
1141 }
void SetEscortPaused(bool on)
Definition ScriptedEscortAI.cpp:523

References npc_escortAI::SetEscortPaused().

Referenced by WaypointReached().

◆ SpawnWave()

void npc_varian_wrynn::npc_varian_wrynnAI::SpawnWave ( uint32  waveId)
inline
1150 {
1151 switch (waveId)
1152 {
1153 case 0:
1155 break;
1156 case 1:
1157 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1158 {
1159 switch (urand(0, 12))
1160 {
1161 case 0:
1163 break;
1164 case 1:
1165 case 2:
1166 case 3:
1168 break;
1169 case 4:
1170 case 5:
1171 case 6:
1173 break;
1174 case 7:
1175 case 8:
1176 case 9:
1178 break;
1179 case 10:
1180 case 11:
1181 case 12:
1183 break;
1184 }
1185 }
1186 break;
1187 case 2:
1188 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1189 {
1190 switch (urand(0, 3))
1191 {
1192 case 0:
1194 break;
1195 case 1:
1197 break;
1198 case 2:
1200 break;
1201 case 3:
1203 break;
1204 }
1205 }
1206 break;
1207 case 3:
1208 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1209 {
1210 switch (urand(0, 4))
1211 {
1212 case 0:
1214 break;
1215 case 1:
1216 case 2:
1218 break;
1219 case 3:
1220 case 4:
1222 break;
1223 }
1224 }
1225 break;
1226 case 4:
1227 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1228 {
1229 switch (urand(0, 5))
1230 {
1231 case 0:
1233 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1234 break;
1235 case 1:
1237 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1238 break;
1239 case 2:
1241 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1242 break;
1243 case 3:
1245 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1246 break;
1247 case 4:
1249 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1250 break;
1251 case 5:
1253 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1254 break;
1255 }
1256 }
1257 break;
1258 case 5:
1259 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1261 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), false);
1262 break;
1263 case 6:
1265 {
1266 blightWormGUID = temp->GetGUID();
1267 temp->AddThreat(me, 100.0f);
1268 me->AddThreat(temp, 100.0f);
1270 {
1271 temp->AddThreat(jaina, 100.0f);
1272 jaina->AddThreat(temp, 100.0f);
1273 }
1274 }
1276 {
1277 khanokGUID = temp->GetGUID();
1279 khanok->setDeathState(DeathState::JustDied);
1280 }
1282 {
1283 putressGUID = temp->GetGUID();
1284 temp->CastSpell(temp, SPELL_PUTRESS_CASTING_STATE);
1285 }
1286 for (uint8 i = 0; i < GENERATOR_MAXCOUNT; ++i)
1287 {
1288 switch (i)
1289 {
1290 case 0:
1291 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1433.142212f, 402.493835f, -80.515945f, TEMPSUMMON_MANUAL_DESPAWN))
1292 {
1293 generatorGUID[i] = temp->GetGUID();
1295 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT);
1296 }
1297 break;
1298 case 1:
1299 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1428.677979f, 399.753418f, -79.141609f, TEMPSUMMON_MANUAL_DESPAWN))
1300 {
1301 generatorGUID[i] = temp->GetGUID();
1303 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1304 }
1305 break;
1306 case 2:
1307 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1425.163330f, 402.268951f, -79.299744f, TEMPSUMMON_MANUAL_DESPAWN))
1308 {
1309 generatorGUID[i] = temp->GetGUID();
1311 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1312 }
1313 break;
1314 case 3:
1315 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1427.323242f, 406.853088f, -78.195641f, TEMPSUMMON_MANUAL_DESPAWN))
1316 {
1317 generatorGUID[i] = temp->GetGUID();
1319 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1320 }
1321 break;
1322 case 4:
1323 if (Unit* temp = me->SummonCreature(NPC_GENERATOR, 1432.465210f, 407.460022f, -81.689384f, TEMPSUMMON_MANUAL_DESPAWN))
1324 {
1325 generatorGUID[i] = temp->GetGUID();
1327 temp->CastSpell(putress, SPELL_BLIGHT_EMPOWERMENT, false, 0, 0, generatorGUID[0]);
1328 }
1329 break;
1330 }
1331 }
1332 break;
1333 case 7:
1335 {
1336 allianceGuardsGUID.push_back(temp->GetGUID());
1337 temp->GetMotionMaster()->MovePath(NPC_SW_SOLDIER * 10, false);
1338 }
1340 {
1341 allianceGuardsGUID.push_back(temp->GetGUID());
1342 temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 1, false);
1343 }
1345 {
1346 allianceGuardsGUID.push_back(temp->GetGUID());
1347 temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 2, false);
1348 }
1350 {
1351 allianceGuardsGUID.push_back(temp->GetGUID());
1352 temp->GetMotionMaster()->MovePath((NPC_SW_SOLDIER * 10) + 3, false);
1353 }
1354 break;
1355 case 8:
1356 break;
1357 case 9:
1358 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1360 break;
1361 case 10:
1363 {
1364 temp->GetMotionMaster()->MovePath(NPC_DREADLORD * 10, false);
1365 temp->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);
1366 temp->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK_DEST, true);
1367 }
1368 break;
1369 case 11:
1370 for (uint8 i = 0; i < WAVE_MAXCOUNT; ++i)
1371 {
1372 switch (urand(0, 3))
1373 {
1374 case 0:
1376 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1377 break;
1378 case 1:
1380 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1381 break;
1382 case 2:
1384 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1385 break;
1386 case 3:
1388 temp->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
1389 break;
1390 }
1391 }
1392 break;
1393 case 12:
1395 {
1396 thrallGUID = temp->GetGUID();
1397 temp->SetReactState(REACT_PASSIVE);
1398 temp->SetImmuneToAll(true);
1399 temp->CastSpell(temp, SPELL_THRALL_BUFF);
1400 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1401 }
1403 {
1404 sylvanasGUID = temp->GetGUID();
1405 temp->SetReactState(REACT_PASSIVE);
1406 temp->SetImmuneToAll(true);
1407 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1408 }
1409 for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
1410 {
1412 {
1413 hordeForcesGUID[i] = temp->GetGUID();
1414 temp->SetReactState(REACT_PASSIVE);
1415 temp->SetImmuneToAll(true);
1416 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1417 }
1418 }
1419 break;
1420 case 13:
1421 for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
1422 {
1424 {
1425 allianceForcesGUID[i] = temp->GetGUID();
1426 temp->SetImmuneToAll(true);
1427 temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
1428 }
1429 }
1430 break;
1431 }
1432 }
@ TEMPSUMMON_DEAD_DESPAWN
Definition Object.h:52
@ TEMPSUMMON_MANUAL_DESPAWN
Definition Object.h:53
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:48
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
uint32 rand32()
Definition Random.cpp:72
@ 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:548
@ 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:636
void AddThreat(Unit *victim, float fThreat, SpellSchoolMask schoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *threatSpell=nullptr)
Definition Unit.cpp:14705
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:728
float y
Definition zone_undercity.cpp:728
float x
Definition zone_undercity.cpp:728
float z
Definition zone_undercity.cpp:728
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:673
@ NPC_CHEMIST
Definition zone_undercity.cpp:674
@ NPC_DOCTOR
Definition zone_undercity.cpp:677
@ NPC_SW_SOLDIER
Definition zone_undercity.cpp:679
@ NPC_FELBEAST
Definition zone_undercity.cpp:676
@ NPC_DREADLORD
Definition zone_undercity.cpp:672
@ NPC_BETRAYER
Definition zone_undercity.cpp:675
@ NPC_COLLABORATOR
Definition zone_undercity.cpp:678
@ NPC_HORDE_SOLDIER
Definition zone_undercity.cpp:680
@ NPC_KHANOK
Definition zone_undercity.cpp:634
@ NPC_SYLVANAS
Definition zone_undercity.cpp:550
static LocationXYZO HordeSpawn[]
Definition zone_undercity.cpp:780
@ WAVE_MAXCOUNT
Definition zone_undercity.cpp:717
static LocationXYZO AllianceSpawn[]
Definition zone_undercity.cpp:731
@ NPC_BLIGHTWORM
Definition zone_undercity.cpp:590
@ NPC_PUTRESS
Definition zone_undercity.cpp:605
@ SPELL_PUTRESS_CASTING_STATE
Definition zone_undercity.cpp:615
@ SPELL_BLIGHT_EMPOWERMENT
Definition zone_undercity.cpp:611
@ NPC_EXPERIMENT
Definition zone_undercity.cpp:607
@ NPC_THRALL
Definition zone_undercity.cpp:448

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.

1106 {
1107 switch (summon->GetEntry())
1108 {
1109 case NPC_BLIGHTWORM:
1112 bStepping = true;
1113 break;
1114 case NPC_PUTRESS:
1117 bStepping = true;
1118 break;
1119 default:
1120 break;
1121 }
1122 }
@ 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:536
void UpdateWorldState(Map *map, uint32 id, uint32 state)
Definition zone_undercity.cpp:1124

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.

1503 {
1505
1506 if (bStepping)
1507 {
1508 if (phaseTimer <= diff)
1509 {
1510 switch (step)
1511 {
1512 //Preparation
1513 case 0:
1514 me->setActive(true);
1518 break;
1519 case 1:
1522 break;
1523 case 2:
1526 break;
1527 case 3:
1530 break;
1531 case 4:
1536 break;
1537 case 5:
1540 break;
1541 case 6:
1544 break;
1545 case 7:
1546 SetEscortPaused(false);
1548 break;
1549 case 8:
1551 {
1552 jaina->GetMotionMaster()->MovePath(NPC_JAINA * 10, false);
1553 jaina->setActive(true);
1554 }
1555 bStepping = false;
1556 JumpToNextStep(0);
1557 break;
1558 //Sewers
1559 case 9:
1561 SpawnWave(0);
1562 SpawnWave(1);
1563 SpawnWave(2);
1564 SpawnWave(3);
1565 JumpToNextStep(9500);
1566 break;
1567 case 10:
1569 jaina->AI()->Talk(JAINA_SAY_SEWERS_1);
1571 break;
1572 case 11:
1574 jaina->AI()->DoCast(SPELL_JAINA_BUFF);
1576 break;
1577 case 12:
1578 SetEscortPaused(false);
1582 break;
1583 case 13:
1585 {
1586 jaina->GetMotionMaster()->MoveFollow(me, 5, PET_FOLLOW_ANGLE);
1587 jaina->SetReactState(REACT_AGGRESSIVE);
1588 jaina->SetFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE);
1589 }
1590 bStepping = false;
1591 JumpToNextStep(0);
1592 break;
1593 case 14:
1596 break;
1597 case 15:
1598 SpawnWave(4);
1600 break;
1601 case 16:
1602 SpawnWave(5);
1604 break;
1605 case 17:
1606 SpawnWave(4);
1608 break;
1609 case 18:
1610 SpawnWave(4);
1612 break;
1613 case 19:
1614 SpawnWave(5);
1616 break;
1617 case 20:
1618 SpawnWave(6);
1619 bStepping = false;
1620 JumpToNextStep(0);
1621 break;
1622 case 21:
1624 SpawnWave(7);
1626 break;
1627 case 22:
1629 SetRun(false);
1631 {
1632 jaina->GetMotionMaster()->Clear();
1633 jaina->GetMotionMaster()->MoveFollow(me, 1, 0);
1634 }
1636 break;
1637 case 23:
1638 bStepping = false;
1639 SetEscortPaused(false);
1640 JumpToNextStep(0);
1641 break;
1642 //Apothecarium
1643 case 24:
1645 jaina->AI()->Talk(JAINA_SAY_APO_1);
1647 break;
1648 case 25:
1649 SetEscortPaused(false);
1650 bStepping = false;
1651 JumpToNextStep(0);
1652 break;
1653 case 26:
1657 break;
1658 case 27:
1661 break;
1662 case 28:
1665 break;
1666 case 29:
1669 break;
1670 case 30:
1673 putress->AI()->Talk(PUTRESS_SAY_1);
1674 if (Player* player = GetPlayerForEscort())
1675 player->PlayDirectSound(SOUND_PUTRESS, player);
1676 SpawnWave(9);
1678 break;
1679 case 31:
1680 SetRun(true);
1682 jaina->GetMotionMaster()->MoveFollow(me, 1, 0);
1683 SetEscortPaused(false);
1684 bStepping = false;
1685 JumpToNextStep(0);
1686 break;
1687 case 32:
1689 SpawnWave(10);
1691 break;
1692 case 33:
1693 SpawnWave(10);
1695 break;
1696 case 34:
1697 SpawnWave(10);
1699 break;
1700 case 35:
1701 SpawnWave(10);
1703 break;
1704 case 36:
1705 SpawnWave(10);
1707 break;
1708 case 37:
1709 SpawnWave(10);
1711 break;
1712 case 38:
1713 SpawnWave(10);
1715 break;
1716 case 39:
1717 SpawnWave(10);
1719 break;
1720 case 40:
1721 SpawnWave(10);
1723 break;
1724 case 41:
1725 SpawnWave(10);
1727 break;
1728 case 42:
1729 SpawnWave(10);
1731 break;
1732 case 43:
1733 SetEscortPaused(false);
1734 bStepping = false;
1735 JumpToNextStep(0);
1736 break;
1737 case 44:
1740 {
1741 jaina->GetMotionMaster()->Clear();
1742 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[7].x, AllianceWP[7].y, AllianceWP[7].z, false);
1743 }
1745 break;
1746 case 45:
1747 SetEscortPaused(false);
1748 bStepping = false;
1749 JumpToNextStep(0);
1750 break;
1751 case 46:
1754 break;
1755 case 47:
1757 putress->AI()->Talk(PUTRESS_SAY_3);
1758 SpawnWave(11);
1760 break;
1761 case 48:
1763 putress->AI()->Talk(PUTRESS_SAY_4);
1765 break;
1766 case 49:
1768 putress->AI()->Talk(PUTRESS_SAY_5);
1769 SpawnWave(11);
1771 break;
1772 case 50:
1774 putress->AI()->Talk(PUTRESS_SAY_6);
1776 break;
1777 case 51:
1779 putress->AI()->Talk(PUTRESS_SAY_7);
1780 SpawnWave(11);
1782 break;
1783 case 52:
1785 {
1786 putress->AI()->Talk(PUTRESS_SAY_8);
1787 putress->AI()->DoCast(SPELL_BLIGHT_OVERLOAD);
1788 }
1790 break;
1791 case 53:
1793 {
1794 putress->SetImmuneToAll(false);
1795 putress->AddThreat(me, 100.0f);
1796 me->AddThreat(putress, 100.0f);
1797 putress->RemoveAura(SPELL_PUTRESS_CASTING_STATE);
1798 }
1799 bStepping = false;
1800 JumpToNextStep(0);
1801 break;
1802 case 54:
1804 SetRun(false);
1806 break;
1807 case 55:
1812 break;
1813 case 56:
1817 SetEscortPaused(false);
1818 bStepping = false;
1819 JumpToNextStep(0);
1820 break;
1821 case 57:
1823 break;
1824 case 58:
1827 break;
1828 case 59:
1831 break;
1832 case 60:
1834 SpawnWave(12); // thrall sylvanas horde soldiers
1836 break;
1837 case 61:
1839 thrall->AI()->Talk(THRALL_SAY_THRONE_A_1);
1840 if (Player* player = GetPlayerForEscort())
1841 player->PlayDirectSound(SOUND_THRALL_1, player);
1843 break;
1844 case 62:
1846 thrall->AI()->Talk(THRALL_SAY_THRONE_A_2);
1847 if (Player* player = GetPlayerForEscort())
1848 player->PlayDirectSound(SOUND_THRALL_2, player);
1850 break;
1851 case 63:
1854 break;
1855 case 64:
1858 break;
1859 case 65:
1860 SetRun(true);
1861 SetEscortPaused(false);
1863 break;
1864 case 66:
1866 jaina->AI()->Talk(JAINA_SAY_THRONE_1);
1867 me->SetImmuneToNPC(true);
1868 bStepping = false;
1869 JumpToNextStep(0);
1870 break;
1871 case 67:
1874 break;
1875 case 68:
1878 {
1879 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[8].x, AllianceWP[8].y, AllianceWP[8].z);
1880 jaina->SetImmuneToAll(true);
1881 }
1882 SetEscortPaused(false);
1883 bStepping = false;
1884 JumpToNextStep(0);
1885 break;
1886 case 69:
1888 SpawnWave(13); //alliance soldiers
1890 break;
1891 case 70:
1894 break;
1895 case 71:
1898 break;
1899 case 72:
1902 break;
1903 case 73:
1905 me->SetImmuneToAll(false);
1907 {
1908 thrall->SetReactState(REACT_AGGRESSIVE);
1909 thrall->SetImmuneToNPC(false);
1910 thrall->SetImmuneToPC(true);
1911 thrall->AddThreat(me, 100.0f);
1912 me->AddThreat(thrall, 100.0f);
1913 thrall->AI()->AttackStart(me);
1914 }
1916 {
1917 sylvanas->SetReactState(REACT_AGGRESSIVE);
1918 sylvanas->SetImmuneToNPC(false);
1919 sylvanas->SetImmuneToPC(true);
1920 sylvanas->AddThreat(me, 100.0f);
1921 sylvanas->AI()->AttackStart(me);
1922 me->AddThreat(sylvanas, 100.0f);
1923 }
1924 for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
1925 {
1927 {
1928 temp->SetReactState(REACT_AGGRESSIVE);
1929 temp->SetImmuneToNPC(false);
1930 temp->SetImmuneToPC(true);
1931 }
1932 }
1933 for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
1934 {
1936 {
1938 {
1939 temp->SetReactState(REACT_AGGRESSIVE);
1940 temp2->SetReactState(REACT_AGGRESSIVE);
1941 temp->SetImmuneToAll(false);
1942 temp2->SetImmuneToAll(false);
1943 temp->AddThreat(temp2, 100.0f);
1944 temp->AI()->AttackStart(temp2);
1945 temp2->AddThreat(temp, 100.0f);
1946 }
1947 }
1948 }
1950 break;
1951 case 74:
1953 {
1954 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[9].x, AllianceWP[9].y, AllianceWP[9].z);
1955 jaina->AI()->Talk(JAINA_SAY_THRONE_2);
1956 }
1958 break;
1959 case 75:
1961 {
1962 jaina->AI()->DoCastAOE(SPELL_DEEPFREEZE);
1963 jaina->AI()->Talk(JAINA_SAY_THRONE_3);
1964 }
1966 break;
1967 case 76:
1968 std::list<Creature*> HelperList;
1969 me->GetCreatureListWithEntryInGrid(HelperList, NPC_SW_SOLDIER, 100.0f);
1971 me->GetCreatureListWithEntryInGrid(HelperList, NPC_JAINA, 100.0f);
1972 me->GetCreatureListWithEntryInGrid(HelperList, NPC_SYLVANAS, 100.0f);
1973 me->GetCreatureListWithEntryInGrid(HelperList, NPC_THRALL, 100.0f);
1974 if (!HelperList.empty())
1975 for (std::list<Creature*>::iterator itr = HelperList.begin(); itr != HelperList.end(); itr++)
1976 (*itr)->DespawnOrUnsummon();
1977 if (Map* map = me->GetMap())
1978 {
1979 Map::PlayerList const& PlayerList = map->GetPlayers();
1980 for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
1981 {
1982 if (Player* player = i->GetSource())
1983 {
1984 if (me->IsInRange(player, 0.0f, 50.0f))
1985 {
1986 if (player->GetTeamId() == TEAM_ALLIANCE)
1987 {
1988 player->RemoveAura(SPELL_WRYNN_BUFF);
1989 player->RemoveAura(SPELL_JAINA_BUFF);
1990 player->CompleteQuest(QUEST_BATTLE_A);
1991 player->NearTeleportTo(-8445.213867f, 337.384277f, 121.746056f, 5.401534f, false);
1992 }
1993 }
1994 }
1995 }
1996 }
2001 break;
2002 }
2003 }
2004 else phaseTimer -= diff;
2005 }
2006
2007 if (!UpdateVictim())
2008 return;
2009
2010 _events.Update(diff);
2011
2013 return;
2014
2015 while (uint32 eventId = _events.ExecuteEvent())
2016 {
2017 switch (eventId)
2018 {
2019 case EVENT_WHIRLWIND:
2022 break;
2023 case EVENT_HEROIC_LEAP:
2026 break;
2027 case EVENT_AGGRO_JAINA:
2028 if (me->GetVictim())
2029 {
2031 {
2032 jaina->AI()->AttackStart(me->GetVictim());
2033 }
2034 }
2037 break;
2038 case EVENT_WRYNN_BUFF:
2041 break;
2042 default:
2043 break;
2044 }
2045 }
2046
2048 }
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:550
@ 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:280
void SetTarget(ObjectGuid guid=ObjectGuid::Empty) override
Definition Creature.cpp:3562
void DespawnOrUnsummon(Milliseconds msTimeToDespawn, Seconds forcedRespawnTimer)
Definition Creature.cpp:2183
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:1081
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:13662
void RemoveStandFlags(uint8 flags)
Definition Unit.h:1701
Unit * GetVictim() const
Definition Unit.h:862
bool HasUnitState(const uint32 f) const
Definition Unit.h:707
void SetStandState(uint8 state)
Definition Unit.cpp:16778
void SetImmuneToAll(bool apply, bool keepCombat=false)
Definition Unit.h:883
void SetStandFlags(uint8 flags)
Definition Unit.h:1700
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:240
Player * GetPlayerForEscort()
Definition ScriptedEscortAI.h:114
void SetRun(bool on=true)
Definition ScriptedEscortAI.cpp:428
void SpawnWave(uint32 waveId)
Definition zone_undercity.cpp:1149
void JumpToNextStep(uint32 uiTimer)
Definition zone_undercity.cpp:1143
@ WRYNN_SAY_APO_12
Definition zone_undercity.cpp:393
@ WRYNN_SAY_SEWERS_4
Definition zone_undercity.cpp:381
@ WRYNN_SAY_APO_6
Definition zone_undercity.cpp:387
@ WRYNN_SAY_THRONE_9
Definition zone_undercity.cpp:402
@ WRYNN_SAY_THRONE_2
Definition zone_undercity.cpp:395
@ WRYNN_SAY_THRONE_4
Definition zone_undercity.cpp:397
@ SPELL_HEROIC_LEAP
Definition zone_undercity.cpp:407
@ WRYNN_SAY_PREP_1
Definition zone_undercity.cpp:372
@ WRYNN_SAY_THRONE_5
Definition zone_undercity.cpp:398
@ WRYNN_SAY_APO_2
Definition zone_undercity.cpp:383
@ WRYNN_SAY_APO_11
Definition zone_undercity.cpp:392
@ WRYNN_SAY_APO_4
Definition zone_undercity.cpp:385
@ WRYNN_SAY_APO_7
Definition zone_undercity.cpp:388
@ WRYNN_SAY_APO_5
Definition zone_undercity.cpp:386
@ WRYNN_SAY_APO_3
Definition zone_undercity.cpp:384
@ WRYNN_SAY_THRONE_3
Definition zone_undercity.cpp:396
@ WRYNN_SAY_SEWERS_2
Definition zone_undercity.cpp:379
@ WRYNN_SAY_APO_8
Definition zone_undercity.cpp:389
@ WRYNN_SAY_THRONE_1
Definition zone_undercity.cpp:394
@ WRYNN_SAY_THRONE_6
Definition zone_undercity.cpp:399
@ WRYNN_SAY_SEWERS_1
Definition zone_undercity.cpp:378
@ WRYNN_SAY_APO_10
Definition zone_undercity.cpp:391
@ WRYNN_SAY_PREP_4
Definition zone_undercity.cpp:375
@ WRYNN_SAY_PREP_2
Definition zone_undercity.cpp:373
@ WRYNN_SAY_THRONE_8
Definition zone_undercity.cpp:401
@ WRYNN_SAY_PREP_6
Definition zone_undercity.cpp:377
@ WRYNN_SAY_THRONE_7
Definition zone_undercity.cpp:400
@ WRYNN_SAY_PREP_5
Definition zone_undercity.cpp:376
@ WRYNN_SAY_PREP_3
Definition zone_undercity.cpp:374
@ SPELL_WHIRLWIND
Definition zone_undercity.cpp:405
@ WRYNN_SAY_APO_1
Definition zone_undercity.cpp:382
@ WRYNN_SAY_APO_9
Definition zone_undercity.cpp:390
@ WRYNN_SAY_SEWERS_3
Definition zone_undercity.cpp:380
@ SPELL_JAINA_BUFF
Definition zone_undercity.cpp:433
@ JAINA_SAY_THRONE_1
Definition zone_undercity.cpp:424
@ JAINA_SAY_THRONE_2
Definition zone_undercity.cpp:425
@ JAINA_SAY_THRONE_3
Definition zone_undercity.cpp:426
@ NPC_JAINA
Definition zone_undercity.cpp:419
@ JAINA_SAY_SEWERS_1
Definition zone_undercity.cpp:422
@ JAINA_SAY_APO_1
Definition zone_undercity.cpp:423
@ SPELL_DEEPFREEZE
Definition zone_undercity.cpp:432
@ QUEST_BATTLE_A
Definition zone_undercity.cpp:708
@ PUTRESS_SAY_3
Definition zone_undercity.cpp:620
@ SPELL_BLIGHT_OVERLOAD
Definition zone_undercity.cpp:612
@ PUTRESS_SAY_6
Definition zone_undercity.cpp:623
@ PUTRESS_SAY_5
Definition zone_undercity.cpp:622
@ SOUND_PUTRESS
Definition zone_undercity.cpp:628
@ PUTRESS_SAY_8
Definition zone_undercity.cpp:625
@ PUTRESS_SAY_7
Definition zone_undercity.cpp:624
@ PUTRESS_SAY_4
Definition zone_undercity.cpp:621
@ PUTRESS_SAY_1
Definition zone_undercity.cpp:618
@ THRALL_SAY_THRONE_A_2
Definition zone_undercity.cpp:455
@ SOUND_THRALL_1
Definition zone_undercity.cpp:493
@ SPELL_THUNDER
Definition zone_undercity.cpp:516
@ SOUND_THRALL_2
Definition zone_undercity.cpp:494
@ THRALL_SAY_THRONE_A_1
Definition zone_undercity.cpp:454
static LocationXYZO AllianceWP[]
Definition zone_undercity.cpp:766

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
1125 {
1126 Map::PlayerList const& players = map->GetPlayers();
1127
1128 if (!players.IsEmpty())
1129 {
1130 for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
1131 {
1132 if (Player* player = itr->GetSource())
1133 player->SendUpdateWorldState(id, state);
1134 }
1135 }
1136 }
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.

1435 {
1436 switch (waypointId)
1437 {
1438 case 0:
1439 SetHoldState(true);
1440 bStepping = true;
1441 break;
1442 case 2:
1443 SetHoldState(true);
1444 bStepping = true;
1445 break;
1446 case 38:
1448 {
1449 jaina->GetMotionMaster()->Clear();
1450 jaina->SetImmuneToNPC(false);
1451 jaina->SetReactState(REACT_AGGRESSIVE);
1452 }
1453 SetHoldState(true);
1454 bStepping = true;
1455 break;
1456 case 45:
1457 SetHoldState(true);
1458 bStepping = true;
1460 {
1461 jaina->GetMotionMaster()->Clear();
1462 jaina->GetMotionMaster()->MovePoint(0, AllianceWP[6].x, AllianceWP[6].y, AllianceWP[6].z);
1463 }
1464 break;
1465 case 46:
1466 SetHoldState(true);
1467 bStepping = true;
1468 break;
1469 case 48:
1471 putress->AI()->Talk(PUTRESS_SAY_2);
1472 if (Player* player = GetPlayerForEscort())
1473 player->PlayDirectSound(SOUND_PUTRESS, player);
1474 break;
1475 case 50:
1476 SetHoldState(true);
1477 bStepping = true;
1478 break;
1479 case 63:
1480 SetHoldState(true);
1481 bStepping = true;
1482 break;
1483 case 65:
1484 SetHoldState(true);
1485 bStepping = true;
1486 break;
1487 case 66:
1488 SetHoldState(true);
1489 bStepping = true;
1490 break;
1491 case 87:
1492 SetHoldState(true);
1493 bStepping = true;
1494 break;
1495 case 88:
1496 SetHoldState(true);
1497 bStepping = true;
1498 break;
1499 }
1500 }
void SetHoldState(bool bOnHold)
Definition zone_undercity.cpp:1138
@ PUTRESS_SAY_2
Definition zone_undercity.cpp:619

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: