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

Public Member Functions

 instance_ulduar_InstanceMapScript (Map *pMap)
 
void Initialize () override
 
void FillInitialWorldStates (WorldPacket &packet) override
 
void OnPlayerEnter (Player *player) override
 
bool IsEncounterInProgress () const override
 
void ProcessEvent (WorldObject *, uint32 eventId) override
 
void SpawnHodirChests (Difficulty diff, Creature *hodir)
 
void OnCreatureCreate (Creature *creature) override
 
void OnCreatureRemove (Creature *creature) override
 
void OpenIfDone (uint32 encounter, GameObject *go, GOState state)
 
void ShowKeeperGossip (uint8 type, Creature *cr, ObjectGuid guid=ObjectGuid::Empty)
 
void OnGameObjectCreate (GameObject *gameObject) override
 
void setChestsLootable (uint32 boss)
 
void SetData (uint32 type, uint32 data) override
 
ObjectGuid GetGuidData (uint32 data) const override
 
uint32 GetData (uint32 type) const override
 
void OnUnitDeath (Unit *unit) override
 
void ReadSaveDataMore (std::istringstream &data) override
 
void WriteSaveDataMore (std::ostringstream &data) override
 
void Update (uint32 diff) override
 
void SpawnLeviathanEncounterVehicles (uint8 mode)
 
bool CheckAchievementCriteriaMeet (uint32 criteria_id, Player const *, Unit const *, uint32) 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)
 
- 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 m_auiEncounter [MAX_ENCOUNTER]
 
uint32 C_of_Ulduar_MASK
 
int m_difficulty
 
ObjectGuid m_uiLeviathanGUID
 
ObjectGuid m_uiIgnisGUID
 
ObjectGuid m_uiRazorscaleGUID
 
ObjectGuid m_uiXT002GUID
 
ObjectGuid m_auiAssemblyGUIDs [3]
 
ObjectGuid m_uiKologarnGUID
 
ObjectGuid m_uiAuriayaGUID
 
ObjectGuid m_uiMimironGUID
 
ObjectGuid m_uiHodirGUID
 
ObjectGuid m_uiThorimGUID
 
ObjectGuid m_uiFreyaGUID
 
ObjectGuid m_uiVezaxGUID
 
ObjectGuid m_uiYoggSaronGUID
 
ObjectGuid m_uiAlgalonGUID
 
ObjectGuid m_leviathanDoorsGUID
 
ObjectGuid m_leviathanVisualTowers [4][2]
 
ObjectGuid m_RepairSGUID [2]
 
ObjectGuid m_lightningWalls [2]
 
bool m_leviathanTowers [4]
 
GuidList _leviathanVehicles
 
uint32 m_unbrokenAchievement
 
uint32 m_mageBarrier
 
ObjectGuid m_RazorscaleHarpoonFireStateGUID [4]
 
ObjectGuid m_xt002DoorsGUID
 
ObjectGuid KologarnDoorGUID
 
ObjectGuid m_assemblyDoorsGUID
 
ObjectGuid m_archivumDoorsGUID
 
ObjectGuid m_thorimGameobjectsGUID [5]
 
bool hmHodir
 
ObjectGuid m_hodirNormalChest
 
ObjectGuid m_hodirHardmodeChest
 
Position normalChestPosition = { 1967.152588f, -204.188461f, 432.686951f, 5.50957f }
 
Position hardChestPosition = { 2035.94600f, -202.084885f, 432.686859f, 3.164077f }
 
ObjectGuid m_MimironDoor [3]
 
ObjectGuid m_MimironLeviathanMKIIguid
 
ObjectGuid m_MimironVX001guid
 
ObjectGuid m_MimironACUguid
 
ObjectGuid m_FreyaElder [3]
 
uint32 m_conspeedatoryAttempt
 
ObjectGuid m_saraGUID
 
ObjectGuid m_yoggsaronBrainGUID
 
ObjectGuid m_yoggsaronDoorsGUID
 
ObjectGuid m_algalonSigilDoorGUID [3]
 
ObjectGuid m_algalonFloorGUID [2]
 
ObjectGuid m_algalonUniverseGUID
 
ObjectGuid m_algalonTrapdoorGUID
 
ObjectGuid m_brannBronzebeardAlgGUID
 
ObjectGuid m_brannBronzebeardBaseCamp
 
uint32 m_algalonTimer
 
EventMap _events
 
bool m_mimironTramUsed
 
ObjectGuid m_mimironTramGUID
 
ObjectGuid m_keepersgateGUID
 
ObjectGuid m_keepersGossipGUID [4]
 
- Public Attributes inherited from InstanceScript
Mapinstance
 

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)
 
void AddObject (GameObject *obj, bool add)
 
void AddObject (WorldObject *obj, uint32 type, bool add)
 
void AddDoor (GameObject *door, bool add)
 
void AddMinion (Creature *minion, bool add)
 
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_ulduar_InstanceMapScript()

instance_ulduar::instance_ulduar_InstanceMapScript::instance_ulduar_InstanceMapScript ( Map pMap)
inline
40 : InstanceScript(pMap)
41 {
42 Initialize();
44 // 0: 10 man difficulty
45 // 1: 25 man difficulty
46 m_difficulty = (pMap->Is25ManRaid() ? 0 : 1);
47 };
#define DataHeader
Definition: blackrock_depths.h:23
Definition: InstanceScript.h:140
void SetHeaders(std::string const &dataHeaders)
Definition: InstanceScript.cpp:137
bool Is25ManRaid() const
Definition: Map.h:452
void Initialize() override
Definition: instance_ulduar.cpp:134
int m_difficulty
Definition: instance_ulduar.cpp:52

References DataHeader, Initialize(), Map::Is25ManRaid(), m_difficulty, and InstanceScript::SetHeaders().

Member Function Documentation

◆ CheckAchievementCriteriaMeet()

bool instance_ulduar::instance_ulduar_InstanceMapScript::CheckAchievementCriteriaMeet ( uint32  criteria_id,
Player const *  ,
Unit const *  ,
uint32   
)
inlineoverridevirtual

Reimplemented from InstanceScript.

1142 {
1143 switch (criteria_id)
1144 {
1145 case 10042:
1146 case 10352:
1147 return (C_of_Ulduar_MASK & (1 << TYPE_LEVIATHAN)) == 0;
1148 case 10342:
1149 case 10355:
1150 return (C_of_Ulduar_MASK & (1 << TYPE_IGNIS)) == 0;
1151 case 10340:
1152 case 10353:
1153 return (C_of_Ulduar_MASK & (1 << TYPE_RAZORSCALE)) == 0;
1154 case 10341:
1155 case 10354:
1156 return (C_of_Ulduar_MASK & (1 << TYPE_XT002)) == 0;
1157 case 10598:
1158 case 10599:
1159 return (C_of_Ulduar_MASK & (1 << TYPE_ASSEMBLY)) == 0;
1160 case 10348:
1161 case 10357:
1162 return (C_of_Ulduar_MASK & (1 << TYPE_KOLOGARN)) == 0;
1163 case 10351:
1164 case 10363:
1165 return (C_of_Ulduar_MASK & (1 << TYPE_AURIAYA)) == 0;
1166 case 10439:
1167 case 10719:
1168 return (C_of_Ulduar_MASK & (1 << TYPE_HODIR)) == 0;
1169 case 10403:
1170 case 10404:
1171 return (C_of_Ulduar_MASK & (1 << TYPE_THORIM)) == 0;
1172 case 10582:
1173 case 10583:
1174 return (C_of_Ulduar_MASK & (1 << TYPE_FREYA)) == 0;
1175 case 10347:
1176 case 10361:
1177 return (C_of_Ulduar_MASK & (1 << TYPE_MIMIRON)) == 0;
1178 case 10349:
1179 case 10362:
1180 return (C_of_Ulduar_MASK & (1 << TYPE_VEZAX)) == 0;
1181 case 10350:
1182 case 10364:
1183 return (C_of_Ulduar_MASK & (1 << TYPE_YOGGSARON)) == 0;
1184 }
1185 return false;
1186 }
@ TYPE_IGNIS
Definition: ulduar.h:36
@ TYPE_VEZAX
Definition: ulduar.h:46
@ TYPE_XT002
Definition: ulduar.h:38
@ TYPE_HODIR
Definition: ulduar.h:43
@ TYPE_ASSEMBLY
Definition: ulduar.h:39
@ TYPE_KOLOGARN
Definition: ulduar.h:40
@ TYPE_AURIAYA
Definition: ulduar.h:41
@ TYPE_RAZORSCALE
Definition: ulduar.h:37
@ TYPE_FREYA
Definition: ulduar.h:42
@ TYPE_LEVIATHAN
Definition: ulduar.h:35
@ TYPE_MIMIRON
Definition: ulduar.h:44
@ TYPE_THORIM
Definition: ulduar.h:45
@ TYPE_YOGGSARON
Definition: ulduar.h:47
uint32 C_of_Ulduar_MASK
Definition: instance_ulduar.cpp:50

References C_of_Ulduar_MASK, TYPE_ASSEMBLY, TYPE_AURIAYA, TYPE_FREYA, TYPE_HODIR, TYPE_IGNIS, TYPE_KOLOGARN, TYPE_LEVIATHAN, TYPE_MIMIRON, TYPE_RAZORSCALE, TYPE_THORIM, TYPE_VEZAX, TYPE_XT002, and TYPE_YOGGSARON.

◆ FillInitialWorldStates()

void instance_ulduar::instance_ulduar_InstanceMapScript::FillInitialWorldStates ( WorldPacket packet)
inlineoverridevirtual

Reimplemented from InstanceScript.

163 {
165 packet << uint32(WORLD_STATE_ALGALON_DESPAWN_TIMER) << uint32(std::min<uint32>(m_algalonTimer, 60));
166 }
std::uint32_t uint32
Definition: Define.h:108
@ WORLD_STATE_ALGALON_TIMER_ENABLED
Definition: ulduar.h:276
uint32 m_algalonTimer
Definition: instance_ulduar.cpp:125

References m_algalonTimer, and WORLD_STATE_ALGALON_TIMER_ENABLED.

◆ GetData()

uint32 instance_ulduar::instance_ulduar_InstanceMapScript::GetData ( uint32  type) const
inlineoverridevirtual

Reimplemented from ZoneScript.

