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 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)
 
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 ()
 
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 (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)
 

Public Attributes

uint32 EncounterMask
 
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 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)
 
void WriteSaveDataHeaders (std::ostringstream &data)
 
void WriteSaveDataBossStates (std::ostringstream &data)
 
void WritePersistentData (std::ostringstream &data)
 

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
142 : InstanceScript(pMap)
143 {
145 };
#define DataHeader
Definition blackrock_depths.h:23
Definition InstanceScript.h:143
void SetHeaders(std::string const &dataHeaders)
Definition InstanceScript.cpp:153

References DataHeader, and InstanceScript::SetHeaders().

Member Function Documentation

◆ AddWave1()

void instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::AddWave1 ( )
inline
799 {
800 if (WaveNumber >= 10)
801 return;
802
803 ++WaveNumber;
804 if (WaveNumber >= 6)
805 bFinished5Waves = true;
806
810
811 // some of them could go back to spawn due to vanish, etc.
812 // on activating next wave make those attack again
813 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
814 if (TrashActive[i])
816 if (c->IsAlive() && !c->IsInCombat())
817 c->AI()->DoAction(1);
818
819 if (WaveNumber == 5 || WaveNumber == 10)
820 {
821 NextWaveTimer = 0;
822 if (WaveNumber == 5)
823 {
825 {
826 if (falric->IsAlive())
827 falric->AI()->DoAction(1);
828 else
829 NextWaveTimer = 1;
830 }
831 }
832 else
833 {
835 if (marwyn->IsAlive()) // should always be true, but just in case
836 marwyn->AI()->DoAction(1);
837 }
838 }
839 else
840 {
841 NextWaveTimer = 150000;
842
843 uint8 num_to_activate = 5;
844 if (WaveNumber <= 2)
845 num_to_activate = 3;
846 else if (WaveNumber <= 4)
847 num_to_activate = 4;
848 reqKillCount += num_to_activate;
849 for (uint8 i = 0; i < num_to_activate; ++i)
850 {
851 uint32 entry = chosenComposition[WaveNumber - (WaveNumber > 5 ? 2 : 1)][i];
852 bool forward = !!urand(0, 1);
853 for (int8 j = (forward ? 0 : NUM_OF_TRASH - 1); (forward ? j<NUM_OF_TRASH : j >= 0); (forward ? ++j : --j))
854 if (!TrashActive[j])
856 if (c->GetEntry() == entry)
857 {
858 TrashActive[j] = true;
859 c->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
860 c->SetImmuneToAll(false);
861 c->AI()->DoAction(1);
862 break;
863 }
864 }
865 }
866 }
std::uint8_t uint8
Definition Define.h:109
std::uint32_t uint32
Definition Define.h:107
std::int8_t int8
Definition Define.h:105
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
@ UNIT_FLAG_NOT_SELECTABLE
Definition UnitDefines.h:275
@ 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:43
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
Definition InstanceScript.cpp:125
Map * instance
Definition InstanceScript.h:149
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
Definition InstanceScript.cpp:621
Creature * GetCreature(ObjectGuid const guid)
Definition Map.cpp:2498
#define NUM_OF_TRASH
Definition halls_of_reflection.h:111
bool bFinished5Waves
Definition instance_halls_of_reflection.cpp:178
uint8 reqKillCount
Definition instance_halls_of_reflection.cpp:179
ObjectGuid NPC_FalricGUID
Definition instance_halls_of_reflection.cpp:148
bool TrashActive[NUM_OF_TRASH]
Definition instance_halls_of_reflection.cpp:170
ObjectGuid NPC_TrashGUID[NUM_OF_TRASH]
Definition instance_halls_of_reflection.cpp:169
ObjectGuid NPC_MarwynGUID
Definition instance_halls_of_reflection.cpp:149
uint8 WaveNumber
Definition instance_halls_of_reflection.cpp:173
ObjectGuid GO_FrontDoorGUID
Definition instance_halls_of_reflection.cpp:162
uint32 chosenComposition[8][5]
Definition instance_halls_of_reflection.cpp:172
uint32 NextWaveTimer
Definition instance_halls_of_reflection.cpp:174

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_HALLS_OF_REFLECTION_WAVE_COUNT, and WORLD_STATE_HALLS_OF_REFLECTION_WAVES_ENABLED.

Referenced by SetData(), and Update().

◆ DoWipe1()

void instance_halls_of_reflection::instance_halls_of_reflection_InstanceMapScript::DoWipe1 ( )
inline
869 {
870 if (!WaveNumber)
871 return;
872
876
878 WaveNumber = 0;
879 NextWaveTimer = 0;
880 memset(&chosenComposition, 0, sizeof(chosenComposition));
881
882 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
883 if (TrashActive[i])
885 {
886 c->GetThreatMgr().ClearAllThreat();
887 c->CombatStop(true);
888 c->InterruptNonMeleeSpells(true);
889 c->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
890 c->SetImmuneToAll(true);
891 c->Respawn(true);
892 c->UpdatePosition(c->GetHomePosition(), true);
893 c->StopMovingOnCurrentPos();
894 }
895 memset(&TrashActive, 0, sizeof(TrashActive));
897 falric->AI()->EnterEvadeMode();
899 marwyn->AI()->EnterEvadeMode();
900
903 reqKillCount = 0;
904 }
uint8 TrashCounter
Definition instance_halls_of_reflection.cpp:171
uint8 ResumeFirstEventStep
Definition instance_halls_of_reflection.cpp:177
uint16 ResumeFirstEventTimer
Definition instance_halls_of_reflection.cpp:176

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_HALLS_OF_REFLECTION_WAVE_COUNT, and WORLD_STATE_HALLS_OF_REFLECTION_WAVES_ENABLED.

Referenced by SetData(), and Update().

◆ GetData()

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

Reimplemented from ZoneScript.

