AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
instance_halls_of_reflection Class Reference
Inheritance diagram for instance_halls_of_reflection:
InstanceScript ZoneScript

Public Member Functions

 instance_halls_of_reflection (Map *map)
 
void Initialize () override
 
bool IsEncounterInProgress () const override
 
void OnCreatureCreate (Creature *creature) override
 
void OnGameObjectCreate (GameObject *go) override
 
bool SetBossState (uint32 type, EncounterState state) override
 
void SetData (uint32 type, uint32 data) override
 
uint32 GetData (uint32 type) const override
 
ObjectGuid GetGuidData (uint32 type) const override
 
void OnUnitDeath (Unit *unit) override
 
void RandomizeCompositionsAndShow ()
 
void StartNextWave ()
 
void HandleWaveWipe ()
 
void Update (uint32 diff) override
 
- Public Member Functions inherited from InstanceScript
 InstanceScript (Map *map)
 
 ~InstanceScript () override
 
virtual void Load (char const *data)
 
virtual void CreatureLooted (Creature *, LootType)
 
virtual std::string GetSaveData ()
 
void SaveToDB ()
 
void OnCreatureCreate (Creature *creature) override
 
void OnCreatureRemove (Creature *creature) override
 
void OnGameObjectCreate (GameObject *go) override
 
void OnGameObjectRemove (GameObject *go) override
 
ObjectGuid GetObjectGuid (uint32 type) const
 
ObjectGuid GetGuidData (uint32 type) const override
 
CreatureGetCreature (uint32 type)
 
GameObjectGetGameObject (uint32 type)
 
virtual void OnPlayerEnter (Player *)
 
virtual void OnPlayerLeave (Player *)
 
virtual void OnPlayerAreaUpdate (Player *, uint32, uint32)
 
virtual void OnPlayerInWaterStateUpdate (Player *, bool)
 
void HandleGameObject (ObjectGuid guid, bool open, GameObject *go=nullptr)
 Open or close a GameObject by GUID.
 
void HandleGameObject (uint32 type, bool open)
 Open or close a GameObject registered via LoadObjectData.
 
void DoUseDoorOrButton (ObjectGuid guid, uint32 withRestoreTime=0, bool useAlternativeState=false)
 
void DoRespawnGameObject (ObjectGuid guid, uint32 timeToDespawn=MINUTE)
 
void DoRespawnGameObject (uint32 type)
 
void DoRespawnCreature (ObjectGuid guid, bool force=false)
 
void DoRespawnCreature (uint32 type, bool force=false)
 
void DoUpdateWorldState (uint32 worldstateId, uint32 worldstateValue)
 
void DoSendNotifyToInstance (char const *format,...)
 
