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

Public Member Functions

 instance_halls_of_reflection_InstanceMapScript (Map *pMap)
 
void Initialize () override
 
bool IsEncounterInProgress () const override
 
void OnCreatureCreate (Creature *creature) override
 
void OnGameObjectCreate (GameObject *go) override
 
void SetData (uint32 type, uint32 data) override
 
uint32 GetData (uint32 type) const override
 
ObjectGuid GetGuidData (uint32 type) const override
 
void ReadSaveDataMore (std::istringstream &data) override
 
void WriteSaveDataMore (std::ostringstream &data) override
 
void OnUnitDeath (Unit *unit) override
 
void RandomizeCompositionsAndShow ()
 
void AddWave1 ()
 
void DoWipe1 ()
 
void Update (uint32 diff) override
 
- Public Member Functions inherited from InstanceScript
 InstanceScript (Map *map)
 
 ~InstanceScript () override
 
virtual void Initialize ()
 
virtual void Load (char const *data)
 
virtual void CreatureLooted (Creature *, LootType)
 
virtual std::string GetSaveData ()
 
void SaveToDB ()
 
virtual void Update (uint32)
 
virtual bool IsEncounterInProgress () const
 
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 OnPlayerAreaUpdate (Player *, uint32, uint32)
 
void HandleGameObject (ObjectGuid guid, bool open, GameObject *go=nullptr)
 
void DoUseDoorOrButton (ObjectGuid guid, uint32 withRestoreTime=0, bool useAlternativeState=false)
 
void DoRespawnGameObject (ObjectGuid guid, uint32 timeToDespawn=MINUTE)
 
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 ()
 
virtual bool SetBossState (uint32 id, EncounterState state)
 
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 (WorldPacket &)
 
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)
 
- 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 OnCreatureCreate (Creature *)
 
virtual void OnCreatureRemove (Creature *)
 
virtual void OnGameObjectCreate (GameObject *)
 
virtual void OnGameObjectRemove (GameObject *)
 
virtual void OnUnitDeath (Unit *)
 
virtual void OnCreatureEvade (Creature *)
 
virtual ObjectGuid GetGuidData (uint32) const
 
virtual void SetGuidData (uint32, ObjectGuid)
 
virtual uint64 GetData64 (uint32) const
 
virtual void SetData64 (uint32, uint64)
 
virtual uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void ProcessEvent (WorldObject *, uint32)
 

Public Attributes

uint32 EncounterMask
 
TeamId TeamIdInInstance
 
ObjectGuid NPC_FalricGUID
 
ObjectGuid NPC_MarwynGUID
 
ObjectGuid NPC_LichKingIntroGUID
 
ObjectGuid NPC_LeaderIntroGUID
 
ObjectGuid NPC_GuardGUID
 
ObjectGuid NPC_UtherGUID
 
ObjectGuid NPC_LichKingGUID
 
ObjectGuid NPC_LeaderGUID
 
ObjectGuid NPC_IceWallTargetGUID [4]
 
ObjectGuid NPC_AltarBunnyGUID
 
ObjectGuid NPC_QuelDelarGUID
 
ObjectGuid NPC_ShipCaptainGUID
 
ObjectGuid GO_FrostmourneGUID
 
ObjectGuid GO_FrostmourneAltarGUID
 
ObjectGuid GO_FrontDoorGUID
 
ObjectGuid GO_ArthasDoorGUID
 
ObjectGuid GO_CaveInGUID
 
ObjectGuid GO_DoorBeforeThroneGUID
 
ObjectGuid GO_DoorAfterThroneGUID
 
ObjectGuid GO_IceWallGUID
 
ObjectGuid NPC_TrashGUID [NUM_OF_TRASH]
 
bool TrashActive [NUM_OF_TRASH]
 
uint8 TrashCounter
 
uint32 chosenComposition [8][5]
 
uint8 WaveNumber
 
uint32 NextWaveTimer
 
uint16 CheckPlayersTimer
 
uint16 ResumeFirstEventTimer
 
uint8 ResumeFirstEventStep
 
bool bFinished5Waves
 
uint8 reqKillCount
 
bool IsDuringLKFight
 
uint32 BatteredHiltStatus
 
ObjectGuid NPC_FrostswornGeneralGUID
 
ObjectGuid NPC_SpiritualReflectionGUID [5]
 
uint32 outroTimer
 
uint8 outroStep
 
MotionTransportT1
 
- Public Attributes inherited from InstanceScript
Mapinstance
 
TaskScheduler scheduler
 

Additional Inherited Members

- Static Public Member Functions inherited from InstanceScript
static std::string GetBossStateName (uint8 state)
 
- 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 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_InstanceMapScript()

instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::instance_halls_of_reflection_InstanceMapScript ( Map pMap)
inline
139 : InstanceScript(pMap)
140 {
142 };
#define DataHeader
Definition: blackrock_depths.h:23
Definition: InstanceScript.h:141
void SetHeaders(std::string const &dataHeaders)
Definition: InstanceScript.cpp:137

References DataHeader, and InstanceScript::SetHeaders().

Member Function Documentation

◆ AddWave1()

void instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::AddWave1 ( )
inline
814 {
815 if (WaveNumber >= 10)
816 return;
817
818 ++WaveNumber;
819 if (WaveNumber >= 6)
820 bFinished5Waves = true;
821
825
826 // some of them could go back to spawn due to vanish, etc.
827 // on activating next wave make those attack again
828 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
829 if (TrashActive[i])
831 if (c->IsAlive() && !c->IsInCombat())
832 c->AI()->DoAction(1);
833
834 if (WaveNumber == 5 || WaveNumber == 10)
835 {
836 NextWaveTimer = 0;
837 if (WaveNumber == 5)
838 {
840 {
841 if (falric->IsAlive())
842 falric->AI()->DoAction(1);
843 else
844 NextWaveTimer = 1;
845 }
846 }
847 else
848 {
850 if (marwyn->IsAlive()) // should always be true, but just in case
851 marwyn->AI()->DoAction(1);
852 }
853 }
854 else
855 {
856 NextWaveTimer = 150000;
857
858 uint8 num_to_activate = 5;
859 if (WaveNumber <= 2)
860 num_to_activate = 3;
861 else if (WaveNumber <= 4)
862 num_to_activate = 4;
863 reqKillCount += num_to_activate;
864 for (uint8 i = 0; i < num_to_activate; ++i)
865 {
866 uint32 entry = chosenComposition[WaveNumber - (WaveNumber > 5 ? 2 : 1)][i];
867 bool forward = !!urand(0, 1);
868 for (int8 j = (forward ? 0 : NUM_OF_TRASH - 1); (forward ? j<NUM_OF_TRASH : j >= 0); (forward ? ++j : --j))
869 if (!TrashActive[j])
871 if (c->GetEntry() == entry)
872 {
873 TrashActive[j] = true;
874 c->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
875 c->SetImmuneToAll(false);
876 c->AI()->DoAction(1);
877 break;
878 }
879 }
880 }
881 }
std::uint8_t uint8
Definition: Define.h:110
std::uint32_t uint32
Definition: Define.h:108
std::int8_t int8
Definition: Define.h:106
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:44
@ UNIT_FLAG_NOT_SELECTABLE
Definition: Unit.h:473
#define NUM_OF_TRASH
Definition: halls_of_reflection.h:124
@ WORLD_STATE_HOR_COUNTER
Definition: halls_of_reflection.h:112
@ WORLD_STATE_HOR_WAVE_COUNT
Definition: halls_of_reflection.h:113
Definition: Creature.h:46
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
Definition: InstanceScript.cpp:109
Map * instance
Definition: InstanceScript.h:147
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
Definition: InstanceScript.cpp:576
Creature * GetCreature(ObjectGuid const guid)
Definition: Map.cpp:3307
bool bFinished5Waves
Definition: instance_halls_of_reflection.cpp:176
uint8 reqKillCount
Definition: instance_halls_of_reflection.cpp:177
ObjectGuid NPC_FalricGUID
Definition: instance_halls_of_reflection.cpp:146
bool TrashActive[NUM_OF_TRASH]
Definition: instance_halls_of_reflection.cpp:168
ObjectGuid NPC_TrashGUID[NUM_OF_TRASH]
Definition: instance_halls_of_reflection.cpp:167
ObjectGuid NPC_MarwynGUID
Definition: instance_halls_of_reflection.cpp:147
uint8 WaveNumber
Definition: instance_halls_of_reflection.cpp:171
ObjectGuid GO_FrontDoorGUID
Definition: instance_halls_of_reflection.cpp:160
uint32 chosenComposition[8][5]
Definition: instance_halls_of_reflection.cpp:170
uint32 NextWaveTimer
Definition: instance_halls_of_reflection.cpp:172