653 {
654 switch (type)
655 {
656 case DATA_INTRO:
657 case DATA_FALRIC:
658 case DATA_MARWYN:
660 case DATA_LK_INTRO:
661 case DATA_LICH_KING:
662 return EncounterMask & (1 << type);
663 case DATA_WAVE_NUMBER:
664 return (uint32)WaveNumber;
666 return BatteredHiltStatus;
667 }
668
669 return 0;
670 }
@ DATA_FROSTSWORN_GENERAL
Definition halls_of_reflection.h:33
@ DATA_LICH_KING
Definition halls_of_reflection.h:35
@ DATA_MARWYN
Definition halls_of_reflection.h:32
@ DATA_BATTERED_HILT
Definition halls_of_reflection.h:36
@ DATA_FALRIC
Definition halls_of_reflection.h:31
@ DATA_WAVE_NUMBER
Definition halls_of_reflection.h:45
@ DATA_LK_INTRO
Definition halls_of_reflection.h:34
@ DATA_INTRO
Definition halls_of_reflection.h:30
uint32 BatteredHiltStatus
Definition instance_halls_of_reflection.cpp:181
uint32 EncounterMask
Definition instance_halls_of_reflection.cpp:147

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 ZoneScript.

673 {
674 switch (type)
675 {
677 return NPC_GuardGUID;
680 case NPC_UTHER:
681 return NPC_UtherGUID;
682 case DATA_FALRIC:
683 return NPC_FalricGUID;
684 case DATA_MARWYN:
685 return NPC_MarwynGUID;
687 return NPC_LichKingGUID;
689 return NPC_LeaderGUID;
691 case NPC_ICE_WALL_TARGET+1:
692 case NPC_ICE_WALL_TARGET+2:
693 case NPC_ICE_WALL_TARGET+3:
695 case GO_FROSTMOURNE:
696 return GO_FrostmourneGUID;
697 case GO_ARTHAS_DOOR:
698 return GO_ArthasDoorGUID;
699 case GO_FRONT_DOOR:
700 return GO_FrontDoorGUID;
701 }
702 return ObjectGuid::Empty;
703 }
static ObjectGuid const Empty
Definition ObjectGuid.h:120
@ 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:88
@ GO_FROSTMOURNE
Definition halls_of_reflection.h:86
@ GO_ARTHAS_DOOR
Definition halls_of_reflection.h:89
@ NPC_DARK_RANGER_LORALEN
Definition halls_of_reflection.h:62
@ NPC_LICH_KING_EVENT
Definition halls_of_reflection.h:53
@ NPC_LICH_KING_BOSS
Definition halls_of_reflection.h:54
@ NPC_ICE_WALL_TARGET
Definition halls_of_reflection.h:75
ObjectGuid GO_FrostmourneGUID
Definition instance_halls_of_reflection.cpp:160
ObjectGuid NPC_LeaderGUID
Definition instance_halls_of_reflection.cpp:155
ObjectGuid NPC_LichKingIntroGUID
Definition instance_halls_of_reflection.cpp:150
ObjectGuid NPC_IceWallTargetGUID[4]
Definition instance_halls_of_reflection.cpp:156
ObjectGuid NPC_UtherGUID
Definition instance_halls_of_reflection.cpp:153
ObjectGuid NPC_GuardGUID
Definition instance_halls_of_reflection.cpp:152
ObjectGuid GO_ArthasDoorGUID
Definition instance_halls_of_reflection.cpp:163
ObjectGuid NPC_LichKingGUID
Definition instance_halls_of_reflection.cpp:154

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.

191 {
192 EncounterMask = 0;
193 memset(&TrashActive, 0, sizeof(TrashActive));
194 TrashCounter = 0;
195 memset(&chosenComposition, 0, sizeof(chosenComposition));
196 WaveNumber = 0;
197 NextWaveTimer = 0;
198 CheckPlayersTimer = 5000;
201 bFinished5Waves = false;
202 reqKillCount = 0;
203 IsDuringLKFight = false;
205
206 outroTimer = 0;
207 outroStep = 0;
208 T1 = nullptr;
209 }
uint32 outroTimer
Definition instance_halls_of_reflection.cpp:186
MotionTransport * T1
Definition instance_halls_of_reflection.cpp:188
uint8 outroStep
Definition instance_halls_of_reflection.cpp:187
bool IsDuringLKFight
Definition instance_halls_of_reflection.cpp:180
uint16 CheckPlayersTimer
Definition instance_halls_of_reflection.cpp:175

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

◆ IsEncounterInProgress()

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

Reimplemented from InstanceScript.

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

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 ZoneScript.

