Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
instance_halls_of_origination.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#include "ObjectMgr.h"
7#include "ScriptMgr.h"
8#include "InstanceScript.h"
9#include "ScriptedCreature.h"
10#include "Map.h"
11#include "PoolMgr.h"
12#include "AccountMgr.h"
14#include "Player.h"
15#include "WorldPacket.h"
16#include "WorldSession.h"
17
34
36{
37 public:
39
41 {
57
59 {
60 switch (go->GetEntry())
61 {
63 AnhuursBridgeGUID = go->GetGUID();
74 AddDoor(go, true);
75 break;
76 case GO_ANHUURS_DOOR:
77 AnhuursDoorGUID = go->GetGUID();
78 AddDoor(go, true);
79 break;
81 AnhuurRightBeaconGUID = go->GetGUID();
82 break;
84 AnhuurLeftBeaconGUID = go->GetGUID();
85 break;
86 case GO_SUN_MIRROR:
87 SunMirrorGUID = go->GetGUID();
88 break;
90 AnraphetDoorGUID = go->GetGUID();
91 break;
92 }
93 }
94
115
117 {
118 switch (creature->GetEntry())
119 {
121 TempleGuardianAnhuurGUID = creature->GetGUID();
122 break;
124 BrannBronzebeardGUID = creature->GetGUID();
125 break;
126 case BOSS_ANRAPHET:
127 AnraphetGUID = creature->GetGUID();
128 break;
129 }
130 }
131
133 {
134 switch (data)
135 {
137 return _deadElementals;
138 default:
139 break;
140 }
141
142 return 0;
143 }
144
146 {
147 switch (index)
148 {
150 return AnhuursBridgeGUID;
151 case DATA_ANHUUR_DOOR:
152 return AnhuursDoorGUID;
157 case DATA_ANHUUR_GUID:
162 return AnraphetGUID;
163 }
164
165 return 0;
166 }
167
169 {
170 _deadElementals += inc;
171 if (_deadElementals == 4)
172 {
173 if (GameObject* mirror = instance->GetGameObject(SunMirrorGUID))
174 mirror->SetGoState(GOState::GO_STATE_ACTIVE);
175 if (GameObject* door = instance->GetGameObject(AnraphetDoorGUID))
176 door->SetGoState(GOState::GO_STATE_ACTIVE);
177 }
178 }
179
181 {
182 Creature* creature = unit->ToCreature();
183 if (!creature)
184 return;
185
186 switch (creature->GetEntry())
187 {
188 case NPC_FIRE_WARDEN:
189 case NPC_EARTH_WARDEN:
190 case NPC_WATER_WARDEN:
191 case NPC_AIR_WARDEN:
192 uint32 data = creature->GetEntry() - WARDEN_ENTRY_DATA_DELTA;
193 SetBossState(data, IN_PROGRESS); // Needs to be set to IN_PROGRESS or else the gameobjects state won't be updated
194 SetBossState(data, DONE);
196 if (Creature* brann = instance->GetCreature(BrannBronzebeardGUID))
197 brann->AI()->DoAction(ACTION_ELEMENTAL_DIED);
198 break;
199 }
200 }
201
202 std::string GetSaveData() OVERRIDE
203 {
205
206 std::ostringstream saveStream;
207 saveStream << "H O " << GetBossSaveData() << _deadElementals;
208
210 return saveStream.str();
211 }
212
213 void Load(const char* str) OVERRIDE
214 {
215 if (!str)
216 {
218 return;
219 }
220
222
223 char dataHead1, dataHead2;
224
225 std::istringstream loadStream(str);
226 loadStream >> dataHead1 >> dataHead2;
227
228 if (dataHead1 == 'H' && dataHead2 == 'O')
229 {
230 for (uint32 i = 0; i < EncounterCount; ++i)
231 {
232 uint32 tmpState;
233 loadStream >> tmpState;
234 if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
235 tmpState = NOT_STARTED;
236 SetBossState(i, EncounterState(tmpState));
237 }
238 uint32 tmp;
239 loadStream >> tmp;
241 }
242 else
244
246 }
247
248 protected:
259 };
260
265};
266
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
std::uint64_t uint64
Definition Define.h:76
@ GO_STATE_ACTIVE
Definition GameObject.h:576
#define OUT_LOAD_INST_DATA_FAIL
EncounterState
@ IN_PROGRESS
@ DONE
@ SPECIAL
@ NOT_STARTED
#define OUT_SAVE_INST_DATA_COMPLETE
#define OUT_LOAD_INST_DATA_COMPLETE
#define OUT_SAVE_INST_DATA
#define OUT_LOAD_INST_DATA(a)
@ DOOR_TYPE_ROOM
@ DOOR_TYPE_PASSAGE
@ BOUNDARY_NONE
uint32 const EncounterCount
InstanceMapScript(const char *name, uint32 mapId)
InstanceScript(Map *map)
void SetBossNumber(uint32 number)
virtual bool SetBossState(uint32 id, EncounterState state)
std::string GetBossSaveData()
void AddDoor(GameObject *door, bool add)
void LoadDoorData(DoorData const *data)
uint32 GetEntry() const
Definition Object.h:125
Creature * ToCreature()
Definition Object.h:207
Definition Unit.h:1367
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
@ GO_ANHUURS_RIGHT_BEACON
@ GO_ANHUURS_BRIDGE
@ GO_DOODAD_ULDUM_LASERBEAMS01
@ GO_DOODAD_ULDUM_LIGHTMACHINE_03
@ GO_DOODAD_ULDUM_ELEVATOR_COL01
@ GO_DOODAD_ULDUM_LIGHTMACHINE_01
@ GO_ANHUURS_DOOR
@ GO_SUN_MIRROR
@ GO_DOODAD_ULDUM_LASERBEAMS_01
@ GO_ANRAPHET_DOOR
@ GO_DOODAD_ULDUM_LASERBEAMS_03
@ GO_ANHUURS_LEFT_BEACON
@ GO_VAULT_OF_LIGHTS_DOOR
@ GO_DOODAD_ULDUM_LIGHTMACHINE_04
@ GO_DOODAD_ULDUM_LIGHTMACHINE_02
@ GO_DOODAD_ULDUM_LASERBEAMS_02
@ ACTION_ELEMENTAL_DIED
@ WARDEN_ENTRY_DATA_DELTA
@ NPC_WATER_WARDEN
@ BOSS_TEMPLE_GUARDIAN_ANHUUR
@ NPC_AIR_WARDEN
@ NPC_BRANN_BRONZEBEARD_0
@ BOSS_ANRAPHET
@ NPC_EARTH_WARDEN
@ NPC_FIRE_WARDEN
#define HoOScriptName
@ DATA_ANRAPHET_GUID
@ DATA_EARTH_WARDEN
@ DATA_ANHUUR_RIGHT_BEACON
@ DATA_FIRE_WARDEN
@ DATA_ANHUUR_GUID
@ DATA_VAULT_OF_LIGHTS
@ DATA_BRANN_0_GUID
@ DATA_TEMPLE_GUARDIAN_ANHUUR
@ DATA_WATER_WARDEN
@ DATA_DEAD_ELEMENTALS
@ DATA_AIR_WARDEN
@ DATA_ANHUUR_BRIDGE
@ DATA_ANHUUR_DOOR
@ DATA_ANHUUR_LEFT_BEACON
DoorData const doorData[]
DoorData const doorData[]
void AddSC_instance_halls_of_origination()