Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
instance_ahnkahet.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 "
ScriptedCreature.h
"
8
#include "
InstanceScript.h
"
9
#include "
ahnkahet.h
"
10
11
DoorData
const
doorData
[] =
12
{
13
{
GO_PRINCE_TALDARAM_GATE
,
DATA_PRINCE_TALDARAM
,
DOOR_TYPE_PASSAGE
,
BOUNDARY_NONE
},
14
{ 0, 0,
DOOR_TYPE_ROOM
,
BOUNDARY_NONE
}
// END
15
};
16
17
class
instance_ahnkahet
:
public
InstanceMapScript
18
{
19
public
:
20
instance_ahnkahet
() :
InstanceMapScript
(
AhnKahetScriptName
, 619) { }
21
22
struct
instance_ahnkahet_InstanceScript
:
public
InstanceScript
23
{
24
instance_ahnkahet_InstanceScript
(
Map
* map) :
InstanceScript
(map)
25
{
26
SetBossNumber
(
EncounterCount
);
27
LoadDoorData
(
doorData
);
28
29
ElderNadoxGUID
= 0;
30
PrinceTaldaramGUID
= 0;
31
JedogaShadowseekerGUID
= 0;
32
AmanitarGUID
= 0;
33
HeraldVolazjGUID
= 0;
34
35
PrinceTaldaramPlatformGUID
= 0;
36
JedogaSacrifices
= 0;
37
JedogaTarget
= 0;
38
SwitchTrigger
= 0;
39
40
SpheresState
[0] = 0;
41
SpheresState
[1] = 0;
42
43
InitiandGUIDs
.clear();
44
}
45
46
void
OnCreatureCreate
(
Creature
* creature)
OVERRIDE
47
{
48
switch
(creature->GetEntry())
49
{
50
case
NPC_ELDER_NADOX
:
51
ElderNadoxGUID
= creature->GetGUID();
52
break
;
53
case
NPC_PRINCE_TALDARAM
:
54
PrinceTaldaramGUID
= creature->GetGUID();
55
break
;
56
case
NPC_JEDOGA_SHADOWSEEKER
:
57
JedogaShadowseekerGUID
= creature->GetGUID();
58
break
;
59
case
NPC_AMANITAR
:
60
AmanitarGUID
= creature->GetGUID();
61
break
;
62
case
NPC_HERALD_VOLAZJ
:
63
HeraldVolazjGUID
= creature->GetGUID();
64
break
;
65
case
NPC_INITIAND
:
66
InitiandGUIDs
.insert(creature->GetGUID());
67
break
;
68
default
:
69
break
;
70
}
71
}
72
73
void
OnGameObjectCreate
(
GameObject
* go)
OVERRIDE
74
{
75
switch
(go->GetEntry())
76
{
77
case
GO_PRINCE_TALDARAM_PLATFORM
:
78
PrinceTaldaramPlatformGUID
= go->GetGUID();
79
if
(
GetBossState
(
DATA_PRINCE_TALDARAM
) ==
DONE
)
80
HandleGameObject
(0,
true
, go);
81
break
;
82
case
GO_SPHERE_1
:
83
if
(
SpheresState
[0])
84
{
85
go->SetGoState(
GOState::GO_STATE_ACTIVE
);
86
go->SetFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
87
}
88
else
89
go->RemoveFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
90
break
;
91
case
GO_SPHERE_2
:
92
if
(
SpheresState
[1])
93
{
94
go->SetGoState(
GOState::GO_STATE_ACTIVE
);
95
go->SetFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
96
}
97
else
98
go->RemoveFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
99
break
;
100
case
GO_PRINCE_TALDARAM_GATE
:
101
AddDoor
(go,
true
);
102
break
;
103
default
:
104
break
;
105
}
106
}
107
108
void
OnGameObjectRemove
(
GameObject
* go)
OVERRIDE
109
{
110
switch
(go->GetEntry())
111
{
112
case
GO_PRINCE_TALDARAM_GATE
:
113
AddDoor
(go,
false
);
114
break
;
115
default
:
116
break
;
117
}
118
}
119
120
void
SetData
(
uint32
type,
uint32
data)
OVERRIDE
121
{
122
switch
(type)
123
{
124
case
DATA_SPHERE_1
:
125
case
DATA_SPHERE_2
:
126
SpheresState
[type -
DATA_SPHERE_1
] = data;
127
break
;
128
case
DATA_JEDOGA_TRIGGER_SWITCH
:
129
SwitchTrigger
= data;
130
break
;
131
case
DATA_JEDOGA_RESET_INITIANDS
:
132
for
(std::set<uint64>::const_iterator itr =
InitiandGUIDs
.begin(); itr !=
InitiandGUIDs
.end(); ++itr)
133
{
134
if
(
Creature
* creature =
instance
->GetCreature(*itr))
135
{
136
creature->Respawn();
137
if
(!creature->IsInEvadeMode())
138
creature->AI()->EnterEvadeMode();
139
}
140
}
141
break
;
142
default
:
143
break
;
144
}
145
}
146
147
uint32
GetData
(
uint32
type)
const
OVERRIDE
148
{
149
switch
(type)
150
{
151
case
DATA_SPHERE_1
:
152
case
DATA_SPHERE_2
:
153
return
SpheresState
[type -
DATA_SPHERE_1
];
154
case
DATA_ALL_INITIAND_DEAD
:
155
for
(std::set<uint64>::const_iterator itr =
InitiandGUIDs
.begin(); itr !=
InitiandGUIDs
.end(); ++itr)
156
{
157
Creature
* cr =
instance
->GetCreature(*itr);
158
if
(!cr || cr->
IsAlive
())
159
return
0;
160
}
161
return
1;
162
case
DATA_JEDOGA_TRIGGER_SWITCH
:
163
return
SwitchTrigger
;
164
default
:
165
break
;
166
}
167
return
0;
168
}
169
170
void
SetData64
(
uint32
type,
uint64
data)
OVERRIDE
171
{
172
switch
(type)
173
{
174
case
DATA_ADD_JEDOGA_OPFER
:
175
JedogaSacrifices
= data;
176
break
;
177
case
DATA_PL_JEDOGA_TARGET
:
178
JedogaTarget
= data;
179
break
;
180
default
:
181
break
;
182
}
183
}
184
185
uint64
GetData64
(
uint32
type)
const
OVERRIDE
186
{
187
switch
(type)
188
{
189
case
DATA_ELDER_NADOX
:
190
return
ElderNadoxGUID
;
191
case
DATA_PRINCE_TALDARAM
:
192
return
PrinceTaldaramGUID
;
193
case
DATA_JEDOGA_SHADOWSEEKER
:
194
return
JedogaShadowseekerGUID
;
195
case
DATA_AMANITAR
:
196
return
AmanitarGUID
;
197
case
DATA_HERALD_VOLAZJ
:
198
return
HeraldVolazjGUID
;
199
case
DATA_PRINCE_TALDARAM_PLATFORM
:
200
return
PrinceTaldaramPlatformGUID
;
201
case
DATA_ADD_JEDOGA_INITIAND
:
202
{
203
std::vector<uint64> vInitiands;
204
vInitiands.clear();
205
for
(std::set<uint64>::const_iterator itr =
InitiandGUIDs
.begin(); itr !=
InitiandGUIDs
.end(); ++itr)
206
{
207
Creature
* cr =
instance
->GetCreature(*itr);
208
if
(cr && cr->
IsAlive
())
209
vInitiands.push_back(*itr);
210
}
211
if
(vInitiands.empty())
212
return
0;
213
214
return
Skyfire::Containers::SelectRandomContainerElement
(vInitiands);
215
}
216
case
DATA_ADD_JEDOGA_OPFER
:
217
return
JedogaSacrifices
;
218
case
DATA_PL_JEDOGA_TARGET
:
219
return
JedogaTarget
;
220
default
:
221
break
;
222
}
223
return
0;
224
}
225
226
bool
SetBossState
(
uint32
type,
EncounterState
state)
OVERRIDE
227
{
228
if
(!
InstanceScript::SetBossState
(type, state))
229
return
false
;
230
231
switch
(type)
232
{
233
case
DATA_JEDOGA_SHADOWSEEKER
:
234
if
(state ==
DONE
)
235
{
236
for
(std::set<uint64>::const_iterator itr =
InitiandGUIDs
.begin(); itr !=
InitiandGUIDs
.end(); ++itr)
237
{
238
if
(
Creature
* cr =
instance
->GetCreature(*itr))
239
cr->DespawnOrUnsummon();
240
}
241
}
242
break
;
243
default
:
244
break
;
245
}
246
return
true
;
247
}
248
249
std::string
GetSaveData
()
OVERRIDE
250
{
251
OUT_SAVE_INST_DATA
;
252
253
std::ostringstream saveStream;
254
saveStream <<
"A K "
<<
GetBossSaveData
() <<
SpheresState
[0] <<
' '
<<
SpheresState
[1];
255
256
OUT_SAVE_INST_DATA_COMPLETE
;
257
return
saveStream.str();
258
}
259
260
void
Load
(
char
const
* str)
OVERRIDE
261
{
262
if
(!str)
263
{
264
OUT_LOAD_INST_DATA_FAIL
;
265
return
;
266
}
267
268
OUT_LOAD_INST_DATA
(str);
269
270
char
dataHead1, dataHead2;
271
272
std::istringstream loadStream(str);
273
loadStream >> dataHead1 >> dataHead2;
274
275
if
(dataHead1 ==
'A'
&& dataHead2 ==
'K'
)
276
{
277
for
(
uint32
i = 0; i <
EncounterCount
; ++i)
278
{
279
uint32
tmpState;
280
loadStream >> tmpState;
281
if
(tmpState ==
IN_PROGRESS
|| tmpState >
SPECIAL
)
282
tmpState =
NOT_STARTED
;
283
SetBossState
(i,
EncounterState
(tmpState));
284
}
285
286
loadStream >>
SpheresState
[0];
287
loadStream >>
SpheresState
[1];
288
}
289
else
290
OUT_LOAD_INST_DATA_FAIL
;
291
292
OUT_LOAD_INST_DATA_COMPLETE
;
293
}
294
295
protected
:
296
uint64
ElderNadoxGUID
;
297
uint64
PrinceTaldaramGUID
;
298
uint64
JedogaShadowseekerGUID
;
299
uint64
AmanitarGUID
;
300
uint64
HeraldVolazjGUID
;
301
302
uint64
PrinceTaldaramPlatformGUID
;
303
uint64
JedogaSacrifices
;
304
uint64
JedogaTarget
;
305
306
std::set<uint64>
InitiandGUIDs
;
307
308
uint8
SpheresState
[2];
309
uint8
SwitchTrigger
;
310
};
311
312
InstanceScript
*
GetInstanceScript
(
InstanceMap
* map)
const
OVERRIDE
313
{
314
return
new
instance_ahnkahet_InstanceScript
(map);
315
}
316
};
317
318
void
AddSC_instance_ahnkahet
()
319
{
320
new
instance_ahnkahet
();
321
}
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
GOState::GO_STATE_ACTIVE
@ GO_STATE_ACTIVE
Definition
GameObject.h:576
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
ScriptMgr.h
ScriptedCreature.h
GO_FLAG_NOT_SELECTABLE
@ GO_FLAG_NOT_SELECTABLE
Definition
SharedDefines.h:1842
GAMEOBJECT_FIELD_FLAGS
@ GAMEOBJECT_FIELD_FLAGS
Definition
UpdateFields.h:250
ahnkahet.h
AhnKahetScriptName
#define AhnKahetScriptName
Definition
ahnkahet.h:9
GO_PRINCE_TALDARAM_GATE
@ GO_PRINCE_TALDARAM_GATE
Definition
ahnkahet.h:64
GO_PRINCE_TALDARAM_PLATFORM
@ GO_PRINCE_TALDARAM_PLATFORM
Definition
ahnkahet.h:65
GO_SPHERE_2
@ GO_SPHERE_2
Definition
ahnkahet.h:67
GO_SPHERE_1
@ GO_SPHERE_1
Definition
ahnkahet.h:66
NPC_AMANITAR
@ NPC_AMANITAR
Definition
ahnkahet.h:39
NPC_HERALD_VOLAZJ
@ NPC_HERALD_VOLAZJ
Definition
ahnkahet.h:40
NPC_JEDOGA_SHADOWSEEKER
@ NPC_JEDOGA_SHADOWSEEKER
Definition
ahnkahet.h:38
NPC_ELDER_NADOX
@ NPC_ELDER_NADOX
Definition
ahnkahet.h:36
NPC_INITIAND
@ NPC_INITIAND
Definition
ahnkahet.h:47
NPC_PRINCE_TALDARAM
@ NPC_PRINCE_TALDARAM
Definition
ahnkahet.h:37
DATA_HERALD_VOLAZJ
@ DATA_HERALD_VOLAZJ
Definition
ahnkahet.h:20
DATA_JEDOGA_RESET_INITIANDS
@ DATA_JEDOGA_RESET_INITIANDS
Definition
ahnkahet.h:30
DATA_PL_JEDOGA_TARGET
@ DATA_PL_JEDOGA_TARGET
Definition
ahnkahet.h:26
DATA_ALL_INITIAND_DEAD
@ DATA_ALL_INITIAND_DEAD
Definition
ahnkahet.h:31
DATA_JEDOGA_SHADOWSEEKER
@ DATA_JEDOGA_SHADOWSEEKER
Definition
ahnkahet.h:18
DATA_JEDOGA_TRIGGER_SWITCH
@ DATA_JEDOGA_TRIGGER_SWITCH
Definition
ahnkahet.h:29
DATA_AMANITAR
@ DATA_AMANITAR
Definition
ahnkahet.h:19
DATA_SPHERE_2
@ DATA_SPHERE_2
Definition
ahnkahet.h:24
DATA_PRINCE_TALDARAM_PLATFORM
@ DATA_PRINCE_TALDARAM_PLATFORM
Definition
ahnkahet.h:25
DATA_ELDER_NADOX
@ DATA_ELDER_NADOX
Definition
ahnkahet.h:16
DATA_ADD_JEDOGA_INITIAND
@ DATA_ADD_JEDOGA_INITIAND
Definition
ahnkahet.h:28
DATA_PRINCE_TALDARAM
@ DATA_PRINCE_TALDARAM
Definition
ahnkahet.h:17
DATA_ADD_JEDOGA_OPFER
@ DATA_ADD_JEDOGA_OPFER
Definition
ahnkahet.h:27
DATA_SPHERE_1
@ DATA_SPHERE_1
Definition
ahnkahet.h:23
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
InstanceScript::HandleGameObject
void HandleGameObject(uint64 guid, bool open, GameObject *go=NULL)
Definition
InstanceScript.cpp:33
Map
Definition
Map.h:238
Unit::IsAlive
bool IsAlive() const
Definition
Unit.h:2032
instance_ahnkahet
Definition
instance_ahnkahet.cpp:18
instance_ahnkahet::GetInstanceScript
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
Definition
instance_ahnkahet.cpp:312
instance_ahnkahet::instance_ahnkahet
instance_ahnkahet()
Definition
instance_ahnkahet.cpp:20
AddSC_instance_ahnkahet
void AddSC_instance_ahnkahet()
Definition
instance_ahnkahet.cpp:318
doorData
DoorData const doorData[]
Definition
instance_ahnkahet.cpp:11
doorData
DoorData const doorData[]
Definition
instance_baradin_hold.cpp:10
Skyfire::Containers::SelectRandomContainerElement
C::value_type const & SelectRandomContainerElement(C const &container)
Definition
Containers.h:48
DoorData
Definition
InstanceScript.h:82
instance_ahnkahet::instance_ahnkahet_InstanceScript
Definition
instance_ahnkahet.cpp:23
instance_ahnkahet::instance_ahnkahet_InstanceScript::Load
void Load(char const *str) OVERRIDE
Definition
instance_ahnkahet.cpp:260
instance_ahnkahet::instance_ahnkahet_InstanceScript::PrinceTaldaramPlatformGUID
uint64 PrinceTaldaramPlatformGUID
Definition
instance_ahnkahet.cpp:302
instance_ahnkahet::instance_ahnkahet_InstanceScript::InitiandGUIDs
std::set< uint64 > InitiandGUIDs
Definition
instance_ahnkahet.cpp:306
instance_ahnkahet::instance_ahnkahet_InstanceScript::GetData64
uint64 GetData64(uint32 type) const OVERRIDE
Definition
instance_ahnkahet.cpp:185
instance_ahnkahet::instance_ahnkahet_InstanceScript::HeraldVolazjGUID
uint64 HeraldVolazjGUID
Definition
instance_ahnkahet.cpp:300
instance_ahnkahet::instance_ahnkahet_InstanceScript::PrinceTaldaramGUID
uint64 PrinceTaldaramGUID
Definition
instance_ahnkahet.cpp:297
instance_ahnkahet::instance_ahnkahet_InstanceScript::OnGameObjectRemove
void OnGameObjectRemove(GameObject *go) OVERRIDE
Definition
instance_ahnkahet.cpp:108
instance_ahnkahet::instance_ahnkahet_InstanceScript::SwitchTrigger
uint8 SwitchTrigger
Definition
instance_ahnkahet.cpp:309
instance_ahnkahet::instance_ahnkahet_InstanceScript::instance_ahnkahet_InstanceScript
instance_ahnkahet_InstanceScript(Map *map)
Definition
instance_ahnkahet.cpp:24
instance_ahnkahet::instance_ahnkahet_InstanceScript::OnCreatureCreate
void OnCreatureCreate(Creature *creature) OVERRIDE
Definition
instance_ahnkahet.cpp:46
instance_ahnkahet::instance_ahnkahet_InstanceScript::GetSaveData
std::string GetSaveData() OVERRIDE
Definition
instance_ahnkahet.cpp:249
instance_ahnkahet::instance_ahnkahet_InstanceScript::SetData64
void SetData64(uint32 type, uint64 data) OVERRIDE
Definition
instance_ahnkahet.cpp:170
instance_ahnkahet::instance_ahnkahet_InstanceScript::SpheresState
uint8 SpheresState[2]
Definition
instance_ahnkahet.cpp:308
instance_ahnkahet::instance_ahnkahet_InstanceScript::ElderNadoxGUID
uint64 ElderNadoxGUID
Definition
instance_ahnkahet.cpp:296
instance_ahnkahet::instance_ahnkahet_InstanceScript::GetData
uint32 GetData(uint32 type) const OVERRIDE
Definition
instance_ahnkahet.cpp:147
instance_ahnkahet::instance_ahnkahet_InstanceScript::JedogaSacrifices
uint64 JedogaSacrifices
Definition
instance_ahnkahet.cpp:303
instance_ahnkahet::instance_ahnkahet_InstanceScript::JedogaShadowseekerGUID
uint64 JedogaShadowseekerGUID
Definition
instance_ahnkahet.cpp:298
instance_ahnkahet::instance_ahnkahet_InstanceScript::OnGameObjectCreate
void OnGameObjectCreate(GameObject *go) OVERRIDE
Definition
instance_ahnkahet.cpp:73
instance_ahnkahet::instance_ahnkahet_InstanceScript::SetBossState
bool SetBossState(uint32 type, EncounterState state) OVERRIDE
Definition
instance_ahnkahet.cpp:226
instance_ahnkahet::instance_ahnkahet_InstanceScript::JedogaTarget
uint64 JedogaTarget
Definition
instance_ahnkahet.cpp:304
instance_ahnkahet::instance_ahnkahet_InstanceScript::AmanitarGUID
uint64 AmanitarGUID
Definition
instance_ahnkahet.cpp:299
instance_ahnkahet::instance_ahnkahet_InstanceScript::SetData
void SetData(uint32 type, uint32 data) OVERRIDE
Definition
instance_ahnkahet.cpp:120
src
server
scripts
Northrend
AzjolNerub
Ahnkahet
instance_ahnkahet.cpp
Generated on
for Project SkyFire Core by
1.17.0