Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
instance_halls_of_stone.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 "
ScriptMgr.h
"
7
#include "
InstanceScript.h
"
8
#include "
WorldSession.h
"
9
#include "
halls_of_stone.h
"
10
#include <
Player.h
>
11
12
DoorData
const
doorData
[] =
13
{
14
{
GO_SJONNIR_DOOR
,
DATA_BRANN_EVENT
,
DOOR_TYPE_PASSAGE
,
BOUNDARY_NONE
},
15
{ 0, 0,
DOOR_TYPE_ROOM
,
BOUNDARY_NONE
}
// END
16
};
17
18
class
instance_halls_of_stone
:
public
InstanceMapScript
19
{
20
public
:
21
instance_halls_of_stone
() :
InstanceMapScript
(
HoSScriptName
, 599) { }
22
23
struct
instance_halls_of_stone_InstanceMapScript
:
public
InstanceScript
24
{
25
instance_halls_of_stone_InstanceMapScript
(
Map
* map) :
InstanceScript
(map)
26
{
27
SetBossNumber
(
EncounterCount
);
28
LoadDoorData
(
doorData
);
29
30
KrystallusGUID
= 0;
31
MaidenOfGriefGUID
= 0;
32
SjonnirGUID
= 0;
33
34
KaddrakGUID
= 0;
35
AbedneumGUID
= 0;
36
MarnakGUID
= 0;
37
BrannGUID
= 0;
38
39
TribunalConsoleGUID
= 0;
40
TribunalChestGUID
= 0;
41
TribunalSkyFloorGUID
= 0;
42
KaddrakGoGUID
= 0;
43
AbedneumGoGUID
= 0;
44
MarnakGoGUID
= 0;
45
}
46
47
void
OnCreatureCreate
(
Creature
* creature)
OVERRIDE
48
{
49
switch
(creature->GetEntry())
50
{
51
case
NPC_KRYSTALLUS
:
52
KrystallusGUID
= creature->GetGUID();
53
break
;
54
case
NPC_MAIDEN
:
55
MaidenOfGriefGUID
= creature->GetGUID();
56
break
;
57
case
NPC_SJONNIR
:
58
SjonnirGUID
= creature->GetGUID();
59
break
;
60
case
NPC_MARNAK
:
61
MarnakGUID
= creature->GetGUID();
62
break
;
63
case
NPC_KADDRAK
:
64
KaddrakGUID
= creature->GetGUID();
65
break
;
66
case
NPC_ABEDNEUM
:
67
AbedneumGUID
= creature->GetGUID();
68
break
;
69
case
NPC_BRANN
:
70
BrannGUID
= creature->GetGUID();
71
break
;
72
default
:
73
break
;
74
}
75
}
76
77
void
OnGameObjectCreate
(
GameObject
* go)
OVERRIDE
78
{
79
switch
(go->GetEntry())
80
{
81
case
GO_ABEDNEUM
:
82
AbedneumGoGUID
= go->GetGUID();
83
break
;
84
case
GO_MARNAK
:
85
MarnakGoGUID
= go->GetGUID();
86
break
;
87
case
GO_KADDRAK
:
88
KaddrakGoGUID
= go->GetGUID();
89
break
;
90
case
GO_TRIBUNAL_CONSOLE
:
91
TribunalConsoleGUID
= go->GetGUID();
92
break
;
93
case
GO_TRIBUNAL_CHEST
:
94
case
GO_TRIBUNAL_CHEST_HERO
:
95
TribunalChestGUID
= go->GetGUID();
96
if
(
GetBossState
(
DATA_BRANN_EVENT
) ==
DONE
)
97
go->RemoveFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_INTERACT_COND
);
98
break
;
99
case
GO_TRIBUNAL_SKY_FLOOR
:
100
TribunalSkyFloorGUID
= go->GetGUID();
101
break
;
102
case
GO_SJONNIR_DOOR
:
103
AddDoor
(go,
true
);
104
break
;
105
default
:
106
break
;
107
}
108
}
109
110
void
OnGameObjectRemove
(
GameObject
* go)
OVERRIDE
111
{
112
switch
(go->GetEntry())
113
{
114
case
GO_SJONNIR_DOOR
:
115
AddDoor
(go,
false
);
116
break
;
117
default
:
118
break
;
119
}
120
}
121
122
uint64
GetData64
(
uint32
type)
const
OVERRIDE
123
{
124
switch
(type)
125
{
126
case
DATA_MAIDEN_OF_GRIEF
:
127
return
MaidenOfGriefGUID
;
128
case
DATA_KRYSTALLUS
:
129
return
KrystallusGUID
;
130
case
DATA_SJONNIR
:
131
return
SjonnirGUID
;
132
case
DATA_KADDRAK
:
133
return
KaddrakGUID
;
134
case
DATA_MARNAK
:
135
return
MarnakGUID
;
136
case
DATA_ABEDNEUM
:
137
return
AbedneumGUID
;
138
case
DATA_GO_TRIBUNAL_CONSOLE
:
139
return
TribunalConsoleGUID
;
140
case
DATA_GO_KADDRAK
:
141
return
KaddrakGoGUID
;
142
case
DATA_GO_ABEDNEUM
:
143
return
AbedneumGoGUID
;
144
case
DATA_GO_MARNAK
:
145
return
MarnakGoGUID
;
146
case
DATA_GO_SKY_FLOOR
:
147
return
TribunalSkyFloorGUID
;
148
default
:
149
break
;
150
}
151
152
return
0;
153
}
154
155
bool
SetBossState
(
uint32
type,
EncounterState
state)
OVERRIDE
156
{
157
if
(!
InstanceScript::SetBossState
(type, state))
158
return
false
;
159
160
switch
(type)
161
{
162
case
DATA_BRANN_EVENT
:
163
if
(state ==
DONE
)
164
{
165
if
(
GameObject
* go =
instance
->GetGameObject(
TribunalChestGUID
))
166
go->RemoveFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_INTERACT_COND
);
167
}
168
break
;
169
default
:
170
break
;
171
}
172
173
return
true
;
174
}
175
176
bool
CheckRequiredBosses
(
uint32
bossId,
Player
const
* player
/*= NULL*/
)
const
OVERRIDE
177
{
178
if
(player && player->GetSession()->HasPermission(
rbac::RBAC_PERM_SKIP_CHECK_INSTANCE_REQUIRED_BOSSES
))
179
return
true
;
180
181
switch
(bossId)
182
{
183
case
DATA_SJONNIR
:
184
if
(
GetBossState
(
DATA_BRANN_EVENT
) !=
DONE
)
185
return
false
;
186
break
;
187
default
:
188
break
;
189
}
190
191
return
true
;
192
}
193
194
std::string
GetSaveData
()
OVERRIDE
195
{
196
OUT_SAVE_INST_DATA
;
197
198
std::ostringstream saveStream;
199
saveStream <<
"H S "
<<
GetBossSaveData
();
200
201
OUT_SAVE_INST_DATA_COMPLETE
;
202
return
saveStream.str();
203
}
204
205
void
Load
(
char
const
* str)
OVERRIDE
206
{
207
if
(!str)
208
{
209
OUT_LOAD_INST_DATA_FAIL
;
210
return
;
211
}
212
213
OUT_LOAD_INST_DATA
(str);
214
215
char
dataHead1, dataHead2;
216
217
std::istringstream loadStream(str);
218
loadStream >> dataHead1 >> dataHead2;
219
220
if
(dataHead1 ==
'H'
&& dataHead2 ==
'S'
)
221
{
222
for
(
uint32
i = 0; i <
EncounterCount
; ++i)
223
{
224
uint32
tmpState;
225
loadStream >> tmpState;
226
if
(tmpState ==
IN_PROGRESS
|| tmpState >
SPECIAL
)
227
tmpState =
NOT_STARTED
;
228
SetBossState
(i,
EncounterState
(tmpState));
229
}
230
}
231
else
232
OUT_LOAD_INST_DATA_FAIL
;
233
234
OUT_LOAD_INST_DATA_COMPLETE
;
235
}
236
237
protected
:
238
uint64
KrystallusGUID
;
239
uint64
MaidenOfGriefGUID
;
240
uint64
SjonnirGUID
;
241
242
uint64
KaddrakGUID
;
243
uint64
AbedneumGUID
;
244
uint64
MarnakGUID
;
245
uint64
BrannGUID
;
246
247
uint64
TribunalConsoleGUID
;
248
uint64
TribunalChestGUID
;
249
uint64
TribunalSkyFloorGUID
;
250
uint64
KaddrakGoGUID
;
251
uint64
AbedneumGoGUID
;
252
uint64
MarnakGoGUID
;
253
};
254
255
InstanceScript
*
GetInstanceScript
(
InstanceMap
* map)
const
OVERRIDE
256
{
257
return
new
instance_halls_of_stone_InstanceMapScript
(map);
258
}
259
};
260
261
void
AddSC_instance_halls_of_stone
()
262
{
263
new
instance_halls_of_stone
();
264
}
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
uint64
std::uint64_t uint64
Definition
Define.h:76
InstanceScript.h
OUT_LOAD_INST_DATA_FAIL
#define OUT_LOAD_INST_DATA_FAIL
Definition
InstanceScript.h:18
EncounterState
EncounterState
Definition
InstanceScript.h:45
IN_PROGRESS
@ IN_PROGRESS
Definition
InstanceScript.h:47
DONE
@ DONE
Definition
InstanceScript.h:49
SPECIAL
@ SPECIAL
Definition
InstanceScript.h:50
NOT_STARTED
@ NOT_STARTED
Definition
InstanceScript.h:46
OUT_SAVE_INST_DATA_COMPLETE
#define OUT_SAVE_INST_DATA_COMPLETE
Definition
InstanceScript.h:15
OUT_LOAD_INST_DATA_COMPLETE
#define OUT_LOAD_INST_DATA_COMPLETE
Definition
InstanceScript.h:17
OUT_SAVE_INST_DATA
#define OUT_SAVE_INST_DATA
Definition
InstanceScript.h:14
OUT_LOAD_INST_DATA
#define OUT_LOAD_INST_DATA(a)
Definition
InstanceScript.h:16
DOOR_TYPE_ROOM
@ DOOR_TYPE_ROOM
Definition
InstanceScript.h:56
DOOR_TYPE_PASSAGE
@ DOOR_TYPE_PASSAGE
Definition
InstanceScript.h:57
BOUNDARY_NONE
@ BOUNDARY_NONE
Definition
InstanceScript.h:64
Player.h
ScriptMgr.h
GO_FLAG_INTERACT_COND
@ GO_FLAG_INTERACT_COND
Definition
SharedDefines.h:1840
GAMEOBJECT_FIELD_FLAGS
@ GAMEOBJECT_FIELD_FLAGS
Definition
UpdateFields.h:250
WorldSession.h
EncounterCount
uint32 const EncounterCount
Definition
baradin_hold.h:15
Creature
Definition
Creature.h:427
GameObject
Definition
GameObject.h:629
InstanceMap
Definition
Map.h:637
InstanceMapScript::InstanceMapScript
InstanceMapScript(const char *name, uint32 mapId)
Definition
ScriptMgr.cpp:1412
InstanceScript
Definition
InstanceScript.h:123
InstanceScript::InstanceScript
InstanceScript(Map *map)
Definition
InstanceScript.h:125
InstanceScript::SetBossNumber
void SetBossNumber(uint32 number)
Definition
InstanceScript.h:212
InstanceScript::SetBossState
virtual bool SetBossState(uint32 id, EncounterState state)
Definition
InstanceScript.cpp:182
InstanceScript::instance
Map * instance
Definition
InstanceScript.h:129
InstanceScript::GetBossSaveData
std::string GetBossSaveData()
Definition
InstanceScript.cpp:239
InstanceScript::GetBossState
EncounterState GetBossState(uint32 id) const
Definition
InstanceScript.h:185
InstanceScript::AddDoor
void AddDoor(GameObject *door, bool add)
Definition
InstanceScript.cpp:126
InstanceScript::LoadDoorData
void LoadDoorData(DoorData const *data)
Definition
InstanceScript.cpp:64
Map
Definition
Map.h:238
Player
Definition
Player.h:1289
instance_halls_of_stone
Definition
instance_halls_of_stone.cpp:19
instance_halls_of_stone::instance_halls_of_stone
instance_halls_of_stone()
Definition
instance_halls_of_stone.cpp:21
instance_halls_of_stone::GetInstanceScript
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
Definition
instance_halls_of_stone.cpp:255
halls_of_stone.h
GO_ABEDNEUM
@ GO_ABEDNEUM
Definition
halls_of_stone.h:45
GO_KADDRAK
@ GO_KADDRAK
Definition
halls_of_stone.h:47
GO_TRIBUNAL_SKY_FLOOR
@ GO_TRIBUNAL_SKY_FLOOR
Definition
halls_of_stone.h:54
GO_TRIBUNAL_CHEST
@ GO_TRIBUNAL_CHEST
Definition
halls_of_stone.h:52
GO_TRIBUNAL_CHEST_HERO
@ GO_TRIBUNAL_CHEST_HERO
Definition
halls_of_stone.h:53
GO_TRIBUNAL_CONSOLE
@ GO_TRIBUNAL_CONSOLE
Definition
halls_of_stone.h:51
GO_SJONNIR_DOOR
@ GO_SJONNIR_DOOR
Definition
halls_of_stone.h:50
GO_MARNAK
@ GO_MARNAK
Definition
halls_of_stone.h:46
HoSScriptName
#define HoSScriptName
Definition
halls_of_stone.h:9
NPC_KADDRAK
@ NPC_KADDRAK
Definition
halls_of_stone.h:38
NPC_MAIDEN
@ NPC_MAIDEN
Definition
halls_of_stone.h:34
NPC_BRANN
@ NPC_BRANN
Definition
halls_of_stone.h:40
NPC_KRYSTALLUS
@ NPC_KRYSTALLUS
Definition
halls_of_stone.h:35
NPC_MARNAK
@ NPC_MARNAK
Definition
halls_of_stone.h:37
NPC_SJONNIR
@ NPC_SJONNIR
Definition
halls_of_stone.h:36
NPC_ABEDNEUM
@ NPC_ABEDNEUM
Definition
halls_of_stone.h:39
DATA_GO_SKY_FLOOR
@ DATA_GO_SKY_FLOOR
Definition
halls_of_stone.h:29
DATA_GO_MARNAK
@ DATA_GO_MARNAK
Definition
halls_of_stone.h:27
DATA_MARNAK
@ DATA_MARNAK
Definition
halls_of_stone.h:23
DATA_MAIDEN_OF_GRIEF
@ DATA_MAIDEN_OF_GRIEF
Definition
halls_of_stone.h:17
DATA_GO_KADDRAK
@ DATA_GO_KADDRAK
Definition
halls_of_stone.h:26
DATA_BRANN_EVENT
@ DATA_BRANN_EVENT
Definition
halls_of_stone.h:18
DATA_KRYSTALLUS
@ DATA_KRYSTALLUS
Definition
halls_of_stone.h:16
DATA_ABEDNEUM
@ DATA_ABEDNEUM
Definition
halls_of_stone.h:24
DATA_GO_ABEDNEUM
@ DATA_GO_ABEDNEUM
Definition
halls_of_stone.h:28
DATA_GO_TRIBUNAL_CONSOLE
@ DATA_GO_TRIBUNAL_CONSOLE
Definition
halls_of_stone.h:25
DATA_SJONNIR
@ DATA_SJONNIR
Definition
halls_of_stone.h:19
DATA_KADDRAK
@ DATA_KADDRAK
Definition
halls_of_stone.h:22
doorData
DoorData const doorData[]
Definition
instance_baradin_hold.cpp:10
doorData
DoorData const doorData[]
Definition
instance_halls_of_stone.cpp:12
AddSC_instance_halls_of_stone
void AddSC_instance_halls_of_stone()
Definition
instance_halls_of_stone.cpp:261
rbac::RBAC_PERM_SKIP_CHECK_INSTANCE_REQUIRED_BOSSES
@ RBAC_PERM_SKIP_CHECK_INSTANCE_REQUIRED_BOSSES
Definition
RBAC.h:53
DoorData
Definition
InstanceScript.h:82
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript
Definition
instance_halls_of_stone.cpp:24
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::Load
void Load(char const *str) OVERRIDE
Definition
instance_halls_of_stone.cpp:205
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::TribunalChestGUID
uint64 TribunalChestGUID
Definition
instance_halls_of_stone.cpp:248
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::SjonnirGUID
uint64 SjonnirGUID
Definition
instance_halls_of_stone.cpp:240
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::CheckRequiredBosses
bool CheckRequiredBosses(uint32 bossId, Player const *player) const OVERRIDE
Definition
instance_halls_of_stone.cpp:176
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::KaddrakGUID
uint64 KaddrakGUID
Definition
instance_halls_of_stone.cpp:242
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::MarnakGUID
uint64 MarnakGUID
Definition
instance_halls_of_stone.cpp:244
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::BrannGUID
uint64 BrannGUID
Definition
instance_halls_of_stone.cpp:245
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::OnCreatureCreate
void OnCreatureCreate(Creature *creature) OVERRIDE
Definition
instance_halls_of_stone.cpp:47
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::GetData64
uint64 GetData64(uint32 type) const OVERRIDE
Definition
instance_halls_of_stone.cpp:122
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::AbedneumGoGUID
uint64 AbedneumGoGUID
Definition
instance_halls_of_stone.cpp:251
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::TribunalSkyFloorGUID
uint64 TribunalSkyFloorGUID
Definition
instance_halls_of_stone.cpp:249
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::TribunalConsoleGUID
uint64 TribunalConsoleGUID
Definition
instance_halls_of_stone.cpp:247
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::OnGameObjectCreate
void OnGameObjectCreate(GameObject *go) OVERRIDE
Definition
instance_halls_of_stone.cpp:77
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::KrystallusGUID
uint64 KrystallusGUID
Definition
instance_halls_of_stone.cpp:238
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::MaidenOfGriefGUID
uint64 MaidenOfGriefGUID
Definition
instance_halls_of_stone.cpp:239
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::MarnakGoGUID
uint64 MarnakGoGUID
Definition
instance_halls_of_stone.cpp:252
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::instance_halls_of_stone_InstanceMapScript
instance_halls_of_stone_InstanceMapScript(Map *map)
Definition
instance_halls_of_stone.cpp:25
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::SetBossState
bool SetBossState(uint32 type, EncounterState state) OVERRIDE
Definition
instance_halls_of_stone.cpp:155
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::OnGameObjectRemove
void OnGameObjectRemove(GameObject *go) OVERRIDE
Definition
instance_halls_of_stone.cpp:110
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::GetSaveData
std::string GetSaveData() OVERRIDE
Definition
instance_halls_of_stone.cpp:194
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::AbedneumGUID
uint64 AbedneumGUID
Definition
instance_halls_of_stone.cpp:243
instance_halls_of_stone::instance_halls_of_stone_InstanceMapScript::KaddrakGoGUID
uint64 KaddrakGoGUID
Definition
instance_halls_of_stone.cpp:250
src
server
scripts
Northrend
Ulduar
HallsOfStone
instance_halls_of_stone.cpp
Generated on
for Project SkyFire Core by
1.17.0