Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
instance_zulaman.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 "
ScriptedCreature.h
"
9
#include "
zulaman.h
"
10
11
class
instance_zulaman
:
public
InstanceMapScript
12
{
13
public
:
14
instance_zulaman
() :
InstanceMapScript
(
ZulAmanScriptName
, 568) { }
15
16
struct
instance_zulaman_InstanceScript
:
public
InstanceScript
17
{
18
instance_zulaman_InstanceScript
(
InstanceMap
* map) :
InstanceScript
(map)
19
{
20
SetBossNumber
(
EncounterCount
);
21
22
AkilzonGUID
= 0;
23
NalorakkGUID
= 0;
24
JanalaiGUID
= 0;
25
HalazziGUID
= 0;
26
HexLordMalacrassGUID
= 0;
27
DaakaraGUID
= 0;
28
VoljinGUID
= 0;
29
HexLordTriggerGUID
= 0;
30
SpeedRunTimer
= 16;
31
ZulAmanState
=
NOT_STARTED
;
32
ZulAmanBossCount
= 0;
33
}
34
35
void
FillInitialWorldStates
(
WorldStateBuilder
& builder)
OVERRIDE
36
{
37
builder.AppendState(
WORLD_STATE_ZULAMAN_TIMER_ENABLED
,
ZulAmanState
? 1 : 0);
38
builder.AppendState(
WORLD_STATE_ZULAMAN_TIMER
,
SpeedRunTimer
);
39
}
40
41
void
OnCreatureCreate
(
Creature
* creature)
OVERRIDE
42
{
43
switch
(creature->GetEntry())
44
{
45
case
NPC_AKILZON
:
46
AkilzonGUID
= creature->GetGUID();
47
break
;
48
case
NPC_NALORAKK
:
49
NalorakkGUID
= creature->GetGUID();
50
break
;
51
case
NPC_JANALAI
:
52
JanalaiGUID
= creature->GetGUID();
53
break
;
54
case
NPC_HALAZZI
:
55
HalazziGUID
= creature->GetGUID();
56
break
;
57
case
NPC_HEXLORD
:
58
HexLordMalacrassGUID
= creature->GetGUID();
59
break
;
60
case
NPC_DAAKARA
:
61
DaakaraGUID
= creature->GetGUID();
62
break
;
63
case
NPC_VOLJIN
:
64
VoljinGUID
= creature->GetGUID();
65
break
;
66
case
NPC_HEXLORD_TRIGGER
:
67
HexLordTriggerGUID
= creature->GetGUID();
68
break
;
69
default
:
70
break
;
71
}
72
}
73
74
void
OnGameObjectCreate
(
GameObject
* go)
OVERRIDE
75
{
76
switch
(go->GetEntry())
77
{
78
case
GO_STRANGE_GONG
:
79
StrangeGongGUID
= go->GetGUID();
80
break
;
81
case
GO_MASSIVE_GATE
:
82
MasiveGateGUID
= go->GetGUID();
83
AddDoor
(go,
true
);
84
if
(
ZulAmanState
!=
NOT_STARTED
)
85
go->SetGoState(
GO_STATE_ACTIVE
);
86
break
;
87
default
:
88
break
;
89
}
90
}
91
92
void
OnGameObjectRemove
(
GameObject
* go)
OVERRIDE
93
{
94
switch
(go->GetEntry())
95
{
96
case
GO_MASSIVE_GATE
:
97
AddDoor
(go,
false
);
98
break
;
99
default
:
100
break
;
101
}
102
}
103
104
uint64
GetData64
(
uint32
type)
const
OVERRIDE
105
{
106
switch
(type)
107
{
108
case
DATA_AKILZON
:
109
return
AkilzonGUID
;
110
case
DATA_NALORAKK
:
111
return
NalorakkGUID
;
112
case
DATA_JANALAI
:
113
return
JanalaiGUID
;
114
case
DATA_HALAZZI
:
115
return
HalazziGUID
;
116
case
DATA_HEXLORD
:
117
return
HexLordMalacrassGUID
;
118
case
DATA_DAAKARA
:
119
return
DaakaraGUID
;
120
case
DATA_HEXLORD_TRIGGER
:
121
return
HexLordTriggerGUID
;
122
case
DATA_STRANGE_GONG
:
123
return
StrangeGongGUID
;
124
case
DATA_MASSIVE_GATE
:
125
return
MasiveGateGUID
;
126
default
:
127
break
;
128
}
129
130
return
0;
131
}
132
133
void
SetData
(
uint32
type,
uint32
data)
OVERRIDE
134
{
135
switch
(type)
136
{
137
case
DATA_ZULAMAN_STATE
:
138
{
139
if
(data ==
IN_PROGRESS
)
140
{
141
DoUpdateWorldState
(
WORLD_STATE_ZULAMAN_TIMER_ENABLED
, 1);
142
DoUpdateWorldState
(
WORLD_STATE_ZULAMAN_TIMER
, 15);
143
events
.ScheduleEvent(
EVENT_UPDATE_ZULAMAN_TIMER
, 60000);
144
SpeedRunTimer
= 15;
145
ZulAmanState
= data;
146
SaveToDB
();
147
}
148
break
;
149
}
150
default
:
151
break
;
152
}
153
}
154
155
uint32
GetData
(
uint32
type)
const
OVERRIDE
156
{
157
switch
(type)
158
{
159
case
DATA_ZULAMAN_STATE
:
160
return
ZulAmanState
;
161
default
:
162
break
;
163
}
164
165
return
0;
166
}
167
168
bool
SetBossState
(
uint32
type,
EncounterState
state)
OVERRIDE
169
{
170
if
(!
InstanceScript::SetBossState
(type, state))
171
return
false
;
172
173
if
(state ==
DONE
)
174
{
175
if
(
ZulAmanState
==
IN_PROGRESS
&&
SpeedRunTimer
)
176
{
177
++
ZulAmanBossCount
;
178
179
if
(
ZulAmanBossCount
< 2)
180
{
181
SpeedRunTimer
=
SpeedRunTimer
+ 5;
182
DoUpdateWorldState
(
WORLD_STATE_ZULAMAN_TIMER
,
SpeedRunTimer
);
183
}
184
else
if
(
ZulAmanBossCount
== 4)
185
{
186
DoUpdateWorldState
(
WORLD_STATE_ZULAMAN_TIMER_ENABLED
, 0);
187
events
.CancelEvent(
EVENT_UPDATE_ZULAMAN_TIMER
);
188
ZulAmanState
=
DONE
;
189
}
190
}
191
}
192
193
switch
(type)
194
{
195
case
DATA_AKILZON
:
196
break
;
197
case
DATA_NALORAKK
:
198
break
;
199
case
DATA_JANALAI
:
200
break
;
201
case
DATA_HALAZZI
:
202
case
DATA_HEXLORD
:
203
case
DATA_DAAKARA
:
204
break
;
205
default
:
206
break
;
207
}
208
209
return
true
;
210
}
211
212
void
ProcessEvent
(
WorldObject
*
/*obj*/
,
uint32
eventId)
OVERRIDE
213
{
214
switch
(eventId)
215
{
216
case
EVENT_START_ZULAMAN
:
217
if
(
Creature
* voljin =
instance
->GetCreature(
VoljinGUID
))
218
{
219
if
(voljin->IsAIEnabled)
220
voljin->AI()->DoAction(
ACTION_START_ZULAMAN
);
221
}
222
break
;
223
default
:
224
break
;
225
}
226
}
227
228
void
Update
(
uint32
diff)
229
{
230
if
(
events
.Empty())
231
return
;
232
233
events
.Update(diff);
234
235
while
(
uint32
eventId =
events
.ExecuteEvent())
236
{
237
switch
(eventId)
238
{
239
case
EVENT_UPDATE_ZULAMAN_TIMER
:
240
SaveToDB
();
241
DoUpdateWorldState
(
WORLD_STATE_ZULAMAN_TIMER
, --
SpeedRunTimer
);
242
if
(
SpeedRunTimer
)
243
events
.ScheduleEvent(
EVENT_UPDATE_ZULAMAN_TIMER
, 60000);
244
else
245
{
246
DoUpdateWorldState
(
WORLD_STATE_ZULAMAN_TIMER_ENABLED
, 0);
247
events
.CancelEvent(
EVENT_UPDATE_ZULAMAN_TIMER
);
248
ZulAmanState
=
FAIL
;
249
}
250
break
;
251
default
:
252
break
;
253
}
254
}
255
}
256
257
std::string
GetSaveData
()
OVERRIDE
258
{
259
OUT_SAVE_INST_DATA
;
260
261
std::ostringstream saveStream;
262
saveStream <<
"Z A "
<<
GetBossSaveData
() <<
ZulAmanState
263
<<
' '
<<
SpeedRunTimer
<<
' '
<<
ZulAmanBossCount
;
264
265
OUT_SAVE_INST_DATA_COMPLETE
;
266
return
saveStream.str();
267
}
268
269
void
Load
(
char
const
* str)
OVERRIDE
270
{
271
if
(!str)
272
{
273
OUT_LOAD_INST_DATA_FAIL
;
274
return
;
275
}
276
277
OUT_LOAD_INST_DATA
(str);
278
279
char
dataHead1, dataHead2;
280
281
std::istringstream loadStream(str);
282
loadStream >> dataHead1 >> dataHead2;
283
284
if
(dataHead1 ==
'Z'
&& dataHead2 ==
'A'
)
285
{
286
for
(
uint8
i = 0; i <
EncounterCount
; ++i)
287
{
288
uint32
tmpState;
289
loadStream >> tmpState;
290
if
(tmpState ==
IN_PROGRESS
|| tmpState >
SPECIAL
)
291
tmpState =
NOT_STARTED
;
292
293
SetBossState
(i,
EncounterState
(tmpState));
294
}
295
296
loadStream >>
ZulAmanState
;
297
loadStream >>
SpeedRunTimer
;
298
loadStream >>
ZulAmanBossCount
;
299
300
if
(
ZulAmanState
==
IN_PROGRESS
&&
SpeedRunTimer
&&
SpeedRunTimer
<= 15)
301
{
302
events
.ScheduleEvent(
EVENT_UPDATE_ZULAMAN_TIMER
, 60000);
303
DoUpdateWorldState
(
WORLD_STATE_ZULAMAN_TIMER_ENABLED
, 1);
304
DoUpdateWorldState
(
WORLD_STATE_ZULAMAN_TIMER
,
SpeedRunTimer
);
305
}
306
}
307
else
308
OUT_LOAD_INST_DATA_FAIL
;
309
310
OUT_LOAD_INST_DATA_COMPLETE
;
311
}
312
313
protected
:
314
EventMap
events
;
315
uint64
AkilzonGUID
;
316
uint64
NalorakkGUID
;
317
uint64
JanalaiGUID
;
318
uint64
HalazziGUID
;
319
uint64
HexLordMalacrassGUID
;
320
uint64
DaakaraGUID
;
321
uint64
VoljinGUID
;
322
uint64
HexLordTriggerGUID
;
323
uint64
StrangeGongGUID
;
324
uint64
MasiveGateGUID
;
325
uint32
SpeedRunTimer
;
326
uint32
ZulAmanState
;
327
uint32
ZulAmanBossCount
;
328
};
329
330
InstanceScript
*
GetInstanceScript
(
InstanceMap
* map)
const
OVERRIDE
331
{
332
return
new
instance_zulaman_InstanceScript
(map);
333
}
334
};
335
336
void
AddSC_instance_zulaman
()
337
{
338
new
instance_zulaman
();
339
}
uint8
std::uint8_t uint8
Definition
Define.h:79
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
GO_STATE_ACTIVE
static constexpr GOState GO_STATE_ACTIVE
Definition
ElunaCompatibility.h:34
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
FAIL
@ FAIL
Definition
InstanceScript.h:48
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
ScriptMgr.h
ScriptedCreature.h
EncounterCount
uint32 const EncounterCount
Definition
baradin_hold.h:15
Creature
Definition
Creature.h:427
EventMap
Definition
CreatureAIImpl.h:304
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::SaveToDB
void SaveToDB()
Definition
InstanceScript.cpp:20
InstanceScript::AddDoor
void AddDoor(GameObject *door, bool add)
Definition
InstanceScript.cpp:126
InstanceScript::DoUpdateWorldState
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
Definition
InstanceScript.cpp:284
WorldObject
Definition
Object.h:610
WorldStateBuilder
Definition
WorldStateBuilder.h:16
instance_zulaman
Definition
instance_zulaman.cpp:12
instance_zulaman::GetInstanceScript
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
Definition
instance_zulaman.cpp:330
instance_zulaman::instance_zulaman
instance_zulaman()
Definition
instance_zulaman.cpp:14
AddSC_instance_zulaman
void AddSC_instance_zulaman()
Definition
instance_zulaman.cpp:336
instance_zulaman::instance_zulaman_InstanceScript
Definition
instance_zulaman.cpp:17
instance_zulaman::instance_zulaman_InstanceScript::instance_zulaman_InstanceScript
instance_zulaman_InstanceScript(InstanceMap *map)
Definition
instance_zulaman.cpp:18
instance_zulaman::instance_zulaman_InstanceScript::OnGameObjectRemove
void OnGameObjectRemove(GameObject *go) OVERRIDE
Definition
instance_zulaman.cpp:92
instance_zulaman::instance_zulaman_InstanceScript::SetData
void SetData(uint32 type, uint32 data) OVERRIDE
Definition
instance_zulaman.cpp:133
instance_zulaman::instance_zulaman_InstanceScript::ProcessEvent
void ProcessEvent(WorldObject *, uint32 eventId) OVERRIDE
Definition
instance_zulaman.cpp:212
instance_zulaman::instance_zulaman_InstanceScript::HexLordTriggerGUID
uint64 HexLordTriggerGUID
Definition
instance_zulaman.cpp:322
instance_zulaman::instance_zulaman_InstanceScript::StrangeGongGUID
uint64 StrangeGongGUID
Definition
instance_zulaman.cpp:323
instance_zulaman::instance_zulaman_InstanceScript::Load
void Load(char const *str) OVERRIDE
Definition
instance_zulaman.cpp:269
instance_zulaman::instance_zulaman_InstanceScript::SetBossState
bool SetBossState(uint32 type, EncounterState state) OVERRIDE
Definition
instance_zulaman.cpp:168
instance_zulaman::instance_zulaman_InstanceScript::FillInitialWorldStates
void FillInitialWorldStates(WorldStateBuilder &builder) OVERRIDE
Definition
instance_zulaman.cpp:35
instance_zulaman::instance_zulaman_InstanceScript::VoljinGUID
uint64 VoljinGUID
Definition
instance_zulaman.cpp:321
instance_zulaman::instance_zulaman_InstanceScript::ZulAmanBossCount
uint32 ZulAmanBossCount
Definition
instance_zulaman.cpp:327
instance_zulaman::instance_zulaman_InstanceScript::Update
void Update(uint32 diff)
Definition
instance_zulaman.cpp:228
instance_zulaman::instance_zulaman_InstanceScript::JanalaiGUID
uint64 JanalaiGUID
Definition
instance_zulaman.cpp:317
instance_zulaman::instance_zulaman_InstanceScript::events
EventMap events
Definition
instance_zulaman.cpp:314
instance_zulaman::instance_zulaman_InstanceScript::HexLordMalacrassGUID
uint64 HexLordMalacrassGUID
Definition
instance_zulaman.cpp:319
instance_zulaman::instance_zulaman_InstanceScript::HalazziGUID
uint64 HalazziGUID
Definition
instance_zulaman.cpp:318
instance_zulaman::instance_zulaman_InstanceScript::GetData64
uint64 GetData64(uint32 type) const OVERRIDE
Definition
instance_zulaman.cpp:104
instance_zulaman::instance_zulaman_InstanceScript::DaakaraGUID
uint64 DaakaraGUID
Definition
instance_zulaman.cpp:320
instance_zulaman::instance_zulaman_InstanceScript::NalorakkGUID
uint64 NalorakkGUID
Definition
instance_zulaman.cpp:316
instance_zulaman::instance_zulaman_InstanceScript::GetData
uint32 GetData(uint32 type) const OVERRIDE
Definition
instance_zulaman.cpp:155
instance_zulaman::instance_zulaman_InstanceScript::SpeedRunTimer
uint32 SpeedRunTimer
Definition
instance_zulaman.cpp:325
instance_zulaman::instance_zulaman_InstanceScript::OnGameObjectCreate
void OnGameObjectCreate(GameObject *go) OVERRIDE
Definition
instance_zulaman.cpp:74
instance_zulaman::instance_zulaman_InstanceScript::GetSaveData
std::string GetSaveData() OVERRIDE
Definition
instance_zulaman.cpp:257
instance_zulaman::instance_zulaman_InstanceScript::AkilzonGUID
uint64 AkilzonGUID
Definition
instance_zulaman.cpp:315
instance_zulaman::instance_zulaman_InstanceScript::ZulAmanState
uint32 ZulAmanState
Definition
instance_zulaman.cpp:326
instance_zulaman::instance_zulaman_InstanceScript::OnCreatureCreate
void OnCreatureCreate(Creature *creature) OVERRIDE
Definition
instance_zulaman.cpp:41
instance_zulaman::instance_zulaman_InstanceScript::MasiveGateGUID
uint64 MasiveGateGUID
Definition
instance_zulaman.cpp:324
zulaman.h
WORLD_STATE_ZULAMAN_TIMER_ENABLED
@ WORLD_STATE_ZULAMAN_TIMER_ENABLED
Definition
zulaman.h:64
WORLD_STATE_ZULAMAN_TIMER
@ WORLD_STATE_ZULAMAN_TIMER
Definition
zulaman.h:65
GO_STRANGE_GONG
@ GO_STRANGE_GONG
Definition
zulaman.h:47
GO_MASSIVE_GATE
@ GO_MASSIVE_GATE
Definition
zulaman.h:48
ACTION_START_ZULAMAN
@ ACTION_START_ZULAMAN
Definition
zulaman.h:59
NPC_HEXLORD_TRIGGER
@ NPC_HEXLORD_TRIGGER
Definition
zulaman.h:42
NPC_AKILZON
@ NPC_AKILZON
Definition
zulaman.h:34
NPC_JANALAI
@ NPC_JANALAI
Definition
zulaman.h:36
NPC_NALORAKK
@ NPC_NALORAKK
Definition
zulaman.h:35
NPC_DAAKARA
@ NPC_DAAKARA
Definition
zulaman.h:39
NPC_HALAZZI
@ NPC_HALAZZI
Definition
zulaman.h:37
NPC_VOLJIN
@ NPC_VOLJIN
Definition
zulaman.h:41
NPC_HEXLORD
@ NPC_HEXLORD
Definition
zulaman.h:38
EVENT_UPDATE_ZULAMAN_TIMER
@ EVENT_UPDATE_ZULAMAN_TIMER
Definition
zulaman.h:54
EVENT_START_ZULAMAN
@ EVENT_START_ZULAMAN
Definition
zulaman.h:53
ZulAmanScriptName
#define ZulAmanScriptName
Definition
zulaman.h:10
DATA_AKILZON
@ DATA_AKILZON
Definition
zulaman.h:15
DATA_STRANGE_GONG
@ DATA_STRANGE_GONG
Definition
zulaman.h:25
DATA_ZULAMAN_STATE
@ DATA_ZULAMAN_STATE
Definition
zulaman.h:29
DATA_NALORAKK
@ DATA_NALORAKK
Definition
zulaman.h:16
DATA_DAAKARA
@ DATA_DAAKARA
Definition
zulaman.h:20
DATA_HEXLORD
@ DATA_HEXLORD
Definition
zulaman.h:19
DATA_MASSIVE_GATE
@ DATA_MASSIVE_GATE
Definition
zulaman.h:26
DATA_JANALAI
@ DATA_JANALAI
Definition
zulaman.h:17
DATA_HALAZZI
@ DATA_HALAZZI
Definition
zulaman.h:18
DATA_HEXLORD_TRIGGER
@ DATA_HEXLORD_TRIGGER
Definition
zulaman.h:23
src
server
scripts
EasternKingdoms
ZulAman
instance_zulaman.cpp
Generated on
for Project SkyFire Core by
1.17.0