References bFinished5Waves, chosenComposition, InstanceScript::DoUpdateWorldState(), Map::GetCreature(), GO_FrontDoorGUID, InstanceScript::HandleGameObject(), InstanceScript::instance, NextWaveTimer, NPC_FalricGUID, NPC_MarwynGUID, NPC_TrashGUID, NUM_OF_TRASH, reqKillCount, TrashActive, UNIT_FLAG_NOT_SELECTABLE, urand(), WaveNumber, WORLD_STATE_HOR_COUNTER, and WORLD_STATE_HOR_WAVE_COUNT.

Referenced by SetData(), and Update().

◆ DoWipe1()

void instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::DoWipe1 ( )
inline
884 {
885 if (!WaveNumber)
886 return;
887
891
893 WaveNumber = 0;
894 NextWaveTimer = 0;
895 memset(&chosenComposition, 0, sizeof(chosenComposition));
896
897 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
898 if (TrashActive[i])
900 {
901 c->GetThreatMgr().ClearAllThreat();
902 c->CombatStop(true);
903 c->InterruptNonMeleeSpells(true);
904 c->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
905 c->SetImmuneToAll(true);
906 c->Respawn(true);
907 c->UpdatePosition(c->GetHomePosition(), true);
908 c->StopMovingOnCurrentPos();
909 }
910 memset(&TrashActive, 0, sizeof(TrashActive));
912 falric->AI()->EnterEvadeMode();
914 marwyn->AI()->EnterEvadeMode();
915
918 reqKillCount = 0;
919 }
uint8 TrashCounter
Definition: instance_halls_of_reflection.cpp:169
uint8 ResumeFirstEventStep
Definition: instance_halls_of_reflection.cpp:175
uint16 ResumeFirstEventTimer
Definition: instance_halls_of_reflection.cpp:174

References chosenComposition, InstanceScript::DoUpdateWorldState(), Map::GetCreature(), GO_FrontDoorGUID, InstanceScript::HandleGameObject(), InstanceScript::instance, NextWaveTimer, NPC_FalricGUID, NPC_MarwynGUID, NPC_TrashGUID, NUM_OF_TRASH, reqKillCount, ResumeFirstEventStep, ResumeFirstEventTimer, TrashActive, TrashCounter, UNIT_FLAG_NOT_SELECTABLE, WaveNumber, WORLD_STATE_HOR_COUNTER, and WORLD_STATE_HOR_WAVE_COUNT.

Referenced by SetData(), and Update().

◆ GetData()

uint32 instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::GetData ( uint32  type) const
inlineoverridevirtual

Reimplemented from ZoneScript.

668 {
669 switch(type)
670 {
671 case DATA_INTRO:
672 case DATA_FALRIC:
673 case DATA_MARWYN:
675 case DATA_LK_INTRO:
676 case DATA_LICH_KING:
677 return EncounterMask & (1 << type);
678 case DATA_WAVE_NUMBER:
679 return (uint32)WaveNumber;
681 return BatteredHiltStatus;
682 }
683
684 return 0;
685 }
@ DATA_FROSTSWORN_GENERAL
Definition: halls_of_reflection.h:40
@ DATA_LICH_KING
Definition: halls_of_reflection.h:42
@ DATA_MARWYN
Definition: halls_of_reflection.h:39
@ DATA_BATTERED_HILT
Definition: halls_of_reflection.h:43
@ DATA_FALRIC
Definition: halls_of_reflection.h:38
@ DATA_WAVE_NUMBER
Definition: halls_of_reflection.h:52
@ DATA_LK_INTRO
Definition: halls_of_reflection.h:41
@ DATA_INTRO
Definition: halls_of_reflection.h:37
uint32 BatteredHiltStatus
Definition: instance_halls_of_reflection.cpp:179
uint32 EncounterMask
Definition: instance_halls_of_reflection.cpp:144

References BatteredHiltStatus, DATA_BATTERED_HILT, DATA_FALRIC, DATA_FROSTSWORN_GENERAL, DATA_INTRO, DATA_LICH_KING, DATA_LK_INTRO, DATA_MARWYN, DATA_WAVE_NUMBER, EncounterMask, and WaveNumber.

◆ GetGuidData()

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::GetGuidData ( uint32  type) const
inlineoverridevirtual

Reimplemented from InstanceScript.

688 {
689 switch(type)
690 {
692 return NPC_GuardGUID;
695 case NPC_UTHER:
696 return NPC_UtherGUID;
697 case DATA_FALRIC:
698 return NPC_FalricGUID;
699 case DATA_MARWYN:
700 return NPC_MarwynGUID;
702 return NPC_LichKingGUID;
704 return NPC_LeaderGUID;
706 case NPC_ICE_WALL_TARGET+1:
707 case NPC_ICE_WALL_TARGET+2:
708 case NPC_ICE_WALL_TARGET+3:
710 case GO_FROSTMOURNE:
711 return GO_FrostmourneGUID;
712 case GO_ARTHAS_DOOR:
713 return GO_ArthasDoorGUID;
714 case GO_FRONT_DOOR:
715 return GO_FrontDoorGUID;
716 }
717 return ObjectGuid::Empty;
718 }
@ NPC_UTHER
Definition: culling_of_stratholme.h:56
@ NPC_SYLVANAS_PART2
Definition: forge_of_souls.h:41
@ GO_FRONT_DOOR
Definition: halls_of_reflection.h:95
@ GO_FROSTMOURNE
Definition: halls_of_reflection.h:93
@ GO_ARTHAS_DOOR
Definition: halls_of_reflection.h:96
@ NPC_DARK_RANGER_LORALEN
Definition: halls_of_reflection.h:69
@ NPC_LICH_KING_EVENT
Definition: halls_of_reflection.h:60
@ NPC_LICH_KING_BOSS
Definition: halls_of_reflection.h:61
@ NPC_ICE_WALL_TARGET
Definition: halls_of_reflection.h:82
static ObjectGuid const Empty
Definition: ObjectGuid.h:122
ObjectGuid GO_FrostmourneGUID
Definition: instance_halls_of_reflection.cpp:158
ObjectGuid NPC_LeaderGUID
Definition: instance_halls_of_reflection.cpp:153
ObjectGuid NPC_LichKingIntroGUID
Definition: instance_halls_of_reflection.cpp:148
ObjectGuid NPC_IceWallTargetGUID[4]
Definition: instance_halls_of_reflection.cpp:154
ObjectGuid NPC_UtherGUID
Definition: instance_halls_of_reflection.cpp:151
ObjectGuid NPC_GuardGUID
Definition: instance_halls_of_reflection.cpp:150
ObjectGuid GO_ArthasDoorGUID
Definition: instance_halls_of_reflection.cpp:161
ObjectGuid NPC_LichKingGUID
Definition: instance_halls_of_reflection.cpp:152

References DATA_FALRIC, DATA_MARWYN, ObjectGuid::Empty, GO_ARTHAS_DOOR, GO_ArthasDoorGUID, GO_FRONT_DOOR, GO_FrontDoorGUID, GO_FROSTMOURNE, GO_FrostmourneGUID, NPC_DARK_RANGER_LORALEN, NPC_FalricGUID, NPC_GuardGUID, NPC_ICE_WALL_TARGET, NPC_IceWallTargetGUID, NPC_LeaderGUID, NPC_LICH_KING_BOSS, NPC_LICH_KING_EVENT, NPC_LichKingGUID, NPC_LichKingIntroGUID, NPC_MarwynGUID, NPC_SYLVANAS_PART2, NPC_UTHER, and NPC_UtherGUID.

◆ Initialize()

void instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::Initialize ( )
inlineoverridevirtual

Reimplemented from InstanceScript.

189 {
190 EncounterMask = 0;
192 memset(&TrashActive, 0, sizeof(TrashActive));
193 TrashCounter = 0;
194 memset(&chosenComposition, 0, sizeof(chosenComposition));
195 WaveNumber = 0;
196 NextWaveTimer = 0;
197 CheckPlayersTimer = 5000;
200 bFinished5Waves = false;
201 reqKillCount = 0;
202 IsDuringLKFight = false;
204
205 outroTimer = 0;
206 outroStep = 0;
207 T1 = nullptr;
208 }
@ TEAM_NEUTRAL
Definition: SharedDefines.h:762
uint32 outroTimer
Definition: instance_halls_of_reflection.cpp:184
MotionTransport * T1
Definition: instance_halls_of_reflection.cpp:186
uint8 outroStep
Definition: instance_halls_of_reflection.cpp:185
TeamId TeamIdInInstance
Definition: instance_halls_of_reflection.cpp:145
bool IsDuringLKFight
Definition: instance_halls_of_reflection.cpp:178
uint16 CheckPlayersTimer
Definition: instance_halls_of_reflection.cpp:173