void DoUpdateAchievementCriteria (AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
 
void DoStartTimedAchievement (AchievementCriteriaTimedTypes type, uint32 entry)
 
void DoStopTimedAchievement (AchievementCriteriaTimedTypes type, uint32 entry)
 
void DoRemoveAurasDueToSpellOnPlayers (uint32 spell)
 
void DoCastSpellOnPlayers (uint32 spell)
 
void DoCastSpellOnPlayer (Player *player, uint32 spell, bool includePets, bool includeControlled)
 
bool ServerAllowsTwoSideGroups ()
 
EncounterState GetBossState (uint32 id) const
 
CreatureBoundary const * GetBossBoundary (uint32 id) const
 
BossInfo const * GetBossInfo (uint32 id) const
 
uint32 GetPersistentData (uint32 index) const
 
void StorePersistentData (uint32 index, uint32 data)
 
virtual bool CheckAchievementCriteriaMeet (uint32, Player const *, Unit const *=nullptr, uint32=0)
 
virtual bool CheckRequiredBosses (uint32, Player const *=nullptr) const
 
void SetCompletedEncountersMask (uint32 newMask, bool save)
 
uint32 GetCompletedEncounterMask () const
 
void SendEncounterUnit (uint32 type, Unit *unit=nullptr, uint8 param1=0, uint8 param2=0)
 
virtual void FillInitialWorldStates (WorldPackets::WorldState::InitWorldStates &)
 
uint32 GetEncounterCount () const
 
void MarkAreaTriggerDone (uint32 id)
 
void ResetAreaTriggerDone (uint32 id)
 
bool IsAreaTriggerDone (uint32 id) const
 
virtual void DoAction (int32)
 
void DoForAllMinions (uint32 id, std::function< void(Creature *)> exec)
 
void StoreGameObjectState (ObjectGuid::LowType spawnId, uint8 state)
 
uint8 GetStoredGameObjectState (ObjectGuid::LowType spawnId) const
 
void LoadInstanceSavedGameobjectStateData ()
 
bool IsBossDone (uint32 bossId) const
 
bool AllBossesDone () const
 
bool AllBossesDone (std::initializer_list< uint32 > bossIds) const
 
TeamId GetTeamIdInInstance () const
 
void SetTeamIdInInstance (TeamId teamId)
 
bool IsTwoFactionInstance () const
 
- Public Member Functions inherited from ZoneScript
 ZoneScript ()
 
virtual ~ZoneScript ()
 
virtual uint32 GetCreatureEntry (ObjectGuid::LowType, CreatureData const *data)
 
virtual uint32 GetGameObjectEntry (ObjectGuid::LowType, uint32 entry)
 
virtual void OnCreatureEvade (Creature *)
 
virtual void SetGuidData (uint32, ObjectGuid)
 
virtual uint64 GetData64 (uint32) const
 
virtual void SetData64 (uint32, uint64)
 
virtual void ProcessEvent (WorldObject *, uint32)
 

Private Member Functions

void UpdateOutro ()
 

Private Attributes

ObjectGuid _spiritualReflectionGUID [MAX_SPIRITUAL_REFLECTIONS]
 
ObjectGuid _iceWallTargetGUID [MAX_ICE_WALL_TARGETS]
 
ObjectGuid _trashGUID [NUM_OF_TRASH]
 
uint32 _batteredHiltStatus {}
 
bool _trashActive [NUM_OF_TRASH] {}
 
uint8 _trashCounter {}
 
uint32 _chosenComposition [8][5] {}
 
uint8 _waveNumber {}
 
uint32 _nextWaveTimer {}
 
uint16 _playerCheckTimer {}
 
uint16 _waveResumeTimer {}
 
uint8 _waveResumeStep {}
 
bool _falricPhaseComplete {}
 
uint8 _remainingTrashKills {}
 
bool _isLichKingFightActive {}
 
uint32 _outroTimer {}
 
uint8 _outroStep {}
 
MotionTransport_transport {}
 

Additional Inherited Members

- Static Public Member Functions inherited from InstanceScript
static std::string GetBossStateName (uint8 state)
 
- Public Attributes inherited from InstanceScript
Mapinstance
 
TaskScheduler scheduler
 
- Protected Member Functions inherited from InstanceScript
void SetHeaders (std::string const &dataHeaders)
 
void SetBossNumber (uint32 number)
 
void SetPersistentDataCount (uint32 number)
 
void LoadBossBoundaries (BossBoundaryData const &data)
 
void LoadDoorData (DoorData const *data)
 
void LoadMinionData (MinionData const *data)
 
void LoadObjectData (ObjectData const *creatureData, ObjectData const *gameObjectData)
 
void LoadSummonData (ObjectData const *data)
 
void SetSummoner (Creature *creature)
 
void AddObject (Creature *obj, bool add=true)
 
void RemoveObject (Creature *obj)
 
void AddObject (GameObject *obj, bool add=true)
 
void RemoveObject (GameObject *obj)
 
void AddObject (WorldObject *obj, uint32 type, bool add=true)
 
void RemoveObject (WorldObject *obj, uint32 type)
 
void AddDoor (GameObject *door, bool add=true)
 
void RemoveDoor (GameObject *door)
 
void AddMinion (Creature *minion, bool add=true)
 
void RemoveMinion (Creature *minion)
 
void UpdateDoorState (GameObject *door)
 
void UpdateMinionState (Creature *minion, EncounterState state)
 
bool ReadSaveDataHeaders (std::istringstream &data)
 
void ReadSaveDataBossStates (std::istringstream &data)
 
void ReadSavePersistentData (std::istringstream &data)
 
virtual void ReadSaveDataMore (std::istringstream &)
 
void WriteSaveDataHeaders (std::ostringstream &data)
 
void WriteSaveDataBossStates (std::ostringstream &data)
 
void WritePersistentData (std::ostringstream &data)
 
virtual void WriteSaveDataMore (std::ostringstream &)
 

Detailed Description

Constructor & Destructor Documentation

◆ instance_halls_of_reflection()

instance_halls_of_reflection::instance_halls_of_reflection ( Map map)
inline
158 : InstanceScript(map)
159 {
164 }
#define DataHeader
Definition blackrock_depths.h:23
Definition InstanceScript.h:143
void SetBossNumber(uint32 number)
Definition InstanceScript.h:306
void SetPersistentDataCount(uint32 number)
Definition InstanceScript.h:307
void SetHeaders(std::string const &dataHeaders)
Definition InstanceScript.cpp:158
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
Definition InstanceScript.cpp:193
@ PERSISTENT_DATA_COUNT
Definition halls_of_reflection.h:123
ObjectData const gameObjectData[]
Definition instance_halls_of_reflection.cpp:142
ObjectData const creatureData[]
Definition instance_halls_of_reflection.cpp:124
#define MAX_ENCOUNTER
Definition violet_hold.h:21

References creatureData, DataHeader, gameObjectData, InstanceScript::LoadObjectData(), MAX_ENCOUNTER, PERSISTENT_DATA_COUNT, InstanceScript::SetBossNumber(), InstanceScript::SetHeaders(), and InstanceScript::SetPersistentDataCount().

Member Function Documentation

◆ GetData()

uint32 instance_halls_of_reflection::GetData ( uint32  type) const
inlineoverridevirtual

Reimplemented from ZoneScript.

594 {
595 switch (type)
596 {
597 case DATA_WAVE_NUMBER:
598 return static_cast<uint32>(_waveNumber);
600 return _batteredHiltStatus;
601 }
602
603 return 0;
604 }
std::uint32_t uint32
Definition Define.h:107
uint32 _batteredHiltStatus
Definition instance_halls_of_reflection.cpp:1107
uint8 _waveNumber
Definition instance_halls_of_reflection.cpp:1113
@ DATA_BATTERED_HILT
Definition halls_of_reflection.h:40
@ DATA_WAVE_NUMBER
Definition halls_of_reflection.h:41

References _batteredHiltStatus, _waveNumber, DATA_BATTERED_HILT, and DATA_WAVE_NUMBER.

◆ GetGuidData()

ObjectGuid instance_halls_of_reflection::GetGuidData ( uint32  type) const
inlineoverridevirtual

Reimplemented from ZoneScript.

607 {
608 switch (type)
609 {
611 case NPC_ICE_WALL_TARGET + 1:
612 case NPC_ICE_WALL_TARGET + 2:
613 case NPC_ICE_WALL_TARGET + 3:
615 default:
616 return GetObjectGuid(type);
617 }
618 }
ObjectGuid GetObjectGuid(uint32 type) const
Definition InstanceScript.cpp:98
ObjectGuid _iceWallTargetGUID[MAX_ICE_WALL_TARGETS]
Definition instance_halls_of_reflection.cpp:1103
@ NPC_ICE_WALL_TARGET
Definition halls_of_reflection.h:81

References _iceWallTargetGUID, InstanceScript::GetObjectGuid(), and NPC_ICE_WALL_TARGET.

◆ HandleWaveWipe()

void instance_halls_of_reflection::HandleWaveWipe ( )
inline
778 {
779 if (!_waveNumber)
780 return;
781
785
787 _waveNumber = 0;
788 _nextWaveTimer = 0;
789 std::memset(&_chosenComposition, 0, sizeof(_chosenComposition));
790
791 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
792 if (_trashActive[i])
794 {
795 c->GetThreatMgr().ClearAllThreat();
796 c->CombatStop(true);
797 c->InterruptNonMeleeSpells(true);
798 c->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
799 c->SetImmuneToAll(true);
800 c->Respawn(true);
801 c->UpdatePosition(c->GetHomePosition(), true);
802 c->StopMovingOnCurrentPos();
803 }
804 std::fill(std::begin(_trashActive), std::end(_trashActive), false);
805 if (Creature* falric = GetCreature(DATA_FALRIC))
806 falric->AI()->EnterEvadeMode();
807 if (Creature* marwyn = GetCreature(DATA_MARWYN))
808 marwyn->AI()->EnterEvadeMode();
809
810 _waveResumeTimer = 5000;
811 _waveResumeStep = 2;
813 }
std::uint8_t uint8
Definition Define.h:109
@ UNIT_FLAG_NOT_SELECTABLE
Definition UnitDefines.h:282
@ WORLD_STATE_HALLS_OF_REFLECTION_WAVES_ENABLED
Definition WorldStateDefines.h:576
@ WORLD_STATE_HALLS_OF_REFLECTION_WAVE_COUNT
Definition WorldStateDefines.h:575
Definition Creature.h:47
Creature * GetCreature(uint32 type)
Definition InstanceScript.cpp:115
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
Open or close a GameObject by GUID.
Definition InstanceScript.cpp:125
Map * instance
Definition InstanceScript.h:149
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
Definition InstanceScript.cpp:626
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:2336
bool _trashActive[NUM_OF_TRASH]
Definition instance_halls_of_reflection.cpp:1110
uint16 _waveResumeTimer
Definition instance_halls_of_reflection.cpp:1116
uint8 _remainingTrashKills
Definition instance_halls_of_reflection.cpp:1119
uint32 _chosenComposition[8][5]
Definition instance_halls_of_reflection.cpp:1112
ObjectGuid _trashGUID[NUM_OF_TRASH]
Definition instance_halls_of_reflection.cpp:1104
uint8 _waveResumeStep
Definition instance_halls_of_reflection.cpp:1117
uint32 _nextWaveTimer
Definition instance_halls_of_reflection.cpp:1114
uint8 _trashCounter
Definition instance_halls_of_reflection.cpp:1111
#define NUM_OF_TRASH
Definition halls_of_reflection.h:128
@ GO_FRONT_DOOR
Definition halls_of_reflection.h:94
@ DATA_MARWYN
Definition halls_of_reflection.h:32
@ DATA_FALRIC
Definition halls_of_reflection.h:31

References _chosenComposition, _nextWaveTimer, _remainingTrashKills, _trashActive, _trashCounter, _trashGUID, _waveNumber, _waveResumeStep, _waveResumeTimer, DATA_FALRIC, DATA_MARWYN, InstanceScript::DoUpdateWorldState(), Map::GetCreature(), InstanceScript::GetCreature(), GO_FRONT_DOOR, InstanceScript::HandleGameObject(), InstanceScript::instance, NUM_OF_TRASH, UNIT_FLAG_NOT_SELECTABLE, WORLD_STATE_HALLS_OF_REFLECTION_WAVE_COUNT, and WORLD_STATE_HALLS_OF_REFLECTION_WAVES_ENABLED.

Referenced by SetBossState(), and Update().

◆ Initialize()

void instance_halls_of_reflection::Initialize ( )
inlineoverridevirtual

Reimplemented from InstanceScript.

167 {
168 std::fill(std::begin(_trashActive), std::end(_trashActive), false);
169 _trashCounter = 0;
170 std::memset(&_chosenComposition, 0, sizeof(_chosenComposition));
171 _waveNumber = 0;
172 _nextWaveTimer = 0;
173 _playerCheckTimer = 5000;
175 _waveResumeStep = 0;
176 _falricPhaseComplete = false;
180 _outroTimer = 0;
181 _outroStep = 0;
182 _transport = nullptr;
183 }
uint8 _outroStep
Definition instance_halls_of_reflection.cpp:1124
MotionTransport * _transport
Definition instance_halls_of_reflection.cpp:1125
bool _isLichKingFightActive
Definition instance_halls_of_reflection.cpp:1122
uint16 _playerCheckTimer
Definition instance_halls_of_reflection.cpp:1115
uint32 _outroTimer
Definition instance_halls_of_reflection.cpp:1123
bool _falricPhaseComplete
Definition instance_halls_of_reflection.cpp:1118

References _batteredHiltStatus, _chosenComposition, _falricPhaseComplete, _isLichKingFightActive, _nextWaveTimer, _outroStep, _outroTimer, _playerCheckTimer, _remainingTrashKills, _transport, _trashActive, _trashCounter, _waveNumber, _waveResumeStep, and _waveResumeTimer.

◆ IsEncounterInProgress()

bool instance_halls_of_reflection::IsEncounterInProgress ( ) const
inlineoverridevirtual

Reimplemented from InstanceScript.

186 {
188 }
bool HavePlayers() const
Definition Map.h:320

References _isLichKingFightActive, _waveNumber, Map::HavePlayers(), and InstanceScript::instance.

◆ OnCreatureCreate()

void instance_halls_of_reflection::OnCreatureCreate ( Creature creature)
inlineoverridevirtual

Reimplemented from ZoneScript.

191 {
193
194 switch (creature->GetEntry())
195 {
197 creature->SetVisible(false);
198 creature->SetSpeed(MOVE_RUN, 1.1);
200 creature->UpdateEntry(NPC_JAINA_PART1);
203 break;
205 creature->SetVisible(false);
208 break;
209 case NPC_UTHER:
210 creature->SetVisible(false);
211 creature->SetReactState(REACT_PASSIVE);
212 break;
214 creature->SetVisible(false);
215 creature->SetReactState(REACT_PASSIVE);
217 break;
218 case NPC_FALRIC:
219 creature->SetVisible(false);
221 break;
222 case NPC_MARWYN:
223 creature->SetVisible(false);
225 break;
227 case NPC_WAVE_FOOTMAN:
229 case NPC_WAVE_PRIEST:
230 case NPC_WAVE_MAGE:
232 _trashGUID[_trashCounter++] = creature->GetGUID();
233 if (GetBossState(DATA_MARWYN) != DONE && !creature->IsAlive())
234 creature->Respawn();
235 creature->SetVisible(false);
236 break;
239 {
240 creature->SetVisible(false);
241 creature->SetReactState(REACT_PASSIVE);
242 }
243 break;
245 for (uint8 i = 0; i < MAX_SPIRITUAL_REFLECTIONS; ++i)
247 {
248 _spiritualReflectionGUID[i] = creature->GetGUID();
249 break;
250 }
251 creature->SetVisible(false);
252 break;
255 creature->SetVisible(false);
257 {
259 creature->CastSpell(creature, SPELL_SOUL_REAPER, true);
260 }
261 else if (GetBossState(DATA_LICH_KING) != DONE)
263 else
264 creature->SetVisible(false);
265
266 creature->SetHealth((creature->GetMaxHealth() * 3) / 4);
268 break;
270 if (!creature->IsAlive())
271 creature->Respawn();
272 creature->SetWalk(false);
273 creature->SetSheath(SHEATH_STATE_MELEE);
275 creature->UpdateEntry(NPC_JAINA_PART2);
276 creature->SetHealth(creature->GetMaxHealth() / 20);
278 creature->SetVisible(false);
280 {
281 creature->SetSheath(SHEATH_STATE_MELEE);
285 }
286 else if (GetBossState(DATA_LICH_KING) != DONE)
287 {
290 creature->UpdatePosition(LeaderEscapePos, true);
291 creature->StopMovingOnCurrentPos();
292 }
293 else
294 {
295 creature->UpdatePosition(PathWaypoints[PATH_WP_COUNT - 1], true);
296 creature->StopMovingOnCurrentPos();
297 }
298 creature->SetSheath(SHEATH_STATE_MELEE);
300 break;
302 if (creature->GetPositionX() > 5525.0f)
303 _iceWallTargetGUID[0] = creature->GetGUID();
304 else if (creature->GetPositionX() > 5475.0f)
305 _iceWallTargetGUID[1] = creature->GetGUID();
306 else if (creature->GetPositionX() > 5400.0f)
307 _iceWallTargetGUID[2] = creature->GetGUID();
308 else
309 _iceWallTargetGUID[3] = creature->GetGUID();
310 break;
311 case NPC_QUEL_DELAR:
312 creature->SetReactState(REACT_PASSIVE);
313 break;
314 }
315 }
@ DONE
Definition InstanceScript.h:61
@ EMOTE_ONESHOT_ATTACK2HTIGHT
Definition SharedDefines.h:1933
@ EMOTE_ONESHOT_ATTACK1H
Definition SharedDefines.h:1932
@ TEAM_ALLIANCE
Definition SharedDefines.h:748
@ MOVEMENTFLAG_WALKING
Definition UnitDefines.h:380
@ UNIT_NPC_FLAG_GOSSIP
Definition UnitDefines.h:322
@ UNIT_NPC_FLAG_QUESTGIVER
Definition UnitDefines.h:323
@ SHEATH_STATE_MELEE
Definition UnitDefines.h:130
@ MOVE_RUN
Definition UnitDefines.h:357
@ REACT_PASSIVE
Definition Unit.h:566
@ UNIT_NPC_EMOTESTATE
Definition UpdateFields.h:140
void Respawn(bool force=false)
Definition Creature.cpp:1987
bool UpdateEntry(uint32 entry, const CreatureData *data=nullptr, bool changelevel=true, bool updateAI=false)
Definition Creature.cpp:560
void SetReactState(ReactStates state)
A creature can have 3 ReactStates : Agressive, Passive, Neutral.
Definition Creature.h:99
bool SetWalk(bool enable) override
Enable or disable the creature's walk mode by removing: MOVEMENTFLAG_WALKING. Infom also the client.
Definition Creature.cpp:3247
void OnCreatureCreate(Creature *creature) override
Definition InstanceScript.cpp:70
uint32 GetPersistentData(uint32 index) const
Definition InstanceScript.h:257
EncounterState GetBossState(uint32 id) const
Definition InstanceScript.h:252
TeamId GetTeamIdInInstance() const
Definition InstanceScript.h:299
uint32 GetEntry() const
Definition Object.h:117
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:114
void SetVisible(bool x)
Definition Unit.cpp:11072
uint32 GetMaxHealth() const
Definition Unit.h:1109
Aura * AddAura(uint32 spellId, Unit *target)
Definition Unit.cpp:15088
bool IsAlive() const
Definition Unit.h:1793
void RemoveNpcFlag(NPCFlags flags)
Definition Unit.h:765
void SetHealth(uint32 val)
Definition Unit.cpp:12315
virtual void SetSheath(SheathState sheathed)
Definition Unit.h:1777
virtual bool UpdatePosition(float x, float y, float z, float ang, bool teleport=false)
Definition Unit.cpp:15967
void AddUnitMovementFlag(uint32 f)
Definition Unit.h:772
void SetNpcFlag(NPCFlags flags)
Definition Unit.h:764
SpellCastResult CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1350
void StopMovingOnCurrentPos()
Definition Unit.cpp:13036
void SetSpeed(UnitMoveType mtype, float rate, bool forced=false)
Definition Unit.cpp:11270
void RemoveUnitMovementFlag(uint32 f)
Definition Unit.h:773
void SetUInt32Value(uint16 index, uint32 value)
Definition Unit.cpp:17323
ObjectGuid _spiritualReflectionGUID[MAX_SPIRITUAL_REFLECTIONS]
Definition instance_halls_of_reflection.cpp:1102
@ NPC_UTHER
Definition culling_of_stratholme.h:58
@ NPC_JAINA_PART1
Definition forge_of_souls.h:47
@ NPC_JAINA_PART2
Definition forge_of_souls.h:48
@ NPC_SYLVANAS_PART2
Definition forge_of_souls.h:46
@ NPC_SYLVANAS_PART1
Definition forge_of_souls.h:45
const Position PathWaypoints[PATH_WP_COUNT]
Definition halls_of_reflection.h:356
@ PERSISTENT_DATA_FROSTSWORN_GENERAL
Definition halls_of_reflection.h:120
@ PERSISTENT_DATA_LK_INTRO
Definition halls_of_reflection.h:121
@ NPC_DARK_RANGER_LORALEN
Definition halls_of_reflection.h:68
@ NPC_LICH_KING_EVENT
Definition halls_of_reflection.h:59
@ NPC_LICH_KING_BOSS
Definition halls_of_reflection.h:60
@ NPC_WAVE_FOOTMAN
Definition halls_of_reflection.h:76
@ NPC_SPIRITUAL_REFLECTION
Definition halls_of_reflection.h:80
@ NPC_WAVE_PRIEST
Definition halls_of_reflection.h:72
@ NPC_ARCHMAGE_KORELN
Definition halls_of_reflection.h:69
@ NPC_FALRIC
Definition halls_of_reflection.h:57
@ NPC_WAVE_MAGE
Definition halls_of_reflection.h:73
@ NPC_QUEL_DELAR
Definition halls_of_reflection.h:86
@ NPC_WAVE_MERCENARY
Definition halls_of_reflection.h:75
@ NPC_WAVE_RIFLEMAN
Definition halls_of_reflection.h:77
@ NPC_MARWYN
Definition halls_of_reflection.h:58
@ NPC_FROSTSWORN_GENERAL
Definition halls_of_reflection.h:79
@ SPELL_JAINA_ICE_PRISON
Definition halls_of_reflection.h:291
@ SPELL_SYLVANAS_CLOAK_OF_DARKNESS
Definition halls_of_reflection.h:290
@ SPELL_SOUL_REAPER
Definition halls_of_reflection.h:276
@ SPELL_SYLVANAS_DARK_BINDING
Definition halls_of_reflection.h:292
@ SPELL_JAINA_ICE_BARRIER
Definition halls_of_reflection.h:289
const Position LeaderEscapePos
Definition halls_of_reflection.h:345
#define PATH_WP_COUNT
Definition halls_of_reflection.h:353
@ DATA_LICH_KING
Definition halls_of_reflection.h:33
constexpr uint8 MAX_SPIRITUAL_REFLECTIONS
Definition halls_of_reflection.h:126
float GetPositionX() const
Definition Position.h:121

References _iceWallTargetGUID, _spiritualReflectionGUID, _trashCounter, _trashGUID, Unit::AddAura(), Unit::AddUnitMovementFlag(), Unit::CastSpell(), DATA_LICH_KING, DATA_MARWYN, DONE, EMOTE_ONESHOT_ATTACK1H, EMOTE_ONESHOT_ATTACK2HTIGHT, InstanceScript::GetBossState(), Object::GetEntry(), Object::GetGUID(), Unit::GetMaxHealth(), InstanceScript::GetPersistentData(), Position::GetPositionX(), InstanceScript::GetTeamIdInInstance(), Unit::IsAlive(), LeaderEscapePos, MAX_SPIRITUAL_REFLECTIONS, MOVE_RUN, MOVEMENTFLAG_WALKING, NPC_ARCHMAGE_KORELN, NPC_DARK_RANGER_LORALEN, NPC_FALRIC, NPC_FROSTSWORN_GENERAL, NPC_ICE_WALL_TARGET, NPC_JAINA_PART1, NPC_JAINA_PART2, NPC_LICH_KING_BOSS, NPC_LICH_KING_EVENT, NPC_MARWYN, NPC_QUEL_DELAR, NPC_SPIRITUAL_REFLECTION, NPC_SYLVANAS_PART1, NPC_SYLVANAS_PART2, NPC_UTHER, NPC_WAVE_FOOTMAN, NPC_WAVE_MAGE, NPC_WAVE_MERCENARY, NPC_WAVE_PRIEST, NPC_WAVE_RIFLEMAN, NUM_OF_TRASH, InstanceScript::OnCreatureCreate(), PATH_WP_COUNT, PathWaypoints, PERSISTENT_DATA_FROSTSWORN_GENERAL, PERSISTENT_DATA_LK_INTRO, REACT_PASSIVE, Unit::RemoveNpcFlag(), Unit::RemoveUnitMovementFlag(), Creature::Respawn(), Unit::SetHealth(), Unit::SetNpcFlag(), Creature::SetReactState(), Unit::SetSheath(), Unit::SetSpeed(), Unit::SetUInt32Value(), Unit::SetVisible(), Creature::SetWalk(), SHEATH_STATE_MELEE, SPELL_JAINA_ICE_BARRIER, SPELL_JAINA_ICE_PRISON, SPELL_SOUL_REAPER, SPELL_SYLVANAS_CLOAK_OF_DARKNESS, SPELL_SYLVANAS_DARK_BINDING, Unit::StopMovingOnCurrentPos(), TEAM_ALLIANCE, UNIT_NPC_EMOTESTATE, UNIT_NPC_FLAG_GOSSIP, UNIT_NPC_FLAG_QUESTGIVER, Creature::UpdateEntry(), and Unit::UpdatePosition().

◆ OnGameObjectCreate()

void instance_halls_of_reflection::OnGameObjectCreate ( GameObject go)
inlineoverridevirtual

Reimplemented from ZoneScript.

318 {
319 switch (go->GetEntry())
320 {
321 case GO_FROSTMOURNE:
324 go->SetPhaseMask(2, true);
325 break;
326 case GO_FRONT_DOOR:
328 break;
329 case GO_ARTHAS_DOOR:
331 break;
332 }
333
335 }
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition GameObject.cpp:2611
void OnGameObjectCreate(GameObject *go) override
Definition InstanceScript.cpp:85
static ObjectGuid const Empty
Definition ObjectGuid.h:120
@ PERSISTENT_DATA_INTRO
Definition halls_of_reflection.h:119
@ GO_FROSTMOURNE
Definition halls_of_reflection.h:92
@ GO_ARTHAS_DOOR
Definition halls_of_reflection.h:95

References DATA_MARWYN, DONE, ObjectGuid::Empty, InstanceScript::GetBossState(), Object::GetEntry(), InstanceScript::GetPersistentData(), GO_ARTHAS_DOOR, GO_FRONT_DOOR, GO_FROSTMOURNE, InstanceScript::HandleGameObject(), InstanceScript::OnGameObjectCreate(), PERSISTENT_DATA_INTRO, and GameObject::SetPhaseMask().

◆ OnUnitDeath()

void instance_halls_of_reflection::OnUnitDeath ( Unit unit)
inlineoverridevirtual

Reimplemented from ZoneScript.

621 {
623 {
624 switch (unit->GetEntry())
625 {
627 case NPC_WAVE_FOOTMAN:
629 case NPC_WAVE_PRIEST:
630 case NPC_WAVE_MAGE:
631 if ((--_remainingTrashKills) == 0 && _waveNumber % 5 && _nextWaveTimer > 5000)
632 _nextWaveTimer = 5000;
633 break;
634 }
635 }
636
637 if (unit->GetEntry() == NPC_QUEL_DELAR)
638 if (Creature* uther = GetCreature(NPC_UTHER))
639 {
640 uther->SetStandState(UNIT_STAND_STATE_STAND);
641 uther->SetWalk(false);
642 uther->GetMotionMaster()->MovePoint(0, 5313.92f, 1989.36f, 707.70f);
643 uther->m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(*uther, 9), 7s);
644 }
645 }
@ UNIT_STAND_STATE_STAND
Definition UnitDefines.h:35
Definition instance_halls_of_reflection.cpp:27