980 {
981 switch(type)
982 {
983 case TYPE_LEVIATHAN:
984 case TYPE_IGNIS:
985 case TYPE_RAZORSCALE:
986 case TYPE_XT002:
987 case TYPE_ASSEMBLY:
988 case TYPE_KOLOGARN:
989 case TYPE_AURIAYA:
990 case TYPE_MIMIRON:
991 case TYPE_HODIR:
992 case TYPE_THORIM:
993 case TYPE_FREYA:
994 case TYPE_VEZAX:
995 case TYPE_YOGGSARON:
996 case TYPE_ALGALON:
997 case TYPE_WATCHERS:
998 return m_auiEncounter[type];
999
1005
1006 case DATA_MAGE_BARRIER:
1007 return m_mageBarrier;
1008
1010 return m_unbrokenAchievement;
1011
1012 case DATA_CALL_TRAM:
1013 return m_mimironTramUsed;
1014 }
1015
1016 return 0;
1017 }
@ EVENT_TOWER_OF_STORM_DESTROYED
Definition: ulduar.h:263
@ EVENT_TOWER_OF_LIFE_DESTROYED
Definition: ulduar.h:266
@ EVENT_TOWER_OF_FLAMES_DESTROYED
Definition: ulduar.h:265
@ EVENT_TOWER_OF_FROST_DESTROYED
Definition: ulduar.h:264
@ DATA_MAGE_BARRIER
Definition: ulduar.h:104
@ DATA_UNBROKEN_ACHIEVEMENT
Definition: ulduar.h:62
@ DATA_CALL_TRAM
Definition: ulduar.h:101
@ TYPE_WATCHERS
Definition: ulduar.h:49
@ TYPE_ALGALON
Definition: ulduar.h:48
bool m_leviathanTowers[4]
Definition: instance_ulduar.cpp:75
bool m_mimironTramUsed
Definition: instance_ulduar.cpp:129
uint32 m_mageBarrier
Definition: instance_ulduar.cpp:78
uint32 m_auiEncounter[MAX_ENCOUNTER]
Definition: instance_ulduar.cpp:49
uint32 m_unbrokenAchievement
Definition: instance_ulduar.cpp:77

References DATA_CALL_TRAM, DATA_MAGE_BARRIER, DATA_UNBROKEN_ACHIEVEMENT, EVENT_TOWER_OF_FLAMES_DESTROYED, EVENT_TOWER_OF_FROST_DESTROYED, EVENT_TOWER_OF_LIFE_DESTROYED, EVENT_TOWER_OF_STORM_DESTROYED, m_auiEncounter, m_leviathanTowers, m_mageBarrier, m_mimironTramUsed, m_unbrokenAchievement, TYPE_ALGALON, TYPE_ASSEMBLY, TYPE_AURIAYA, TYPE_FREYA, TYPE_HODIR, TYPE_IGNIS, TYPE_KOLOGARN, TYPE_LEVIATHAN, TYPE_MIMIRON, TYPE_RAZORSCALE, TYPE_THORIM, TYPE_VEZAX, TYPE_WATCHERS, TYPE_XT002, and TYPE_YOGGSARON.

Referenced by OnCreatureCreate(), OnGameObjectCreate(), OnUnitDeath(), OpenIfDone(), ReadSaveDataMore(), SetData(), and ShowKeeperGossip().

◆ GetGuidData()

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::GetGuidData ( uint32  data) const
inlineoverridevirtual

Reimplemented from InstanceScript.

855 {
856 switch (data)
857 {
858 // Bosses
859 case TYPE_LEVIATHAN:
860 return m_uiLeviathanGUID;
861 case TYPE_IGNIS:
862 return m_uiIgnisGUID;
863 case TYPE_RAZORSCALE:
864 return m_uiRazorscaleGUID;
865 case TYPE_XT002:
866 return m_uiXT002GUID;
867 case TYPE_KOLOGARN:
868 return m_uiKologarnGUID;
869 case TYPE_AURIAYA:
870 return m_uiAuriayaGUID;
871 case TYPE_MIMIRON:
872 return m_uiMimironGUID;
873 case TYPE_HODIR:
874 return m_uiHodirGUID;
875 case TYPE_THORIM:
876 return m_uiThorimGUID;
877 case TYPE_FREYA:
878 return m_uiFreyaGUID;
879 case TYPE_VEZAX:
880 return m_uiVezaxGUID;
881 case TYPE_YOGGSARON:
882 return m_uiYoggSaronGUID;
883 case TYPE_ALGALON:
884 return m_uiAlgalonGUID;
886 return m_auiAssemblyGUIDs[0];
887 case DATA_MOLGEIM:
888 return m_auiAssemblyGUIDs[1];
889 case DATA_BRUNDIR:
890 return m_auiAssemblyGUIDs[2];
891
892 // Flame Leviathan
894 return m_RepairSGUID[0];
896 return m_RepairSGUID[1];
898 return m_lightningWalls[0];
900 return m_lightningWalls[1];
903
904 // Razorscales Harpoon Fire State GUIDs
909 return m_RazorscaleHarpoonFireStateGUID[data - 200];
910
911 // XT-002
912 case GO_XT002_DOORS:
913 return m_xt002DoorsGUID;
914 // XT-002
916 return KologarnDoorGUID;
917 // Thorim
924
925 // Hodir chests
929 return m_hodirNormalChest;
930
931 // Freya Elders
935 return m_FreyaElder[data - NPC_ELDER_IRONBRANCH];
936
937 // Mimiron's first vehicle (spawned by default)
941 return m_MimironVX001guid;
942 case DATA_MIMIRON_ACU:
943 return m_MimironACUguid;
947 return m_MimironDoor[data - 311];
948
949 // Yogg-Saron
952 case NPC_SARA:
953 return m_saraGUID;
956
957 // Algalon the Observer
959 return m_algalonSigilDoorGUID[0];
961 return m_algalonSigilDoorGUID[1];
963 return m_algalonSigilDoorGUID[2];
965 return m_algalonFloorGUID[0];
967 return m_algalonFloorGUID[1];
974 }
975
976 return ObjectGuid::Empty;
977 }
@ DATA_MIMIRON_VX001
Definition: ulduar.h:72
@ DATA_THORIM_FIRST_DOORS
Definition: ulduar.h:84
@ DATA_MOLGEIM
Definition: ulduar.h:89
@ DATA_THORIM_LEVER
Definition: ulduar.h:82
@ DATA_LIGHTNING_WALL2
Definition: ulduar.h:59
@ DATA_BRUNDIR
Definition: ulduar.h:90
@ DATA_HARPOON_FIRE_STATE_1
Definition: ulduar.h:65
@ DATA_HARPOON_FIRE_STATE_2
Definition: ulduar.h:66
@ DATA_GO_MIMIRON_DOOR_1
Definition: ulduar.h:76
@ DATA_THORIM_FENCE
Definition: ulduar.h:83
@ DATA_REPAIR_STATION1
Definition: ulduar.h:60
@ DATA_THORIM_SECOND_DOORS
Definition: ulduar.h:85
@ DATA_STEELBREAKER
Definition: ulduar.h:88
@ DATA_HARPOON_FIRE_STATE_3
Definition: ulduar.h:67
@ DATA_LIGHTNING_WALL1
Definition: ulduar.h:58
@ DATA_GO_MIMIRON_DOOR_2
Definition: ulduar.h:77
@ DATA_GO_MIMIRON_DOOR_3
Definition: ulduar.h:78
@ DATA_MIMIRON_LEVIATHAN_MKII
Definition: ulduar.h:71
@ DATA_HARPOON_FIRE_STATE_4
Definition: ulduar.h:68
@ DATA_MIMIRON_ACU
Definition: ulduar.h:73
@ DATA_THORIM_LEVER_GATE
Definition: ulduar.h:81
@ DATA_REPAIR_STATION2
Definition: ulduar.h:61
@ GO_DOODAD_UL_SIGILDOOR_03
Definition: ulduar.h:247
@ GO_DOODAD_UL_UNIVERSEGLOBE01
Definition: ulduar.h:250
@ GO_YOGG_SARON_DOORS
Definition: ulduar.h:240
@ GO_DOODAD_UL_SIGILDOOR_01
Definition: ulduar.h:245
@ GO_LEVIATHAN_DOORS
Definition: ulduar.h:198
@ GO_HODIR_CHEST_NORMAL
Definition: ulduar.h:183
@ GO_DOODAD_UL_SIGILDOOR_02
Definition: ulduar.h:246
@ GO_KOLOGARN_DOORS
Definition: ulduar.h:215
@ GO_DOODAD_UL_ULDUAR_TRAPDOOR_03
Definition: ulduar.h:251
@ GO_XT002_DOORS
Definition: ulduar.h:217
@ GO_DOODAD_UL_UNIVERSEFLOOR_01
Definition: ulduar.h:248
@ GO_HODIR_CHEST_HARD
Definition: ulduar.h:185
@ GO_DOODAD_UL_UNIVERSEFLOOR_02
Definition: ulduar.h:249
@ NPC_ELDER_BRIGHTLEAF
Definition: ulduar.h:140
@ NPC_BRAIN_OF_YOGG_SARON
Definition: ulduar.h:128
@ NPC_SARA
Definition: ulduar.h:126
@ NPC_ELDER_IRONBRANCH
Definition: ulduar.h:142
@ NPC_ELDER_STONEBARK
Definition: ulduar.h:141
@ NPC_BRANN_BRONZBEARD_ALG
Definition: ulduar.h:163
static ObjectGuid const Empty
Definition: ObjectGuid.h:122
ObjectGuid m_MimironDoor[3]
Definition: instance_ulduar.cpp:104
ObjectGuid m_uiFreyaGUID
Definition: instance_ulduar.cpp:65
ObjectGuid m_lightningWalls[2]
Definition: instance_ulduar.cpp:74
ObjectGuid m_uiAlgalonGUID
Definition: instance_ulduar.cpp:68
ObjectGuid m_uiMimironGUID
Definition: instance_ulduar.cpp:62
ObjectGuid m_yoggsaronDoorsGUID
Definition: instance_ulduar.cpp:116
ObjectGuid m_algalonFloorGUID[2]
Definition: instance_ulduar.cpp:120
ObjectGuid m_algalonTrapdoorGUID
Definition: instance_ulduar.cpp:122
ObjectGuid m_saraGUID
Definition: instance_ulduar.cpp:114
ObjectGuid m_brannBronzebeardAlgGUID
Definition: instance_ulduar.cpp:123
ObjectGuid m_RazorscaleHarpoonFireStateGUID[4]
Definition: instance_ulduar.cpp:81
ObjectGuid m_FreyaElder[3]
Definition: instance_ulduar.cpp:110
ObjectGuid m_xt002DoorsGUID
Definition: instance_ulduar.cpp:84
ObjectGuid m_MimironLeviathanMKIIguid
Definition: instance_ulduar.cpp:105
ObjectGuid m_uiIgnisGUID
Definition: instance_ulduar.cpp:56
ObjectGuid m_RepairSGUID[2]
Definition: instance_ulduar.cpp:73
ObjectGuid m_uiKologarnGUID
Definition: instance_ulduar.cpp:60
ObjectGuid m_uiVezaxGUID
Definition: instance_ulduar.cpp:66
ObjectGuid m_uiYoggSaronGUID
Definition: instance_ulduar.cpp:67
ObjectGuid m_algalonSigilDoorGUID[3]
Definition: instance_ulduar.cpp:119
ObjectGuid m_yoggsaronBrainGUID
Definition: instance_ulduar.cpp:115
ObjectGuid m_uiThorimGUID
Definition: instance_ulduar.cpp:64
ObjectGuid m_hodirNormalChest
Definition: instance_ulduar.cpp:98
ObjectGuid m_MimironACUguid
Definition: instance_ulduar.cpp:107
ObjectGuid m_MimironVX001guid
Definition: instance_ulduar.cpp:106
ObjectGuid m_auiAssemblyGUIDs[3]
Definition: instance_ulduar.cpp:59
ObjectGuid m_uiLeviathanGUID
Definition: instance_ulduar.cpp:55
ObjectGuid KologarnDoorGUID
Definition: instance_ulduar.cpp:87
ObjectGuid m_uiHodirGUID
Definition: instance_ulduar.cpp:63
ObjectGuid m_uiAuriayaGUID
Definition: instance_ulduar.cpp:61
ObjectGuid m_leviathanDoorsGUID
Definition: instance_ulduar.cpp:71
ObjectGuid m_uiRazorscaleGUID
Definition: instance_ulduar.cpp:57
ObjectGuid m_algalonUniverseGUID
Definition: instance_ulduar.cpp:121
ObjectGuid m_uiXT002GUID
Definition: instance_ulduar.cpp:58
ObjectGuid m_thorimGameobjectsGUID[5]
Definition: instance_ulduar.cpp:94
ObjectGuid m_hodirHardmodeChest
Definition: instance_ulduar.cpp:99