References BatteredHiltStatus, bFinished5Waves, CheckPlayersTimer, chosenComposition, EncounterMask, IsDuringLKFight, NextWaveTimer, outroStep, outroTimer, reqKillCount, ResumeFirstEventStep, ResumeFirstEventTimer, T1, TEAM_NEUTRAL, TeamIdInInstance, TrashActive, TrashCounter, and WaveNumber.

◆ IsEncounterInProgress()

bool instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::IsEncounterInProgress ( ) const
inlineoverridevirtual

Reimplemented from InstanceScript.

211 {
212 return (instance->HavePlayers() && WaveNumber) || IsDuringLKFight; // during LK fight npcs are active and will unset this variable
213 }
bool HavePlayers() const
Definition: Map.h:476

References Map::HavePlayers(), InstanceScript::instance, IsDuringLKFight, and WaveNumber.

◆ OnCreatureCreate()

void instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::OnCreatureCreate ( Creature creature)
inlineoverridevirtual

Reimplemented from InstanceScript.

216 {
218 {
219 Map::PlayerList const& players = instance->GetPlayers();
220 if (!players.IsEmpty())
221 for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
222 if (Player* p = itr->GetSource())
223 if (!p->IsGameMaster())
224 {
225 TeamIdInInstance = p->GetTeamId();
226 break;
227 }
228 }
229
230 switch(creature->GetEntry())
231 {
233 creature->SetVisible(false);
234 creature->SetSpeed(MOVE_RUN, 1.1);
235 NPC_LeaderIntroGUID = creature->GetGUID();
237 creature->UpdateEntry(NPC_JAINA_PART1);
240 break;
242 creature->SetVisible(false);
243 NPC_GuardGUID = creature->GetGUID();
246 break;
247 case NPC_UTHER:
248 creature->SetVisible(false);
249 NPC_UtherGUID = creature->GetGUID();
250 creature->SetReactState(REACT_PASSIVE);
251 break;
253 creature->SetVisible(false);
254 NPC_LichKingIntroGUID = creature->GetGUID();
255 creature->SetReactState(REACT_PASSIVE);
257 break;
258 case NPC_FALRIC:
259 creature->SetVisible(false);
260 NPC_FalricGUID = creature->GetGUID();
262 break;
263 case NPC_MARWYN:
264 creature->SetVisible(false);
265 NPC_MarwynGUID = creature->GetGUID();
267 break;
269 case NPC_WAVE_FOOTMAN:
271 case NPC_WAVE_PRIEST:
272 case NPC_WAVE_MAGE:
274 NPC_TrashGUID[TrashCounter++] = creature->GetGUID();
275 if (!(EncounterMask & (1 << DATA_MARWYN)) && !creature->IsAlive())
276 creature->Respawn();
277 creature->SetVisible(false);
278 break;
280 if (!(EncounterMask & (1 << DATA_MARWYN)))
281 {
282 creature->SetVisible(false);
283 creature->SetReactState(REACT_PASSIVE);
284 }
286 break;
288 for (uint8 i = 0; i < 5; ++i)
290 {
291 NPC_SpiritualReflectionGUID[i] = creature->GetGUID();
292 break;
293 }
294 creature->SetVisible(false);
295 break;
298 creature->SetVisible(false);
299 if (!(EncounterMask & (1 << DATA_LK_INTRO)))
300 {
301 creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ATTACK2HTIGHT); //the fight cannot be in the form of an emote, it is causing bugs
302 creature->CastSpell(creature, SPELL_SOUL_REAPER, true);
303 }
304 else if (!(EncounterMask & (1 << DATA_LICH_KING)))
306 else
307 creature->SetVisible(false);
308
309 NPC_LichKingGUID = creature->GetGUID();
310 creature->SetHealth((creature->GetMaxHealth() * 3) / 4);
312 break;
314 if (!creature->IsAlive())
315 creature->Respawn();
316 NPC_LeaderGUID = creature->GetGUID();
317 creature->SetWalk(false);
318 creature->SetSheath(SHEATH_STATE_MELEE);
320 creature->UpdateEntry(NPC_JAINA_PART2);
321 creature->SetWalk(false);
322 creature->SetHealth(creature->GetMaxHealth() / 20);
324 creature->SetVisible(false);
325 if (!(EncounterMask & (1 << DATA_LK_INTRO)))
326 {
327 creature->SetSheath(SHEATH_STATE_MELEE);
328 creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, TeamIdInInstance == TEAM_ALLIANCE ? EMOTE_ONESHOT_ATTACK2HTIGHT : EMOTE_ONESHOT_ATTACK1H); //the fight cannot be in the form of an emote, it is causing bugs.
331 }
332 else if (!(EncounterMask & (1 << DATA_LICH_KING)))
333 {
336 creature->UpdatePosition(LeaderEscapePos, true);
337 creature->StopMovingOnCurrentPos();
338 }
339 else
340 {
341 instance->LoadGrid(PathWaypoints[PATH_WP_COUNT - 1].GetPositionX(), PathWaypoints[PATH_WP_COUNT - 1].GetPositionY());
342 creature->UpdatePosition(PathWaypoints[PATH_WP_COUNT - 1], true);
343 creature->StopMovingOnCurrentPos();
344 }
345 creature->SetSheath(SHEATH_STATE_MELEE);
347 break;
349 if (creature->GetPositionX() > 5525.0f)
350 NPC_IceWallTargetGUID[0] = creature->GetGUID();
351 else if (creature->GetPositionX() > 5475.0f)
352 NPC_IceWallTargetGUID[1] = creature->GetGUID();
353 else if (creature->GetPositionX() > 5400.0f)
354 NPC_IceWallTargetGUID[2] = creature->GetGUID();
355 else
356 NPC_IceWallTargetGUID[3] = creature->GetGUID();
357 break;
358 case NPC_ALTAR_BUNNY:
359 NPC_AltarBunnyGUID = creature->GetGUID();
360 break;
361 case NPC_QUEL_DELAR:
362 NPC_QuelDelarGUID = creature->GetGUID();
363 creature->SetReactState(REACT_PASSIVE);
364 break;
367 NPC_ShipCaptainGUID = creature->GetGUID();
368 break;
369 }
370 }
@ UNIT_NPC_EMOTESTATE
Definition: UpdateFields.h:140
@ MOVEMENTFLAG_WALKING
Definition: Unit.h:560
@ REACT_PASSIVE
Definition: Unit.h:1035
@ UNIT_NPC_FLAG_GOSSIP
Definition: Unit.h:516
@ UNIT_NPC_FLAG_QUESTGIVER
Definition: Unit.h:517
@ SHEATH_STATE_MELEE
Definition: Unit.h:127
@ MOVE_RUN
Definition: Unit.h:379
@ NPC_JAINA_PART1
Definition: forge_of_souls.h:42
@ NPC_JAINA_PART2
Definition: forge_of_souls.h:43
@ NPC_SYLVANAS_PART1
Definition: forge_of_souls.h:40
const Position PathWaypoints[PATH_WP_COUNT]
Definition: halls_of_reflection.h:349
@ NPC_HIGH_CAPTAIN_JUSTIN_BARLETT
Definition: halls_of_reflection.h:84
@ NPC_SKY_REAVER_KORM_BLACKSKAR
Definition: halls_of_reflection.h:85
@ NPC_ALTAR_BUNNY
Definition: halls_of_reflection.h:86
@ NPC_WAVE_FOOTMAN
Definition: halls_of_reflection.h:77
@ NPC_SPIRITUAL_REFLECTION
Definition: halls_of_reflection.h:81
@ NPC_WAVE_PRIEST
Definition: halls_of_reflection.h:73
@ NPC_ARCHMAGE_KORELN
Definition: halls_of_reflection.h:70
@ NPC_FALRIC
Definition: halls_of_reflection.h:58
@ NPC_WAVE_MAGE
Definition: halls_of_reflection.h:74
@ NPC_QUEL_DELAR
Definition: halls_of_reflection.h:87
@ NPC_WAVE_MERCENARY
Definition: halls_of_reflection.h:76
@ NPC_WAVE_RIFLEMAN
Definition: halls_of_reflection.h:78
@ NPC_MARWYN
Definition: halls_of_reflection.h:59
@ NPC_FROSTSWORN_GENERAL
Definition: halls_of_reflection.h:80
@ SPELL_JAINA_ICE_PRISON
Definition: halls_of_reflection.h:289
@ SPELL_SYLVANAS_CLOAK_OF_DARKNESS
Definition: halls_of_reflection.h:288
@ SPELL_SOUL_REAPER
Definition: halls_of_reflection.h:274
@ SPELL_SYLVANAS_DARK_BINDING
Definition: halls_of_reflection.h:290
@ SPELL_JAINA_ICE_BARRIER
Definition: halls_of_reflection.h:287
const Position LeaderEscapePos
Definition: halls_of_reflection.h:338
#define PATH_WP_COUNT
Definition: halls_of_reflection.h:346
@ EMOTE_ONESHOT_ATTACK2HTIGHT
Definition: SharedDefines.h:1927
@ EMOTE_ONESHOT_ATTACK1H
Definition: SharedDefines.h:1926
@ TEAM_ALLIANCE
Definition: SharedDefines.h:760
bool IsEmpty() const
Definition: LinkedList.h:97
Definition: LinkedList.h:139
void Respawn(bool force=false)
Definition: Creature.cpp:1974
void SetReactState(ReactStates st)
Definition: Creature.h:90
bool UpdateEntry(uint32 entry, const CreatureData *data=nullptr, bool changelevel=true, bool updateAI=false)
Definition: Creature.cpp:482
bool SetWalk(bool enable) override
Definition: Creature.cpp:3098
uint32 GetEntry() const
Definition: Object.h:109
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
void SetUInt32Value(uint16 index, uint32 value)
Definition: Object.cpp:650
float GetPositionX() const
Definition: Position.h:117
Definition: Player.h:1056
void SetVisible(bool x)
Definition: Unit.cpp:14220
uint32 GetMaxHealth() const
Definition: Unit.h:1455
Aura * AddAura(uint32 spellId, Unit *target)
Definition: Unit.cpp:19127
bool IsAlive() const
Definition: Unit.h:1822
void RemoveNpcFlag(NPCFlags flags)
Definition: Unit.h:1662
void SetHealth(uint32 val)
Definition: Unit.cpp:15464
virtual void SetSheath(SheathState sheathed)
Definition: Unit.h:1506
virtual bool UpdatePosition(float x, float y, float z, float ang, bool teleport=false)
Definition: Unit.cpp:20296
void AddUnitMovementFlag(uint32 f)
Definition: Unit.h:2286
void SetNpcFlag(NPCFlags flags)
Definition: Unit.h:1661
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:1169
void StopMovingOnCurrentPos()
Definition: Unit.cpp:16957
void SetSpeed(UnitMoveType mtype, float rate, bool forced=false)
Definition: Unit.cpp:14414
void RemoveUnitMovementFlag(uint32 f)
Definition: Unit.h:2287
void LoadGrid(float x, float y)
Definition: Map.cpp:492
PlayerList const & GetPlayers() const
Definition: Map.h:485
Definition: MapRefMgr.h:26
iterator begin()
Definition: MapRefMgr.h:36
iterator end()
Definition: MapRefMgr.h:37
ObjectGuid NPC_FrostswornGeneralGUID
Definition: instance_halls_of_reflection.cpp:181
ObjectGuid NPC_QuelDelarGUID
Definition: instance_halls_of_reflection.cpp:156
ObjectGuid NPC_SpiritualReflectionGUID[5]
Definition: instance_halls_of_reflection.cpp:182
ObjectGuid NPC_ShipCaptainGUID
Definition: instance_halls_of_reflection.cpp:157
ObjectGuid NPC_AltarBunnyGUID
Definition: instance_halls_of_reflection.cpp:155
ObjectGuid NPC_LeaderIntroGUID
Definition: instance_halls_of_reflection.cpp:149