References _nextWaveTimer, _remainingTrashKills, _waveNumber, InstanceScript::GetCreature(), Object::GetEntry(), NPC_QUEL_DELAR, NPC_UTHER, NPC_WAVE_FOOTMAN, NPC_WAVE_MAGE, NPC_WAVE_MERCENARY, NPC_WAVE_PRIEST, NPC_WAVE_RIFLEMAN, and UNIT_STAND_STATE_STAND.

◆ RandomizeCompositionsAndShow()

void instance_halls_of_reflection::RandomizeCompositionsAndShow ( )
inline
648 {
649 uint8 r1 = urand(0, 1);
650 uint8 r2 = urand(2, 3);
651 for (uint8 i = 0; i < MAX_SPIRITUAL_REFLECTIONS; ++i)
652 {
654 _chosenComposition[1][i] = allowedCompositions[r1 == 0 ? 1 : 0][i];
656 _chosenComposition[3][i] = allowedCompositions[r2 == 2 ? 3 : 2][i];
657 }
658 bool left[4] = {true, true, true, true};
659 for (uint8 k = 4; k > 0; --k)
660 {
661 uint8 r = urand(0, k - 1);
662 uint8 ur = 0;
663 for (uint8 j = 0; j < 4; ++j)
664 if (left[j])
665 {
666 if (ur == r)
667 {
668 left[j] = false;
669 for (uint8 i = 0; i < MAX_SPIRITUAL_REFLECTIONS; ++i)
670 _chosenComposition[8 - k][i] = allowedCompositions[j + 4][i];
671 break;
672 }
673 ++ur;
674 }
675 }
677 {
678 for (; _waveNumber < 4; ++_waveNumber)
679 {
680 uint8 numToActivate = (_waveNumber <= 1) ? 3 : 4;
681
682 for (uint8 i = 0; i < numToActivate; ++i)
683 {
685 bool forward = !!urand(0, 1);
686 for (int8 j = (forward ? 0 : NUM_OF_TRASH - 1); (forward ? j < NUM_OF_TRASH : j >= 0); (forward ? ++j : --j))
687 if (!_trashActive[j])
689 if (c->GetEntry() == entry)
690 {
691 _trashActive[j] = true;
692 Unit::Kill(c, c);
693 break;
694 }
695 }
696 }
697 _waveNumber = 5;
698 }
699
700 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
701 if (!_trashActive[i])
703 {
704 c->SetVisible(true);
705 c->CastSpell(c, SPELL_WELL_OF_SOULS_VISUAL, false);
706 }
707 }
std::int8_t int8
Definition Define.h:105
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
static void Kill(Unit *killer, Unit *victim, bool durabilityLoss=true, WeaponAttackType attackType=BASE_ATTACK, SpellInfo const *spellProto=nullptr, Spell const *spell=nullptr)
Definition Unit.cpp:13938
const uint32 allowedCompositions[8][5]
Definition halls_of_reflection.h:316
@ SPELL_WELL_OF_SOULS_VISUAL
Definition halls_of_reflection.h:271

