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
 
bool _SkipCheckRequiredBosses (Player const *player=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:308
void SetPersistentDataCount(uint32 number)
Definition InstanceScript.h:309
void SetHeaders(std::string const &dataHeaders)
Definition InstanceScript.cpp:159
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
Definition InstanceScript.cpp:194
@ PERSISTENT_DATA_COUNT
Definition halls_of_reflection.h:123
constexpr auto MAX_ENCOUNTER
Definition instance_blackrock_depths.cpp:24
ObjectData const gameObjectData[]
Definition instance_halls_of_reflection.cpp:142
ObjectData const creatureData[]
Definition instance_halls_of_reflection.cpp:124

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.

598 {
599 switch (type)
600 {
601 case DATA_WAVE_NUMBER:
602 return static_cast<uint32>(_waveNumber);
604 return _batteredHiltStatus;
605 }
606
607 return 0;
608 }
std::uint32_t uint32
Definition Define.h:107
uint32 _batteredHiltStatus
Definition instance_halls_of_reflection.cpp:1111
uint8 _waveNumber
Definition instance_halls_of_reflection.cpp:1117
@ DATA_BATTERED_HILT
Definition halls_of_reflection.h:39
@ 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.

611 {
612 switch (type)
613 {
615 case NPC_ICE_WALL_TARGET + 1:
616 case NPC_ICE_WALL_TARGET + 2:
617 case NPC_ICE_WALL_TARGET + 3:
619 default:
620 return GetObjectGuid(type);
621 }
622 }
ObjectGuid GetObjectGuid(uint32 type) const
Definition InstanceScript.cpp:99
ObjectGuid _iceWallTargetGUID[MAX_ICE_WALL_TARGETS]
Definition instance_halls_of_reflection.cpp:1107
@ 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
782 {
783 if (!_waveNumber)
784 return;
785
789
791 _waveNumber = 0;
792 _nextWaveTimer = 0;
793 std::memset(&_chosenComposition, 0, sizeof(_chosenComposition));
794
795 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
796 if (_trashActive[i])
798 {
799 c->GetThreatMgr().ClearAllThreat();
800 c->CombatStop(true);
801 c->InterruptNonMeleeSpells(true);
802 c->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
803 c->SetImmuneToAll(true);
804 c->Respawn(true);
805 c->UpdatePosition(c->GetHomePosition(), true);
806 c->StopMovingOnCurrentPos();
807 }
808 std::fill(std::begin(_trashActive), std::end(_trashActive), false);
809 if (Creature* falric = GetCreature(DATA_FALRIC))
810 falric->AI()->EnterEvadeMode();
811 if (Creature* marwyn = GetCreature(DATA_MARWYN))
812 marwyn->AI()->EnterEvadeMode();
813
814 _waveResumeTimer = 5000;
815 _waveResumeStep = 2;
817 }
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:116
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
Open or close a GameObject by GUID.
Definition InstanceScript.cpp:126
Map * instance
Definition InstanceScript.h:149
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
Definition InstanceScript.cpp:632
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:2362
bool _trashActive[NUM_OF_TRASH]
Definition instance_halls_of_reflection.cpp:1114
uint16 _waveResumeTimer
Definition instance_halls_of_reflection.cpp:1120
uint8 _remainingTrashKills
Definition instance_halls_of_reflection.cpp:1123
uint32 _chosenComposition[8][5]
Definition instance_halls_of_reflection.cpp:1116
ObjectGuid _trashGUID[NUM_OF_TRASH]
Definition instance_halls_of_reflection.cpp:1108
uint8 _waveResumeStep
Definition instance_halls_of_reflection.cpp:1121
uint32 _nextWaveTimer
Definition instance_halls_of_reflection.cpp:1118
uint8 _trashCounter
Definition instance_halls_of_reflection.cpp:1115
#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:1128
MotionTransport * _transport
Definition instance_halls_of_reflection.cpp:1129
bool _isLichKingFightActive
Definition instance_halls_of_reflection.cpp:1126
uint16 _playerCheckTimer
Definition instance_halls_of_reflection.cpp:1119
uint32 _outroTimer
Definition instance_halls_of_reflection.cpp:1127
bool _falricPhaseComplete
Definition instance_halls_of_reflection.cpp:1122

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:322

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:1931
@ EMOTE_ONESHOT_ATTACK1H
Definition SharedDefines.h:1930
@ 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:2019
bool UpdateEntry(uint32 entry, const CreatureData *data=nullptr, bool changelevel=true, bool updateAI=false)
Definition Creature.cpp:581
void SetReactState(ReactStates state)
A creature can have 3 ReactStates : Agressive, Passive, Neutral.
Definition Creature.h:100
bool SetWalk(bool enable) override
Enable or disable the creature's walk mode by removing: MOVEMENTFLAG_WALKING. Infom also the client.
Definition Creature.cpp:3332
void OnCreatureCreate(Creature *creature) override
Definition InstanceScript.cpp:71
uint32 GetPersistentData(uint32 index) const
Definition InstanceScript.h:257
EncounterState GetBossState(uint32 id) const
Definition InstanceScript.h:252
TeamId GetTeamIdInInstance() const
Definition InstanceScript.h:301
uint32 GetEntry() const
Definition Object.h:117
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:114
void SetVisible(bool x)
Definition Unit.cpp:11128
uint32 GetMaxHealth() const
Definition Unit.h:1109
Aura * AddAura(uint32 spellId, Unit *target)
Definition Unit.cpp:15159
bool IsAlive() const
Definition Unit.h:1797
void RemoveNpcFlag(NPCFlags flags)
Definition Unit.h:765
void SetHealth(uint32 val)
Definition Unit.cpp:12374
virtual void SetSheath(SheathState sheathed)
Definition Unit.h:1781
virtual bool UpdatePosition(float x, float y, float z, float ang, bool teleport=false)
Definition Unit.cpp:16026
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:1389
void StopMovingOnCurrentPos()
Definition Unit.cpp:13095
void SetSpeed(UnitMoveType mtype, float rate, bool forced=false)
Definition Unit.cpp:11326
void RemoveUnitMovementFlag(uint32 f)
Definition Unit.h:773
void SetUInt32Value(uint16 index, uint32 value)
Definition Unit.cpp:17388
ObjectGuid _spiritualReflectionGUID[MAX_SPIRITUAL_REFLECTIONS]
Definition instance_halls_of_reflection.cpp:1106
@ 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:2616
void OnGameObjectCreate(GameObject *go) override
Definition InstanceScript.cpp:86
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.

625 {
627 {
628 switch (unit->GetEntry())
629 {
631 case NPC_WAVE_FOOTMAN:
633 case NPC_WAVE_PRIEST:
634 case NPC_WAVE_MAGE:
635 if ((--_remainingTrashKills) == 0 && _waveNumber % 5 && _nextWaveTimer > 5000)
636 _nextWaveTimer = 5000;
637 break;
638 }
639 }
640
641 if (unit->GetEntry() == NPC_QUEL_DELAR)
642 if (Creature* uther = GetCreature(NPC_UTHER))
643 {
644 uther->SetStandState(UNIT_STAND_STATE_STAND);
645 uther->SetWalk(false);
646 uther->GetMotionMaster()->MovePoint(0, 5313.92f, 1989.36f, 707.70f);
647 uther->m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(*uther, 9), 7s);
648 }
649 }
@ 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
652 {
653 uint8 r1 = urand(0, 1);
654 uint8 r2 = urand(2, 3);
655 for (uint8 i = 0; i < MAX_SPIRITUAL_REFLECTIONS; ++i)
656 {
658 _chosenComposition[1][i] = allowedCompositions[r1 == 0 ? 1 : 0][i];
660 _chosenComposition[3][i] = allowedCompositions[r2 == 2 ? 3 : 2][i];
661 }
662 bool left[4] = {true, true, true, true};
663 for (uint8 k = 4; k > 0; --k)
664 {
665 uint8 r = urand(0, k - 1);
666 uint8 ur = 0;
667 for (uint8 j = 0; j < 4; ++j)
668 if (left[j])
669 {
670 if (ur == r)
671 {
672 left[j] = false;
673 for (uint8 i = 0; i < MAX_SPIRITUAL_REFLECTIONS; ++i)
674 _chosenComposition[8 - k][i] = allowedCompositions[j + 4][i];
675 break;
676 }
677 ++ur;
678 }
679 }
681 {
682 for (; _waveNumber < 4; ++_waveNumber)
683 {
684 uint8 numToActivate = (_waveNumber <= 1) ? 3 : 4;
685
686 for (uint8 i = 0; i < numToActivate; ++i)
687 {
689 bool forward = !!urand(0, 1);
690 for (int8 j = (forward ? 0 : NUM_OF_TRASH - 1); (forward ? j < NUM_OF_TRASH : j >= 0); (forward ? ++j : --j))
691 if (!_trashActive[j])
693 if (c->GetEntry() == entry)
694 {
695 _trashActive[j] = true;
696 Unit::Kill(c, c);
697 break;
698 }
699 }
700 }
701 _waveNumber = 5;
702 }
703
704 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
705 if (!_trashActive[i])
707 {
708 c->SetVisible(true);
709 c->CastSpell(c, SPELL_WELL_OF_SOULS_VISUAL, false);
710 }
711 }
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:13997
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 {
386 lichKing->GetThreatMgr().ClearAllThreat();
387 lichKing->CombatStop(true);
388 lichKing->setActive(false);
389 }
391 _outroStep = 1;
392 _outroTimer = 0;
393 }
394 break;
395 }
396
397 return true;
398 }
@ NOT_STARTED
Definition InstanceScript.h:58
@ EMOTE_ONESHOT_EMERGE
Definition SharedDefines.h:2047
@ EMOTE_ONESHOT_NONE
Definition SharedDefines.h:1898
@ REACT_AGGRESSIVE
Definition Unit.h:568
virtual bool SetBossState(uint32 id, EncounterState state)
Definition InstanceScript.cpp:396
void DoForAllPlayers(std::function< void(Player *)> exec)
Definition Map.cpp:3254
Definition Player.h:1084
TeamId GetTeamId(bool original=false) const
Definition Player.h:2131
void HandleWaveWipe()
Definition instance_halls_of_reflection.cpp:781
@ 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.