References Unit::AddAura(), Unit::AddUnitMovementFlag(), MapRefMgr::begin(), Unit::CastSpell(), DATA_FROSTSWORN_GENERAL, DATA_LICH_KING, DATA_LK_INTRO, DATA_MARWYN, EMOTE_ONESHOT_ATTACK1H, EMOTE_ONESHOT_ATTACK2HTIGHT, EncounterMask, MapRefMgr::end(), Object::GetEntry(), Object::GetGUID(), Unit::GetMaxHealth(), Map::GetPlayers(), Position::GetPositionX(), InstanceScript::instance, Unit::IsAlive(), LinkedListHead::IsEmpty(), LeaderEscapePos, Map::LoadGrid(), MOVE_RUN, MOVEMENTFLAG_WALKING, NPC_ALTAR_BUNNY, NPC_AltarBunnyGUID, NPC_ARCHMAGE_KORELN, NPC_DARK_RANGER_LORALEN, NPC_FALRIC, NPC_FalricGUID, NPC_FROSTSWORN_GENERAL, NPC_FrostswornGeneralGUID, NPC_GuardGUID, NPC_HIGH_CAPTAIN_JUSTIN_BARLETT, NPC_ICE_WALL_TARGET, NPC_IceWallTargetGUID, NPC_JAINA_PART1, NPC_JAINA_PART2, NPC_LeaderGUID, NPC_LeaderIntroGUID, NPC_LICH_KING_BOSS, NPC_LICH_KING_EVENT, NPC_LichKingGUID, NPC_LichKingIntroGUID, NPC_MARWYN, NPC_MarwynGUID, NPC_QUEL_DELAR, NPC_QuelDelarGUID, NPC_ShipCaptainGUID, NPC_SKY_REAVER_KORM_BLACKSKAR, NPC_SPIRITUAL_REFLECTION, NPC_SpiritualReflectionGUID, NPC_SYLVANAS_PART1, NPC_SYLVANAS_PART2, NPC_TrashGUID, NPC_UTHER, NPC_UtherGUID, NPC_WAVE_FOOTMAN, NPC_WAVE_MAGE, NPC_WAVE_MERCENARY, NPC_WAVE_PRIEST, NPC_WAVE_RIFLEMAN, NUM_OF_TRASH, PATH_WP_COUNT, PathWaypoints, REACT_PASSIVE, Unit::RemoveNpcFlag(), Unit::RemoveUnitMovementFlag(), Creature::Respawn(), Unit::SetHealth(), Unit::SetNpcFlag(), Creature::SetReactState(), Unit::SetSheath(), Unit::SetSpeed(), Object::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, TEAM_NEUTRAL, TeamIdInInstance, TrashCounter, UNIT_NPC_EMOTESTATE, UNIT_NPC_FLAG_GOSSIP, UNIT_NPC_FLAG_QUESTGIVER, Creature::UpdateEntry(), and Unit::UpdatePosition().

◆ OnGameObjectCreate()

void instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::OnGameObjectCreate ( GameObject go)
inlineoverridevirtual

Reimplemented from InstanceScript.

373 {
374 switch(go->GetEntry())
375 {
376 case GO_FROSTMOURNE:
379 if (EncounterMask & (1 << DATA_INTRO))
380 go->SetPhaseMask(2, true);
381 break;
384 break;
385 case GO_FRONT_DOOR:
388 break;
389 case GO_ARTHAS_DOOR:
392 break;
393 case GO_CAVE_IN:
394 GO_CaveInGUID = go->GetGUID();
395 break;
398 break;
401 break;
402 case GO_ICE_WALL:
403 GO_IceWallGUID = go->GetGUID();
404 break;
405 }
406 }
@ GO_CAVE_IN
Definition: halls_of_reflection.h:97
@ GO_ICE_WALL
Definition: halls_of_reflection.h:100
@ GO_DOOR_BEFORE_THRONE
Definition: halls_of_reflection.h:98
@ GO_FROSTMOURNE_ALTAR
Definition: halls_of_reflection.h:94
@ GO_DOOR_AFTER_THRONE
Definition: halls_of_reflection.h:99
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition: GameObject.cpp:2651
ObjectGuid GO_FrostmourneAltarGUID
Definition: instance_halls_of_reflection.cpp:159
ObjectGuid GO_DoorAfterThroneGUID
Definition: instance_halls_of_reflection.cpp:164
ObjectGuid GO_CaveInGUID
Definition: instance_halls_of_reflection.cpp:162
ObjectGuid GO_IceWallGUID
Definition: instance_halls_of_reflection.cpp:165
ObjectGuid GO_DoorBeforeThroneGUID
Definition: instance_halls_of_reflection.cpp:163

References DATA_INTRO, DATA_MARWYN, ObjectGuid::Empty, EncounterMask, Object::GetEntry(), Object::GetGUID(), GO_ARTHAS_DOOR, GO_ArthasDoorGUID, GO_CAVE_IN, GO_CaveInGUID, GO_DOOR_AFTER_THRONE, GO_DOOR_BEFORE_THRONE, GO_DoorAfterThroneGUID, GO_DoorBeforeThroneGUID, GO_FRONT_DOOR, GO_FrontDoorGUID, GO_FROSTMOURNE, GO_FROSTMOURNE_ALTAR, GO_FrostmourneAltarGUID, GO_FrostmourneGUID, GO_ICE_WALL, GO_IceWallGUID, InstanceScript::HandleGameObject(), and GameObject::SetPhaseMask().