References _chosenComposition, _falricPhaseComplete, _trashActive, _trashGUID, _waveNumber, allowedCompositions, Map::GetCreature(), InstanceScript::instance, Unit::Kill(), MAX_SPIRITUAL_REFLECTIONS, NUM_OF_TRASH, SPELL_WELL_OF_SOULS_VISUAL, and urand().

Referenced by SetData().

◆ SetBossState()

bool instance_halls_of_reflection::SetBossState ( uint32  type,
EncounterState  state 
)
inlineoverridevirtual

Reimplemented from InstanceScript.

338 {
339 if (!InstanceScript::SetBossState(type, state))
340 return false;
341
342 switch (type)
343 {
344 case DATA_FALRIC:
345 if (_waveNumber)
346 {
347 if (state == NOT_STARTED)
349 else if (state == DONE)
350 _nextWaveTimer = 60000;
351 }
352 break;
353 case DATA_MARWYN:
354 if (_waveNumber)
355 {
356 if (state == NOT_STARTED)
358 else if (state == DONE)
359 {
363 {
364 general->SetVisible(true);
365 general->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
366 general->SetReactState(REACT_AGGRESSIVE);
367 general->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
368 }
369 _waveNumber = 0;
371
372 instance->DoForAllPlayers([](Player* player)
373 {
375 });
376 }
377 }
378 break;
379 case DATA_LICH_KING:
380 if (state == DONE)
381 {
383 leader->setActive(false);
384 if (Creature* lichKing = GetCreature(NPC_LICH_KING_BOSS))
385 lichKing->setActive(false);
387 _outroStep = 1;
388 _outroTimer = 0;
389 }
390 break;
391 }
392
393 return true;
394 }
@ NOT_STARTED
Definition InstanceScript.h:58
@ EMOTE_ONESHOT_EMERGE
Definition SharedDefines.h:2049
@ EMOTE_ONESHOT_NONE
Definition SharedDefines.h:1900
@ REACT_AGGRESSIVE
Definition Unit.h:568
virtual bool SetBossState(uint32 id, EncounterState state)
Definition InstanceScript.cpp:390
void DoForAllPlayers(std::function< void(Player *)> exec)
Definition Map.cpp:2890
Definition Player.h:1084
TeamId GetTeamId(bool original=false) const
Definition Player.h:2127
void HandleWaveWipe()
Definition instance_halls_of_reflection.cpp:777
@ SPELL_HOR_START_QUEST_HORDE
Definition halls_of_reflection.h:268
@ SPELL_HOR_START_QUEST_ALLY
Definition halls_of_reflection.h:267