217 {
218 switch (creature->GetEntry())
219 {
221 creature->SetVisible(false);
222 creature->SetSpeed(MOVE_RUN, 1.1);
223 NPC_LeaderIntroGUID = creature->GetGUID();
225 creature->UpdateEntry(NPC_JAINA_PART1);
228 break;
230 creature->SetVisible(false);
231 NPC_GuardGUID = creature->GetGUID();
234 break;
235 case NPC_UTHER:
236 creature->SetVisible(false);
237 NPC_UtherGUID = creature->GetGUID();
238 creature->SetReactState(REACT_PASSIVE);
239 break;
241 creature->SetVisible(false);
242 NPC_LichKingIntroGUID = creature->GetGUID();
243 creature->SetReactState(REACT_PASSIVE);
245 break;
246 case NPC_FALRIC:
247 creature->SetVisible(false);
248 NPC_FalricGUID = creature->GetGUID();
250 break;
251 case NPC_MARWYN:
252 creature->SetVisible(false);
253 NPC_MarwynGUID = creature->GetGUID();
255 break;
257 case NPC_WAVE_FOOTMAN:
259 case NPC_WAVE_PRIEST:
260 case NPC_WAVE_MAGE:
262 NPC_TrashGUID[TrashCounter++] = creature->GetGUID();
263 if (!(EncounterMask & (1 << DATA_MARWYN)) && !creature->IsAlive())
264 creature->Respawn();
265 creature->SetVisible(false);
266 break;
268 if (!(EncounterMask & (1 << DATA_MARWYN)))
269 {
270 creature->SetVisible(false);
271 creature->SetReactState(REACT_PASSIVE);
272 }
274 break;
276 for (uint8 i = 0; i < 5; ++i)
278 {
279 NPC_SpiritualReflectionGUID[i] = creature->GetGUID();
280 break;
281 }
282 creature->SetVisible(false);
283 break;
286 creature->SetVisible(false);
287 if (!(EncounterMask & (1 << DATA_LK_INTRO)))
288 {
289 creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ATTACK2HTIGHT); //the fight cannot be in the form of an emote, it is causing bugs
290 creature->CastSpell(creature, SPELL_SOUL_REAPER, true);
291 }
292 else if (!(EncounterMask & (1 << DATA_LICH_KING)))
294 else
295 creature->SetVisible(false);
296
297 NPC_LichKingGUID = creature->GetGUID();
298 creature->SetHealth((creature->GetMaxHealth() * 3) / 4);
300 break;
302 if (!creature->IsAlive())
303 creature->Respawn();
304 NPC_LeaderGUID = creature->GetGUID();
305 creature->SetWalk(false);
306 creature->SetSheath(SHEATH_STATE_MELEE);
308 creature->UpdateEntry(NPC_JAINA_PART2);
309 creature->SetWalk(false);
310 creature->SetHealth(creature->GetMaxHealth() / 20);
312 creature->SetVisible(false);
313 if (!(EncounterMask & (1 << DATA_LK_INTRO)))
314 {
315 creature->SetSheath(SHEATH_STATE_MELEE);
316 creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, GetTeamIdInInstance() == TEAM_ALLIANCE ? EMOTE_ONESHOT_ATTACK2HTIGHT : EMOTE_ONESHOT_ATTACK1H); //the fight cannot be in the form of an emote, it is causing bugs.
319 }
320 else if (!(EncounterMask & (1 << DATA_LICH_KING)))
321 {
324 creature->UpdatePosition(LeaderEscapePos, true);
325 creature->StopMovingOnCurrentPos();
326 }
327 else
328 {
329 creature->UpdatePosition(PathWaypoints[PATH_WP_COUNT - 1], true);
330 creature->StopMovingOnCurrentPos();
331 }
332 creature->SetSheath(SHEATH_STATE_MELEE);
334 break;
336 if (creature->GetPositionX() > 5525.0f)
337 NPC_IceWallTargetGUID[0] = creature->GetGUID();
338 else if (creature->GetPositionX() > 5475.0f)
339 NPC_IceWallTargetGUID[1] = creature->GetGUID();
340 else if (creature->GetPositionX() > 5400.0f)
341 NPC_IceWallTargetGUID[2] = creature->GetGUID();
342 else
343 NPC_IceWallTargetGUID[3] = creature->GetGUID();
344 break;
345 case NPC_ALTAR_BUNNY:
346 NPC_AltarBunnyGUID = creature->GetGUID();
347 break;
348 case NPC_QUEL_DELAR:
349 NPC_QuelDelarGUID = creature->GetGUID();
350 creature->SetReactState(REACT_PASSIVE);
351 break;
354 NPC_ShipCaptainGUID = creature->GetGUID();
355 break;
356 }
357 }
@ EMOTE_ONESHOT_ATTACK2HTIGHT
Definition SharedDefines.h:1927
@ EMOTE_ONESHOT_ATTACK1H
Definition SharedDefines.h:1926
@ TEAM_ALLIANCE
Definition SharedDefines.h:760
@ MOVEMENTFLAG_WALKING
Definition UnitDefines.h:373
@ UNIT_NPC_FLAG_GOSSIP
Definition UnitDefines.h:315
@ UNIT_NPC_FLAG_QUESTGIVER
Definition UnitDefines.h:316
@ SHEATH_STATE_MELEE
Definition UnitDefines.h:127
@ MOVE_RUN
Definition UnitDefines.h:350
@ REACT_PASSIVE
Definition Unit.h:548
@ UNIT_NPC_EMOTESTATE
Definition UpdateFields.h:140
void Respawn(bool force=false)
Definition Creature.cpp:2044
bool UpdateEntry(uint32 entry, const CreatureData *data=nullptr, bool changelevel=true, bool updateAI=false)
Definition Creature.cpp:542
void SetReactState(ReactStates state)
A creature can have 3 ReactStates : Agressive, Passive, Neutral.
Definition Creature.h:95
bool SetWalk(bool enable) override
Enable or disable the creature's walk mode by removing: MOVEMENTFLAG_WALKING. Infom also the client.
Definition Creature.cpp:3208
TeamId GetTeamIdInInstance() const
Definition InstanceScript.h:289
uint32 GetEntry() const
Definition Object.h:115
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:112
void SetVisible(bool x)
Definition Unit.cpp:14284
uint32 GetMaxHealth() const
Definition Unit.h:1039
Aura * AddAura(uint32 spellId, Unit *target)
Definition Unit.cpp:18915
bool IsAlive() const
Definition Unit.h:1707
void RemoveNpcFlag(NPCFlags flags)
Definition Unit.h:736
void SetHealth(uint32 val)
Definition Unit.cpp:15530
virtual void SetSheath(SheathState sheathed)
Definition Unit.h:1692
virtual bool UpdatePosition(float x, float y, float z, float ang, bool teleport=false)
Definition Unit.cpp:20077
void AddUnitMovementFlag(uint32 f)
Definition Unit.h:743
void SetNpcFlag(NPCFlags flags)
Definition Unit.h:735
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:1178
void StopMovingOnCurrentPos()
Definition Unit.cpp:16741
void SetSpeed(UnitMoveType mtype, float rate, bool forced=false)
Definition Unit.cpp:14481
void RemoveUnitMovementFlag(uint32 f)
Definition Unit.h:744
void SetUInt32Value(uint16 index, uint32 value)
Definition Unit.cpp:21372
@ 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:336
@ NPC_HIGH_CAPTAIN_JUSTIN_BARLETT
Definition halls_of_reflection.h:77
@ NPC_SKY_REAVER_KORM_BLACKSKAR
Definition halls_of_reflection.h:78
@ NPC_ALTAR_BUNNY
Definition halls_of_reflection.h:79
@ NPC_WAVE_FOOTMAN
Definition halls_of_reflection.h:70
@ NPC_SPIRITUAL_REFLECTION
Definition halls_of_reflection.h:74
@ NPC_WAVE_PRIEST
Definition halls_of_reflection.h:66
@ NPC_ARCHMAGE_KORELN
Definition halls_of_reflection.h:63
@ NPC_FALRIC
Definition halls_of_reflection.h:51
@ NPC_WAVE_MAGE
Definition halls_of_reflection.h:67
@ NPC_QUEL_DELAR
Definition halls_of_reflection.h:80
@ NPC_WAVE_MERCENARY
Definition halls_of_reflection.h:69
@ NPC_WAVE_RIFLEMAN
Definition halls_of_reflection.h:71
@ NPC_MARWYN
Definition halls_of_reflection.h:52
@ NPC_FROSTSWORN_GENERAL
Definition halls_of_reflection.h:73
@ SPELL_JAINA_ICE_PRISON
Definition halls_of_reflection.h:276
@ SPELL_SYLVANAS_CLOAK_OF_DARKNESS
Definition halls_of_reflection.h:275
@ SPELL_SOUL_REAPER
Definition halls_of_reflection.h:261
@ SPELL_SYLVANAS_DARK_BINDING
Definition halls_of_reflection.h:277
@ SPELL_JAINA_ICE_BARRIER
Definition halls_of_reflection.h:274
const Position LeaderEscapePos
Definition halls_of_reflection.h:325
#define PATH_WP_COUNT
Definition halls_of_reflection.h:333
float GetPositionX() const
Definition Position.h:121
ObjectGuid NPC_FrostswornGeneralGUID
Definition instance_halls_of_reflection.cpp:183
ObjectGuid NPC_QuelDelarGUID
Definition instance_halls_of_reflection.cpp:158
ObjectGuid NPC_SpiritualReflectionGUID[5]
Definition instance_halls_of_reflection.cpp:184
ObjectGuid NPC_ShipCaptainGUID
Definition instance_halls_of_reflection.cpp:159
ObjectGuid NPC_AltarBunnyGUID
Definition instance_halls_of_reflection.cpp:157
ObjectGuid NPC_LeaderIntroGUID
Definition instance_halls_of_reflection.cpp:151