401 {
402 switch (type)
403 {
404 case DATA_INTRO:
407 break;
410 break;
413 if (data == DONE)
414 {
415 if (Creature* lichKing = GetCreature(NPC_LICH_KING_BOSS))
416 lichKing->SetVisible(true);
418 leader->SetVisible(true);
419 }
420 break;
422 {
423 uint8 reflectionIdx = 0;
424 instance->DoForAllPlayers([&](Player* player)
425 {
426 if (reflectionIdx >= MAX_SPIRITUAL_REFLECTIONS || !player->IsAlive() || player->IsGameMaster())
427 return;
428 Creature* reflection = instance->GetCreature(_spiritualReflectionGUID[reflectionIdx++]);
429 if (!reflection)
430 return;
431 if (!reflection->IsAlive())
432 reflection->Respawn();
433 reflection->SetCanFly(true);
434 reflection->SetDisableGravity(true);
435 reflection->SetVisible(true);
436
437 Item* weapon = player->GetWeaponForAttack(BASE_ATTACK);
438 reflection->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, weapon ? weapon->GetEntry() : 0);
439 weapon = player->GetWeaponForAttack(OFF_ATTACK);
440 reflection->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 1, weapon ? weapon->GetEntry() : 0);
441 weapon = player->GetWeaponForAttack(RANGED_ATTACK);
442 reflection->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 2, weapon ? weapon->GetEntry() : 0);
443 player->CastSpell(reflection, SPELL_HOR_CLONE, true);
444 player->CastSpell(reflection, SPELL_HOR_CLONE_NAME, true);
445 });
446 break;
447 }
449 {
451 if (!general)
452 break;
453 for (uint8 i = 0; i < MAX_SPIRITUAL_REFLECTIONS; ++i)
455 if (reflection->IsVisible())
456 {
457 reflection->SetInCombatWithZone();
458 reflection->SetCanFly(false);
459 reflection->SetDisableGravity(false);
460 reflection->GetMotionMaster()->MoveJump(general->GetPositionX(), general->GetPositionY(), general->GetPositionZ(), 20.0f, 10.0f);
461 }
462 break;
463 }
465 for (uint8 i = 0; i < MAX_SPIRITUAL_REFLECTIONS; ++i)
467 reflection->AI()->EnterEvadeMode();
468 break;
469 case DATA_LK_INTRO:
472 leader->AI()->DoAction(ACTION_START_INTRO);
473 break;
479 break;
482 break;
484 {
485 if (!leader->IsAlive())
486 {
487 leader->Respawn();
489 leader->UpdateEntry(NPC_JAINA_PART2);
490 }
491 leader->GetThreatMgr().ClearAllThreat();
492 leader->CombatStop(true);
493 leader->InterruptNonMeleeSpells(true);
494 leader->GetMotionMaster()->Clear();
495 leader->GetMotionMaster()->MoveIdle();
496 leader->UpdatePosition(LeaderEscapePos, true);
497 leader->StopMovingOnCurrentPos();
498 leader->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
499 leader->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
500 leader->SetHealth(leader->GetMaxHealth() / 20);
501 leader->AI()->Reset();
502 leader->setActive(false);
503 leader->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
504 leader->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
505 }
506 if (Creature* lichKing = GetCreature(NPC_LICH_KING_BOSS))
507 {
508 lichKing->GetThreatMgr().ClearAllThreat();
509 lichKing->CombatStop(true);
510 lichKing->InterruptNonMeleeSpells(true);
511 lichKing->GetMotionMaster()->Clear();
512 lichKing->GetMotionMaster()->MoveIdle();
513 lichKing->UpdatePosition(lichKing->GetHomePosition(), true);
514 lichKing->StopMovingOnCurrentPos();
515 lichKing->RemoveAllAuras();
517 lichKing->AI()->Reset();
518 lichKing->setActive(false);
519 lichKing->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
520 lichKing->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
521 lichKing->SetSpeed(MOVE_RUN, lichKing->GetCreatureTemplate()->speed_run);
522 }
525 _outroTimer = 0;
526 _outroStep = 0;
527 [[fallthrough]];
530 break;
532 {
534 return;
535
536 switch (data)
537 {
538 case 1:
540 break;
541 case 2:
543 break;
546 bunny->CastSpell(bunny, SPELL_FROSTMOURNE_ALTAR_GLOW, true);
547 if (Creature* uther = GetCreature(NPC_UTHER))
548 uther->m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(*uther, 1), 3s);
549 break;
550 case 3:
552 break;
554 if (Creature* uther = GetCreature(NPC_UTHER))
555 uther->m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(*uther, 3), 5500ms);
556 break;
557 case 4:
558 if (Creature* quelDelar = GetCreature(NPC_QUEL_DELAR))
559 {
560 quelDelar->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
561 quelDelar->SetSpeed(MOVE_RUN, 2.5f);
562 }
563 break;
564 case 5:
565 if (Creature* uther = GetCreature(NPC_UTHER))
566 uther->m_Events.AddEventAtOffset(new UtherBatteredHiltEvent(*uther, 6), 3s);
567 break;
568 case 6:
569 if (Creature* quelDelar = GetCreature(NPC_QUEL_DELAR))
570 {
571 quelDelar->SetSpeed(MOVE_RUN, quelDelar->GetCreatureTemplate()->speed_run);
572 quelDelar->GetMotionMaster()->MoveLand(0, quelDelar->GetPositionX(), quelDelar->GetPositionY(), 707.70f, 7.0f);
573 }
574 break;
575 case 7:
576 if (Creature* quelDelar = GetCreature(NPC_QUEL_DELAR))
577 {
578 quelDelar->SetReactState(REACT_AGGRESSIVE);
579 quelDelar->SetImmuneToAll(false);
580 quelDelar->RemoveAurasDueToSpell(SPELL_QUEL_DELAR_HATRED);
581 }
582 break;
583 case 8:
584 if (Creature* quelDelar = GetCreature(NPC_QUEL_DELAR))
585 quelDelar->SetInCombatWithZone();
586 break;
587 case 9:
590 break;
591 }
592 return;
593 }
594 }
595 }
@ 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:2852
CreatureAI * AI() const
Definition Creature.h:144
void StorePersistentData(uint32 index, uint32 data)
Definition InstanceScript.cpp:433
void DoStartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition InstanceScript.cpp:676
void DoStopTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition InstanceScript.cpp:685
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:491
MotionMaster * GetMotionMaster()
Definition Unit.h:1762
void SetCanFly(bool enable)
Add the movement flag: MOVEMENTFLAGCAN_FLY. Generaly only use by players, allowing them to fly by pre...
Definition Unit.cpp:16587
bool IsVisible() const
Definition Unit.h:2017
void SetDisableGravity(bool disable)
Definition Unit.cpp:16527
bool SetBossState(uint32 type, EncounterState state) override
Definition instance_halls_of_reflection.cpp:337
void RandomizeCompositionsAndShow()
Definition instance_halls_of_reflection.cpp:651
void StartNextWave()
Definition instance_halls_of_reflection.cpp:713
@ 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:40
@ 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
714 {
715 if (_waveNumber >= 10)
716 return;
717
718 ++_waveNumber;
719 if (_waveNumber >= 6)
721
725
726 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
727 if (_trashActive[i])
729 if (c->IsAlive() && !c->IsInCombat())
730 c->AI()->DoAction(1);
731
732 if (_waveNumber == 5 || _waveNumber == 10)
733 {
734 _nextWaveTimer = 0;
735 if (_waveNumber == 5)
736 {
737 if (Creature* falric = GetCreature(DATA_FALRIC))
738 {
739 if (falric->IsAlive())
740 falric->AI()->DoAction(1);
741 else
742 _nextWaveTimer = 1;
743 }
744 }
745 else
746 {
747 if (Creature* marwyn = GetCreature(DATA_MARWYN))
748 if (marwyn->IsAlive())
749 marwyn->AI()->DoAction(1);
750 }
751 }
752 else
753 {
754 _nextWaveTimer = 150000;
755
756 uint8 numToActivate = 5;
757 if (_waveNumber <= 2)
758 numToActivate = 3;
759 else if (_waveNumber <= 4)
760 numToActivate = 4;
761 _remainingTrashKills += numToActivate;
762 for (uint8 i = 0; i < numToActivate; ++i)
763 {
764 uint32 entry = _chosenComposition[_waveNumber - (_waveNumber > 5 ? 2 : 1)][i];
765 bool forward = !!urand(0, 1);
766 for (int8 j = (forward ? 0 : NUM_OF_TRASH - 1); (forward ? j < NUM_OF_TRASH : j >= 0); (forward ? ++j : --j))
767 if (!_trashActive[j])
769 if (c->GetEntry() == entry)
770 {
771 _trashActive[j] = true;
772 c->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
773 c->SetImmuneToAll(false);
774 c->AI()->DoAction(1);
775 break;
776 }
777 }
778 }
779 }

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.