References DATA_BRUNDIR, DATA_GO_MIMIRON_DOOR_1, DATA_GO_MIMIRON_DOOR_2, DATA_GO_MIMIRON_DOOR_3, DATA_HARPOON_FIRE_STATE_1, DATA_HARPOON_FIRE_STATE_2, DATA_HARPOON_FIRE_STATE_3, DATA_HARPOON_FIRE_STATE_4, DATA_LIGHTNING_WALL1, DATA_LIGHTNING_WALL2, DATA_MIMIRON_ACU, DATA_MIMIRON_LEVIATHAN_MKII, DATA_MIMIRON_VX001, DATA_MOLGEIM, DATA_REPAIR_STATION1, DATA_REPAIR_STATION2, DATA_STEELBREAKER, DATA_THORIM_FENCE, DATA_THORIM_FIRST_DOORS, DATA_THORIM_LEVER, DATA_THORIM_LEVER_GATE, DATA_THORIM_SECOND_DOORS, ObjectGuid::Empty, GO_DOODAD_UL_SIGILDOOR_01, GO_DOODAD_UL_SIGILDOOR_02, GO_DOODAD_UL_SIGILDOOR_03, GO_DOODAD_UL_ULDUAR_TRAPDOOR_03, GO_DOODAD_UL_UNIVERSEFLOOR_01, GO_DOODAD_UL_UNIVERSEFLOOR_02, GO_DOODAD_UL_UNIVERSEGLOBE01, GO_HODIR_CHEST_HARD, GO_HODIR_CHEST_NORMAL, GO_KOLOGARN_DOORS, GO_LEVIATHAN_DOORS, GO_XT002_DOORS, GO_YOGG_SARON_DOORS, KologarnDoorGUID, m_algalonFloorGUID, m_algalonSigilDoorGUID, m_algalonTrapdoorGUID, m_algalonUniverseGUID, m_auiAssemblyGUIDs, m_brannBronzebeardAlgGUID, m_FreyaElder, m_hodirHardmodeChest, m_hodirNormalChest, m_leviathanDoorsGUID, m_lightningWalls, m_MimironACUguid, m_MimironDoor, m_MimironLeviathanMKIIguid, m_MimironVX001guid, m_RazorscaleHarpoonFireStateGUID, m_RepairSGUID, m_saraGUID, m_thorimGameobjectsGUID, m_uiAlgalonGUID, m_uiAuriayaGUID, m_uiFreyaGUID, m_uiHodirGUID, m_uiIgnisGUID, m_uiKologarnGUID, m_uiLeviathanGUID, m_uiMimironGUID, m_uiRazorscaleGUID, m_uiThorimGUID, m_uiVezaxGUID, m_uiXT002GUID, m_uiYoggSaronGUID, m_xt002DoorsGUID, m_yoggsaronBrainGUID, m_yoggsaronDoorsGUID, NPC_BRAIN_OF_YOGG_SARON, NPC_BRANN_BRONZBEARD_ALG, NPC_ELDER_BRIGHTLEAF, NPC_ELDER_IRONBRANCH, NPC_ELDER_STONEBARK, NPC_SARA, TYPE_ALGALON, TYPE_AURIAYA, TYPE_FREYA, TYPE_HODIR, TYPE_IGNIS, TYPE_KOLOGARN, TYPE_LEVIATHAN, TYPE_MIMIRON, TYPE_RAZORSCALE, TYPE_THORIM, TYPE_VEZAX, TYPE_XT002, and TYPE_YOGGSARON.

Referenced by SetData().

◆ Initialize()

void instance_ulduar::instance_ulduar_InstanceMapScript::Initialize ( )
inlineoverridevirtual

Reimplemented from InstanceScript.

135 {
136 // Bosses
137 memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
139
140 // Flame Leviathan
141 for (uint8 i = 0; i < 4; ++i)
142 m_leviathanTowers[i] = true;
143
144 _leviathanVehicles.clear();
146 m_mageBarrier = 0;
147
148 // Hodir
149 hmHodir = true; // If players fail the Hardmode then becomes false
150
151 // Freya
153
154 // Algalon
155 m_algalonTimer = 0;
156
157 // Shared
158 _events.Reset();
159 m_mimironTramUsed = false;
160 }
std::uint8_t uint8
Definition: Define.h:110
void Reset()
Definition: EventMap.cpp:21
bool hmHodir
Definition: instance_ulduar.cpp:97
GuidList _leviathanVehicles
Definition: instance_ulduar.cpp:76
EventMap _events
Definition: instance_ulduar.cpp:128
uint32 m_conspeedatoryAttempt
Definition: instance_ulduar.cpp:111

References _events, _leviathanVehicles, C_of_Ulduar_MASK, hmHodir, m_algalonTimer, m_auiEncounter, m_conspeedatoryAttempt, m_leviathanTowers, m_mageBarrier, m_mimironTramUsed, m_unbrokenAchievement, and EventMap::Reset().

Referenced by instance_ulduar_InstanceMapScript().

◆ IsEncounterInProgress()

bool instance_ulduar::instance_ulduar_InstanceMapScript::IsEncounterInProgress ( ) const
inlineoverridevirtual

Reimplemented from InstanceScript.

195 {
196 for (uint8 i = 0; i < (MAX_ENCOUNTER - 1); ++i)
197 {
198 if (m_auiEncounter[i] == IN_PROGRESS)
199 return true;
200 }
201
202 // Leviathan does not use IN_PROGRESS type, instead SPECIAL is set and never reset,
203 // Check if he is in combat.
205 if (l->IsInCombat())
206 return true;
207
208 return false;
209 }
@ IN_PROGRESS
Definition: InstanceScript.h:57
#define MAX_ENCOUNTER
Definition: violet_hold.h:21
Definition: Unit.h:1290
Map * instance
Definition: InstanceScript.h:146
Creature * GetCreature(ObjectGuid const guid)
Definition: Map.cpp:3293

References Map::GetCreature(), IN_PROGRESS, InstanceScript::instance, m_auiEncounter, m_uiLeviathanGUID, and MAX_ENCOUNTER.

◆ OnCreatureCreate()

void instance_ulduar::instance_ulduar_InstanceMapScript::OnCreatureCreate ( Creature creature)
inlineoverridevirtual

These creatures are summoned by something else than Algalon but need to be controlled/despawned by him - so they need to be registered in his summon list

Reimplemented from InstanceScript.