References Unit::AddAura(), Unit::AddUnitMovementFlag(), Unit::CastSpell(), DATA_FROSTSWORN_GENERAL, DATA_LICH_KING, DATA_LK_INTRO, DATA_MARWYN, EMOTE_ONESHOT_ATTACK1H, EMOTE_ONESHOT_ATTACK2HTIGHT, EncounterMask, Object::GetEntry(), Object::GetGUID(), Unit::GetMaxHealth(), Position::GetPositionX(), InstanceScript::GetTeamIdInInstance(), Unit::IsAlive(), LeaderEscapePos, 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(), 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, 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 ZoneScript.

360 {
361 switch (go->GetEntry())
362 {
363 case GO_FROSTMOURNE:
366 if (EncounterMask & (1 << DATA_INTRO))
367 go->SetPhaseMask(2, true);
368 break;
371 break;
372 case GO_FRONT_DOOR:
375 break;
376 case GO_ARTHAS_DOOR:
379 break;
380 case GO_CAVE_IN:
381 GO_CaveInGUID = go->GetGUID();
382 break;
385 break;
388 break;
389 case GO_ICE_WALL:
390 GO_IceWallGUID = go->GetGUID();
391 break;
392 }
393 }
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition GameObject.cpp:2581
@ GO_CAVE_IN
Definition halls_of_reflection.h:90
@ GO_ICE_WALL
Definition halls_of_reflection.h:93
@ GO_DOOR_BEFORE_THRONE
Definition halls_of_reflection.h:91
@ GO_FROSTMOURNE_ALTAR
Definition halls_of_reflection.h:87
@ GO_DOOR_AFTER_THRONE
Definition halls_of_reflection.h:92
ObjectGuid GO_FrostmourneAltarGUID
Definition instance_halls_of_reflection.cpp:161
ObjectGuid GO_DoorAfterThroneGUID
Definition instance_halls_of_reflection.cpp:166
ObjectGuid GO_CaveInGUID
Definition instance_halls_of_reflection.cpp:164
ObjectGuid GO_IceWallGUID
Definition instance_halls_of_reflection.cpp:167
ObjectGuid GO_DoorBeforeThroneGUID
Definition instance_halls_of_reflection.cpp:165

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.