◆ OnUnitDeath()

void instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::OnUnitDeath ( Unit unit)
inlineoverridevirtual

Reimplemented from ZoneScript.

732 {
734 if (unit->GetEntry() == NPC_WAVE_MERCENARY || unit->GetEntry() == NPC_WAVE_FOOTMAN || unit->GetEntry() == NPC_WAVE_RIFLEMAN || unit->GetEntry() == NPC_WAVE_PRIEST || unit->GetEntry() == NPC_WAVE_MAGE)
735 if ((--reqKillCount) == 0 && WaveNumber % 5 && NextWaveTimer > 5000)
736 NextWaveTimer = 5000;
737
738 if (unit->GetEntry() == NPC_QUEL_DELAR)
740 {
741 c->SetStandState(UNIT_STAND_STATE_STAND);
742 c->SetWalk(false);
743 c->GetMotionMaster()->MovePoint(0, 5313.92f, 1989.36f, 707.70f);
744 c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 9), c->m_Events.CalculateTime(7000));
745 }
746 }
@ UNIT_STAND_STATE_STAND
Definition: Unit.h:53
Definition: instance_halls_of_reflection.cpp:24

References Map::GetCreature(), Object::GetEntry(), InstanceScript::instance, NextWaveTimer, NPC_QUEL_DELAR, NPC_UtherGUID, NPC_WAVE_FOOTMAN, NPC_WAVE_MAGE, NPC_WAVE_MERCENARY, NPC_WAVE_PRIEST, NPC_WAVE_RIFLEMAN, reqKillCount, UNIT_STAND_STATE_STAND, and WaveNumber.

◆ RandomizeCompositionsAndShow()

void instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::RandomizeCompositionsAndShow ( )
inline
749 {
750 uint8 r1 = urand(0, 1), r2 = urand(2, 3);
751 for (uint8 i = 0; i < 5; ++i)
752 {
754 chosenComposition[1][i] = allowedCompositions[r1 == 0 ? 1 : 0][i];
756 chosenComposition[3][i] = allowedCompositions[r2 == 2 ? 3 : 2][i];
757 }
758 bool left[4] = {true, true, true, true};
759 for (uint8 k = 4; k > 0; --k)
760 {
761 uint8 r = urand(0, k - 1);
762 uint8 ur = 0;
763 for (uint8 j = 0; j < 4; ++j)
764 if (left[j])
765 {
766 if (ur == r)
767 {
768 left[j] = false;
769 for (uint8 i = 0; i < 5; ++i)
770 chosenComposition[8 - k][i] = allowedCompositions[j + 4][i];
771 break;
772 }
773 ++ur;
774 }
775 }
776 if (bFinished5Waves)
777 {
778 for (; WaveNumber < 4; ++WaveNumber)
779 {
780 uint8 num_to_activate;
781 if (WaveNumber <= 1)
782 num_to_activate = 3;
783 else
784 num_to_activate = 4;
785
786 for (uint8 i = 0; i < num_to_activate; ++i)
787 {
789 bool forward = !!urand(0, 1);
790 for (int8 j = (forward ? 0 : NUM_OF_TRASH - 1); (forward ? j<NUM_OF_TRASH : j >= 0); (forward ? ++j : --j))
791 if (!TrashActive[j])
793 if (c->GetEntry() == entry)
794 {
795 TrashActive[j] = true;
796 Unit::Kill(c, c);
797 break;
798 }
799 }
800 }
801 WaveNumber = 5;
802 }
803
804 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
805 if (!TrashActive[i])
807 {
808 c->SetVisible(true);
809 c->CastSpell(c, SPELL_WELL_OF_SOULS_VISUAL, false);
810 }
811 }
const uint32 allowedCompositions[8][5]
Definition: halls_of_reflection.h:309
@ SPELL_WELL_OF_SOULS_VISUAL
Definition: halls_of_reflection.h:269
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:17956

References allowedCompositions, bFinished5Waves, chosenComposition, Map::GetCreature(), InstanceScript::instance, Unit::Kill(), NPC_TrashGUID, NUM_OF_TRASH, SPELL_WELL_OF_SOULS_VISUAL, TrashActive, urand(), and WaveNumber.

Referenced by SetData().

◆ ReadSaveDataMore()

void instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::ReadSaveDataMore ( std::istringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

721 {
722 data >> EncounterMask;
724 }
@ BHSF_NONE
Definition: halls_of_reflection.h:118
@ BHSF_FINISHED
Definition: halls_of_reflection.h:121

References BatteredHiltStatus, BHSF_FINISHED, BHSF_NONE, DATA_BATTERED_HILT, and EncounterMask.

◆ SetData()

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

Reimplemented from ZoneScript.

409 {
410 switch(type)
411 {
412 case DATA_INTRO:
413 EncounterMask |= (1 << DATA_INTRO);
414 AddWave1();
415 break;
418 break;
419 case DATA_FALRIC:
420 if (WaveNumber)
421 {
422 if (data == NOT_STARTED)
423 DoWipe1();
424 else if (data == DONE)
425 {
426 NextWaveTimer = 60000;
427 EncounterMask |= (1 << DATA_FALRIC);
428 }
429 }
430 break;
431 case DATA_MARWYN:
432 if (WaveNumber)
433 {
434 if (data == NOT_STARTED)
435 DoWipe1();
436 else if (data == DONE)
437 {
438 EncounterMask |= (1 << DATA_MARWYN);
442 {
443 c->SetVisible(true);
444 c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
445 c->SetReactState(REACT_AGGRESSIVE);
446 }
448 {
449 c->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
450 }
451 WaveNumber = 0;
453
454 // give quest
455 Map::PlayerList const& pl = instance->GetPlayers();
456 for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
457 if (Player* p = itr->GetSource())
458 p->CastSpell(p, p->GetTeamId() == TEAM_ALLIANCE ? SPELL_HOR_START_QUEST_ALLY : SPELL_HOR_START_QUEST_HORDE, true);
459 }
460 }
461 break;
464 if (data == DONE)
465 {
467 c->SetVisible(true);
469 c->SetVisible(true);
470 }
471 break;
473 {
474 uint8 i = 0;
475 Map::PlayerList const& pl = instance->GetPlayers();
476 for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
477 if (Player* p = itr->GetSource())
478 if (p->IsAlive() && !p->IsGameMaster())
480 {
481 if (!c->IsAlive())
482 c->Respawn();
483 c->SetCanFly(true);
484 c->SetDisableGravity(true);
485 c->SetVisible(true);
486
487 Item* i;
488 i = p->GetWeaponForAttack(BASE_ATTACK);
490 i = p->GetWeaponForAttack(OFF_ATTACK);
492 i = p->GetWeaponForAttack(RANGED_ATTACK);
494 p->CastSpell(c, SPELL_HOR_CLONE, true);
495 p->CastSpell(c, SPELL_HOR_CLONE_NAME, true);
496 }
497 }
498 break;
501 for (uint8 i = 0; i < 5; ++i)
503 if (c->IsVisible())
504 {
505 c->SetInCombatWithZone();
506 c->SetCanFly(false);
507 c->SetDisableGravity(false);
508 c->GetMotionMaster()->MoveJump(fg->GetPositionX(), fg->GetPositionY(), fg->GetPositionZ(), 20.0f, 10.0f);
509 }
510 break;
512 for (uint8 i = 0; i < 5; ++i)
514 c->AI()->EnterEvadeMode();
515 break;
516 case DATA_LK_INTRO:
519 c->AI()->DoAction(ACTION_START_INTRO);
520 break;
522 IsDuringLKFight = true;
525 break;
527 if (!IsDuringLKFight)
528 {
529 break;
530 }
533 {
534 if (!c->IsAlive())
535 {
536 c->Respawn();
538 c->UpdateEntry(NPC_JAINA_PART2);
539 }
540 c->GetThreatMgr().ClearAllThreat();
541 c->CombatStop(true);
542 c->InterruptNonMeleeSpells(true);
543 c->GetMotionMaster()->Clear();
544 c->GetMotionMaster()->MoveIdle();
545 c->UpdatePosition(LeaderEscapePos, true);
546 c->StopMovingOnCurrentPos();
547 c->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
548 c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
549 c->SetHealth(c->GetMaxHealth() / 20);
550 c->AI()->Reset();
551 c->setActive(false);
552 c->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
553 c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
554 }
556 {
557 c->GetThreatMgr().ClearAllThreat();
558 c->CombatStop(true);
559 c->InterruptNonMeleeSpells(true);
560 c->GetMotionMaster()->Clear();
561 c->GetMotionMaster()->MoveIdle();
562 c->UpdatePosition(c->GetHomePosition(), true);
563 c->StopMovingOnCurrentPos();
564 c->RemoveAllAuras();
566 c->AI()->Reset();
567 c->setActive(false);
568 c->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
569 c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
570 c->SetSpeed(MOVE_RUN, c->GetCreatureTemplate()->speed_run);
571 }
572 IsDuringLKFight = false;
573 outroTimer = 0;
574 outroStep = 0;
575 [[fallthrough]];
579 break;
580 case DATA_LICH_KING:
581 if (data == DONE)
582 {
583 instance->LoadGrid(PathWaypoints[0].GetPositionX(), PathWaypoints[0].GetPositionY());
586 c->setActive(false);
588 c->setActive(false);
589 IsDuringLKFight = false;
590 outroStep = 1;
591 outroTimer = 0;
592 }
593 break;
595 {
597 return;
598
599 switch(data)
600 {
601 case 1: // talked to leader
603 SaveToDB();
604 break;
605 case 2:
607 break;
610 c->CastSpell(c, 70720, true);
612 c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 1), c->m_Events.CalculateTime(3000));
613 break;
614 case 3:
616 break;
619 {
620 c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 3), c->m_Events.CalculateTime(5500));
621 }
622 break;
623 case 4:
625 {
626 c->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
627 c->SetSpeed(MOVE_RUN, 2.5f);
628 }
629 break;
630 case 5:
632 c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 6), c->m_Events.CalculateTime(3000));
633 break;
634 case 6:
636 {
637 c->SetSpeed(MOVE_RUN, c->GetCreatureTemplate()->speed_run);
638 c->GetMotionMaster()->MoveLand(0, c->GetPositionX(), c->GetPositionY(), 707.70f, 7.0f);
639 }
640 break;
641 case 7:
643 {
644 c->SetReactState(REACT_AGGRESSIVE);
645 c->SetImmuneToAll(false);
646 c->RemoveAurasDueToSpell(70300);
647 }
648 break;
649 case 8:
651 c->SetInCombatWithZone();
652 break;
653 case 9:
656 SaveToDB();
657 break;
658 }
659 }
660 return;
661 }
662
663 if (data == DONE)
664 SaveToDB();
665 }
@ UNIT_VIRTUAL_ITEM_SLOT_ID
Definition: UpdateFields.h:116
@ REACT_AGGRESSIVE
Definition: Unit.h:1037
@ OFF_ATTACK
Definition: Unit.h:397
@ BASE_ATTACK
Definition: Unit.h:396
@ RANGED_ATTACK
Definition: Unit.h:398
@ DONE
Definition: InstanceScript.h:60
@ NOT_STARTED
Definition: InstanceScript.h:57
@ ACTION_START_INTRO
Definition: boss_twinemperors.cpp:51
@ BHSF_THROWN
Definition: halls_of_reflection.h:120
@ BHSF_STARTED
Definition: halls_of_reflection.h:119
@ SPELL_HOR_CLONE_NAME
Definition: halls_of_reflection.h:284
@ ACHIEV_RETREATING_TIMED_EVENT
Definition: halls_of_reflection.h:261
@ SPELL_HOR_CLONE
Definition: halls_of_reflection.h:283
@ SPELL_HOR_START_QUEST_HORDE
Definition: halls_of_reflection.h:266
@ SPELL_HOR_START_QUEST_ALLY
Definition: halls_of_reflection.h:265
@ ACTION_START_LK_FIGHT
Definition: halls_of_reflection.h:49
@ ACTION_SHOW_TRASH
Definition: halls_of_reflection.h:45
@ ACTION_SPIRITUAL_REFLECTIONS_HIDE
Definition: halls_of_reflection.h:48
@ ACTION_DELETE_ICE_WALL
Definition: halls_of_reflection.h:51
@ ACTION_STOP_LK_FIGHT
Definition: halls_of_reflection.h:50
@ ACTION_SPIRITUAL_REFLECTIONS_ACTIVATE
Definition: halls_of_reflection.h:47
@ ACTION_SPIRITUAL_REFLECTIONS_COPY
Definition: halls_of_reflection.h:46
@ ACHIEVEMENT_TIMED_TYPE_EVENT
Definition: DBCEnums.h:118
@ EMOTE_ONESHOT_EMERGE
Definition: SharedDefines.h:2043
@ EMOTE_ONESHOT_NONE
Definition: SharedDefines.h:1894
Definition: Item.h:214
void Clear()
Definition: ObjectGuid.h:140
float GetPositionY() const
Definition: Position.h:118
void SaveToDB()
Definition: InstanceScript.cpp:40
void DoStartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition: InstanceScript.cpp:620
void DoStopTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition: InstanceScript.cpp:629
void DoWipe1()
Definition: instance_halls_of_reflection.cpp:883
void AddWave1()
Definition: instance_halls_of_reflection.cpp:813
void RandomizeCompositionsAndShow()
Definition: instance_halls_of_reflection.cpp:748

References 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, AddWave1(), BASE_ATTACK, BatteredHiltStatus, MapRefMgr::begin(), BHSF_FINISHED, BHSF_STARTED, BHSF_THROWN, ObjectGuid::Clear(), DATA_BATTERED_HILT, DATA_FALRIC, DATA_FROSTSWORN_GENERAL, DATA_INTRO, DATA_LICH_KING, DATA_LK_INTRO, DATA_MARWYN, DONE, InstanceScript::DoStartTimedAchievement(), InstanceScript::DoStopTimedAchievement(), InstanceScript::DoUpdateWorldState(), DoWipe1(), EMOTE_ONESHOT_EMERGE, EMOTE_ONESHOT_NONE, EncounterMask, MapRefMgr::end(), Map::GetCreature(), Object::GetEntry(), Map::GetPlayers(), Position::GetPositionX(), Position::GetPositionY(), GO_ArthasDoorGUID, GO_FrontDoorGUID, GO_IceWallGUID, InstanceScript::HandleGameObject(), InstanceScript::instance, IsDuringLKFight, LeaderEscapePos, Map::LoadGrid(), MOVE_RUN, MOVEMENTFLAG_WALKING, NextWaveTimer, NOT_STARTED, NPC_AltarBunnyGUID, NPC_FrostswornGeneralGUID, NPC_JAINA_PART2, NPC_LeaderGUID, NPC_LichKingGUID, NPC_QuelDelarGUID, NPC_SpiritualReflectionGUID, NPC_UtherGUID, OFF_ATTACK, outroStep, outroTimer, PathWaypoints, RandomizeCompositionsAndShow(), RANGED_ATTACK, REACT_AGGRESSIVE, InstanceScript::SaveToDB(), Object::SetUInt32Value(), SPELL_HOR_CLONE, SPELL_HOR_CLONE_NAME, SPELL_HOR_START_QUEST_ALLY, SPELL_HOR_START_QUEST_HORDE, SPELL_JAINA_ICE_PRISON, SPELL_SYLVANAS_DARK_BINDING, TEAM_ALLIANCE, TeamIdInInstance, UNIT_NPC_EMOTESTATE, UNIT_NPC_FLAG_GOSSIP, UNIT_NPC_FLAG_QUESTGIVER, UNIT_VIRTUAL_ITEM_SLOT_ID, WaveNumber, and WORLD_STATE_HOR_COUNTER.

Referenced by Update().

◆ Update()

void instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::Update ( uint32  diff)
inlineoverridevirtual

Reimplemented from InstanceScript.