290 {
291 switch(creature->GetEntry())
292 {
293 case NPC_LEVIATHAN:
294 m_uiLeviathanGUID = creature->GetGUID();
295 break;
296 case NPC_IGNIS:
297 m_uiIgnisGUID = creature->GetGUID();
298 break;
299 case NPC_RAZORSCALE:
300 m_uiRazorscaleGUID = creature->GetGUID();
301 break;
302 case NPC_XT002:
303 m_uiXT002GUID = creature->GetGUID();
304 break;
305 case NPC_STEELBREAKER:
306 m_auiAssemblyGUIDs[0] = creature->GetGUID();
307 break;
308 case NPC_MOLGEIM:
309 m_auiAssemblyGUIDs[1] = creature->GetGUID();
310 break;
311 case NPC_BRUNDIR:
312 m_auiAssemblyGUIDs[2] = creature->GetGUID();
313 break;
314 case NPC_KOLOGARN:
315 m_uiKologarnGUID = creature->GetGUID();
316 if (GetData(TYPE_KOLOGARN) == DONE)
317 {
318 creature->SetDisableGravity(true);
319 creature->SetPosition(creature->GetHomePosition());
320 creature->setDeathState(JUST_DIED);
321 creature->StopMovingOnCurrentPos();
322 }
323 break;
324 case NPC_AURIAYA:
325 m_uiAuriayaGUID = creature->GetGUID();
326 break;
327 case NPC_MIMIRON:
328 m_uiMimironGUID = creature->GetGUID();
329 break;
330 case NPC_HODIR:
331 m_uiHodirGUID = creature->GetGUID();
333 {
335 }
336 break;
337 case NPC_THORIM:
338 m_uiThorimGUID = creature->GetGUID();
339 break;
340 case NPC_FREYA:
341 m_uiFreyaGUID = creature->GetGUID();
342 break;
343 case NPC_VEZAX:
344 m_uiVezaxGUID = creature->GetGUID();
345 break;
346 case NPC_YOGGSARON:
347 m_uiYoggSaronGUID = creature->GetGUID();
348 break;
349 case NPC_ALGALON:
350 m_uiAlgalonGUID = creature->GetGUID();
351 break;
353 {
354 if( creature->GetPositionX() > 595 )
356 else if( creature->GetPositionX() > 585 )
358 else if( creature->GetPositionX() > 575 )
360 else
362 }
363 break;
366 break;
368 m_MimironVX001guid = creature->GetGUID();
369 break;
370 case NPC_MIMIRON_ACU:
371 m_MimironACUguid = creature->GetGUID();
372 break;
373 case NPC_FREYA_GOSSIP:
375 ShowKeeperGossip(TYPE_FREYA, creature);
376 break;
377 case NPC_HODIR_GOSSIP:
379 ShowKeeperGossip(TYPE_HODIR, creature);
380 break;
383 ShowKeeperGossip(TYPE_THORIM, creature);
384 break;
388 break;
392 m_FreyaElder[creature->GetEntry() - NPC_ELDER_IRONBRANCH] = creature->GetGUID();
393 break;
394 case NPC_SARA:
395 m_saraGUID = creature->GetGUID();
396 break;
398 m_yoggsaronBrainGUID = creature->GetGUID();
399 break;
402 break;
405 break;
414 algalon->AI()->JustSummoned(creature);
415 break;
416 }
417 }
@ NPC_FREYA
Definition: ScriptedCreature.cpp:523
@ JUST_DIED
Definition: Unit.h:317
@ DONE
Definition: InstanceScript.h:59
@ NPC_VEZAX
Definition: ulduar.h:125
@ NPC_THORIM_GOSSIP
Definition: ulduar.h:147
@ NPC_MIMIRON_ACU
Definition: ulduar.h:137
@ NPC_FREYA_GOSSIP
Definition: ulduar.h:145
@ NPC_YOGGSARON
Definition: ulduar.h:127
@ NPC_MOLGEIM
Definition: ulduar.h:117
@ NPC_ALGALON_STALKER_ASTEROID_TARGET_01
Definition: ulduar.h:171
@ NPC_BRUNDIR
Definition: ulduar.h:118
@ NPC_UNLEASHED_DARK_MATTER
Definition: ulduar.h:173
@ NPC_THORIM
Definition: ulduar.h:123
@ NPC_MIMIRON_GOSSIP
Definition: ulduar.h:148
@ NPC_ALGALON
Definition: ulduar.h:129
@ NPC_XT002
Definition: ulduar.h:115
@ NPC_HARPOON_FIRE_STATE
Definition: ulduar.h:132
@ NPC_HODIR
Definition: ulduar.h:122
@ NPC_MIMIRON_LEVIATHAN_MKII
Definition: ulduar.h:135
@ NPC_IGNIS
Definition: ulduar.h:113
@ NPC_LEVIATHAN
Definition: ulduar.h:112
@ NPC_ALGALON_STALKER_ASTEROID_TARGET_02
Definition: ulduar.h:172
@ NPC_STEELBREAKER
Definition: ulduar.h:116
@ NPC_HODIR_GOSSIP
Definition: ulduar.h:146
@ NPC_BRANN_BASE_CAMP
Definition: ulduar.h:160
@ NPC_KOLOGARN
Definition: ulduar.h:119
@ NPC_AURIAYA
Definition: ulduar.h:120
@ NPC_RAZORSCALE
Definition: ulduar.h:114
@ NPC_ALGALON_VOID_ZONE_VISUAL_STALKER
Definition: ulduar.h:170
@ NPC_MIMIRON_VX001
Definition: ulduar.h:136
@ NPC_MIMIRON
Definition: ulduar.h:121
Definition: Creature.h:46
void setDeathState(DeathState s, bool despawn=false) override
Definition: Creature.cpp:1934
bool SetDisableGravity(bool disable, bool packetOnly=false, bool updateAnimationTier=true) override
Definition: Creature.cpp:3092
void GetHomePosition(float &x, float &y, float &z, float &ori) const
Definition: Creature.h:330
void SetPosition(float x, float y, float z, float o)
Definition: Creature.cpp:3055
uint32 GetEntry() const
Definition: Object.h:109
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
float GetPositionX() const
Definition: Position.h:117
void StopMovingOnCurrentPos()
Definition: Unit.cpp:16863
Difficulty GetDifficulty() const
Definition: Map.h:442
void ShowKeeperGossip(uint8 type, Creature *cr, ObjectGuid guid=ObjectGuid::Empty)
Definition: instance_ulduar.cpp:436
void SpawnHodirChests(Difficulty diff, Creature *hodir)
Definition: instance_ulduar.cpp:218
ObjectGuid m_brannBronzebeardBaseCamp
Definition: instance_ulduar.cpp:124
uint32 GetData(uint32 type) const override
Definition: instance_ulduar.cpp:979
ObjectGuid m_keepersGossipGUID[4]
Definition: instance_ulduar.cpp:132

References DONE, Map::GetCreature(), GetData(), Map::GetDifficulty(), Object::GetEntry(), Object::GetGUID(), Creature::GetHomePosition(), Position::GetPositionX(), InstanceScript::instance, JUST_DIED, m_auiAssemblyGUIDs, m_auiEncounter, m_brannBronzebeardAlgGUID, m_brannBronzebeardBaseCamp, m_FreyaElder, m_keepersGossipGUID, m_MimironACUguid, m_MimironLeviathanMKIIguid, m_MimironVX001guid, m_RazorscaleHarpoonFireStateGUID, m_saraGUID, m_uiAlgalonGUID, m_uiAuriayaGUID, m_uiFreyaGUID, m_uiHodirGUID, m_uiIgnisGUID, m_uiKologarnGUID, m_uiLeviathanGUID, m_uiMimironGUID, m_uiRazorscaleGUID, m_uiThorimGUID, m_uiVezaxGUID, m_uiXT002GUID, m_uiYoggSaronGUID, m_yoggsaronBrainGUID, NPC_ALGALON, NPC_ALGALON_STALKER_ASTEROID_TARGET_01, NPC_ALGALON_STALKER_ASTEROID_TARGET_02, NPC_ALGALON_VOID_ZONE_VISUAL_STALKER, NPC_AURIAYA, NPC_BRAIN_OF_YOGG_SARON, NPC_BRANN_BASE_CAMP, NPC_BRANN_BRONZBEARD_ALG, NPC_BRUNDIR, NPC_ELDER_BRIGHTLEAF, NPC_ELDER_IRONBRANCH, NPC_ELDER_STONEBARK, NPC_FREYA, NPC_FREYA_GOSSIP, NPC_HARPOON_FIRE_STATE, NPC_HODIR, NPC_HODIR_GOSSIP, NPC_IGNIS, NPC_KOLOGARN, NPC_LEVIATHAN, NPC_MIMIRON, NPC_MIMIRON_ACU, NPC_MIMIRON_GOSSIP, NPC_MIMIRON_LEVIATHAN_MKII, NPC_MIMIRON_VX001, NPC_MOLGEIM, NPC_RAZORSCALE, NPC_SARA, NPC_STEELBREAKER, NPC_THORIM, NPC_THORIM_GOSSIP, NPC_UNLEASHED_DARK_MATTER, NPC_VEZAX, NPC_XT002, NPC_YOGGSARON, Creature::setDeathState(), Creature::SetDisableGravity(), Creature::SetPosition(), ShowKeeperGossip(), SpawnHodirChests(), Unit::StopMovingOnCurrentPos(), TYPE_FREYA, TYPE_HODIR, TYPE_KOLOGARN, TYPE_MIMIRON, and TYPE_THORIM.

◆ OnCreatureRemove()

void instance_ulduar::instance_ulduar_InstanceMapScript::OnCreatureRemove ( Creature creature)
inlineoverridevirtual

Reimplemented from InstanceScript.

420 {
421 switch (creature->GetEntry())
422 {
424 if (m_brannBronzebeardAlgGUID == creature->GetGUID())
426 break;
427 }
428 }
void Clear()
Definition: ObjectGuid.h:140

References ObjectGuid::Clear(), Object::GetEntry(), Object::GetGUID(), m_brannBronzebeardAlgGUID, and NPC_BRANN_BRONZBEARD_ALG.

◆ OnGameObjectCreate()

void instance_ulduar::instance_ulduar_InstanceMapScript::OnGameObjectCreate ( GameObject gameObject)
inlineoverridevirtual

Reimplemented from InstanceScript.