References _isLichKingFightActive, _nextWaveTimer, _outroStep, _outroTimer, _waveNumber, Unit::CastSpell(), DATA_FALRIC, DATA_LICH_KING, DATA_MARWYN, Map::DoForAllPlayers(), DONE, InstanceScript::DoUpdateWorldState(), EMOTE_ONESHOT_EMERGE, EMOTE_ONESHOT_NONE, InstanceScript::GetCreature(), Player::GetTeamId(), GO_ARTHAS_DOOR, GO_FRONT_DOOR, InstanceScript::HandleGameObject(), HandleWaveWipe(), InstanceScript::instance, NOT_STARTED, NPC_FROSTSWORN_GENERAL, NPC_LICH_KING_BOSS, NPC_SYLVANAS_PART2, REACT_AGGRESSIVE, InstanceScript::SetBossState(), SPELL_HOR_START_QUEST_ALLY, SPELL_HOR_START_QUEST_HORDE, TEAM_ALLIANCE, UNIT_NPC_EMOTESTATE, and WORLD_STATE_HALLS_OF_REFLECTION_WAVES_ENABLED.

Referenced by SetData().

◆ SetData()

void instance_halls_of_reflection::SetData ( uint32  type,
uint32  data 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

397 {
398 switch (type)
399 {
400 case DATA_INTRO:
403 break;
406 break;
409 if (data == DONE)
410 {
411 if (Creature* lichKing = GetCreature(NPC_LICH_KING_BOSS))
412 lichKing->SetVisible(true);
414 leader->SetVisible(true);
415 }
416 break;
418 {
419 uint8 reflectionIdx = 0;
420 instance->DoForAllPlayers([&](Player* player)
421 {
422 if (reflectionIdx >= MAX_SPIRITUAL_REFLECTIONS || !player->IsAlive() || player->IsGameMaster())
423 return;
424 Creature* reflection = instance->GetCreature(_spiritualReflectionGUID[reflectionIdx++]);
425 if (!reflection)
426 return;
427 if (!reflection->IsAlive())
428 reflection->Respawn();
429 reflection->SetCanFly(true);
430 reflection->SetDisableGravity(true);
431 reflection->SetVisible(true);
432
433 Item* weapon = player->GetWeaponForAttack(BASE_ATTACK);
434 reflection->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, weapon ? weapon->GetEntry() : 0);
435 weapon = player->GetWeaponForAttack(OFF_ATTACK);
436 reflection->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1, weapon ? weapon->GetEntry() : 0);
437 weapon = player->GetWeaponForAttack(RANGED_ATTACK);
438 reflection->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 2, weapon ? weapon->GetEntry() : 0);
439 player->CastSpell(reflection, SPELL_HOR_CLONE, true);
440 player->CastSpell(reflection, SPELL_HOR_CLONE_NAME, true);
441 });
442 break;
443 }
445 {
447 if (!general)
448 break;
449 for (uint8 i = 0; i < MAX_SPIRITUAL_REFLECTIONS; ++i)
451 if (reflection->IsVisible())
452 {
453 reflection->SetInCombatWithZone();
454 reflection->SetCanFly(false);
455 reflection->SetDisableGravity(false);
456 reflection->GetMotionMaster()->MoveJump(general->GetPositionX(), general->GetPositionY(), general->GetPositionZ(), 20.0f, 10.0f);
457 }
458 break;
459 }
461 for (uint8 i = 0; i < MAX_SPIRITUAL_REFLECTIONS; ++i)
463 reflection->AI()->EnterEvadeMode();
464 break;
465 case DATA_LK_INTRO:
468 leader->AI()->DoAction(ACTION_START_INTRO);
469 break;
475 break;
478 break;
480 {
481 if (!leader->IsAlive())
482 {
483 leader->Respawn();
485 leader->UpdateEntry(NPC_JAINA_PART2);
486 }
487 leader->GetThreatMgr().ClearAllThreat();
488 leader->CombatStop(true);
489 leader->InterruptNonMeleeSpells(true);
490 leader->GetMotionMaster()->Clear();
491 leader->GetMotionMaster()->MoveIdle();
492 leader->UpdatePosition(LeaderEscapePos, true);
493 leader->StopMovingOnCurrentPos();
494 leader->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
495 leader->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
496 leader->SetHealth(leader->GetMaxHealth() / 20);
497 leader->AI()->Reset();
498 leader->setActive(false);
499 leader->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
500 leader->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
501 }
502 if (Creature* lichKing = GetCreature(NPC_LICH_KING_BOSS))
503 {
504 lichKing->GetThreatMgr().ClearAllThreat();
505 lichKing->CombatStop(true);
506 lichKing->InterruptNonMeleeSpells(true);
507 lichKing->GetMotionMaster()->Clear();
508 lichKing->GetMotionMaster()->MoveIdle();
509 lichKing->UpdatePosition(lichKing->GetHomePosition(), true);
510 lichKing->StopMovingOnCurrentPos();
511 lichKing->RemoveAllAuras();
513 lichKing->AI()->Reset();
514 lichKing->setActive(false);
515 lichKing->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
516 lichKing->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
517 lichKing->SetSpeed(MOVE_RUN, lichKing->GetCreatureTemplate()->speed_run);
518 }
521 _outroTimer = 0;
522 _outroStep = 0;
523 [[fallthrough]];
526 break;
528 {
530 return;
531
532 switch (data)
533 {
534 case 1:
536 break;
537 case 2:
539 break;
542 bunny->CastSpell(bunny, SPELL_FROSTMOURNE_ALTAR_GLOW, true);
543 if (Creature* uther = GetCreature(NPC_UTHER))
544 uther->m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(*uther, 1), 3s);
545 break;
546 case 3:
548 break;
550 if (Creature* uther = GetCreature(NPC_UTHER))
551 uther->m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(*uther, 3), 5500ms);
552 break;
553 case 4:
554 if (Creature* quelDelar = GetCreature(NPC_QUEL_DELAR))
555 {
556 quelDelar->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
557 quelDelar->SetSpeed(MOVE_RUN, 2.5f);
558 }
559 break;
560 case 5:
561 if (Creature* uther = GetCreature(NPC_UTHER))
562 uther->m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(*uther, 6), 3s);
563 break;
564 case 6:
565 if (Creature* quelDelar = GetCreature(NPC_QUEL_DELAR))
566 {
567 quelDelar->SetSpeed(MOVE_RUN, quelDelar->GetCreatureTemplate()->speed_run);
568 quelDelar->GetMotionMaster()->MoveLand(0, quelDelar->GetPositionX(), quelDelar->GetPositionY(), 707.70f, 7.0f);
569 }
570 break;
571 case 7:
572 if (Creature* quelDelar = GetCreature(NPC_QUEL_DELAR))
573 {
574 quelDelar->SetReactState(REACT_AGGRESSIVE);
575 quelDelar->SetImmuneToAll(false);
576 quelDelar->RemoveAurasDueToSpell(SPELL_QUEL_DELAR_HATRED);
577 }
578 break;
579 case 8:
580 if (Creature* quelDelar = GetCreature(NPC_QUEL_DELAR))
581 quelDelar->SetInCombatWithZone();
582 break;
583 case 9:
586 break;
587 }
588 return;
589 }
590 }
591 }
@ ACHIEVEMENT_TIMED_TYPE_EVENT
Definition DBCEnums.h:110
@ IN_PROGRESS
Definition InstanceScript.h:59
@ FAIL
Definition InstanceScript.h:60
@ OFF_ATTACK
Definition Unit.h:216
@ BASE_ATTACK
Definition Unit.h:215
@ RANGED_ATTACK
Definition Unit.h:217
@ UNIT_VIRTUAL_ITEM_SLOT_ID
Definition UpdateFields.h:116
@ ACTION_START_INTRO
Definition boss_nightbane.cpp:57
virtual void EnterEvadeMode(EvadeReason why=EVADE_REASON_OTHER)
Definition CreatureAI.cpp:235
void SetInCombatWithZone()
Set in combat all units in the dungeon/raid. Affect only units with IsAIEnabled.
Definition Creature.cpp:2789
CreatureAI * AI() const
Definition Creature.h:143
void StorePersistentData(uint32 index, uint32 data)
Definition InstanceScript.cpp:427
void DoStartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition InstanceScript.cpp:670
void DoStopTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition InstanceScript.cpp:679
Definition Item.h:220
void MoveJump(Position const &pos, float speedXY, float speedZ, uint32 id=0)
Definition MotionMaster.h:256
bool IsGameMaster() const
Definition Player.h:1174
Item * GetWeaponForAttack(WeaponAttackType attackType, bool useable=false) const
Definition PlayerStorage.cpp:490
MotionMaster * GetMotionMaster()
Definition Unit.h:1758
void SetCanFly(bool enable)
Add the movement flag: MOVEMENTFLAGCAN_FLY. Generaly only use by players, allowing them to fly by pre...
Definition Unit.cpp:16522
bool IsVisible() const
Definition Unit.h:2013
void SetDisableGravity(bool disable)
Definition Unit.cpp:16462
bool SetBossState(uint32 type, EncounterState state) override
Definition instance_halls_of_reflection.cpp:337
void RandomizeCompositionsAndShow()
Definition instance_halls_of_reflection.cpp:647
void StartNextWave()
Definition instance_halls_of_reflection.cpp:709
@ PERSISTENT_DATA_BATTERED_HILT
Definition halls_of_reflection.h:122
@ GO_ICE_WALL
Definition halls_of_reflection.h:99
@ BHSF_THROWN
Definition halls_of_reflection.h:113
@ BHSF_STARTED
Definition halls_of_reflection.h:112
@ BHSF_FINISHED
Definition halls_of_reflection.h:114
@ NPC_ALTAR_BUNNY
Definition halls_of_reflection.h:85
@ SPELL_HOR_CLONE_NAME
Definition halls_of_reflection.h:286
@ ACHIEV_RETREATING_TIMED_EVENT
Definition halls_of_reflection.h:263
@ SPELL_HOR_CLONE
Definition halls_of_reflection.h:285
@ SPELL_FROSTMOURNE_ALTAR_GLOW
Definition halls_of_reflection.h:310
@ SPELL_QUEL_DELAR_HATRED
Definition halls_of_reflection.h:309
@ ACTION_START_LK_FIGHT
Definition halls_of_reflection.h:50
@ DATA_FROSTSWORN_GENERAL
Definition halls_of_reflection.h:38
@ ACTION_SHOW_TRASH
Definition halls_of_reflection.h:46
@ ACTION_SPIRITUAL_REFLECTIONS_HIDE
Definition halls_of_reflection.h:49
@ ACTION_DELETE_ICE_WALL
Definition halls_of_reflection.h:52
@ ACTION_STOP_LK_FIGHT
Definition halls_of_reflection.h:51
@ ACTION_SPIRITUAL_REFLECTIONS_ACTIVATE
Definition halls_of_reflection.h:48
@ DATA_LK_INTRO
Definition halls_of_reflection.h:39
@ ACTION_SPIRITUAL_REFLECTIONS_COPY
Definition halls_of_reflection.h:47
@ DATA_INTRO
Definition halls_of_reflection.h:37
float GetPositionZ() const
Definition Position.h:123
float GetPositionY() const
Definition Position.h:122