820 {
821 if (!instance->HavePlayers())
822 return;
823
824 if (_playerCheckTimer <= diff)
825 {
826 _playerCheckTimer = 5000;
828 {
829 Map::PlayerList const& pl = instance->GetPlayers();
831 {
832 bool allDead = true;
833 bool outOfRange = false;
834 for (auto itr = pl.begin(); itr != pl.end(); ++itr)
835 {
836 Player* p = itr->GetSource();
837 if (!p || p->IsGameMaster())
838 continue;
839 if (p->IsAlive())
840 allDead = false;
842 {
843 outOfRange = true;
844 break;
845 }
846 }
847 if (allDead || outOfRange)
849 }
850 else if (!_waveResumeTimer)
851 {
852 bool allInRange = (instance->GetPlayersCountExceptGMs() > 0);
853 for (auto itr = pl.begin(); itr != pl.end(); ++itr)
854 {
855 Player* p = itr->GetSource();
856 if (!p || p->IsGameMaster())
857 continue;
859 {
860 allInRange = false;
861 break;
862 }
863 }
864 if (allInRange)
865 {
867 _waveResumeStep = 0;
868 }
869 }
870 }
871 }
872 else
873 _playerCheckTimer -= diff;
874
875 if (_nextWaveTimer)
876 {
877 if (_nextWaveTimer <= diff)
878 {
879 _nextWaveTimer = 0;
881 }
882 else
883 _nextWaveTimer -= diff;
884 }
885
887 {
888 if (_waveResumeTimer <= diff)
889 {
890 switch (_waveResumeStep)
891 {
892 case 0:
893 if (Creature* falric = GetCreature(DATA_FALRIC))
894 {
895 falric->UpdatePosition(5274.9f, 2039.2f, 709.319f, 5.4619f, true);
896 falric->StopMovingOnCurrentPos();
897 falric->SetVisible(true);
898 if (falric->IsAlive())
899 {
900 falric->GetMotionMaster()->MovePoint(0, FalricMovePos);
901 if (Aura* a = falric->AddAura(SPELL_SHADOWMOURNE_VISUAL, falric))
902 a->SetDuration(8000);
903 }
904 }
905 if (Creature* marwyn = GetCreature(DATA_MARWYN))
906 {
907 marwyn->UpdatePosition(5343.77f, 1973.86f, 709.319f, 2.35173f, true);
908 marwyn->StopMovingOnCurrentPos();
909 marwyn->SetVisible(true);
910 if (marwyn->IsAlive())
911 {
912 marwyn->GetMotionMaster()->MovePoint(0, MarwynMovePos);
913 if (Aura* a = marwyn->AddAura(SPELL_SHADOWMOURNE_VISUAL, marwyn))
914 a->SetDuration(8000);
915 }
916 marwyn->AI()->Talk(EMOTE_MARWYN_INTRO_SPIRIT);
917 }
919 _waveResumeTimer = 7500;
920 break;
921 case 1:
922 if (Creature* falric = GetCreature(DATA_FALRIC))
923 {
924 if (falric->IsAlive())
925 falric->AI()->Talk(SAY_FALRIC_INTRO_2);
926 else if (Creature* marwyn = GetCreature(DATA_MARWYN))
927 marwyn->AI()->Talk(SAY_MARWYN_WIPE_AFTER_FALRIC);
928 }
930 _waveResumeStep = 0;
932 _nextWaveTimer = 7000;
933 break;
934 default:
935 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
937 c->SetVisible(false);
938 if (Creature* falric = GetCreature(DATA_FALRIC))
939 falric->SetVisible(false);
940 if (Creature* marwyn = GetCreature(DATA_MARWYN))
941 marwyn->SetVisible(false);
942 _waveResumeStep = 0;
944 break;
945 }
946 }
947 else
948 _waveResumeTimer -= diff;
949 }
950
951 if (_outroStep)
952 {
953 if (_outroTimer <= diff)
954 UpdateOutro();
955 else
956 _outroTimer -= diff;
957 }
958 }
Definition SpellAuras.h:87
Definition MapRefMgr.h:26
iterator begin()
Definition MapRefMgr.h:36
iterator end()
Definition MapRefMgr.h:37
uint32 GetPlayersCountExceptGMs(bool aliveOnly=false) const
Definition Map.cpp:1838
PlayerList const & GetPlayers() const
Definition Map.h:329
void SetData(uint32 type, uint32 data) override
Definition instance_halls_of_reflection.cpp:400
void UpdateOutro()
Definition instance_halls_of_reflection.cpp:961
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
962 {
963 switch (_outroStep)
964 {
965 case 1:
967 {
968 lk->UpdatePosition(PathWaypoints[PATH_WP_COUNT - 2], true);
969 lk->StopMovingOnCurrentPos();
970 lk->RemoveAllAuras();
972 if (!lk->IsVisible())
973 lk->SetVisible(true);
975 {
976 leader->UpdatePosition(PathWaypoints[PATH_WP_COUNT - 1], true);
977 leader->StopMovingOnCurrentPos();
978 leader->RemoveAllAuras();
979 leader->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_READY1H);
980 if (!leader->IsVisible())
981 leader->SetVisible(true);
982 lk->CastSpell(leader, SPELL_HARVEST_SOUL, false);
983 }
984 }
985 ++_outroStep;
986 _outroTimer = 500;
987 break;
988 case 2:
989 {
991 _transport = sTransportMgr->CreateTransport(entry, 0, instance);
992 ++_outroStep;
993 _outroTimer = GetTeamIdInInstance() == TEAM_ALLIANCE ? 10000 : 10500;
994 break;
995 }
996 case 3:
997 if (_transport)
999 if (Creature* captain = GetCreature(DATA_SHIP_CAPTAIN))
1000 captain->AI()->Talk(GetTeamIdInInstance() == TEAM_ALLIANCE ? SAY_FIRE_ALLY : SAY_FIRE_HORDE);
1002 {
1003 leader->RemoveAllAuras();
1004 leader->CastSpell(leader, SPELL_GUNSHIP_CANNON_FIRE_PERIODIC, true);
1005 }
1006 if (Creature* lichKing = GetCreature(NPC_LICH_KING_BOSS))
1007 {
1008 lichKing->InterruptNonMeleeSpells(true);
1009 lichKing->RemoveAllAuras();
1010 }
1011 ++_outroStep;
1012 _outroTimer = 5000;
1013 break;
1014 case 4:
1016 ++_outroStep;
1017 _outroTimer = 3000;
1018 break;
1019 case 5:
1021 leader->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
1022 if (Creature* lichKing = GetCreature(NPC_LICH_KING_BOSS))
1023 {
1024 lichKing->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
1025 lichKing->GetThreatMgr().ClearAllThreat();
1026 lichKing->CombatStop(true);
1027 lichKing->InterruptNonMeleeSpells(true);
1028 lichKing->SetVisible(false);
1029 }
1030 if (instance->IsHeroic())
1033 leader->CastSpell(leader, SPELL_ACHIEVEMENT_CHECK, true);
1034 ++_outroStep;
1035 _outroTimer = 1000;
1036 break;
1037 case 6:
1038 if (_transport)
1040 ++_outroStep;
1041 _outroTimer = 3500;
1042 break;
1043 case 7:
1044 if (_transport)
1045 _transport->EnableMovement(false);
1047 {
1048 uint8 index = GetTeamIdInInstance() == TEAM_ALLIANCE ? 0 : 1;
1049 for (uint8 i = 0; i < 3; ++i)
1050 if (StairsPos[index][i].GetPositionX())
1051 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))
1052 go->SetGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE);
1053 }
1054 ++_outroStep;
1055 _outroTimer = 1000;
1056 break;
1057 case 8:
1058 if (Creature* captain = GetCreature(DATA_SHIP_CAPTAIN))
1061 {
1062 leader->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
1063 leader->GetMotionMaster()->MovePoint(0, WalkCaveInPos);
1064 leader->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
1065 }
1066 ++_outroStep;
1067 _outroTimer = 6000;
1068 break;
1069 case 9:
1073 ++_outroStep;
1074 _outroTimer = 11000;
1075 break;
1076 case 10:
1077 ++_outroStep;
1078 _outroTimer = 0;
1079 instance->DoForAllPlayers([](Player* player)
1080 {
1082 });
1085 {
1086 leader->AI()->Talk(SAY_JAINA_FINAL_2);
1087 _outroTimer = 10000;
1088 }
1089 break;
1090 case 11:
1092 leader->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
1093 ++_outroStep;
1094 _outroTimer = 300 * 1000;
1095 break;
1096 case 12:
1097 _outroStep = 0;
1098 _outroTimer = 0;
1099 if (_transport)
1100 _transport->setActive(false);
1101 break;
1102 }
1103 }
@ EMOTE_ONESHOT_CUSTOM_SPELL_02
Definition SharedDefines.h:2002
@ EMOTE_ONESHOT_READY1H
Definition SharedDefines.h:1936
@ GO_FLAG_INTERACT_COND
Definition SharedDefines.h:1609
@ GO_FLAG_NOT_SELECTABLE
Definition SharedDefines.h:1611
#define sTransportMgr
Definition TransportMgr.h:165
@ SPELL_ACHIEVEMENT_CHECK
Definition boss_tharon_ja.cpp:50
Definition GameObject.h:120
void PermBindAllPlayers()
Definition Map.cpp:2200
InstanceMap * ToInstanceMap()
Definition Map.h:381
bool IsHeroic() const
Definition Map.h:301
void EnableMovement(bool enabled)
Definition Transport.cpp:461
void KilledMonsterCredit(uint32 entry, ObjectGuid guid=ObjectGuid::Empty)
Definition PlayerQuest.cpp:1963
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:2407
@ 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
1111{};

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
1119{};

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
1129{};

Referenced by Initialize(), and UpdateOutro().

◆ _trashActive

bool instance_halls_of_reflection::_trashActive[NUM_OF_TRASH] {}
private

◆ _trashCounter

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

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
1121{};

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

◆ _waveResumeTimer

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

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


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