922 {
923 if (!instance->HavePlayers())
924 return;
925
926 if (CheckPlayersTimer <= diff)
927 {
928 CheckPlayersTimer = 5000;
929 if ((EncounterMask & (1 << DATA_INTRO)) && !(EncounterMask & (1 << DATA_MARWYN))) // first event
930 {
931 Map::PlayerList const& pl = instance->GetPlayers();
933 {
934 bool allDead = true;
935 bool outOfRange = false;
936 for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
937 if (Player* p = itr->GetSource())
938 {
939 if (p->IsGameMaster())
940 continue;
941 if (p->IsAlive())
942 allDead = false;
943 if (p->GetExactDist2d(&CenterPos) > MAX_DIST_FROM_CENTER_IN_COMBAT)
944 {
945 outOfRange = true;
946 break;
947 }
948 }
949 if (allDead || outOfRange)
950 DoWipe1();
951 }
952 else if (!ResumeFirstEventTimer)
953 {
954 bool allInRangeAndAlive = (instance->GetPlayersCountExceptGMs() > 0);
955 for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
956 if (Player* p = itr->GetSource())
957 if (!p->IsGameMaster() && (p->GetExactDist2d(&CenterPos) > MAX_DIST_FROM_CENTER_TO_START || !p->IsAlive()))
958 {
959 allInRangeAndAlive = false;
960 break;
961 }
962 if (allInRangeAndAlive)
963 {
966 }
967 }
968 }
969 }
970 else
971 CheckPlayersTimer -= diff;
972
973 if (NextWaveTimer)
974 {
975 if (NextWaveTimer <= diff)
976 {
977 NextWaveTimer = 0;
978 AddWave1();
979 }
980 else
981 NextWaveTimer -= diff;
982 }
983
985 {
986 if (ResumeFirstEventTimer <= diff)
987 {
988 switch (ResumeFirstEventStep) // After a wipe
989 {
990 case 0:
992 {
993 pFalric->UpdatePosition(5274.9f, 2039.2f, 709.319f, 5.4619f, true);
994 pFalric->StopMovingOnCurrentPos();
995 pFalric->SetVisible(true);
996 if (pFalric->IsAlive())
997 {
998 pFalric->GetMotionMaster()->MovePoint(0, FalricMovePos);
999 if (Aura* a = pFalric->AddAura(SPELL_SHADOWMOURNE_VISUAL, pFalric))
1000 a->SetDuration(8000);
1001 }
1002 }
1004 {
1005 pMarwyn->UpdatePosition(5343.77f, 1973.86f, 709.319f, 2.35173f, true);
1006 pMarwyn->StopMovingOnCurrentPos();
1007 pMarwyn->SetVisible(true);
1008 if (pMarwyn->IsAlive())
1009 {
1010 pMarwyn->GetMotionMaster()->MovePoint(0, MarwynMovePos);
1011 if (Aura* a = pMarwyn->AddAura(SPELL_SHADOWMOURNE_VISUAL, pMarwyn))
1012 a->SetDuration(8000);
1013 }
1014 pMarwyn->AI()->Talk(EMOTE_MARWYN_INTRO_SPIRIT);
1015 }
1017 ResumeFirstEventTimer = 7500;
1018 break;
1019 case 1:
1021 {
1022 if (pFalric->IsAlive())
1023 {
1024 pFalric->AI()->Talk(SAY_FALRIC_INTRO_2); // Between wave 1 and 4
1025 }
1026 else
1027 {
1029 {
1030 marwyn->AI()->Talk(SAY_MARWYN_WIPE_AFTER_FALRIC); // Between wave 6 and 9
1031 }
1032 }
1033 }
1037 NextWaveTimer = 7000;
1038 break;
1039 default:
1040 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
1042 c->SetVisible(false);
1044 falric->SetVisible(false);
1046 marwyn->SetVisible(false);
1049 break;
1050 }
1051 }
1052 else
1053 ResumeFirstEventTimer -= diff;
1054 }
1055 if (outroStep)
1056 {
1057 if (outroTimer <= diff)
1058 {
1059 switch (outroStep)
1060 {
1061 case 1:
1063 {
1064 lk->UpdatePosition(PathWaypoints[PATH_WP_COUNT - 2], true);
1065 lk->StopMovingOnCurrentPos();
1066 lk->RemoveAllAuras();
1068 if (!lk->IsVisible())
1069 lk->SetVisible(true);
1071 {
1072 leader->UpdatePosition(PathWaypoints[PATH_WP_COUNT - 1], true);
1073 leader->StopMovingOnCurrentPos();
1074 leader->RemoveAllAuras();
1075 leader->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_READY1H);
1076 if (!leader->IsVisible())
1077 leader->SetVisible(true);
1078 lk->CastSpell(leader, SPELL_HARVEST_SOUL, false);
1079 }
1080 }
1081 ++outroStep;
1082 outroTimer = 500;
1083 break;
1084 case 2:
1085 {
1087 T1 = sTransportMgr->CreateTransport(entry, 0, instance);
1088
1089 ++outroStep;
1090 outroTimer = TeamIdInInstance == TEAM_ALLIANCE ? 10000 : 10500;
1091 }
1092 break;
1093 case 3:
1094 if (T1)
1095 T1->EnableMovement(false);
1099 {
1100 c->RemoveAllAuras();
1101 c->CastSpell(c, SPELL_GUNSHIP_CANNON_FIRE_PERIODIC, true);
1102 }
1104 {
1105 c->InterruptNonMeleeSpells(true);
1106 c->RemoveAllAuras();
1107 }
1108 ++outroStep;
1109 outroTimer = 5000;
1110 break;
1111 case 4:
1113 ++outroStep;
1114 outroTimer = 3000;
1115 break;
1116 case 5:
1118 c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
1120 {
1121 c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
1122 c->GetThreatMgr().ClearAllThreat();
1123 c->CombatStop(true);
1124 c->InterruptNonMeleeSpells(true);
1125 c->SetVisible(false);
1126 }
1127 if (instance->IsHeroic())
1130 c->CastSpell(c, SPELL_ACHIEVEMENT_CHECK, true);
1131 ++outroStep;
1132 outroTimer = 1000;
1133 break;
1134 case 6:
1135 if (T1)
1136 T1->EnableMovement(true);
1137 ++outroStep;
1138 outroTimer = 3500;
1139 break;
1140 case 7:
1141 if (T1)
1142 T1->EnableMovement(false);
1144 {
1145 uint8 index = TeamIdInInstance == TEAM_ALLIANCE ? 0 : 1;
1146 for (uint8 i = 0; i < 3; ++i)
1147 if (StairsPos[index][i].GetPositionX())
1148 if (GameObject* go = leader->SummonGameObject(TeamIdInInstance == 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))
1149 go->SetGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE);
1150 //Position pos = TeamIdInInstance == TEAM_ALLIANCE ? AllyPortalPos : HordePortalPos;
1151 //leader->SummonGameObject(GO_PORTAL_TO_DALARAN, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400);
1152 //pos = TeamIdInInstance == TEAM_ALLIANCE ? AllyChestPos : HordeChestPos;
1153 //leader->SummonGameObject(instance->GetSpawnMode() ? GO_CHEST_HEROIC : GO_CHEST_NORMAL, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400);
1154 }
1155 ++outroStep;
1156 outroTimer = 1000;
1157 break;
1158 case 8:
1162 {
1163 c->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
1164 c->GetMotionMaster()->MovePoint(0, WalkCaveInPos);
1165 c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); // need gossip ID 10931
1166 }
1167 ++outroStep;
1168 outroTimer = 6000;
1169 break;
1170 case 9:
1174 ++outroStep;
1175 outroTimer = 11000;
1176 break;
1177 case 10:
1178 ++outroStep;
1179 outroTimer = 0;
1181 if (Player* p = itr->GetSource())
1182 p->KilledMonsterCredit(NPC_WRATH_OF_THE_LICH_KING_CREDIT);
1185 {
1186 c->AI()->Talk(SAY_JAINA_FINAL_2);
1187 outroTimer = 10000;
1188 }
1189 break;
1190 case 11:
1192 c->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
1193 ++outroStep;
1194 outroTimer = 300 * 1000;
1195 break;
1196 case 12:
1197 outroStep = 0;
1198 outroTimer = 0;
1199 if (T1)
1200 T1->setActive(false);
1201 break;
1202 }
1203 }
1204 else
1205 outroTimer -= diff;
1206 }
1207 }
#define sTransportMgr
Definition: TransportMgr.h:163
@ SPELL_ACHIEVEMENT_CHECK
Definition: boss_tharon_ja.cpp:50
const Position FalricMovePos
Definition: halls_of_reflection.h:336
@ GO_THE_SKYBREAKER
Definition: halls_of_reflection.h:101
@ GO_ORGRIMS_HAMMER
Definition: halls_of_reflection.h:102
@ GO_STAIRS_HORDE
Definition: halls_of_reflection.h:104
@ GO_STAIRS_ALLIANCE
Definition: halls_of_reflection.h:103
@ NPC_WRATH_OF_THE_LICH_KING_CREDIT
Definition: halls_of_reflection.h:83
const Position MarwynMovePos
Definition: halls_of_reflection.h:337
#define MAX_DIST_FROM_CENTER_IN_COMBAT
Definition: halls_of_reflection.h:125
@ SPELL_GUNSHIP_CANNON_FIRE_PERIODIC
Definition: halls_of_reflection.h:302
@ SPELL_HARVEST_SOUL
Definition: halls_of_reflection.h:297
@ SPELL_SHADOWMOURNE_VISUAL
Definition: halls_of_reflection.h:267
const Position StairsPos[2][3]
Definition: halls_of_reflection.h:386
@ SAY_JAINA_FINAL_2
Definition: halls_of_reflection.h:225
@ SAY_ONBOARD_ALLY
Definition: halls_of_reflection.h:229
@ EMOTE_MARWYN_INTRO_SPIRIT
Definition: halls_of_reflection.h:243
@ SAY_FALRIC_INTRO_2
Definition: halls_of_reflection.h:176
@ SAY_JAINA_FINAL_1
Definition: halls_of_reflection.h:224
@ SAY_FIRE_HORDE
Definition: halls_of_reflection.h:213
@ SAY_MARWYN_WIPE_AFTER_FALRIC
Definition: halls_of_reflection.h:245
@ SAY_ONBOARD_HORDE
Definition: halls_of_reflection.h:214
@ SAY_FIRE_ALLY
Definition: halls_of_reflection.h:228
@ SAY_SYLVANA_FINAL
Definition: halls_of_reflection.h:210
#define MAX_DIST_FROM_CENTER_TO_START
Definition: halls_of_reflection.h:126
const Position WalkCaveInPos
Definition: halls_of_reflection.h:340
const Position CenterPos
Definition: halls_of_reflection.h:321
@ EMOTE_ONESHOT_CUSTOM_SPELL_02
Definition: SharedDefines.h:1998
@ EMOTE_ONESHOT_READY1H
Definition: SharedDefines.h:1932
@ GO_FLAG_INTERACT_COND
Definition: SharedDefines.h:1605
@ GO_FLAG_NOT_SELECTABLE
Definition: SharedDefines.h:1607
Definition: GameObject.h:122
void setActive(bool isActiveObject)
Definition: Object.cpp:1085
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:2357
float GetPositionZ() const
Definition: Position.h:119
float GetOrientation() const
Definition: Position.h:120
void EnableMovement(bool enabled)
Definition: Transport.cpp:456
uint32 GetPlayersCountExceptGMs() const
Definition: Map.cpp:2740
InstanceMap * ToInstanceMap()
Definition: Map.h:545
bool IsHeroic() const
Definition: Map.h:452
void PermBindAllPlayers()
Definition: Map.cpp:3145
Definition: SpellAuras.h:87
void SetData(uint32 type, uint32 data) override
Definition: instance_halls_of_reflection.cpp:408