References _batteredHiltStatus, _isLichKingFightActive, _outroStep, _outroTimer, _spiritualReflectionGUID, ACHIEV_RETREATING_TIMED_EVENT, ACHIEVEMENT_TIMED_TYPE_EVENT, ACTION_DELETE_ICE_WALL, ACTION_SHOW_TRASH, ACTION_SPIRITUAL_REFLECTIONS_ACTIVATE, ACTION_SPIRITUAL_REFLECTIONS_COPY, ACTION_SPIRITUAL_REFLECTIONS_HIDE, ACTION_START_INTRO, ACTION_START_LK_FIGHT, ACTION_STOP_LK_FIGHT, BASE_ATTACK, BHSF_FINISHED, BHSF_STARTED, BHSF_THROWN, Unit::CastSpell(), DATA_BATTERED_HILT, DATA_FROSTSWORN_GENERAL, DATA_INTRO, DATA_LICH_KING, DATA_LK_INTRO, Map::DoForAllPlayers(), DONE, InstanceScript::DoStartTimedAchievement(), InstanceScript::DoStopTimedAchievement(), EMOTE_ONESHOT_NONE, FAIL, Map::GetCreature(), InstanceScript::GetCreature(), Object::GetEntry(), InstanceScript::GetPersistentData(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), InstanceScript::GetTeamIdInInstance(), Player::GetWeaponForAttack(), GO_ICE_WALL, InstanceScript::HandleGameObject(), IN_PROGRESS, InstanceScript::instance, Unit::IsAlive(), Player::IsGameMaster(), LeaderEscapePos, MAX_SPIRITUAL_REFLECTIONS, MOVE_RUN, MOVEMENTFLAG_WALKING, NPC_ALTAR_BUNNY, NPC_FROSTSWORN_GENERAL, NPC_JAINA_PART2, NPC_LICH_KING_BOSS, NPC_QUEL_DELAR, NPC_SYLVANAS_PART2, NPC_UTHER, OFF_ATTACK, PERSISTENT_DATA_BATTERED_HILT, PERSISTENT_DATA_FROSTSWORN_GENERAL, PERSISTENT_DATA_INTRO, PERSISTENT_DATA_LK_INTRO, RandomizeCompositionsAndShow(), RANGED_ATTACK, REACT_AGGRESSIVE, Creature::Respawn(), SetBossState(), Unit::SetCanFly(), Unit::SetDisableGravity(), Unit::SetUInt32Value(), Unit::SetVisible(), SPELL_FROSTMOURNE_ALTAR_GLOW, SPELL_HOR_CLONE, SPELL_HOR_CLONE_NAME, SPELL_JAINA_ICE_PRISON, SPELL_QUEL_DELAR_HATRED, SPELL_SYLVANAS_DARK_BINDING, StartNextWave(), InstanceScript::StorePersistentData(), TEAM_ALLIANCE, UNIT_NPC_EMOTESTATE, UNIT_NPC_FLAG_GOSSIP, UNIT_NPC_FLAG_QUESTGIVER, and UNIT_VIRTUAL_ITEM_SLOT_ID.

Referenced by Update().

◆ StartNextWave()

void instance_halls_of_reflection::StartNextWave ( )
inline
710 {
711 if (_waveNumber >= 10)
712 return;
713
714 ++_waveNumber;
715 if (_waveNumber >= 6)
717
721
722 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
723 if (_trashActive[i])
725 if (c->IsAlive() && !c->IsInCombat())
726 c->AI()->DoAction(1);
727
728 if (_waveNumber == 5 || _waveNumber == 10)
729 {
730 _nextWaveTimer = 0;
731 if (_waveNumber == 5)
732 {
733 if (Creature* falric = GetCreature(DATA_FALRIC))
734 {
735 if (falric->IsAlive())
736 falric->AI()->DoAction(1);
737 else
738 _nextWaveTimer = 1;
739 }
740 }
741 else
742 {
743 if (Creature* marwyn = GetCreature(DATA_MARWYN))
744 if (marwyn->IsAlive())
745 marwyn->AI()->DoAction(1);
746 }
747 }
748 else
749 {
750 _nextWaveTimer = 150000;
751
752 uint8 numToActivate = 5;
753 if (_waveNumber <= 2)
754 numToActivate = 3;
755 else if (_waveNumber <= 4)
756 numToActivate = 4;
757 _remainingTrashKills += numToActivate;
758 for (uint8 i = 0; i < numToActivate; ++i)
759 {
760 uint32 entry = _chosenComposition[_waveNumber - (_waveNumber > 5 ? 2 : 1)][i];
761 bool forward = !!urand(0, 1);
762 for (int8 j = (forward ? 0 : NUM_OF_TRASH - 1); (forward ? j < NUM_OF_TRASH : j >= 0); (forward ? ++j : --j))
763 if (!_trashActive[j])
765 if (c->GetEntry() == entry)
766 {
767 _trashActive[j] = true;
768 c->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
769 c->SetImmuneToAll(false);
770 c->AI()->DoAction(1);
771 break;
772 }
773 }
774 }
775 }

References _chosenComposition, _falricPhaseComplete, _nextWaveTimer, _remainingTrashKills, _trashActive, _trashGUID, _waveNumber, DATA_FALRIC, DATA_MARWYN, InstanceScript::DoUpdateWorldState(), Map::GetCreature(), InstanceScript::GetCreature(), GO_FRONT_DOOR, InstanceScript::HandleGameObject(), InstanceScript::instance, NUM_OF_TRASH, UNIT_FLAG_NOT_SELECTABLE, urand(), WORLD_STATE_HALLS_OF_REFLECTION_WAVE_COUNT, and WORLD_STATE_HALLS_OF_REFLECTION_WAVES_ENABLED.

Referenced by SetData(), and Update().

◆ Update()

void instance_halls_of_reflection::Update ( uint32  diff)
inlineoverridevirtual

Reimplemented from InstanceScript.

