Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
instance_black_temple.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 "
black_temple.h
"
9
10
DoorData
const
doorData
[] =
11
{
12
{
GO_NAJENTUS_GATE
,
DATA_HIGH_WARLORD_NAJENTUS
,
DOOR_TYPE_PASSAGE
,
BOUNDARY_NONE
},
13
{
GO_NAJENTUS_GATE
,
DATA_SUPREMUS
,
DOOR_TYPE_ROOM
,
BOUNDARY_NONE
},
14
{
GO_SUPREMUS_GATE
,
DATA_SUPREMUS
,
DOOR_TYPE_PASSAGE
,
BOUNDARY_NONE
},
15
{
GO_SHADE_OF_AKAMA_DOOR
,
DATA_SHADE_OF_AKAMA
,
DOOR_TYPE_ROOM
,
BOUNDARY_NONE
},
16
{
GO_TERON_DOOR_1
,
DATA_TERON_GOREFIEND
,
DOOR_TYPE_ROOM
,
BOUNDARY_NONE
},
17
{
GO_TERON_DOOR_2
,
DATA_TERON_GOREFIEND
,
DOOR_TYPE_ROOM
,
BOUNDARY_NONE
},
18
{
GO_GURTOGG_DOOR
,
DATA_GURTOGG_BLOODBOIL
,
DOOR_TYPE_PASSAGE
,
BOUNDARY_NONE
},
19
{
GO_TEMPLE_DOOR
,
DATA_RELIQUARY_OF_SOULS
,
DOOR_TYPE_PASSAGE
,
BOUNDARY_NONE
},
20
{
GO_MOTHER_SHAHRAZ_DOOR
,
DATA_MOTHER_SHAHRAZ
,
DOOR_TYPE_PASSAGE
,
BOUNDARY_NONE
},
21
{
GO_COUNCIL_DOOR_1
,
DATA_ILLIDARI_COUNCIL
,
DOOR_TYPE_ROOM
,
BOUNDARY_NONE
},
22
{
GO_COUNCIL_DOOR_2
,
DATA_ILLIDARI_COUNCIL
,
DOOR_TYPE_ROOM
,
BOUNDARY_NONE
},
23
{ 0, 0,
DOOR_TYPE_ROOM
,
BOUNDARY_NONE
}
// END
24
};
25
26
class
instance_black_temple
:
public
InstanceMapScript
27
{
28
public
:
29
instance_black_temple
() :
InstanceMapScript
(
BTScriptName
, 564) { }
30
31
struct
instance_black_temple_InstanceMapScript
:
public
InstanceScript
32
{
33
instance_black_temple_InstanceMapScript
(
Map
* map) :
InstanceScript
(map)
34
{
35
SetBossNumber
(
EncounterCount
);
36
LoadDoorData
(
doorData
);
37
38
NajentusGUID
= 0;
39
SupremusGUID
= 0;
40
ShadeOfAkamaGUID
= 0;
41
AkamaShadeGUID
= 0;
42
AkamaGUID
= 0;
43
GathiosTheShattererGUID
= 0;
44
HighNethermancerZerevorGUID
= 0;
45
LadyMalandeGUID
= 0;
46
VerasDarkshadowGUID
= 0;
47
IllidariCouncilGUID
= 0;
48
BloodElfCouncilVoiceGUID
= 0;
49
IllidanStormrageGUID
= 0;
50
51
IllidanGateGUID
= 0;
52
53
memset(
IllidanDoorGUIDs
, 0, 2 *
sizeof
(
uint64
));
54
}
55
56
void
OnCreatureCreate
(
Creature
* creature)
OVERRIDE
57
{
58
switch
(creature->GetEntry())
59
{
60
case
NPC_HIGH_WARLORD_NAJENTUS
:
61
NajentusGUID
= creature->GetGUID();
62
break
;
63
case
NPC_SUPREMUS
:
64
SupremusGUID
= creature->GetGUID();
65
break
;
66
case
NPC_SHADE_OF_AKAMA
:
67
ShadeOfAkamaGUID
= creature->GetGUID();
68
break
;
69
case
NPC_AKAMA_SHADE
:
70
AkamaShadeGUID
= creature->GetGUID();
71
break
;
72
case
NPC_AKAMA
:
73
AkamaGUID
= creature->GetGUID();
74
break
;
75
case
NPC_GATHIOS_THE_SHATTERER
:
76
GathiosTheShattererGUID
= creature->GetGUID();
77
break
;
78
case
NPC_HIGH_NETHERMANCER_ZEREVOR
:
79
HighNethermancerZerevorGUID
= creature->GetGUID();
80
break
;
81
case
NPC_LADY_MALANDE
:
82
LadyMalandeGUID
= creature->GetGUID();
83
break
;
84
case
NPC_VERAS_DARKSHADOW
:
85
VerasDarkshadowGUID
= creature->GetGUID();
86
break
;
87
case
NPC_ILLIDARI_COUNCIL
:
88
IllidariCouncilGUID
= creature->GetGUID();
89
break
;
90
case
NPC_BLOOD_ELF_COUNCIL_VOICE
:
91
BloodElfCouncilVoiceGUID
= creature->GetGUID();
92
break
;
93
case
NPC_ILLIDAN_STORMRAGE
:
94
IllidanStormrageGUID
= creature->GetGUID();
95
break
;
96
default
:
97
break
;
98
}
99
}
100
101
void
OnGameObjectCreate
(
GameObject
* go)
OVERRIDE
102
{
103
switch
(go->GetEntry())
104
{
105
case
GO_NAJENTUS_GATE
:
106
case
GO_SUPREMUS_GATE
:
107
case
GO_SHADE_OF_AKAMA_DOOR
:
108
case
GO_TERON_DOOR_1
:
109
case
GO_TERON_DOOR_2
:
110
case
GO_GURTOGG_DOOR
:
111
case
GO_TEMPLE_DOOR
:
112
case
GO_MOTHER_SHAHRAZ_DOOR
:
113
case
GO_COUNCIL_DOOR_1
:
114
case
GO_COUNCIL_DOOR_2
:
115
AddDoor
(go,
true
);
116
break
;
117
case
GO_ILLIDAN_GATE
:
118
IllidanGateGUID
= go->GetGUID();
119
break
;
120
case
GO_ILLIDAN_DOOR_R
:
121
IllidanDoorGUIDs
[0] = go->GetGUID();
122
break
;
123
case
GO_ILLIDAN_DOOR_L
:
124
IllidanDoorGUIDs
[1] = go->GetGUID();
125
break
;
126
default
:
127
break
;
128
}
129
}
130
131
void
OnGameObjectRemove
(
GameObject
* go)
OVERRIDE
132
{
133
switch
(go->GetEntry())
134
{
135
case
GO_NAJENTUS_GATE
:
136
case
GO_SUPREMUS_GATE
:
137
case
GO_SHADE_OF_AKAMA_DOOR
:
138
case
GO_TERON_DOOR_1
:
139
case
GO_TERON_DOOR_2
:
140
case
GO_GURTOGG_DOOR
:
141
case
GO_TEMPLE_DOOR
:
142
case
GO_MOTHER_SHAHRAZ_DOOR
:
143
case
GO_COUNCIL_DOOR_1
:
144
case
GO_COUNCIL_DOOR_2
:
145
AddDoor
(go,
false
);
146
break
;
147
default
:
148
break
;
149
}
150
}
151
152
uint64
GetData64
(
uint32
type)
const
OVERRIDE
153
{
154
switch
(type)
155
{
156
case
DATA_HIGH_WARLORD_NAJENTUS
:
157
return
NajentusGUID
;
158
case
DATA_SUPREMUS
:
159
return
SupremusGUID
;
160
case
DATA_SHADE_OF_AKAMA
:
161
return
ShadeOfAkamaGUID
;
162
case
DATA_AKAMA_SHADE
:
163
return
AkamaShadeGUID
;
164
case
DATA_AKAMA
:
165
return
AkamaGUID
;
166
case
DATA_GATHIOS_THE_SHATTERER
:
167
return
GathiosTheShattererGUID
;
168
case
DATA_HIGH_NETHERMANCER_ZEREVOR
:
169
return
HighNethermancerZerevorGUID
;
170
case
DATA_LADY_MALANDE
:
171
return
LadyMalandeGUID
;
172
case
DATA_VERAS_DARKSHADOW
:
173
return
VerasDarkshadowGUID
;
174
case
DATA_ILLIDARI_COUNCIL
:
175
return
IllidariCouncilGUID
;
176
case
DATA_BLOOD_ELF_COUNCIL_VOICE
:
177
return
BloodElfCouncilVoiceGUID
;
178
case
DATA_ILLIDAN_STORMRAGE
:
179
return
IllidanStormrageGUID
;
180
case
DATA_GO_ILLIDAN_GATE
:
181
return
IllidanGateGUID
;
182
case
DATA_GO_ILLIDAN_DOOR_R
:
183
return
IllidanDoorGUIDs
[0];
184
case
DATA_GO_ILLIDAN_DOOR_L
:
185
return
IllidanDoorGUIDs
[1];
186
default
:
187
break
;
188
}
189
190
return
0;
191
}
192
193
std::string
GetSaveData
()
OVERRIDE
194
{
195
OUT_SAVE_INST_DATA
;
196
197
std::ostringstream saveStream;
198
saveStream <<
"B T "
<<
GetBossSaveData
();
199
200
OUT_SAVE_INST_DATA_COMPLETE
;
201
return
saveStream.str();
202
}
203
204
void
Load
(
char
const
* str)
OVERRIDE
205
{
206
if
(!str)
207
{
208
OUT_LOAD_INST_DATA_FAIL
;
209
return
;
210
}
211
212
OUT_LOAD_INST_DATA
(str);
213
214
char
dataHead1, dataHead2;
215
216
std::istringstream loadStream(str);
217
loadStream >> dataHead1 >> dataHead2;
218
219
if
(dataHead1 ==
'B'
&& dataHead2 ==
'T'
)
220
{
221
for
(
uint32
i = 0; i <
EncounterCount
; ++i)
222
{
223
uint32
tmpState;
224
loadStream >> tmpState;
225
if
(tmpState ==
IN_PROGRESS
|| tmpState >
SPECIAL
)
226
tmpState =
NOT_STARTED
;
227
SetBossState
(i,
EncounterState
(tmpState));
228
}
229
}
230
else
231
OUT_LOAD_INST_DATA_FAIL
;
232
233
OUT_LOAD_INST_DATA_COMPLETE
;
234
}
235
236
protected
:
237
uint64
NajentusGUID
;
238
uint64
SupremusGUID
;
239
uint64
ShadeOfAkamaGUID
;
240
uint64
AkamaShadeGUID
;
241
uint64
AkamaGUID
;
242
243
uint64
GathiosTheShattererGUID
;
244
uint64
HighNethermancerZerevorGUID
;
245
uint64
LadyMalandeGUID
;
246
uint64
VerasDarkshadowGUID
;
247
248
uint64
IllidariCouncilGUID
;
249
uint64
BloodElfCouncilVoiceGUID
;
250
251
uint64
IllidanStormrageGUID
;
252
253
uint64
IllidanGateGUID
;
254
uint64
IllidanDoorGUIDs
[2];
255
};
256
257
InstanceScript
*
GetInstanceScript
(
InstanceMap
* map)
const
OVERRIDE
258
{
259
return
new
instance_black_temple_InstanceMapScript
(map);
260
}
261
};
262
263
void
AddSC_instance_black_temple
()
264
{
265
new
instance_black_temple
();
266
}
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
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
ScriptMgr.h
EncounterCount
uint32 const EncounterCount
Definition
baradin_hold.h:15
black_temple.h
BTScriptName
#define BTScriptName
Definition
black_temple.h:9
GO_ILLIDAN_DOOR_R
@ GO_ILLIDAN_DOOR_R
Definition
black_temple.h:72
GO_TERON_DOOR_1
@ GO_TERON_DOOR_1
Definition
black_temple.h:64
GO_TEMPLE_DOOR
@ GO_TEMPLE_DOOR
Definition
black_temple.h:67
GO_TERON_DOOR_2
@ GO_TERON_DOOR_2
Definition
black_temple.h:65
GO_COUNCIL_DOOR_1
@ GO_COUNCIL_DOOR_1
Definition
black_temple.h:69
GO_SHADE_OF_AKAMA_DOOR
@ GO_SHADE_OF_AKAMA_DOOR
Definition
black_temple.h:63
GO_MOTHER_SHAHRAZ_DOOR
@ GO_MOTHER_SHAHRAZ_DOOR
Definition
black_temple.h:68
GO_GURTOGG_DOOR
@ GO_GURTOGG_DOOR
Definition
black_temple.h:66
GO_NAJENTUS_GATE
@ GO_NAJENTUS_GATE
Definition
black_temple.h:61
GO_ILLIDAN_GATE
@ GO_ILLIDAN_GATE
Definition
black_temple.h:71
GO_COUNCIL_DOOR_2
@ GO_COUNCIL_DOOR_2
Definition
black_temple.h:70
GO_SUPREMUS_GATE
@ GO_SUPREMUS_GATE
Definition
black_temple.h:62
GO_ILLIDAN_DOOR_L
@ GO_ILLIDAN_DOOR_L
Definition
black_temple.h:73
NPC_VERAS_DARKSHADOW
@ NPC_VERAS_DARKSHADOW
Definition
black_temple.h:52
NPC_ILLIDARI_COUNCIL
@ NPC_ILLIDARI_COUNCIL
Definition
black_temple.h:53
NPC_AKAMA
@ NPC_AKAMA
Definition
black_temple.h:47
NPC_GATHIOS_THE_SHATTERER
@ NPC_GATHIOS_THE_SHATTERER
Definition
black_temple.h:49
NPC_HIGH_WARLORD_NAJENTUS
@ NPC_HIGH_WARLORD_NAJENTUS
Definition
black_temple.h:43
NPC_SHADE_OF_AKAMA
@ NPC_SHADE_OF_AKAMA
Definition
black_temple.h:45
NPC_ILLIDAN_STORMRAGE
@ NPC_ILLIDAN_STORMRAGE
Definition
black_temple.h:56
NPC_HIGH_NETHERMANCER_ZEREVOR
@ NPC_HIGH_NETHERMANCER_ZEREVOR
Definition
black_temple.h:50
NPC_LADY_MALANDE
@ NPC_LADY_MALANDE
Definition
black_temple.h:51
NPC_BLOOD_ELF_COUNCIL_VOICE
@ NPC_BLOOD_ELF_COUNCIL_VOICE
Definition
black_temple.h:54
NPC_AKAMA_SHADE
@ NPC_AKAMA_SHADE
Definition
black_temple.h:46
NPC_SUPREMUS
@ NPC_SUPREMUS
Definition
black_temple.h:44
DATA_TERON_GOREFIEND
@ DATA_TERON_GOREFIEND
Definition
black_temple.h:19
DATA_AKAMA
@ DATA_AKAMA
Definition
black_temple.h:28
DATA_ILLIDARI_COUNCIL
@ DATA_ILLIDARI_COUNCIL
Definition
black_temple.h:23
DATA_MOTHER_SHAHRAZ
@ DATA_MOTHER_SHAHRAZ
Definition
black_temple.h:22
DATA_HIGH_NETHERMANCER_ZEREVOR
@ DATA_HIGH_NETHERMANCER_ZEREVOR
Definition
black_temple.h:31
DATA_SUPREMUS
@ DATA_SUPREMUS
Definition
black_temple.h:17
DATA_GATHIOS_THE_SHATTERER
@ DATA_GATHIOS_THE_SHATTERER
Definition
black_temple.h:30
DATA_BLOOD_ELF_COUNCIL_VOICE
@ DATA_BLOOD_ELF_COUNCIL_VOICE
Definition
black_temple.h:34
DATA_ILLIDAN_STORMRAGE
@ DATA_ILLIDAN_STORMRAGE
Definition
black_temple.h:24
DATA_VERAS_DARKSHADOW
@ DATA_VERAS_DARKSHADOW
Definition
black_temple.h:33
DATA_GO_ILLIDAN_DOOR_R
@ DATA_GO_ILLIDAN_DOOR_R
Definition
black_temple.h:37
DATA_AKAMA_SHADE
@ DATA_AKAMA_SHADE
Definition
black_temple.h:27
DATA_GO_ILLIDAN_DOOR_L
@ DATA_GO_ILLIDAN_DOOR_L
Definition
black_temple.h:38
DATA_LADY_MALANDE
@ DATA_LADY_MALANDE
Definition
black_temple.h:32
DATA_GO_ILLIDAN_GATE
@ DATA_GO_ILLIDAN_GATE
Definition
black_temple.h:36
DATA_HIGH_WARLORD_NAJENTUS
@ DATA_HIGH_WARLORD_NAJENTUS
Definition
black_temple.h:16
DATA_SHADE_OF_AKAMA
@ DATA_SHADE_OF_AKAMA
Definition
black_temple.h:18
DATA_GURTOGG_BLOODBOIL
@ DATA_GURTOGG_BLOODBOIL
Definition
black_temple.h:20
DATA_RELIQUARY_OF_SOULS
@ DATA_RELIQUARY_OF_SOULS
Definition
black_temple.h:21
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::GetBossSaveData
std::string GetBossSaveData()
Definition
InstanceScript.cpp:239
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
instance_black_temple
Definition
instance_black_temple.cpp:27
instance_black_temple::GetInstanceScript
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
Definition
instance_black_temple.cpp:257
instance_black_temple::instance_black_temple
instance_black_temple()
Definition
instance_black_temple.cpp:29
doorData
DoorData const doorData[]
Definition
instance_baradin_hold.cpp:10
AddSC_instance_black_temple
void AddSC_instance_black_temple()
Definition
instance_black_temple.cpp:263
doorData
DoorData const doorData[]
Definition
instance_black_temple.cpp:10
DoorData
Definition
InstanceScript.h:82
instance_black_temple::instance_black_temple_InstanceMapScript
Definition
instance_black_temple.cpp:32
instance_black_temple::instance_black_temple_InstanceMapScript::IllidanDoorGUIDs
uint64 IllidanDoorGUIDs[2]
Definition
instance_black_temple.cpp:254
instance_black_temple::instance_black_temple_InstanceMapScript::BloodElfCouncilVoiceGUID
uint64 BloodElfCouncilVoiceGUID
Definition
instance_black_temple.cpp:249
instance_black_temple::instance_black_temple_InstanceMapScript::AkamaGUID
uint64 AkamaGUID
Definition
instance_black_temple.cpp:241
instance_black_temple::instance_black_temple_InstanceMapScript::SupremusGUID
uint64 SupremusGUID
Definition
instance_black_temple.cpp:238
instance_black_temple::instance_black_temple_InstanceMapScript::ShadeOfAkamaGUID
uint64 ShadeOfAkamaGUID
Definition
instance_black_temple.cpp:239
instance_black_temple::instance_black_temple_InstanceMapScript::AkamaShadeGUID
uint64 AkamaShadeGUID
Definition
instance_black_temple.cpp:240
instance_black_temple::instance_black_temple_InstanceMapScript::OnGameObjectRemove
void OnGameObjectRemove(GameObject *go) OVERRIDE
Definition
instance_black_temple.cpp:131
instance_black_temple::instance_black_temple_InstanceMapScript::Load
void Load(char const *str) OVERRIDE
Definition
instance_black_temple.cpp:204
instance_black_temple::instance_black_temple_InstanceMapScript::NajentusGUID
uint64 NajentusGUID
Definition
instance_black_temple.cpp:237
instance_black_temple::instance_black_temple_InstanceMapScript::OnGameObjectCreate
void OnGameObjectCreate(GameObject *go) OVERRIDE
Definition
instance_black_temple.cpp:101
instance_black_temple::instance_black_temple_InstanceMapScript::GetSaveData
std::string GetSaveData() OVERRIDE
Definition
instance_black_temple.cpp:193
instance_black_temple::instance_black_temple_InstanceMapScript::IllidariCouncilGUID
uint64 IllidariCouncilGUID
Definition
instance_black_temple.cpp:248
instance_black_temple::instance_black_temple_InstanceMapScript::HighNethermancerZerevorGUID
uint64 HighNethermancerZerevorGUID
Definition
instance_black_temple.cpp:244
instance_black_temple::instance_black_temple_InstanceMapScript::GetData64
uint64 GetData64(uint32 type) const OVERRIDE
Definition
instance_black_temple.cpp:152
instance_black_temple::instance_black_temple_InstanceMapScript::IllidanGateGUID
uint64 IllidanGateGUID
Definition
instance_black_temple.cpp:253
instance_black_temple::instance_black_temple_InstanceMapScript::instance_black_temple_InstanceMapScript
instance_black_temple_InstanceMapScript(Map *map)
Definition
instance_black_temple.cpp:33
instance_black_temple::instance_black_temple_InstanceMapScript::IllidanStormrageGUID
uint64 IllidanStormrageGUID
Definition
instance_black_temple.cpp:251
instance_black_temple::instance_black_temple_InstanceMapScript::GathiosTheShattererGUID
uint64 GathiosTheShattererGUID
Definition
instance_black_temple.cpp:243
instance_black_temple::instance_black_temple_InstanceMapScript::VerasDarkshadowGUID
uint64 VerasDarkshadowGUID
Definition
instance_black_temple.cpp:246
instance_black_temple::instance_black_temple_InstanceMapScript::OnCreatureCreate
void OnCreatureCreate(Creature *creature) OVERRIDE
Definition
instance_black_temple.cpp:56
instance_black_temple::instance_black_temple_InstanceMapScript::LadyMalandeGUID
uint64 LadyMalandeGUID
Definition
instance_black_temple.cpp:245
src
server
scripts
Outland
BlackTemple
instance_black_temple.cpp
Generated on
for Project SkyFire Core by
1.17.0