717 {
719 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)
720 if ((--reqKillCount) == 0 && WaveNumber % 5 && NextWaveTimer > 5000)
721 NextWaveTimer = 5000;
722
723 if (unit->GetEntry() == NPC_QUEL_DELAR)
725 {
726 c->SetStandState(UNIT_STAND_STATE_STAND);
727 c->SetWalk(false);
728 c->GetMotionMaster()->MovePoint(0, 5313.92f, 1989.36f, 707.70f);
729 c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 9), c->m_Events.CalculateTime(7000));
730 }
731 }
@ UNIT_STAND_STATE_STAND
Definition UnitDefines.h:32
Definition instance_halls_of_reflection.cpp:27

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
734 {
735 uint8 r1 = urand(0, 1), r2 = urand(2, 3);
736 for (uint8 i = 0; i < 5; ++i)
737 {
739 chosenComposition[1][i] = allowedCompositions[r1 == 0 ? 1 : 0][i];
741 chosenComposition[3][i] = allowedCompositions[r2 == 2 ? 3 : 2][i];
742 }
743 bool left[4] = {true, true, true, true};
744 for (uint8 k = 4; k > 0; --k)
745 {
746 uint8 r = urand(0, k - 1);
747 uint8 ur = 0;
748 for (uint8 j = 0; j < 4; ++j)
749 if (left[j])
750 {
751 if (ur == r)
752 {
753 left[j] = false;
754 for (uint8 i = 0; i < 5; ++i)
755 chosenComposition[8 - k][i] = allowedCompositions[j + 4][i];
756 break;
757 }
758 ++ur;
759 }
760 }
761 if (bFinished5Waves)
762 {
763 for (; WaveNumber < 4; ++WaveNumber)
764 {
765 uint8 num_to_activate;
766 if (WaveNumber <= 1)
767 num_to_activate = 3;
768 else
769 num_to_activate = 4;
770
771 for (uint8 i = 0; i < num_to_activate; ++i)
772 {
774 bool forward = !!urand(0, 1);
775 for (int8 j = (forward ? 0 : NUM_OF_TRASH - 1); (forward ? j<NUM_OF_TRASH : j >= 0); (forward ? ++j : --j))
776 if (!TrashActive[j])
778 if (c->GetEntry() == entry)
779 {
780 TrashActive[j] = true;
781 Unit::Kill(c, c);
782 break;
783 }
784 }
785 }
786 WaveNumber = 5;
787 }
788
789 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
790 if (!TrashActive[i])
792 {
793 c->SetVisible(true);
794 c->CastSpell(c, SPELL_WELL_OF_SOULS_VISUAL, false);
795 }
796 }
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:17754
const uint32 allowedCompositions[8][5]
Definition halls_of_reflection.h:296
@ SPELL_WELL_OF_SOULS_VISUAL
Definition halls_of_reflection.h:256

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.

706 {
707 data >> EncounterMask;
709 }
@ BHSF_NONE
Definition halls_of_reflection.h:105
@ BHSF_FINISHED
Definition halls_of_reflection.h:108

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.