816 {
817 if (!instance->HavePlayers())
818 return;
819
820 if (_playerCheckTimer <= diff)
821 {
822 _playerCheckTimer = 5000;
824 {
825 Map::PlayerList const& pl = instance->GetPlayers();
827 {
828 bool allDead = true;
829 bool outOfRange = false;
830 for (auto itr = pl.begin(); itr != pl.end(); ++itr)
831 {
832 Player* p = itr->GetSource();
833 if (!p || p->IsGameMaster())
834 continue;
835 if (p->IsAlive())
836 allDead = false;
838 {
839 outOfRange = true;
840 break;
841 }
842 }
843 if (allDead || outOfRange)
845 }
846 else if (!_waveResumeTimer)
847 {
848 bool allInRange = (instance->GetPlayersCountExceptGMs() > 0);
849 for (auto itr = pl.begin(); itr != pl.end(); ++itr)
850 {
851 Player* p = itr->GetSource();
852 if (!p || p->IsGameMaster())
853 continue;
855 {
856 allInRange = false;
857 break;
858 }
859 }
860 if (allInRange)
861 {
863 _waveResumeStep = 0;
864 }
865 }
866 }
867 }
868 else
869 _playerCheckTimer -= diff;
870
871 if (_nextWaveTimer)
872 {
873 if (_nextWaveTimer <= diff)
874 {
875 _nextWaveTimer = 0;
877 }
878 else
879 _nextWaveTimer -= diff;
880 }
881
883 {
884 if (_waveResumeTimer <= diff)
885 {
886 switch (_waveResumeStep)
887 {
888 case 0:
889 if (Creature* falric = GetCreature(DATA_FALRIC))
890 {
891 falric->UpdatePosition(5274.9f, 2039.2f, 709.319f, 5.4619f, true);
892 falric->StopMovingOnCurrentPos();
893 falric->SetVisible(true);
894 if (falric->IsAlive())
895 {
896 falric->GetMotionMaster()->MovePoint(0, FalricMovePos);
897 if (Aura* a = falric->AddAura(SPELL_SHADOWMOURNE_VISUAL, falric))
898 a->SetDuration(8000);
899 }
900 }
901 if (Creature* marwyn = GetCreature(DATA_MARWYN))
902 {
903 marwyn->UpdatePosition(5343.77f, 1973.86f, 709.319f, 2.35173f, true);
904 marwyn->StopMovingOnCurrentPos();
905 marwyn->SetVisible(true);
906 if (marwyn->IsAlive())
907 {
908 marwyn->GetMotionMaster()->MovePoint(0, MarwynMovePos);
909 if (Aura* a = marwyn->AddAura(SPELL_SHADOWMOURNE_VISUAL, marwyn))
910 a->SetDuration(8000);
911 }
912 marwyn->AI()->Talk(EMOTE_MARWYN_INTRO_SPIRIT);
913 }
915 _waveResumeTimer = 7500;
916 break;
917 case 1:
918 if (Creature* falric = GetCreature(DATA_FALRIC))
919 {
920 if (falric->IsAlive())
921 falric->AI()->Talk(SAY_FALRIC_INTRO_2);
922 else if (Creature* marwyn = GetCreature(DATA_MARWYN))
923 marwyn->AI()->Talk(SAY_MARWYN_WIPE_AFTER_FALRIC);
924 }
926 _waveResumeStep = 0;
928 _nextWaveTimer = 7000;
929 break;
930 default:
931 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
933 c->SetVisible(false);
934 if (Creature* falric = GetCreature(DATA_FALRIC))
935 falric->SetVisible(false);
936 if (Creature* marwyn = GetCreature(DATA_MARWYN))
937 marwyn->SetVisible(false);
938 _waveResumeStep = 0;
940 break;
941 }
942 }
943 else
944 _waveResumeTimer -= diff;
945 }
946
947 if (_outroStep)
948 {
949 if (_outroTimer <= diff)
950 UpdateOutro();
951 else
952 _outroTimer -= diff;
953 }
954 }
Definition SpellAuras.h:87
Definition MapRefMgr.h:26
iterator begin()
Definition MapRefMgr.h:36
iterator end()
Definition MapRefMgr.h:37
uint32 GetPlayersCountExceptGMs() const
Definition Map.cpp:1813
PlayerList const & GetPlayers() const
Definition Map.h:326
void SetData(uint32 type, uint32 data) override
Definition instance_halls_of_reflection.cpp:396
void UpdateOutro()
Definition instance_halls_of_reflection.cpp:957
const Position FalricMovePos
Definition halls_of_reflection.h:343
const Position MarwynMovePos
Definition halls_of_reflection.h:344
#define MAX_DIST_FROM_CENTER_IN_COMBAT
Definition halls_of_reflection.h:129
@ SPELL_SHADOWMOURNE_VISUAL
Definition halls_of_reflection.h:269
@ EMOTE_MARWYN_INTRO_SPIRIT
Definition halls_of_reflection.h:247
@ SAY_FALRIC_INTRO_2
Definition halls_of_reflection.h:180
@ SAY_MARWYN_WIPE_AFTER_FALRIC
Definition halls_of_reflection.h:249
#define MAX_DIST_FROM_CENTER_TO_START
Definition halls_of_reflection.h:130
const Position CenterPos
Definition halls_of_reflection.h:328
float GetExactDist2d(const float x, const float y) const
Definition Position.h:170

References _nextWaveTimer, _outroStep, _outroTimer, _playerCheckTimer, _trashGUID, _waveNumber, _waveResumeStep, _waveResumeTimer, ACTION_SHOW_TRASH, MapRefMgr::begin(), CenterPos, DATA_FALRIC, DATA_MARWYN, DONE, EMOTE_MARWYN_INTRO_SPIRIT, MapRefMgr::end(), FalricMovePos, InstanceScript::GetBossState(), Map::GetCreature(), InstanceScript::GetCreature(), Position::GetExactDist2d(), InstanceScript::GetPersistentData(), Map::GetPlayers(), Map::GetPlayersCountExceptGMs(), HandleWaveWipe(), Map::HavePlayers(), InstanceScript::instance, Unit::IsAlive(), Player::IsGameMaster(), MarwynMovePos, MAX_DIST_FROM_CENTER_IN_COMBAT, MAX_DIST_FROM_CENTER_TO_START, NUM_OF_TRASH, PERSISTENT_DATA_INTRO, SAY_FALRIC_INTRO_2, SAY_MARWYN_WIPE_AFTER_FALRIC, SetData(), SPELL_SHADOWMOURNE_VISUAL, StartNextWave(), and UpdateOutro().

◆ UpdateOutro()