450 {
451 switch (gameObject->GetEntry())
452 {
453 // Flame Leviathan
455 {
456 if(m_RepairSGUID[0])
457 m_RepairSGUID[1] = gameObject->GetGUID();
458 else
459 m_RepairSGUID[0] = gameObject->GetGUID();
460 break;
461 }
463 m_lightningWalls[0] = gameObject->GetGUID();
465 break;
467 m_lightningWalls[1] = gameObject->GetGUID();
468 break;
471 m_leviathanVisualTowers[3][0] = gameObject->GetGUID();
472 break;
475 m_leviathanVisualTowers[0][0] = gameObject->GetGUID();
476 break;
479 m_leviathanVisualTowers[2][0] = gameObject->GetGUID();
480 break;
483 m_leviathanVisualTowers[1][0] = gameObject->GetGUID();
484 break;
487 m_leviathanVisualTowers[3][1] = gameObject->GetGUID();
488 break;
491 m_leviathanVisualTowers[0][1] = gameObject->GetGUID();
492 break;
495 m_leviathanVisualTowers[2][1] = gameObject->GetGUID();
496 break;
499 m_leviathanVisualTowers[1][1] = gameObject->GetGUID();
500 break;
504 m_leviathanDoorsGUID = gameObject->GetGUID();
505 break;
506 // XT-002, Kologarn, Assembly of Iron
507 case GO_XT002_DOORS:
508 m_xt002DoorsGUID = gameObject->GetGUID();
509 break;
511 KologarnDoorGUID = gameObject->GetGUID();
512 break;
515 break;
517 m_assemblyDoorsGUID = gameObject->GetGUID();
518 break;
520 m_archivumDoorsGUID = gameObject->GetGUID();
522 break;
523 // Thorim
526 break;
527 case GO_ARENA_LEVER:
529 break;
530 case GO_ARENA_FENCE:
532 break;
535 break;
538 break;
539 // Yogg-Saron
541 m_yoggsaronDoorsGUID = gameObject->GetGUID();
542 break;
543 case GO_KEEPERS_GATE:
545 {
546 instance->LoadGrid(1903.0f, 248.0f);
548 }
549
550 m_keepersgateGUID = gameObject->GetGUID();
551 break;
552 // Mimiron, Hodir, Vezax
554 gameObject->EnableCollision(false);
555 break;
557 m_MimironDoor[0] = gameObject->GetGUID();
558 break;
560 m_MimironDoor[1] = gameObject->GetGUID();
561 break;
563 m_MimironDoor[2] = gameObject->GetGUID();
564 break;
566 case GO_HODIR_DOOR:
567 if (GetData(TYPE_HODIR) == DONE)
568 if( gameObject->GetGoState() != GO_STATE_ACTIVE )
569 {
570 gameObject->SetLootState(GO_READY);
571 gameObject->UseDoorOrButton(0, false);
572 }
573 break;
574 case GO_VEZAX_DOOR:
575 if( GetData(TYPE_VEZAX) == DONE )
576 if( gameObject->GetGoState() != GO_STATE_ACTIVE )
577 {
578 gameObject->SetLootState(GO_READY);
579 gameObject->UseDoorOrButton(0, false);
580 }
581 break;
582 case GO_SNOW_MOUND:
583 gameObject->EnableCollision(false);
584 break;
585 case GO_MIMIRON_TRAM:
586 if (GetData(TYPE_MIMIRON) == DONE)
587 m_mimironTramUsed = true;
588 m_mimironTramGUID = gameObject->GetGUID();
589 break;
590 // Algalon the Observer
593 if (m_algalonTimer)
595 break;
597 m_algalonSigilDoorGUID[0] = gameObject->GetGUID();
598 if (m_algalonTimer)
599 gameObject->SetGoState(GO_STATE_ACTIVE);
600 break;
602 m_algalonSigilDoorGUID[1] = gameObject->GetGUID();
603 if (m_algalonTimer)
604 gameObject->SetGoState(GO_STATE_ACTIVE);
605 break;
607 m_algalonSigilDoorGUID[2] = gameObject->GetGUID();
608 break;
610 m_algalonFloorGUID[0] = gameObject->GetGUID();
611 break;
613 m_algalonFloorGUID[1] = gameObject->GetGUID();
614 break;
616 m_algalonUniverseGUID = gameObject->GetGUID();
617 break;
619 m_algalonTrapdoorGUID = gameObject->GetGUID();
620 break;
621 // Herbs
622 case 191019: // Adder's Tongue
623 case 190176: // Frost Lotus
624 case 190171: // Lichbloom
625 case 190170: // Talandra's Rose
626 case 189973: // Goldclover
627 if (GetData(TYPE_FREYA) == DONE)
628 gameObject->SetRespawnTime(7 * DAY);
629 break;
630 }
631 }
constexpr auto DAY
Definition: Common.h:58
@ GO_READY
Definition: GameObject.h:113
@ GO_STATE_READY
Definition: GameObjectData.h:691
@ GO_STATE_ACTIVE
Definition: GameObjectData.h:690
@ GO_STATE_ACTIVE_ALTERNATIVE
Definition: GameObjectData.h:692
@ GO_MIMIRON_ELEVATOR
Definition: ulduar.h:221
@ GO_ARCHIVUM_DOORS
Definition: ulduar.h:212
@ GO_KOLOGARN_BRIDGE
Definition: ulduar.h:214
@ GO_VEZAX_DOOR
Definition: ulduar.h:228
@ GO_THORIMS_TARGETTING_CRYSTAL
Definition: ulduar.h:204
@ GO_MIMIRONS_TARGETTING_CRYSTAL
Definition: ulduar.h:201
@ GO_FREYAS_GENERATOR
Definition: ulduar.h:206
@ GO_SECOND_COLOSSUS_DOORS
Definition: ulduar.h:237
@ GO_HODIRS_GENERATOR
Definition: ulduar.h:207
@ GO_CELESTIAL_PLANETARIUM_ACCESS_25
Definition: ulduar.h:244
@ GO_ARENA_FENCE
Definition: ulduar.h:235
@ GO_ARENA_LEVER_GATE
Definition: ulduar.h:233
@ GO_ASSEMBLY_DOORS
Definition: ulduar.h:213
@ GO_HODIR_FROZEN_DOOR
Definition: ulduar.h:225
@ GO_KEEPERS_GATE
Definition: ulduar.h:216
@ GO_THORIMS_GENERATOR
Definition: ulduar.h:208
@ GO_REPAIR_STATION_TRAP
Definition: ulduar.h:197
@ GO_MIMIRON_DOOR_3
Definition: ulduar.h:224
@ GO_MIMIRON_DOOR_1
Definition: ulduar.h:222
@ GO_ARENA_LEVER
Definition: ulduar.h:234
@ GO_HODIR_DOOR
Definition: ulduar.h:226
@ GO_HODIRS_TARGETTING_CRYSTAL
Definition: ulduar.h:203
@ GO_SNOW_MOUND
Definition: ulduar.h:230
@ GO_FIRST_COLOSSUS_DOORS
Definition: ulduar.h:236
@ GO_MIMIRONS_GENERATOR
Definition: ulduar.h:205
@ GO_LIGHTNING_WALL1
Definition: ulduar.h:199
@ GO_CELESTIAL_PLANETARIUM_ACCESS_10
Definition: ulduar.h:243
@ GO_LIGHTNING_WALL2
Definition: ulduar.h:200
@ GO_MIMIRON_TRAM
Definition: ulduar.h:218
@ GO_MIMIRON_DOOR_2
Definition: ulduar.h:223
@ GO_FREYAS_TARGETTING_CRYSTAL
Definition: ulduar.h:202
@ GO_FLAG_IN_USE
Definition: SharedDefines.h:1575
@ GO_FLAG_LOCKED
Definition: SharedDefines.h:1576
void SetGoState(GOState state)
Definition: GameObject.cpp:2467
void SetGameObjectFlag(GameObjectFlags flags)
Definition: GameObject.h:220
void UseDoorOrButton(uint32 time_to_restore=0, bool alternative=false, Unit *user=nullptr)
Definition: GameObject.cpp:1427
GOState GetGoState() const
Definition: GameObject.h:207
void EnableCollision(bool enable)
Definition: GameObject.cpp:2649
void SetLootState(LootState s, Unit *unit=nullptr)
Definition: GameObject.cpp:2432
void SetRespawnTime(int32 respawn)
Definition: GameObject.cpp:1301
void RemoveGameObjectFlag(GameObjectFlags flags)
Definition: GameObject.h:221
void LoadGrid(float x, float y)
Definition: Map.cpp:494
ObjectGuid m_assemblyDoorsGUID
Definition: instance_ulduar.cpp:90
void OpenIfDone(uint32 encounter, GameObject *go, GOState state)
Definition: instance_ulduar.cpp:430
ObjectGuid m_mimironTramGUID
Definition: instance_ulduar.cpp:130
ObjectGuid m_archivumDoorsGUID
Definition: instance_ulduar.cpp:91
ObjectGuid m_keepersgateGUID
Definition: instance_ulduar.cpp:131
ObjectGuid m_leviathanVisualTowers[4][2]
Definition: instance_ulduar.cpp:72

References DATA_THORIM_FENCE, DATA_THORIM_FIRST_DOORS, DATA_THORIM_LEVER, DATA_THORIM_LEVER_GATE, DATA_THORIM_SECOND_DOORS, DAY, DONE, GameObject::EnableCollision(), GetData(), Object::GetEntry(), GameObject::GetGoState(), Object::GetGUID(), GO_ARCHIVUM_DOORS, GO_ARENA_FENCE, GO_ARENA_LEVER, GO_ARENA_LEVER_GATE, GO_ASSEMBLY_DOORS, GO_CELESTIAL_PLANETARIUM_ACCESS_10, GO_CELESTIAL_PLANETARIUM_ACCESS_25, GO_DOODAD_UL_SIGILDOOR_01, GO_DOODAD_UL_SIGILDOOR_02, GO_DOODAD_UL_SIGILDOOR_03, GO_DOODAD_UL_ULDUAR_TRAPDOOR_03, GO_DOODAD_UL_UNIVERSEFLOOR_01, GO_DOODAD_UL_UNIVERSEFLOOR_02, GO_DOODAD_UL_UNIVERSEGLOBE01, GO_FIRST_COLOSSUS_DOORS, GO_FLAG_IN_USE, GO_FLAG_LOCKED, GO_FREYAS_GENERATOR, GO_FREYAS_TARGETTING_CRYSTAL, GO_HODIR_DOOR, GO_HODIR_FROZEN_DOOR, GO_HODIRS_GENERATOR, GO_HODIRS_TARGETTING_CRYSTAL, GO_KEEPERS_GATE, GO_KOLOGARN_BRIDGE, GO_KOLOGARN_DOORS, GO_LEVIATHAN_DOORS, GO_LIGHTNING_WALL1, GO_LIGHTNING_WALL2, GO_MIMIRON_DOOR_1, GO_MIMIRON_DOOR_2, GO_MIMIRON_DOOR_3, GO_MIMIRON_ELEVATOR, GO_MIMIRON_TRAM, GO_MIMIRONS_GENERATOR, GO_MIMIRONS_TARGETTING_CRYSTAL, GO_READY, GO_REPAIR_STATION_TRAP, GO_SECOND_COLOSSUS_DOORS, GO_SNOW_MOUND, GO_STATE_ACTIVE, GO_STATE_ACTIVE_ALTERNATIVE, GO_STATE_READY, GO_THORIMS_GENERATOR, GO_THORIMS_TARGETTING_CRYSTAL, GO_VEZAX_DOOR, GO_XT002_DOORS, GO_YOGG_SARON_DOORS, InstanceScript::instance, KologarnDoorGUID, Map::LoadGrid(), m_algalonFloorGUID, m_algalonSigilDoorGUID, m_algalonTimer, m_algalonTrapdoorGUID, m_algalonUniverseGUID, m_archivumDoorsGUID, m_assemblyDoorsGUID, m_keepersgateGUID, m_leviathanDoorsGUID, m_leviathanVisualTowers, m_lightningWalls, m_MimironDoor, m_mimironTramGUID, m_mimironTramUsed, m_RepairSGUID, m_thorimGameobjectsGUID, m_xt002DoorsGUID, m_yoggsaronDoorsGUID, OpenIfDone(), GameObject::RemoveGameObjectFlag(), GameObject::SetGameObjectFlag(), GameObject::SetGoState(), GameObject::SetLootState(), GameObject::SetRespawnTime(), TYPE_ASSEMBLY, TYPE_FREYA, TYPE_HODIR, TYPE_KOLOGARN, TYPE_LEVIATHAN, TYPE_MIMIRON, TYPE_THORIM, TYPE_VEZAX, and GameObject::UseDoorOrButton().

◆ OnPlayerEnter()

void instance_ulduar::instance_ulduar_InstanceMapScript::OnPlayerEnter ( Player player)
inlineoverridevirtual

Reimplemented from InstanceScript.

169 {
170 // mimiron tram:
171 instance->LoadGrid(2307.0f, 284.632f);
173 player->UpdateVisibilityOf(MimironTram);
174
176 {
178 if (!algalon)
179 return;
180
181 if (m_algalonTimer <= 60)
182 {
184 algalon->AI()->DoAction(ACTION_INIT_ALGALON);
185 }
186 else // if (m_algalonTimer = TIMER_ALGALON_TO_SUMMON)
187 {
189 algalon->SetImmuneToPC(false);
190 }
191 }
192 }
Position const AlgalonLandPos
Definition: ulduar.h:297
@ TIMER_ALGALON_SUMMONED
Definition: ulduar.h:285
@ ACTION_INIT_ALGALON
Definition: ulduar.h:280
@ EVENT_UPDATE_ALGALON_TIMER
Definition: ulduar.h:278
@ TIMER_ALGALON_TO_SUMMON
Definition: ulduar.h:284
void RescheduleEvent(uint32 eventId, uint32 time, uint32 groupId=0, uint32 phase=0)
Definition: EventMap.cpp:81
virtual void DoAction(int32)
Definition: UnitAI.h:201
CreatureAI * AI() const
Definition: Creature.h:135
Definition: TemporarySummon.h:40
Definition: GameObject.h:122
void UpdateVisibilityOf(WorldObject *target)
Definition: PlayerUpdates.cpp:1668
void SetImmuneToPC(bool apply, bool keepCombat=false)
Definition: Unit.cpp:13518
GameObject * GetGameObject(ObjectGuid const guid)
Definition: Map.cpp:3298
TempSummon * SummonCreature(uint32 entry, Position const &pos, SummonPropertiesEntry const *properties=nullptr, uint32 duration=0, WorldObject *summoner=nullptr, uint32 spellId=0, uint32 vehId=0, bool visibleBySummonerOnly=false)
Definition: Object.cpp:2129