396 {
397 switch (type)
398 {
399 case DATA_INTRO:
400 EncounterMask |= (1 << DATA_INTRO);
401 AddWave1();
402 break;
405 break;
406 case DATA_FALRIC:
407 if (WaveNumber)
408 {
409 if (data == NOT_STARTED)
410 DoWipe1();
411 else if (data == DONE)
412 {
413 NextWaveTimer = 60000;
414 EncounterMask |= (1 << DATA_FALRIC);
415 }
416 }
417 break;
418 case DATA_MARWYN:
419 if (WaveNumber)
420 {
421 if (data == NOT_STARTED)
422 DoWipe1();
423 else if (data == DONE)
424 {
425 EncounterMask |= (1 << DATA_MARWYN);
429 {
430 c->SetVisible(true);
431 c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
432 c->SetReactState(REACT_AGGRESSIVE);
433 }
435 {
436 c->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
437 }
438 WaveNumber = 0;
440
441 // give quest
442 Map::PlayerList const& pl = instance->GetPlayers();
443 for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
444 if (Player* p = itr->GetSource())
445 p->CastSpell(p, p->GetTeamId() == TEAM_ALLIANCE ? SPELL_HOR_START_QUEST_ALLY : SPELL_HOR_START_QUEST_HORDE, true);
446 }
447 }
448 break;
451 if (data == DONE)
452 {
454 c->SetVisible(true);
456 c->SetVisible(true);
457 }
458 break;
460 {
461 uint8 i = 0;
462 Map::PlayerList const& pl = instance->GetPlayers();
463 for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
464 if (Player* p = itr->GetSource())
465 if (p->IsAlive() && !p->IsGameMaster())
467 {
468 if (!c->IsAlive())
469 c->Respawn();
470 c->SetCanFly(true);
471 c->SetDisableGravity(true);
472 c->SetVisible(true);
473
474 Item* i;
475 i = p->GetWeaponForAttack(BASE_ATTACK);
477 i = p->GetWeaponForAttack(OFF_ATTACK);
479 i = p->GetWeaponForAttack(RANGED_ATTACK);
481 p->CastSpell(c, SPELL_HOR_CLONE, true);
482 p->CastSpell(c, SPELL_HOR_CLONE_NAME, true);
483 }
484 }
485 break;
488 for (uint8 i = 0; i < 5; ++i)
490 if (c->IsVisible())
491 {
492 c->SetInCombatWithZone();
493 c->SetCanFly(false);
494 c->SetDisableGravity(false);
495 c->GetMotionMaster()->MoveJump(fg->GetPositionX(), fg->GetPositionY(), fg->GetPositionZ(), 20.0f, 10.0f);
496 }
497 break;
499 for (uint8 i = 0; i < 5; ++i)
501 c->AI()->EnterEvadeMode();
502 break;
503 case DATA_LK_INTRO:
506 c->AI()->DoAction(ACTION_START_INTRO);
507 break;
509 IsDuringLKFight = true;
512 break;
514 if (!IsDuringLKFight)
515 {
516 break;
517 }
519 {
520 if (!c->IsAlive())
521 {
522 c->Respawn();
524 c->UpdateEntry(NPC_JAINA_PART2);
525 }
526 c->GetThreatMgr().ClearAllThreat();
527 c->CombatStop(true);
528 c->InterruptNonMeleeSpells(true);
529 c->GetMotionMaster()->Clear();
530 c->GetMotionMaster()->MoveIdle();
531 c->UpdatePosition(LeaderEscapePos, true);
532 c->StopMovingOnCurrentPos();
533 c->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
534 c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
535 c->SetHealth(c->GetMaxHealth() / 20);
536 c->AI()->Reset();
537 c->setActive(false);
538 c->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
539 c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
540 }
542 {
543 c->GetThreatMgr().ClearAllThreat();
544 c->CombatStop(true);
545 c->InterruptNonMeleeSpells(true);
546 c->GetMotionMaster()->Clear();
547 c->GetMotionMaster()->MoveIdle();
548 c->UpdatePosition(c->GetHomePosition(), true);
549 c->StopMovingOnCurrentPos();
550 c->RemoveAllAuras();
552 c->AI()->Reset();
553 c->setActive(false);
554 c->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
555 c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
556 c->SetSpeed(MOVE_RUN, c->GetCreatureTemplate()->speed_run);
557 }
558 IsDuringLKFight = false;
559 outroTimer = 0;
560 outroStep = 0;
561 [[fallthrough]];
565 break;
566 case DATA_LICH_KING:
567 if (data == DONE)
568 {
571 c->setActive(false);
573 c->setActive(false);
574 IsDuringLKFight = false;
575 outroStep = 1;
576 outroTimer = 0;
577 }
578 break;
580 {
582 return;
583
584 switch (data)
585 {
586 case 1: // talked to leader
588 SaveToDB();
589 break;
590 case 2:
592 break;
595 c->CastSpell(c, 70720, true);
597 c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 1), c->m_Events.CalculateTime(3000));
598 break;
599 case 3:
601 break;
604 {
605 c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 3), c->m_Events.CalculateTime(5500));
606 }
607 break;
608 case 4:
610 {
611 c->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
612 c->SetSpeed(MOVE_RUN, 2.5f);
613 }
614 break;
615 case 5:
617 c->m_Events.AddEvent(new UtherBatteredHiltEvent(*c, 6), c->m_Events.CalculateTime(3000));
618 break;
619 case 6:
621 {
622 c->SetSpeed(MOVE_RUN, c->GetCreatureTemplate()->speed_run);
623 c->GetMotionMaster()->MoveLand(0, c->GetPositionX(), c->GetPositionY(), 707.70f, 7.0f);
624 }
625 break;
626 case 7:
628 {
629 c->SetReactState(REACT_AGGRESSIVE);
630 c->SetImmuneToAll(false);
631 c->RemoveAurasDueToSpell(70300);
632 }
633 break;
634 case 8:
636 c->SetInCombatWithZone();
637 break;
638 case 9:
641 SaveToDB();
642 break;
643 }
644 }
645 return;
646 }
647
648 if (data == DONE)
649 SaveToDB();
650 }
@ ACHIEVEMENT_TIMED_TYPE_EVENT
Definition DBCEnums.h:110
@ DONE
Definition InstanceScript.h:61
@ NOT_STARTED
Definition InstanceScript.h:58
@ EMOTE_ONESHOT_EMERGE
Definition SharedDefines.h:2043
@ EMOTE_ONESHOT_NONE
Definition SharedDefines.h:1894
@ REACT_AGGRESSIVE
Definition Unit.h:550
@ OFF_ATTACK
Definition Unit.h:210
@ BASE_ATTACK
Definition Unit.h:209
@ RANGED_ATTACK
Definition Unit.h:211
@ UNIT_VIRTUAL_ITEM_SLOT_ID
Definition UpdateFields.h:116
@ ACTION_START_INTRO
Definition boss_nightbane.cpp:57
void SaveToDB()
Definition InstanceScript.cpp:41
void DoStartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition InstanceScript.cpp:665
void DoStopTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition InstanceScript.cpp:674
Definition Item.h:220
Definition LinkedList.h:139
Definition MapRefMgr.h:26
iterator begin()
Definition MapRefMgr.h:36
iterator end()
Definition MapRefMgr.h:37
PlayerList const & GetPlayers() const
Definition Map.h:333
void Clear()
Definition ObjectGuid.h:138
void SetUInt32Value(uint16 index, uint32 value)
Definition Object.cpp:650
Definition Player.h:1081
@ BHSF_THROWN
Definition halls_of_reflection.h:107
@ BHSF_STARTED
Definition halls_of_reflection.h:106
@ SPELL_HOR_CLONE_NAME
Definition halls_of_reflection.h:271
@ ACHIEV_RETREATING_TIMED_EVENT
Definition halls_of_reflection.h:248
@ SPELL_HOR_CLONE
Definition halls_of_reflection.h:270
@ SPELL_HOR_START_QUEST_HORDE
Definition halls_of_reflection.h:253
@ SPELL_HOR_START_QUEST_ALLY
Definition halls_of_reflection.h:252
@ ACTION_START_LK_FIGHT
Definition halls_of_reflection.h:42
@ ACTION_SHOW_TRASH
Definition halls_of_reflection.h:38
@ ACTION_SPIRITUAL_REFLECTIONS_HIDE
Definition halls_of_reflection.h:41
@ ACTION_DELETE_ICE_WALL
Definition halls_of_reflection.h:44
@ ACTION_STOP_LK_FIGHT
Definition halls_of_reflection.h:43
@ ACTION_SPIRITUAL_REFLECTIONS_ACTIVATE
Definition halls_of_reflection.h:40
@ ACTION_SPIRITUAL_REFLECTIONS_COPY
Definition halls_of_reflection.h:39
void DoWipe1()
Definition instance_halls_of_reflection.cpp:868
void AddWave1()
Definition instance_halls_of_reflection.cpp:798
void RandomizeCompositionsAndShow()
Definition instance_halls_of_reflection.cpp:733

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(), InstanceScript::GetTeamIdInInstance(), GO_ArthasDoorGUID, GO_FrontDoorGUID, GO_IceWallGUID, InstanceScript::HandleGameObject(), InstanceScript::instance, IsDuringLKFight, LeaderEscapePos, 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, 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, UNIT_NPC_EMOTESTATE, UNIT_NPC_FLAG_GOSSIP, UNIT_NPC_FLAG_QUESTGIVER, UNIT_VIRTUAL_ITEM_SLOT_ID, WaveNumber, and WORLD_STATE_HALLS_OF_REFLECTION_WAVES_ENABLED.