void instance_halls_of_reflection::UpdateOutro ( )
inlineprivate
958 {
959 switch (_outroStep)
960 {
961 case 1:
963 {
964 lk->UpdatePosition(PathWaypoints[PATH_WP_COUNT - 2], true);
965 lk->StopMovingOnCurrentPos();
966 lk->RemoveAllAuras();
968 if (!lk->IsVisible())
969 lk->SetVisible(true);
971 {
972 leader->UpdatePosition(PathWaypoints[PATH_WP_COUNT - 1], true);
973 leader->StopMovingOnCurrentPos();
974 leader->RemoveAllAuras();
975 leader->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_READY1H);
976 if (!leader->IsVisible())
977 leader->SetVisible(true);
978 lk->CastSpell(leader, SPELL_HARVEST_SOUL, false);
979 }
980 }
981 ++_outroStep;
982 _outroTimer = 500;
983 break;
984 case 2:
985 {
987 _transport = sTransportMgr->CreateTransport(entry, 0, instance);
988 ++_outroStep;
989 _outroTimer = GetTeamIdInInstance() == TEAM_ALLIANCE ? 10000 : 10500;
990 break;
991 }
992 case 3:
993 if (_transport)
995 if (Creature* captain = GetCreature(DATA_SHIP_CAPTAIN))
998 {
999 leader->RemoveAllAuras();
1000 leader->CastSpell(leader, SPELL_GUNSHIP_CANNON_FIRE_PERIODIC, true);
1001 }
1002 if (Creature* lichKing = GetCreature(NPC_LICH_KING_BOSS))
1003 {
1004 lichKing->InterruptNonMeleeSpells(true);
1005 lichKing->RemoveAllAuras();
1006 }
1007 ++_outroStep;
1008 _outroTimer = 5000;
1009 break;
1010 case 4:
1012 ++_outroStep;
1013 _outroTimer = 3000;
1014 break;
1015 case 5:
1017 leader->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
1018 if (Creature* lichKing = GetCreature(NPC_LICH_KING_BOSS))
1019 {
1020 lichKing->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
1021 lichKing->GetThreatMgr().ClearAllThreat();
1022 lichKing->CombatStop(true);
1023 lichKing->InterruptNonMeleeSpells(true);
1024 lichKing->SetVisible(false);
1025 }
1026 if (instance->IsHeroic())
1029 leader->CastSpell(leader, SPELL_ACHIEVEMENT_CHECK, true);
1030 ++_outroStep;
1031 _outroTimer = 1000;
1032 break;
1033 case 6:
1034 if (_transport)
1036 ++_outroStep;
1037 _outroTimer = 3500;
1038 break;
1039 case 7:
1040 if (_transport)
1041 _transport->EnableMovement(false);
1043 {
1044 uint8 index = GetTeamIdInInstance() == TEAM_ALLIANCE ? 0 : 1;
1045 for (uint8 i = 0; i < 3; ++i)
1046 if (StairsPos[index][i].GetPositionX())
1047 if (GameObject* go = leader->SummonGameObject(GetTeamIdInInstance() == TEAM_ALLIANCE ? GO_STAIRS_ALLIANCE : GO_STAIRS_HORDE, StairsPos[index][i].GetPositionX(), StairsPos[index][i].GetPositionY(), StairsPos[index][i].GetPositionZ(), StairsPos[index][i].GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400, false))
1048 go->SetGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE);
1049 }
1050 ++_outroStep;
1051 _outroTimer = 1000;
1052 break;
1053 case 8:
1054 if (Creature* captain = GetCreature(DATA_SHIP_CAPTAIN))
1057 {
1058 leader->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
1059 leader->GetMotionMaster()->MovePoint(0, WalkCaveInPos);
1060 leader->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1061 }
1062 ++_outroStep;
1063 _outroTimer = 6000;
1064 break;
1065 case 9:
1069 ++_outroStep;
1070 _outroTimer = 11000;
1071 break;
1072 case 10:
1073 ++_outroStep;
1074 _outroTimer = 0;
1075 instance->DoForAllPlayers([](Player* player)
1076 {
1078 });
1081 {
1082 leader->AI()->Talk(SAY_JAINA_FINAL_2);
1083 _outroTimer = 10000;
1084 }
1085 break;
1086 case 11:
1088 leader->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
1089 ++_outroStep;
1090 _outroTimer = 300 * 1000;
1091 break;
1092 case 12:
1093 _outroStep = 0;
1094 _outroTimer = 0;
1095 if (_transport)
1096 _transport->setActive(false);
1097 break;
1098 }
1099 }
@ EMOTE_ONESHOT_CUSTOM_SPELL_02
Definition SharedDefines.h:2004
@ EMOTE_ONESHOT_READY1H
Definition SharedDefines.h:1938
@ GO_FLAG_INTERACT_COND
Definition SharedDefines.h:1611
@ GO_FLAG_NOT_SELECTABLE
Definition SharedDefines.h:1613
#define sTransportMgr
Definition TransportMgr.h:165
@ SPELL_ACHIEVEMENT_CHECK
Definition boss_tharon_ja.cpp:50
Definition GameObject.h:120
void PermBindAllPlayers()
Definition Map.cpp:2174
InstanceMap * ToInstanceMap()
Definition Map.h:378
bool IsHeroic() const
Definition Map.h:299
void EnableMovement(bool enabled)
Definition Transport.cpp:455
void KilledMonsterCredit(uint32 entry, ObjectGuid guid=ObjectGuid::Empty)
Definition PlayerQuest.cpp:1959
void setActive(bool isActiveObject)
Definition Object.cpp:1082
GameObject * SummonGameObject(uint32 entry, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime, bool checkTransport=true, GOSummonType summonType=GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)
Definition Object.cpp:2408
@ GO_CAVE_IN
Definition halls_of_reflection.h:96
@ GO_THE_SKYBREAKER
Definition halls_of_reflection.h:100
@ GO_ORGRIMS_HAMMER
Definition halls_of_reflection.h:101
@ GO_STAIRS_HORDE
Definition halls_of_reflection.h:103
@ GO_STAIRS_ALLIANCE
Definition halls_of_reflection.h:102
@ NPC_WRATH_OF_THE_LICH_KING_CREDIT
Definition halls_of_reflection.h:82
@ SPELL_GUNSHIP_CANNON_FIRE_PERIODIC
Definition halls_of_reflection.h:304
@ SPELL_HARVEST_SOUL
Definition halls_of_reflection.h:299
const Position StairsPos[2][3]
Definition halls_of_reflection.h:393
@ SAY_JAINA_FINAL_2
Definition halls_of_reflection.h:229
@ SAY_ONBOARD_ALLY
Definition halls_of_reflection.h:233
@ SAY_JAINA_FINAL_1
Definition halls_of_reflection.h:228
@ SAY_FIRE_HORDE
Definition halls_of_reflection.h:217
@ SAY_ONBOARD_HORDE
Definition halls_of_reflection.h:218
@ SAY_FIRE_ALLY
Definition halls_of_reflection.h:232
@ SAY_SYLVANA_FINAL
Definition halls_of_reflection.h:214
const Position WalkCaveInPos
Definition halls_of_reflection.h:347
@ DATA_SHIP_CAPTAIN
Definition halls_of_reflection.h:43

References _outroStep, _outroTimer, _transport, DATA_SHIP_CAPTAIN, Map::DoForAllPlayers(), EMOTE_ONESHOT_CUSTOM_SPELL_02, EMOTE_ONESHOT_NONE, EMOTE_ONESHOT_READY1H, MotionTransport::EnableMovement(), InstanceScript::GetCreature(), Position::GetOrientation(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), InstanceScript::GetTeamIdInInstance(), GO_CAVE_IN, GO_FLAG_INTERACT_COND, GO_FLAG_NOT_SELECTABLE, GO_ORGRIMS_HAMMER, GO_STAIRS_ALLIANCE, GO_STAIRS_HORDE, GO_THE_SKYBREAKER, InstanceScript::HandleGameObject(), InstanceScript::instance, Map::IsHeroic(), Player::KilledMonsterCredit(), MOVEMENTFLAG_WALKING, NPC_LICH_KING_BOSS, NPC_SYLVANAS_PART2, NPC_WRATH_OF_THE_LICH_KING_CREDIT, PATH_WP_COUNT, PathWaypoints, InstanceMap::PermBindAllPlayers(), SAY_FIRE_ALLY, SAY_FIRE_HORDE, SAY_JAINA_FINAL_1, SAY_JAINA_FINAL_2, SAY_ONBOARD_ALLY, SAY_ONBOARD_HORDE, SAY_SYLVANA_FINAL, WorldObject::setActive(), SPELL_ACHIEVEMENT_CHECK, SPELL_GUNSHIP_CANNON_FIRE_PERIODIC, SPELL_HARVEST_SOUL, StairsPos, sTransportMgr, WorldObject::SummonGameObject(), TEAM_ALLIANCE, Map::ToInstanceMap(), UNIT_NPC_EMOTESTATE, UNIT_NPC_FLAG_GOSSIP, UNIT_NPC_FLAG_QUESTGIVER, and WalkCaveInPos.

Referenced by Update().

Member Data Documentation

◆ _batteredHiltStatus

uint32 instance_halls_of_reflection::_batteredHiltStatus {}
private
1107{};

Referenced by GetData(), Initialize(), and SetData().

◆ _chosenComposition

uint32 instance_halls_of_reflection::_chosenComposition[8][5] {}
private

◆ _falricPhaseComplete

bool instance_halls_of_reflection::_falricPhaseComplete {}
private

◆ _iceWallTargetGUID

ObjectGuid instance_halls_of_reflection::_iceWallTargetGUID[MAX_ICE_WALL_TARGETS]
private

Referenced by GetGuidData(), and OnCreatureCreate().

◆ _isLichKingFightActive

bool instance_halls_of_reflection::_isLichKingFightActive {}
private

◆ _nextWaveTimer

uint32 instance_halls_of_reflection::_nextWaveTimer {}
private

◆ _outroStep

uint8 instance_halls_of_reflection::_outroStep {}
private

◆ _outroTimer

uint32 instance_halls_of_reflection::_outroTimer {}
private

◆ _playerCheckTimer

uint16 instance_halls_of_reflection::_playerCheckTimer {}
private
1115{};

Referenced by Initialize(), and Update().

◆ _remainingTrashKills

uint8 instance_halls_of_reflection::_remainingTrashKills {}
private

◆ _spiritualReflectionGUID

ObjectGuid instance_halls_of_reflection::_spiritualReflectionGUID[MAX_SPIRITUAL_REFLECTIONS]
private

Referenced by OnCreatureCreate(), and SetData().

◆ _transport

MotionTransport* instance_halls_of_reflection::_transport {}
private
1125{};

Referenced by Initialize(), and UpdateOutro().

◆ _trashActive

bool instance_halls_of_reflection::_trashActive[NUM_OF_TRASH] {}
private

◆ _trashCounter

uint8 instance_halls_of_reflection::_trashCounter {}
private
1111{};

Referenced by HandleWaveWipe(), Initialize(), and OnCreatureCreate().

◆ _trashGUID

ObjectGuid instance_halls_of_reflection::_trashGUID[NUM_OF_TRASH]
private

◆ _waveNumber

uint8 instance_halls_of_reflection::_waveNumber {}
private

◆ _waveResumeStep

uint8 instance_halls_of_reflection::_waveResumeStep {}
private
1117{};

Referenced by HandleWaveWipe(), Initialize(), and Update().

◆ _waveResumeTimer

uint16 instance_halls_of_reflection::_waveResumeTimer {}
private
1116{};

Referenced by HandleWaveWipe(), Initialize(), and Update().


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