References _events, ACTION_INIT_ALGALON, Creature::AI(), AlgalonLandPos, UnitAI::DoAction(), EVENT_UPDATE_ALGALON_TIMER, Map::GetGameObject(), InstanceScript::instance, Map::LoadGrid(), m_algalonTimer, m_mimironTramGUID, m_uiAlgalonGUID, NPC_ALGALON, EventMap::RescheduleEvent(), Unit::SetImmuneToPC(), Map::SummonCreature(), TIMER_ALGALON_SUMMONED, TIMER_ALGALON_TO_SUMMON, and Player::UpdateVisibilityOf().

◆ OnUnitDeath()

void instance_ulduar::instance_ulduar_InstanceMapScript::OnUnitDeath ( Unit unit)
inlineoverridevirtual

Reimplemented from ZoneScript.

1020 {
1021 // Feeds on Tears achievement
1022 if (unit->GetTypeId() == TYPEID_PLAYER)
1023 {
1026 algalon->AI()->DoAction(ACTION_FEEDS_ON_TEARS_FAILED);
1027 }
1028 else if (unit->GetTypeId() == TYPEID_UNIT && unit->GetAreaId() == 4656 /*Conservatory of Life*/)
1029 {
1031 {
1032 DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, 21597 /*CON-SPEED-ATORY_TIMED_CRITERIA*/);
1034 SaveToDB();
1035 }
1036 }
1037
1038 // achievement Champion/Conqueror of Ulduar
1039 if (unit->GetTypeId() == TYPEID_PLAYER)
1040 for (uint8 i = 0; i <= 12; ++i)
1041 {
1042 bool go = false;
1043 if (i == TYPE_LEVIATHAN)
1044 {
1046 if (c->IsInCombat())
1047 go = true;
1048 }
1049 else
1050 go = (m_auiEncounter[i] == IN_PROGRESS);
1051
1052 if (go && (C_of_Ulduar_MASK & (1 << i)) == 0)
1053 {
1054 C_of_Ulduar_MASK |= (1 << i);
1055 SaveToDB();
1056 }
1057 }
1058 }
@ TYPEID_UNIT
Definition: ObjectGuid.h:37
@ TYPEID_PLAYER
Definition: ObjectGuid.h:38
@ ACTION_FEEDS_ON_TEARS_FAILED
Definition: ulduar.h:279
@ ACHIEVEMENT_TIMED_TYPE_EVENT
Definition: DBCEnums.h:116
Seconds GetGameTime()
Definition: GameTime.cpp:38
TypeID GetTypeId() const
Definition: Object.h:121
uint32 GetAreaId() const
Definition: Object.cpp:3083
void SaveToDB()
Definition: InstanceScript.cpp:41
void DoStartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
Definition: InstanceScript.cpp:565

References ACHIEVEMENT_TIMED_TYPE_EVENT, ACTION_FEEDS_ON_TEARS_FAILED, C_of_Ulduar_MASK, DAY, InstanceScript::DoStartTimedAchievement(), WorldObject::GetAreaId(), Map::GetCreature(), GetData(), GameTime::GetGameTime(), Object::GetTypeId(), IN_PROGRESS, InstanceScript::instance, m_auiEncounter, m_conspeedatoryAttempt, m_uiAlgalonGUID, m_uiLeviathanGUID, InstanceScript::SaveToDB(), TYPE_ALGALON, TYPE_LEVIATHAN, TYPEID_PLAYER, and TYPEID_UNIT.

◆ OpenIfDone()

void instance_ulduar::instance_ulduar_InstanceMapScript::OpenIfDone ( uint32  encounter,
GameObject go,
GOState  state 
)
inline
431 {
432 if (GetData(encounter) == DONE)
433 go->SetGoState(state);
434 }

References DONE, GetData(), and GameObject::SetGoState().

Referenced by OnGameObjectCreate().

◆ ProcessEvent()