References ACTION_SHOW_TRASH, AddWave1(), MapRefMgr::begin(), CenterPos, CheckPlayersTimer, DATA_INTRO, DATA_MARWYN, DoWipe1(), EMOTE_MARWYN_INTRO_SPIRIT, EMOTE_ONESHOT_CUSTOM_SPELL_02, EMOTE_ONESHOT_NONE, EMOTE_ONESHOT_READY1H, MotionTransport::EnableMovement(), EncounterMask, MapRefMgr::end(), FalricMovePos, Map::GetCreature(), Position::GetOrientation(), Map::GetPlayers(), Map::GetPlayersCountExceptGMs(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), GO_CaveInGUID, GO_FLAG_INTERACT_COND, GO_FLAG_NOT_SELECTABLE, GO_ORGRIMS_HAMMER, GO_STAIRS_ALLIANCE, GO_STAIRS_HORDE, GO_THE_SKYBREAKER, InstanceScript::HandleGameObject(), Map::HavePlayers(), InstanceScript::instance, Map::IsHeroic(), MarwynMovePos, MAX_DIST_FROM_CENTER_IN_COMBAT, MAX_DIST_FROM_CENTER_TO_START, MOVEMENTFLAG_WALKING, NextWaveTimer, NPC_FalricGUID, NPC_LeaderGUID, NPC_LichKingGUID, NPC_MarwynGUID, NPC_ShipCaptainGUID, NPC_TrashGUID, NPC_WRATH_OF_THE_LICH_KING_CREDIT, NUM_OF_TRASH, outroStep, outroTimer, PATH_WP_COUNT, PathWaypoints, InstanceMap::PermBindAllPlayers(), ResumeFirstEventStep, ResumeFirstEventTimer, SAY_FALRIC_INTRO_2, SAY_FIRE_ALLY, SAY_FIRE_HORDE, SAY_JAINA_FINAL_1, SAY_JAINA_FINAL_2, SAY_MARWYN_WIPE_AFTER_FALRIC, SAY_ONBOARD_ALLY, SAY_ONBOARD_HORDE, SAY_SYLVANA_FINAL, WorldObject::setActive(), SetData(), SPELL_ACHIEVEMENT_CHECK, SPELL_GUNSHIP_CANNON_FIRE_PERIODIC, SPELL_HARVEST_SOUL, SPELL_SHADOWMOURNE_VISUAL, StairsPos, sTransportMgr, WorldObject::SummonGameObject(), T1, TEAM_ALLIANCE, TeamIdInInstance, Map::ToInstanceMap(), UNIT_NPC_EMOTESTATE, UNIT_NPC_FLAG_GOSSIP, UNIT_NPC_FLAG_QUESTGIVER, WalkCaveInPos, and WaveNumber.

◆ WriteSaveDataMore()

void instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::WriteSaveDataMore ( std::ostringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

727 {
728 data << EncounterMask;
729 }

References EncounterMask.

Member Data Documentation

◆ BatteredHiltStatus

uint32 instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::BatteredHiltStatus

◆ bFinished5Waves

bool instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::bFinished5Waves

◆ CheckPlayersTimer

uint16 instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::CheckPlayersTimer

Referenced by Initialize(), and Update().

◆ chosenComposition

uint32 instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::chosenComposition[8][5]

◆ EncounterMask

uint32 instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::EncounterMask

◆ GO_ArthasDoorGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::GO_ArthasDoorGUID

◆ GO_CaveInGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::GO_CaveInGUID

Referenced by OnGameObjectCreate(), and Update().

◆ GO_DoorAfterThroneGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::GO_DoorAfterThroneGUID

Referenced by OnGameObjectCreate().

◆ GO_DoorBeforeThroneGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::GO_DoorBeforeThroneGUID

Referenced by OnGameObjectCreate().

◆ GO_FrontDoorGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::GO_FrontDoorGUID

◆ GO_FrostmourneAltarGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::GO_FrostmourneAltarGUID

Referenced by OnGameObjectCreate().

◆ GO_FrostmourneGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::GO_FrostmourneGUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ GO_IceWallGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::GO_IceWallGUID

Referenced by OnGameObjectCreate(), and SetData().

◆ IsDuringLKFight

bool instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::IsDuringLKFight

◆ NextWaveTimer

uint32 instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NextWaveTimer

◆ NPC_AltarBunnyGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_AltarBunnyGUID

Referenced by OnCreatureCreate(), and SetData().

◆ NPC_FalricGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_FalricGUID

◆ NPC_FrostswornGeneralGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_FrostswornGeneralGUID

Referenced by OnCreatureCreate(), and SetData().

◆ NPC_GuardGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_GuardGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ NPC_IceWallTargetGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_IceWallTargetGUID[4]

Referenced by GetGuidData(), and OnCreatureCreate().

◆ NPC_LeaderGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_LeaderGUID

◆ NPC_LeaderIntroGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_LeaderIntroGUID

Referenced by OnCreatureCreate().

◆ NPC_LichKingGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_LichKingGUID

◆ NPC_LichKingIntroGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_LichKingIntroGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ NPC_MarwynGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_MarwynGUID

◆ NPC_QuelDelarGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_QuelDelarGUID

Referenced by OnCreatureCreate(), and SetData().

◆ NPC_ShipCaptainGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_ShipCaptainGUID

Referenced by OnCreatureCreate(), and Update().

◆ NPC_SpiritualReflectionGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_SpiritualReflectionGUID[5]

Referenced by OnCreatureCreate(), and SetData().

◆ NPC_TrashGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_TrashGUID[NUM_OF_TRASH]

◆ NPC_UtherGUID

ObjectGuid instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::NPC_UtherGUID

◆ outroStep

uint8 instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::outroStep

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

◆ outroTimer

uint32 instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::outroTimer

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

◆ reqKillCount

uint8 instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::reqKillCount

◆ ResumeFirstEventStep

uint8 instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::ResumeFirstEventStep

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

◆ ResumeFirstEventTimer

uint16 instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::ResumeFirstEventTimer

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

◆ T1

MotionTransport* instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::T1

Referenced by Initialize(), and Update().

◆ TeamIdInInstance

TeamId instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::TeamIdInInstance

◆ TrashActive

bool instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::TrashActive[NUM_OF_TRASH]

◆ TrashCounter

uint8 instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::TrashCounter

◆ WaveNumber

uint8 instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::WaveNumber