Referenced by Update().

◆ Update()

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

Reimplemented from InstanceScript.

907 {
908 if (!instance->HavePlayers())
909 return;
910
911 if (CheckPlayersTimer <= diff)
912 {
913 CheckPlayersTimer = 5000;
914 if ((EncounterMask & (1 << DATA_INTRO)) && !(EncounterMask & (1 << DATA_MARWYN))) // first event
915 {
916 Map::PlayerList const& pl = instance->GetPlayers();
918 {
919 bool allDead = true;
920 bool outOfRange = false;
921 for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
922 if (Player* p = itr->GetSource())
923 {
924 if (p->IsGameMaster())
925 continue;
926 if (p->IsAlive())
927 allDead = false;
928 if (p->GetExactDist2d(&CenterPos) > MAX_DIST_FROM_CENTER_IN_COMBAT)
929 {
930 outOfRange = true;
931 break;
932 }
933 }
934 if (allDead || outOfRange)
935 DoWipe1();
936 }
937 else if (!ResumeFirstEventTimer)
938 {
939 bool allInRangeAndAlive = (instance->GetPlayersCountExceptGMs() > 0);
940 for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
941 if (Player* p = itr->GetSource())
942 if (!p->IsGameMaster() && (p->GetExactDist2d(&CenterPos) > MAX_DIST_FROM_CENTER_TO_START || !p->IsAlive()))
943 {
944 allInRangeAndAlive = false;
945 break;
946 }
947 if (allInRangeAndAlive)
948 {
951 }
952 }
953 }
954 }
955 else
956 CheckPlayersTimer -= diff;
957
958 if (NextWaveTimer)
959 {
960 if (NextWaveTimer <= diff)
961 {
962 NextWaveTimer = 0;
963 AddWave1();
964 }
965 else
966 NextWaveTimer -= diff;
967 }
968
970 {
971 if (ResumeFirstEventTimer <= diff)
972 {
973 switch (ResumeFirstEventStep) // After a wipe
974 {
975 case 0:
977 {
978 pFalric->UpdatePosition(5274.9f, 2039.2f, 709.319f, 5.4619f, true);
979 pFalric->StopMovingOnCurrentPos();
980 pFalric->SetVisible(true);
981 if (pFalric->IsAlive())
982 {
983 pFalric->GetMotionMaster()->MovePoint(0, FalricMovePos);
984 if (Aura* a = pFalric->AddAura(SPELL_SHADOWMOURNE_VISUAL, pFalric))
985 a->SetDuration(8000);
986 }
987 }
989 {
990 pMarwyn->UpdatePosition(5343.77f, 1973.86f, 709.319f, 2.35173f, true);
991 pMarwyn->StopMovingOnCurrentPos();
992 pMarwyn->SetVisible(true);
993 if (pMarwyn->IsAlive())
994 {
995 pMarwyn->GetMotionMaster()->MovePoint(0, MarwynMovePos);
996 if (Aura* a = pMarwyn->AddAura(SPELL_SHADOWMOURNE_VISUAL, pMarwyn))
997 a->SetDuration(8000);
998 }
999 pMarwyn->AI()->Talk(EMOTE_MARWYN_INTRO_SPIRIT);
1000 }
1002 ResumeFirstEventTimer = 7500;
1003 break;
1004 case 1:
1006 {
1007 if (pFalric->IsAlive())
1008 {
1009 pFalric->AI()->Talk(SAY_FALRIC_INTRO_2); // Between wave 1 and 4
1010 }
1011 else
1012 {
1014 {
1015 marwyn->AI()->Talk(SAY_MARWYN_WIPE_AFTER_FALRIC); // Between wave 6 and 9
1016 }
1017 }
1018 }
1022 NextWaveTimer = 7000;
1023 break;
1024 default:
1025 for (uint8 i = 0; i < NUM_OF_TRASH; ++i)
1027 c->SetVisible(false);
1029 falric->SetVisible(false);
1031 marwyn->SetVisible(false);
1034 break;
1035 }
1036 }
1037 else
1038 ResumeFirstEventTimer -= diff;
1039 }
1040 if (outroStep)
1041 {
1042 if (outroTimer <= diff)
1043 {
1044 switch (outroStep)
1045 {
1046 case 1:
1048 {
1049 lk->UpdatePosition(PathWaypoints[PATH_WP_COUNT - 2], true);
1050 lk->StopMovingOnCurrentPos();
1051 lk->RemoveAllAuras();
1053 if (!lk->IsVisible())
1054 lk->SetVisible(true);
1056 {
1057 leader->UpdatePosition(PathWaypoints[PATH_WP_COUNT - 1], true);
1058 leader->StopMovingOnCurrentPos();
1059 leader->RemoveAllAuras();
1060 leader->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_READY1H);
1061 if (!leader->IsVisible())
1062 leader->SetVisible(true);
1063 lk->CastSpell(leader, SPELL_HARVEST_SOUL, false);
1064 }
1065 }
1066 ++outroStep;
1067 outroTimer = 500;
1068 break;
1069 case 2:
1070 {
1072 T1 = sTransportMgr->CreateTransport(entry, 0, instance);
1073
1074 ++outroStep;
1075 outroTimer = GetTeamIdInInstance() == TEAM_ALLIANCE ? 10000 : 10500;
1076 }
1077 break;
1078 case 3:
1079 if (T1)
1080 T1->EnableMovement(false);
1084 {
1085 c->RemoveAllAuras();
1086 c->CastSpell(c, SPELL_GUNSHIP_CANNON_FIRE_PERIODIC, true);
1087 }
1089 {
1090 c->InterruptNonMeleeSpells(true);
1091 c->RemoveAllAuras();
1092 }
1093 ++outroStep;
1094 outroTimer = 5000;
1095 break;
1096 case 4:
1098 ++outroStep;
1099 outroTimer = 3000;
1100 break;
1101 case 5:
1103 c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
1105 {
1106 c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
1107 c->GetThreatMgr().ClearAllThreat();
1108 c->CombatStop(true);
1109 c->InterruptNonMeleeSpells(true);
1110 c->SetVisible(false);
1111 }
1112 if (instance->IsHeroic())
1115 c->CastSpell(c, SPELL_ACHIEVEMENT_CHECK, true);
1116 ++outroStep;
1117 outroTimer = 1000;
1118 break;
1119 case 6:
1120 if (T1)
1121 T1->EnableMovement(true);
1122 ++outroStep;
1123 outroTimer = 3500;
1124 break;
1125 case 7:
1126 if (T1)
1127 T1->EnableMovement(false);
1129 {
1130 uint8 index = GetTeamIdInInstance() == TEAM_ALLIANCE ? 0 : 1;
1131 for (uint8 i = 0; i < 3; ++i)
1132 if (StairsPos[index][i].GetPositionX())
1133 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))
1134 go->SetGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE);
1135 //Position pos = TeamIdInInstance == TEAM_ALLIANCE ? AllyPortalPos : HordePortalPos;
1136 //leader->SummonGameObject(GO_PORTAL_TO_DALARAN, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400);
1137 //pos = TeamIdInInstance == TEAM_ALLIANCE ? AllyChestPos : HordeChestPos;
1138 //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);
1139 }
1140 ++outroStep;
1141 outroTimer = 1000;
1142 break;
1143 case 8:
1147 {
1148 c->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
1149 c->GetMotionMaster()->MovePoint(0, WalkCaveInPos);
1150 c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); // need gossip ID 10931
1151 }
1152 ++outroStep;
1153 outroTimer = 6000;
1154 break;
1155 case 9:
1159 ++outroStep;
1160 outroTimer = 11000;
1161 break;
1162 case 10:
1163 ++outroStep;
1164 outroTimer = 0;
1166 if (Player* p = itr->GetSource())
1167 p->KilledMonsterCredit(NPC_WRATH_OF_THE_LICH_KING_CREDIT);
1170 {
1171 c->AI()->Talk(SAY_JAINA_FINAL_2);
1172 outroTimer = 10000;
1173 }
1174 break;
1175 case 11:
1177 c->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
1178 ++outroStep;
1179 outroTimer = 300 * 1000;
1180 break;
1181 case 12:
1182 outroStep = 0;
1183 outroTimer = 0;
1184 if (T1)
1185 T1->setActive(false);
1186 break;
1187 }
1188 }
1189 else
1190 outroTimer -= diff;
1191 }
1192 }
@ 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
#define sTransportMgr
Definition TransportMgr.h:163
@ SPELL_ACHIEVEMENT_CHECK
Definition boss_tharon_ja.cpp:51
Definition SpellAuras.h:87
Definition GameObject.h:120
void PermBindAllPlayers()
Definition Map.cpp:2336
uint32 GetPlayersCountExceptGMs() const
Definition Map.cpp:1927
InstanceMap * ToInstanceMap()
Definition Map.h:393
bool IsHeroic() const
Definition Map.h:299
void EnableMovement(bool enabled)
Definition Transport.cpp:455
void setActive(bool isActiveObject)
Definition Object.cpp:1094
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:2382
const Position FalricMovePos
Definition halls_of_reflection.h:323
@ GO_THE_SKYBREAKER
Definition halls_of_reflection.h:94
@ GO_ORGRIMS_HAMMER
Definition halls_of_reflection.h:95
@ GO_STAIRS_HORDE
Definition halls_of_reflection.h:97
@ GO_STAIRS_ALLIANCE
Definition halls_of_reflection.h:96
@ NPC_WRATH_OF_THE_LICH_KING_CREDIT
Definition halls_of_reflection.h:76
const Position MarwynMovePos
Definition halls_of_reflection.h:324
#define MAX_DIST_FROM_CENTER_IN_COMBAT
Definition halls_of_reflection.h:112
@ SPELL_GUNSHIP_CANNON_FIRE_PERIODIC
Definition halls_of_reflection.h:289
@ SPELL_HARVEST_SOUL
Definition halls_of_reflection.h:284
@ SPELL_SHADOWMOURNE_VISUAL
Definition halls_of_reflection.h:254
const Position StairsPos[2][3]
Definition halls_of_reflection.h:373
@ SAY_JAINA_FINAL_2
Definition halls_of_reflection.h:212
@ SAY_ONBOARD_ALLY
Definition halls_of_reflection.h:216
@ EMOTE_MARWYN_INTRO_SPIRIT
Definition halls_of_reflection.h:230
@ SAY_FALRIC_INTRO_2
Definition halls_of_reflection.h:163
@ SAY_JAINA_FINAL_1
Definition halls_of_reflection.h:211
@ SAY_FIRE_HORDE
Definition halls_of_reflection.h:200
@ SAY_MARWYN_WIPE_AFTER_FALRIC
Definition halls_of_reflection.h:232
@ SAY_ONBOARD_HORDE
Definition halls_of_reflection.h:201
@ SAY_FIRE_ALLY
Definition halls_of_reflection.h:215
@ SAY_SYLVANA_FINAL
Definition halls_of_reflection.h:197
#define MAX_DIST_FROM_CENTER_TO_START
Definition halls_of_reflection.h:113
const Position WalkCaveInPos
Definition halls_of_reflection.h:327
const Position CenterPos
Definition halls_of_reflection.h:308
void SetData(uint32 type, uint32 data) override
Definition instance_halls_of_reflection.cpp:395

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(), InstanceScript::GetTeamIdInInstance(), 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, 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.

712 {
713 data << EncounterMask;
714 }

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().

◆ 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

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