void instance_ulduar::instance_ulduar_InstanceMapScript::ProcessEvent ( WorldObject ,
uint32  eventId 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

212 {
213 // destory towers
215 SetData(eventId, 0);
216 }
void SetData(uint32 type, uint32 data) override
Definition: instance_ulduar.cpp:658

References EVENT_TOWER_OF_FLAMES_DESTROYED, EVENT_TOWER_OF_LIFE_DESTROYED, and SetData().

Referenced by SetData().

◆ ReadSaveDataMore()

void instance_ulduar::instance_ulduar_InstanceMapScript::ReadSaveDataMore ( std::istringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

1061 {
1062 data >> m_auiEncounter[0];
1063 data >> m_auiEncounter[1];
1064 data >> m_auiEncounter[2];
1065 data >> m_auiEncounter[3];
1066 data >> m_auiEncounter[4];
1067 data >> m_auiEncounter[5];
1068 data >> m_auiEncounter[6];
1069 data >> m_auiEncounter[7];
1070 data >> m_auiEncounter[8];
1071 data >> m_auiEncounter[9];
1072 data >> m_auiEncounter[10];
1073 data >> m_auiEncounter[11];
1074 data >> m_auiEncounter[12];
1075 data >> m_auiEncounter[13];
1076 data >> m_auiEncounter[14];
1077 data >> m_conspeedatoryAttempt;
1078 data >> m_unbrokenAchievement;
1079 data >> m_algalonTimer;
1080
1083
1085 {
1088 }
1089
1090 data >> C_of_Ulduar_MASK;
1091 data >> m_mageBarrier;
1092
1093 for (uint8 i = 0; i < (MAX_ENCOUNTER - 1); ++i)
1094 {
1095 if (m_auiEncounter[i] == IN_PROGRESS)
1096 {
1098 }
1099 }
1100 }
@ NOT_STARTED
Definition: InstanceScript.h:56
@ WORLD_STATE_ALGALON_DESPAWN_TIMER
Definition: ulduar.h:275
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
Definition: InstanceScript.cpp:519

References C_of_Ulduar_MASK, DONE, InstanceScript::DoUpdateWorldState(), GetData(), IN_PROGRESS, m_algalonTimer, m_auiEncounter, m_conspeedatoryAttempt, m_mageBarrier, m_unbrokenAchievement, MAX_ENCOUNTER, NOT_STARTED, TIMER_ALGALON_SUMMONED, TIMER_ALGALON_TO_SUMMON, TYPE_ALGALON, WORLD_STATE_ALGALON_DESPAWN_TIMER, and WORLD_STATE_ALGALON_TIMER_ENABLED.

◆ setChestsLootable()

void instance_ulduar::instance_ulduar_InstanceMapScript::setChestsLootable ( uint32  boss)
inline
634 {
635 if (boss)
636 {
637 switch (boss)
638 {
639 case TYPE_HODIR:
640 if (hmHodir)
641 {
643 {
644 go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
645 go->SetLootRecipient(instance);
646 }
647 }
649 {
650 go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
651 go->SetLootRecipient(instance);
652 }
653 break;
654 }
655 }
656 }
@ GO_FLAG_NOT_SELECTABLE
Definition: SharedDefines.h:1579

References Map::GetGameObject(), GO_FLAG_NOT_SELECTABLE, hmHodir, InstanceScript::instance, m_hodirHardmodeChest, m_hodirNormalChest, and TYPE_HODIR.

Referenced by SetData().

◆ SetData()

void instance_ulduar::instance_ulduar_InstanceMapScript::SetData ( uint32  type,
uint32  data 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

659 {
660 switch(type)
661 {
662 case TYPE_LEVIATHAN:
663 m_auiEncounter[type] = data;
664 if (data == DONE)
665 {
666 Map::PlayerList const& pList = instance->GetPlayers();
667 for (Map::PlayerList::const_iterator itr = pList.begin(); itr != pList.end(); ++itr)
668 {
669 if (Creature* vehicleCreature = itr->GetSource()->GetVehicleCreatureBase())
670 {
671 vehicleCreature->DespawnOrUnsummon();
672 }
673 }
674 }
675 break;
676 case TYPE_IGNIS:
677 case TYPE_RAZORSCALE:
678 case TYPE_XT002:
679 case TYPE_AURIAYA:
680 case TYPE_VEZAX:
681 case TYPE_YOGGSARON:
682 case TYPE_KOLOGARN:
683 m_auiEncounter[type] = data;
684 break;
685 case TYPE_ASSEMBLY:
687 go->SetGoState(data == IN_PROGRESS ? GO_STATE_READY : GO_STATE_ACTIVE);
689 go->SetGoState(data == DONE ? GO_STATE_ACTIVE : GO_STATE_READY);
690
691 m_auiEncounter[type] = data;
692 break;
693 case TYPE_MIMIRON:
694 case TYPE_HODIR:
695 case TYPE_THORIM:
696 case TYPE_FREYA:
697 m_auiEncounter[type] = data;
698 ShowKeeperGossip(type, nullptr, m_keepersGossipGUID[type - TYPE_FREYA]);
700 {
702 go->RemoveGameObjectFlag(GO_FLAG_LOCKED);
703 }
704 if (type == TYPE_MIMIRON && data == IN_PROGRESS) // after reaching him without tram and starting the fight
705 m_mimironTramUsed = true;
706 if (GetData(TYPE_HODIR) == DONE)
708 break;
711 {
712 hmHodir = false;
713 go->Delete();
715 }
716 break;
717 case TYPE_WATCHERS:
718 m_auiEncounter[type] |= 1 << data;
719 break;
720
722 m_mageBarrier = data;
723 break;
724
729 {
730 instance->LoadGrid(364.0f, -16.0f); //make sure leviathan is loaded
732 for (uint8 i = 0; i < 2; ++i)
733 {
735 {
736 gameObject->SetGoState(GO_STATE_ACTIVE);
737 }
738 }
739 return;
740 }
741
744 return;
747 SaveToDB();
748 return;
752 m_algalonTimer = 60;
754 SaveToDB();
755 return;
761 SaveToDB();
762 return;
763 case TYPE_ALGALON:
764 m_auiEncounter[type] = data;
766 {
767 go->SetGoState(data != IN_PROGRESS ? GO_STATE_ACTIVE : GO_STATE_READY);
768 go->EnableCollision(false);
769 }
771 {
772 go->SetGoState(data != IN_PROGRESS ? GO_STATE_ACTIVE : GO_STATE_READY);
773 go->EnableCollision(false);
774 }
776 {
777 go->SetGoState(data == IN_PROGRESS ? GO_STATE_ACTIVE : GO_STATE_READY);
778 go->EnableCollision(false);
779 }
781 {
782 go->SetGoState(data == IN_PROGRESS ? GO_STATE_ACTIVE : GO_STATE_READY);
783 go->EnableCollision(false);
784 }
786 {
787 go->SetGoState(data == IN_PROGRESS ? GO_STATE_ACTIVE : GO_STATE_READY);
788 go->EnableCollision(false);
789 }
790 break;
791
792 // Achievement
796 return;
797 case DATA_CALL_TRAM:
799 if (StaticTransport* t = MimironTram->ToStaticTransport())
800 {
801 if (data == 0 && t->GetGoState() == GO_STATE_ACTIVE && t->GetPathProgress() == t->GetPauseTime())
802 MimironTram->SetGoState(GO_STATE_READY);
803 if (data == 1 && t->GetGoState() == GO_STATE_READY && t->GetPathProgress() == 0)
804 MimironTram->SetGoState(GO_STATE_ACTIVE);
805 }
806 break;
809 {
810 cr->TextEmote("Go to your vehicles!", nullptr, true);
811 }
812 break;
818 break;
819 }
820
821 // take care of herbs
822 if (type == TYPE_FREYA && data == DONE)
823 {
824 std::list<GameObject*> goList;
826 {
827 freya->GetGameObjectListWithEntryInGrid(goList, 191019 /*Adder's Tongue*/, 333.0f);
828 freya->GetGameObjectListWithEntryInGrid(goList, 190176 /*Frost Lotus*/, 333.0f);
829 freya->GetGameObjectListWithEntryInGrid(goList, 190171 /*Lichbloom*/, 333.0f);
830 freya->GetGameObjectListWithEntryInGrid(goList, 190170 /*Talandra's Rose*/, 333.0f);
831 freya->GetGameObjectListWithEntryInGrid(goList, 189973 /*Goldclover*/, 333.0f);
832
833 for (std::list<GameObject*>::const_iterator itr = goList.begin(); itr != goList.end(); ++itr)
834 (*itr)->SetRespawnTime(7 * DAY);
835 }
836 }
837
838 if (data == DONE || type == TYPE_LEVIATHAN || type == TYPE_WATCHERS)
839 SaveToDB();
840
841 if (type > TYPE_LEVIATHAN && type < TYPE_WATCHERS && data == IN_PROGRESS)
842 {
843 Map::PlayerList const& pList = instance->GetPlayers();
844 for (Map::PlayerList::const_iterator itr = pList.begin(); itr != pList.end(); ++itr)
845 {
846 if (Creature* vehicleCreature = itr->GetSource()->GetVehicleCreatureBase())
847 {
848 vehicleCreature->DespawnOrUnsummon();
849 }
850 }
851 }
852 }
@ SPELL_DWARFAGEDDON
Definition: ulduar.h:293
@ TIMER_ALGALON_DEFEATED
Definition: ulduar.h:283
@ DATA_BRANN_MEMOTESAY
Definition: ulduar.h:105
@ DATA_DESPAWN_ALGALON
Definition: ulduar.h:94
@ DATA_BRANN_EASY_MODE
Definition: ulduar.h:106
@ DATA_ALGALON_DEFEATED
Definition: ulduar.h:95
@ DATA_VEHICLE_SPAWN
Definition: ulduar.h:57
@ DATA_DWARFAGEDDON
Definition: ulduar.h:98
@ DATA_ALGALON_SUMMON_STATE
Definition: ulduar.h:93
@ TYPE_HODIR_HM_FAIL
Definition: ulduar.h:50
@ ACHIEVEMENT_TIMED_TYPE_SPELL_TARGET
Definition: DBCEnums.h:119
@ ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET
Definition: DBCEnums.h:148
Definition: LinkedList.h:139
void CancelEvent(uint32 eventId)
Definition: EventMap.cpp:190
StaticTransport * ToStaticTransport()
Definition: GameObject.h:328
Definition: Transport.h:112
Creature * GetVehicleCreatureBase() const
Definition: Unit.cpp:18915
void DoUpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
Definition: InstanceScript.cpp:554
PlayerList const & GetPlayers() const
Definition: Map.h:484
Definition: MapRefMgr.h:26
iterator begin()
Definition: MapRefMgr.h:36
iterator end()
Definition: MapRefMgr.h:37
void ProcessEvent(WorldObject *, uint32 eventId) override
Definition: instance_ulduar.cpp:211
void SpawnLeviathanEncounterVehicles(uint8 mode)
Definition: instance_ulduar.cpp:1232
void setChestsLootable(uint32 boss)
Definition: instance_ulduar.cpp:633
ObjectGuid GetGuidData(uint32 data) const override
Definition: instance_ulduar.cpp:854

References _events, ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, ACHIEVEMENT_TIMED_TYPE_SPELL_TARGET, MapRefMgr::begin(), EventMap::CancelEvent(), ObjectGuid::Clear(), DATA_ALGALON_DEFEATED, DATA_ALGALON_SUMMON_STATE, DATA_BRANN_EASY_MODE, DATA_BRANN_MEMOTESAY, DATA_CALL_TRAM, DATA_DESPAWN_ALGALON, DATA_DWARFAGEDDON, DATA_MAGE_BARRIER, DATA_UNBROKEN_ACHIEVEMENT, DATA_VEHICLE_SPAWN, DAY, DONE, InstanceScript::DoStartTimedAchievement(), InstanceScript::DoUpdateAchievementCriteria(), InstanceScript::DoUpdateWorldState(), MapRefMgr::end(), EVENT_TOWER_OF_FLAMES_DESTROYED, EVENT_TOWER_OF_FROST_DESTROYED, EVENT_TOWER_OF_LIFE_DESTROYED, EVENT_TOWER_OF_STORM_DESTROYED, EVENT_UPDATE_ALGALON_TIMER, Map::GetCreature(), GetData(), Map::GetGameObject(), GetGuidData(), Map::GetPlayers(), Unit::GetVehicleCreatureBase(), GO_DOODAD_UL_SIGILDOOR_03, GO_DOODAD_UL_ULDUAR_TRAPDOOR_03, GO_DOODAD_UL_UNIVERSEFLOOR_01, GO_DOODAD_UL_UNIVERSEFLOOR_02, GO_DOODAD_UL_UNIVERSEGLOBE01, GO_FLAG_LOCKED, GO_STATE_ACTIVE, GO_STATE_READY, hmHodir, IN_PROGRESS, InstanceScript::instance, Map::LoadGrid(), m_algalonTimer, m_archivumDoorsGUID, m_assemblyDoorsGUID, m_auiEncounter, m_brannBronzebeardBaseCamp, m_hodirHardmodeChest, m_keepersgateGUID, m_keepersGossipGUID, m_leviathanTowers, m_leviathanVisualTowers, m_mageBarrier, m_mimironTramGUID, m_mimironTramUsed, m_unbrokenAchievement, ProcessEvent(), EventMap::RescheduleEvent(), InstanceScript::SaveToDB(), setChestsLootable(), ShowKeeperGossip(), SpawnLeviathanEncounterVehicles(), SPELL_DWARFAGEDDON, TIMER_ALGALON_DEFEATED, TIMER_ALGALON_SUMMONED, GameObject::ToStaticTransport(), TYPE_ALGALON, TYPE_ASSEMBLY, TYPE_AURIAYA, TYPE_FREYA, TYPE_HODIR, TYPE_HODIR_HM_FAIL, TYPE_IGNIS, TYPE_KOLOGARN, TYPE_LEVIATHAN, TYPE_MIMIRON, TYPE_RAZORSCALE, TYPE_THORIM, TYPE_VEZAX, TYPE_WATCHERS, TYPE_XT002, TYPE_YOGGSARON, WORLD_STATE_ALGALON_DESPAWN_TIMER, and WORLD_STATE_ALGALON_TIMER_ENABLED.

Referenced by ProcessEvent(), and Update().

◆ ShowKeeperGossip()

void instance_ulduar::instance_ulduar_InstanceMapScript::ShowKeeperGossip ( uint8  type,
Creature cr,
ObjectGuid  guid = ObjectGuid::Empty 
)
inline
437 {
438 if (!cr)
439 {
440 cr = instance->GetCreature(guid);
441 if (!cr)
442 return;
443 }
444
445 bool on = (GetData(type) == DONE && !(GetData(TYPE_WATCHERS) & (1 << (type - TYPE_FREYA))));
446 cr->SetVisible(on);
447 }
void SetVisible(bool x)
Definition: Unit.cpp:14129

References DONE, Map::GetCreature(), GetData(), InstanceScript::instance, Unit::SetVisible(), TYPE_FREYA, and TYPE_WATCHERS.

Referenced by OnCreatureCreate(), and SetData().

◆ SpawnHodirChests()

void instance_ulduar::instance_ulduar_InstanceMapScript::SpawnHodirChests ( Difficulty  diff,
Creature hodir 
)
inline
219 {
220 switch (diff)
221 {
222 case RAID_DIFFICULTY_10MAN_NORMAL: // 10 man chest
223 {
225 {
226 if (GameObject* go = hodir->SummonGameObject(
231 normalChestPosition.GetOrientation(), 0, 0, 0, 0, 0))
232 {
233 m_hodirNormalChest = go->GetGUID();
234 go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
235 }
236 }
238 {
239 if (GameObject* go = hodir->SummonGameObject(
244 hardChestPosition.GetOrientation(), 0, 0, 0, 0, 0))
245 {
246 m_hodirHardmodeChest = go->GetGUID();
247 go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
248 hmHodir = true;
249 }
250 }
251 break;
252 }
253 case RAID_DIFFICULTY_25MAN_NORMAL: // 25 man chest
254 {
256 {
257 if (GameObject* go = hodir->SummonGameObject(
262 normalChestPosition.GetOrientation(), 0, 0, 0, 0, 0))
263 {
264 m_hodirNormalChest = go->GetGUID();
265 go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
266 }
267 }
269 {
270 if (GameObject* go = hodir->SummonGameObject(
275 hardChestPosition.GetOrientation(), 0, 0, 0, 0, 0))
276 {
277 m_hodirHardmodeChest = go->GetGUID();
278 go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
279 hmHodir = true;
280 }
281 }
282 break;
283 }
284 default:
285 break;
286 }
287 }
@ GO_HODIR_CHEST_NORMAL_HERO
Definition: ulduar.h:184
@ GO_HODIR_CHEST_HARD_HERO
Definition: ulduar.h:186
@ RAID_DIFFICULTY_10MAN_NORMAL
Definition: DBCEnums.h:278
@ RAID_DIFFICULTY_25MAN_NORMAL
Definition: DBCEnums.h:279
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:2332
float GetPositionZ() const
Definition: Position.h:119
float GetOrientation() const
Definition: Position.h:120
float GetPositionY() const
Definition: Position.h:118
Position hardChestPosition
Definition: instance_ulduar.cpp:101
Position normalChestPosition
Definition: instance_ulduar.cpp:100

References Position::GetOrientation(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), GO_FLAG_NOT_SELECTABLE, GO_HODIR_CHEST_HARD, GO_HODIR_CHEST_HARD_HERO, GO_HODIR_CHEST_NORMAL, GO_HODIR_CHEST_NORMAL_HERO, hardChestPosition, hmHodir, m_hodirHardmodeChest, m_hodirNormalChest, normalChestPosition, RAID_DIFFICULTY_10MAN_NORMAL, RAID_DIFFICULTY_25MAN_NORMAL, and WorldObject::SummonGameObject().

Referenced by OnCreatureCreate().

◆ SpawnLeviathanEncounterVehicles()

void instance_ulduar::instance_ulduar_InstanceMapScript::SpawnLeviathanEncounterVehicles ( uint8  mode)
1233{
1234 if (!_leviathanVehicles.empty())
1235 {
1236 for (ObjectGuid const& guid : _leviathanVehicles)
1237 {
1238 if (Creature* cr = instance->GetCreature(guid))
1239 {
1240 cr->DespawnOrUnsummon();
1241 }
1242 }
1243
1244 _leviathanVehicles.clear();
1245 }
1246
1247 if (mode < VEHICLE_POS_NONE)
1248 {
1249 for (uint8 i = 0; i < (instance->Is25ManRaid() ? 5 : 2); ++i)
1250 {
1252 {
1253 _leviathanVehicles.push_back(veh->GetGUID());
1254 }
1256 {
1257 _leviathanVehicles.push_back(veh->GetGUID());
1258 }
1260 {
1261 _leviathanVehicles.push_back(veh->GetGUID());
1262 }
1263 }
1264 }
1265}
const Position vehiclePositions[30]
Definition: instance_ulduar.cpp:1190
@ VEHICLE_POS_NONE
Definition: ulduar.h:261
@ NPC_SALVAGED_SIEGE_ENGINE
Definition: ulduar.h:155
@ NPC_VEHICLE_CHOPPER
Definition: ulduar.h:157
@ NPC_SALVAGED_DEMOLISHER
Definition: ulduar.h:158
Definition: ObjectGuid.h:120

References _leviathanVehicles, Map::GetCreature(), InstanceScript::instance, Map::Is25ManRaid(), NPC_SALVAGED_DEMOLISHER, NPC_SALVAGED_SIEGE_ENGINE, NPC_VEHICLE_CHOPPER, Map::SummonCreature(), VEHICLE_POS_NONE, and vehiclePositions.

Referenced by SetData().

◆ Update()

void instance_ulduar::instance_ulduar_InstanceMapScript::Update ( uint32  diff)
inlineoverridevirtual

Reimplemented from InstanceScript.

1112 {
1113 if (_events.Empty())
1114 return;
1115
1116 _events.Update(diff);
1117 switch (_events.ExecuteEvent())
1118 {
1121 {
1122 return;
1123 }
1124
1125 SaveToDB();
1127 if (m_algalonTimer)
1128 {
1129 _events.Repeat(1min);
1130 return;
1131 }
1132
1135 algalon->AI()->DoAction(ACTION_DESPAWN_ALGALON);
1136 }
1137 }
@ ACTION_DESPAWN_ALGALON
Definition: ulduar.h:281
uint32 ExecuteEvent()
Definition: EventMap.cpp:114
void Update(uint32 time)
Definition: EventMap.h:54
bool Empty() const
Definition: EventMap.h:96
void Repeat(Milliseconds time)
Definition: EventMap.cpp:104

References _events, ACTION_DESPAWN_ALGALON, DATA_ALGALON_DEFEATED, InstanceScript::DoUpdateWorldState(), EventMap::Empty(), EVENT_UPDATE_ALGALON_TIMER, EventMap::ExecuteEvent(), Map::GetCreature(), InstanceScript::instance, m_algalonTimer, m_uiAlgalonGUID, EventMap::Repeat(), InstanceScript::SaveToDB(), SetData(), TIMER_ALGALON_DEFEATED, EventMap::Update(), and WORLD_STATE_ALGALON_DESPAWN_TIMER.

◆ WriteSaveDataMore()

void instance_ulduar::instance_ulduar_InstanceMapScript::WriteSaveDataMore ( std::ostringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

1103 {
1104 data << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << m_auiEncounter[3] << ' '
1105 << m_auiEncounter[4] << ' ' << m_auiEncounter[5] << ' ' << m_auiEncounter[6] << ' ' << m_auiEncounter[7] << ' '
1106 << m_auiEncounter[8] << ' ' << m_auiEncounter[9] << ' ' << m_auiEncounter[10] << ' ' << m_auiEncounter[11] << ' '
1107 << m_auiEncounter[12] << ' ' << m_auiEncounter[13] << ' ' << m_auiEncounter[14] << ' ' << m_conspeedatoryAttempt << ' '
1108 << m_unbrokenAchievement << ' ' << m_algalonTimer << ' ' << C_of_Ulduar_MASK << ' ' << m_mageBarrier;
1109 }

References C_of_Ulduar_MASK, m_algalonTimer, m_auiEncounter, m_conspeedatoryAttempt, m_mageBarrier, and m_unbrokenAchievement.

Member Data Documentation

◆ _events

EventMap instance_ulduar::instance_ulduar_InstanceMapScript::_events

◆ _leviathanVehicles

GuidList instance_ulduar::instance_ulduar_InstanceMapScript::_leviathanVehicles

◆ C_of_Ulduar_MASK

uint32 instance_ulduar::instance_ulduar_InstanceMapScript::C_of_Ulduar_MASK

◆ hardChestPosition

Position instance_ulduar::instance_ulduar_InstanceMapScript::hardChestPosition = { 2035.94600f, -202.084885f, 432.686859f, 3.164077f }

Referenced by SpawnHodirChests().

◆ hmHodir

bool instance_ulduar::instance_ulduar_InstanceMapScript::hmHodir

◆ KologarnDoorGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::KologarnDoorGUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ m_algalonFloorGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_algalonFloorGUID[2]

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ m_algalonSigilDoorGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_algalonSigilDoorGUID[3]

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ m_algalonTimer

uint32 instance_ulduar::instance_ulduar_InstanceMapScript::m_algalonTimer

◆ m_algalonTrapdoorGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_algalonTrapdoorGUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ m_algalonUniverseGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_algalonUniverseGUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ m_archivumDoorsGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_archivumDoorsGUID

Referenced by OnGameObjectCreate(), and SetData().

◆ m_assemblyDoorsGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_assemblyDoorsGUID

Referenced by OnGameObjectCreate(), and SetData().

◆ m_auiAssemblyGUIDs

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_auiAssemblyGUIDs[3]

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_auiEncounter

uint32 instance_ulduar::instance_ulduar_InstanceMapScript::m_auiEncounter[MAX_ENCOUNTER]

◆ m_brannBronzebeardAlgGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_brannBronzebeardAlgGUID

◆ m_brannBronzebeardBaseCamp

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_brannBronzebeardBaseCamp

Referenced by OnCreatureCreate(), and SetData().

◆ m_conspeedatoryAttempt

uint32 instance_ulduar::instance_ulduar_InstanceMapScript::m_conspeedatoryAttempt

◆ m_difficulty

int instance_ulduar::instance_ulduar_InstanceMapScript::m_difficulty

◆ m_FreyaElder

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_FreyaElder[3]

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_hodirHardmodeChest

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_hodirHardmodeChest

◆ m_hodirNormalChest

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_hodirNormalChest

◆ m_keepersgateGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_keepersgateGUID

Referenced by OnGameObjectCreate(), and SetData().

◆ m_keepersGossipGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_keepersGossipGUID[4]

Referenced by OnCreatureCreate(), and SetData().

◆ m_leviathanDoorsGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_leviathanDoorsGUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ m_leviathanTowers

bool instance_ulduar::instance_ulduar_InstanceMapScript::m_leviathanTowers[4]

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

◆ m_leviathanVisualTowers

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_leviathanVisualTowers[4][2]

Referenced by OnGameObjectCreate(), and SetData().

◆ m_lightningWalls

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_lightningWalls[2]

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ m_mageBarrier

uint32 instance_ulduar::instance_ulduar_InstanceMapScript::m_mageBarrier

◆ m_MimironACUguid

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_MimironACUguid

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_MimironDoor

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_MimironDoor[3]

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ m_MimironLeviathanMKIIguid

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_MimironLeviathanMKIIguid

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_mimironTramGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_mimironTramGUID

◆ m_mimironTramUsed

bool instance_ulduar::instance_ulduar_InstanceMapScript::m_mimironTramUsed

◆ m_MimironVX001guid

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_MimironVX001guid

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_RazorscaleHarpoonFireStateGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_RazorscaleHarpoonFireStateGUID[4]

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_RepairSGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_RepairSGUID[2]

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ m_saraGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_saraGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_thorimGameobjectsGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_thorimGameobjectsGUID[5]

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ m_uiAlgalonGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_uiAlgalonGUID

◆ m_uiAuriayaGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_uiAuriayaGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_uiFreyaGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_uiFreyaGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_uiHodirGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_uiHodirGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_uiIgnisGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_uiIgnisGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_uiKologarnGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_uiKologarnGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_uiLeviathanGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_uiLeviathanGUID

◆ m_uiMimironGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_uiMimironGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_uiRazorscaleGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_uiRazorscaleGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_uiThorimGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_uiThorimGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_uiVezaxGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_uiVezaxGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_uiXT002GUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_uiXT002GUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_uiYoggSaronGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_uiYoggSaronGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_unbrokenAchievement

uint32 instance_ulduar::instance_ulduar_InstanceMapScript::m_unbrokenAchievement

◆ m_xt002DoorsGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_xt002DoorsGUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ m_yoggsaronBrainGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_yoggsaronBrainGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ m_yoggsaronDoorsGUID

ObjectGuid instance_ulduar::instance_ulduar_InstanceMapScript::m_yoggsaronDoorsGUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ normalChestPosition

Position instance_ulduar::instance_ulduar_InstanceMapScript::normalChestPosition = { 1967.152588f, -204.188461f, 432.686951f, 5.50957f }

Referenced by SpawnHodirChests().