Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
instance_utgarde_keep.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 "
utgarde_keep.h
"
9
10
DoorData
const
doorData
[] =
11
{
12
{
GO_GIANT_PORTCULLIS_1
,
DATA_INGVAR
,
DOOR_TYPE_PASSAGE
,
BOUNDARY_NONE
},
13
{
GO_GIANT_PORTCULLIS_2
,
DATA_INGVAR
,
DOOR_TYPE_PASSAGE
,
BOUNDARY_NONE
},
14
{ 0, 0,
DOOR_TYPE_ROOM
,
BOUNDARY_NONE
}
// END
15
};
16
17
MinionData
const
minionData
[] =
18
{
19
{
NPC_SKARVALD
,
DATA_SKARVALD_DALRONN
},
20
{
NPC_DALRONN
,
DATA_SKARVALD_DALRONN
}
21
};
22
23
class
instance_utgarde_keep
:
public
InstanceMapScript
24
{
25
public
:
26
instance_utgarde_keep
() :
InstanceMapScript
(
UKScriptName
, 574) { }
27
28
struct
instance_utgarde_keep_InstanceMapScript
:
public
InstanceScript
29
{
30
instance_utgarde_keep_InstanceMapScript
(
Map
* map) :
InstanceScript
(map)
31
{
32
SetBossNumber
(
EncounterCount
);
33
LoadDoorData
(
doorData
);
34
LoadMinionData
(
minionData
);
35
36
PrinceKelesethGUID
= 0;
37
SkarvaldGUID
= 0;
38
DalronnGUID
= 0;
39
IngvarGUID
= 0;
40
}
41
42
void
OnCreatureCreate
(
Creature
* creature)
OVERRIDE
43
{
44
switch
(creature->GetEntry())
45
{
46
case
NPC_PRINCE_KELESETH
:
47
PrinceKelesethGUID
= creature->GetGUID();
48
break
;
49
case
NPC_SKARVALD
:
50
SkarvaldGUID
= creature->GetGUID();
51
AddMinion
(creature,
true
);
52
break
;
53
case
NPC_DALRONN
:
54
DalronnGUID
= creature->GetGUID();
55
AddMinion
(creature,
true
);
56
break
;
57
case
NPC_INGVAR
:
58
IngvarGUID
= creature->GetGUID();
59
break
;
60
default
:
61
break
;
62
}
63
}
64
65
void
OnCreatureRemove
(
Creature
* creature)
OVERRIDE
66
{
67
switch
(creature->GetEntry())
68
{
69
case
NPC_SKARVALD
:
70
case
NPC_DALRONN
:
71
AddMinion
(creature,
false
);
72
break
;
73
default
:
74
break
;
75
}
76
}
77
78
void
OnGameObjectCreate
(
GameObject
* go)
OVERRIDE
79
{
80
switch
(go->GetEntry())
81
{
82
case
GO_BELLOW_1
:
83
Forges
[0].BellowGUID = go->GetGUID();
84
HandleGameObject
(0,
Forges
[0].Event !=
NOT_STARTED
, go);
85
break
;
86
case
GO_BELLOW_2
:
87
Forges
[1].BellowGUID = go->GetGUID();
88
HandleGameObject
(0,
Forges
[1].Event !=
NOT_STARTED
, go);
89
break
;
90
case
GO_BELLOW_3
:
91
Forges
[2].BellowGUID = go->GetGUID();
92
HandleGameObject
(0,
Forges
[2].Event !=
NOT_STARTED
, go);
93
break
;
94
case
GO_FORGEFIRE_1
:
95
Forges
[0].FireGUID = go->GetGUID();
96
HandleGameObject
(0,
Forges
[0].Event !=
NOT_STARTED
, go);
97
break
;
98
case
GO_FORGEFIRE_2
:
99
Forges
[1].FireGUID = go->GetGUID();
100
HandleGameObject
(0,
Forges
[1].Event !=
NOT_STARTED
, go);
101
break
;
102
case
GO_FORGEFIRE_3
:
103
Forges
[2].FireGUID = go->GetGUID();
104
HandleGameObject
(0,
Forges
[2].Event !=
NOT_STARTED
, go);
105
break
;
106
case
GO_GLOWING_ANVIL_1
:
107
Forges
[0].AnvilGUID = go->GetGUID();
108
HandleGameObject
(0,
Forges
[0].Event !=
NOT_STARTED
, go);
109
break
;
110
case
GO_GLOWING_ANVIL_2
:
111
Forges
[1].AnvilGUID = go->GetGUID();
112
HandleGameObject
(0,
Forges
[1].Event !=
NOT_STARTED
, go);
113
break
;
114
case
GO_GLOWING_ANVIL_3
:
115
Forges
[2].AnvilGUID = go->GetGUID();
116
HandleGameObject
(0,
Forges
[2].Event !=
NOT_STARTED
, go);
117
break
;
118
case
GO_GIANT_PORTCULLIS_1
:
119
case
GO_GIANT_PORTCULLIS_2
:
120
AddDoor
(go,
true
);
121
break
;
122
default
:
123
break
;
124
}
125
}
126
127
void
OnGameObjectRemove
(
GameObject
* go)
OVERRIDE
128
{
129
switch
(go->GetEntry())
130
{
131
case
GO_GIANT_PORTCULLIS_1
:
132
case
GO_GIANT_PORTCULLIS_2
:
133
AddDoor
(go,
false
);
134
break
;
135
default
:
136
break
;
137
}
138
}
139
140
uint64
GetData64
(
uint32
type)
const
OVERRIDE
141
{
142
switch
(type)
143
{
144
case
DATA_PRINCE_KELESETH
:
145
return
PrinceKelesethGUID
;
146
case
DATA_SKARVALD
:
147
return
SkarvaldGUID
;
148
case
DATA_DALRONN
:
149
return
DalronnGUID
;
150
case
DATA_INGVAR
:
151
return
IngvarGUID
;
152
default
:
153
break
;
154
}
155
156
return
0;
157
}
158
159
void
SetData
(
uint32
type,
uint32
data)
OVERRIDE
160
{
161
switch
(type)
162
{
163
case
DATA_FORGE_1
:
164
case
DATA_FORGE_2
:
165
case
DATA_FORGE_3
:
166
{
167
uint8
i = type -
DATA_FORGE_1
;
168
HandleGameObject
(
Forges
[i].AnvilGUID, data !=
NOT_STARTED
);
169
HandleGameObject
(
Forges
[i].BellowGUID, data !=
NOT_STARTED
);
170
HandleGameObject
(
Forges
[i].FireGUID, data !=
NOT_STARTED
);
171
Forges
[i].Event = data;
172
173
if
(data ==
DONE
)
174
SaveToDB
();
175
break
;
176
}
177
default
:
178
break
;
179
}
180
}
181
182
std::string
GetSaveData
()
OVERRIDE
183
{
184
OUT_SAVE_INST_DATA
;
185
186
std::ostringstream saveStream;
187
saveStream <<
"U K "
<<
GetBossSaveData
();
188
189
for
(
uint8
i = 0; i < 3; ++i)
190
saveStream <<
Forges
[i].Event <<
' '
;
191
192
OUT_SAVE_INST_DATA_COMPLETE
;
193
return
saveStream.str();
194
}
195
196
void
Load
(
char
const
* str)
OVERRIDE
197
{
198
if
(!str)
199
{
200
OUT_LOAD_INST_DATA_FAIL
;
201
return
;
202
}
203
204
OUT_LOAD_INST_DATA
(str);
205
206
char
dataHead1, dataHead2;
207
208
std::istringstream loadStream(str);
209
loadStream >> dataHead1 >> dataHead2;
210
211
if
(dataHead1 ==
'U'
&& dataHead2 ==
'K'
)
212
{
213
for
(
uint32
i = 0; i <
EncounterCount
; ++i)
214
{
215
uint32
tmpState;
216
loadStream >> tmpState;
217
if
(tmpState ==
IN_PROGRESS
|| tmpState >
SPECIAL
)
218
tmpState =
NOT_STARTED
;
219
SetBossState
(i,
EncounterState
(tmpState));
220
}
221
222
for
(
uint8
i = 0; i < 3; ++i)
223
loadStream >>
Forges
[i].Event;
224
}
225
else
226
OUT_LOAD_INST_DATA_FAIL
;
227
228
OUT_LOAD_INST_DATA_COMPLETE
;
229
}
230
231
protected
:
232
ForgeInfo
Forges
[3];
233
234
uint64
PrinceKelesethGUID
;
235
uint64
SkarvaldGUID
;
236
uint64
DalronnGUID
;
237
uint64
IngvarGUID
;
238
};
239
240
InstanceScript
*
GetInstanceScript
(
InstanceMap
* map)
const
OVERRIDE
241
{
242
return
new
instance_utgarde_keep_InstanceMapScript
(map);
243
}
244
};
245
246
void
AddSC_instance_utgarde_keep
()
247
{
248
new
instance_utgarde_keep
();
249
}
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
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
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::GetBossSaveData
std::string GetBossSaveData()
Definition
InstanceScript.cpp:239
InstanceScript::AddMinion
void AddMinion(Creature *minion, bool add)
Definition
InstanceScript.cpp:170
InstanceScript::SaveToDB
void SaveToDB()
Definition
InstanceScript.cpp:20
InstanceScript::AddDoor
void AddDoor(GameObject *door, bool add)
Definition
InstanceScript.cpp:126
InstanceScript::LoadMinionData
void LoadMinionData(MinionData const *data)
Definition
InstanceScript.cpp:52
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
instance_utgarde_keep
Definition
instance_utgarde_keep.cpp:24
instance_utgarde_keep::instance_utgarde_keep
instance_utgarde_keep()
Definition
instance_utgarde_keep.cpp:26
instance_utgarde_keep::GetInstanceScript
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
Definition
instance_utgarde_keep.cpp:240
NPC_PRINCE_KELESETH
@ NPC_PRINCE_KELESETH
Definition
icecrown_citadel.h:195
doorData
DoorData const doorData[]
Definition
instance_baradin_hold.cpp:10
minionData
MinionData const minionData[]
Definition
instance_naxxramas.cpp:49
AddSC_instance_utgarde_keep
void AddSC_instance_utgarde_keep()
Definition
instance_utgarde_keep.cpp:246
minionData
MinionData const minionData[]
Definition
instance_utgarde_keep.cpp:17
doorData
DoorData const doorData[]
Definition
instance_utgarde_keep.cpp:10
DoorData
Definition
InstanceScript.h:82
ForgeInfo
Definition
utgarde_keep.h:65
MinionData
Definition
InstanceScript.h:89
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript
Definition
instance_utgarde_keep.cpp:29
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::OnCreatureCreate
void OnCreatureCreate(Creature *creature) OVERRIDE
Definition
instance_utgarde_keep.cpp:42
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::SetData
void SetData(uint32 type, uint32 data) OVERRIDE
Definition
instance_utgarde_keep.cpp:159
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::IngvarGUID
uint64 IngvarGUID
Definition
instance_utgarde_keep.cpp:237
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::GetData64
uint64 GetData64(uint32 type) const OVERRIDE
Definition
instance_utgarde_keep.cpp:140
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::Load
void Load(char const *str) OVERRIDE
Definition
instance_utgarde_keep.cpp:196
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::GetSaveData
std::string GetSaveData() OVERRIDE
Definition
instance_utgarde_keep.cpp:182
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::OnCreatureRemove
void OnCreatureRemove(Creature *creature) OVERRIDE
Definition
instance_utgarde_keep.cpp:65
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::DalronnGUID
uint64 DalronnGUID
Definition
instance_utgarde_keep.cpp:236
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::SkarvaldGUID
uint64 SkarvaldGUID
Definition
instance_utgarde_keep.cpp:235
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::Forges
ForgeInfo Forges[3]
Definition
instance_utgarde_keep.cpp:232
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::instance_utgarde_keep_InstanceMapScript
instance_utgarde_keep_InstanceMapScript(Map *map)
Definition
instance_utgarde_keep.cpp:30
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::OnGameObjectRemove
void OnGameObjectRemove(GameObject *go) OVERRIDE
Definition
instance_utgarde_keep.cpp:127
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::PrinceKelesethGUID
uint64 PrinceKelesethGUID
Definition
instance_utgarde_keep.cpp:234
instance_utgarde_keep::instance_utgarde_keep_InstanceMapScript::OnGameObjectCreate
void OnGameObjectCreate(GameObject *go) OVERRIDE
Definition
instance_utgarde_keep.cpp:78
utgarde_keep.h
GO_FORGEFIRE_3
@ GO_FORGEFIRE_3
Definition
utgarde_keep.h:54
GO_GIANT_PORTCULLIS_1
@ GO_GIANT_PORTCULLIS_1
Definition
utgarde_keep.h:60
GO_BELLOW_3
@ GO_BELLOW_3
Definition
utgarde_keep.h:50
GO_GLOWING_ANVIL_1
@ GO_GLOWING_ANVIL_1
Definition
utgarde_keep.h:56
GO_GLOWING_ANVIL_2
@ GO_GLOWING_ANVIL_2
Definition
utgarde_keep.h:57
GO_BELLOW_1
@ GO_BELLOW_1
Definition
utgarde_keep.h:48
GO_GIANT_PORTCULLIS_2
@ GO_GIANT_PORTCULLIS_2
Definition
utgarde_keep.h:61
GO_BELLOW_2
@ GO_BELLOW_2
Definition
utgarde_keep.h:49
GO_FORGEFIRE_2
@ GO_FORGEFIRE_2
Definition
utgarde_keep.h:53
GO_GLOWING_ANVIL_3
@ GO_GLOWING_ANVIL_3
Definition
utgarde_keep.h:58
GO_FORGEFIRE_1
@ GO_FORGEFIRE_1
Definition
utgarde_keep.h:52
NPC_SKARVALD
@ NPC_SKARVALD
Definition
utgarde_keep.h:32
NPC_INGVAR
@ NPC_INGVAR
Definition
utgarde_keep.h:34
NPC_DALRONN
@ NPC_DALRONN
Definition
utgarde_keep.h:33
UKScriptName
#define UKScriptName
Definition
utgarde_keep.h:9
DATA_DALRONN
@ DATA_DALRONN
Definition
utgarde_keep.h:22
DATA_FORGE_2
@ DATA_FORGE_2
Definition
utgarde_keep.h:25
DATA_SKARVALD_DALRONN
@ DATA_SKARVALD_DALRONN
Definition
utgarde_keep.h:17
DATA_FORGE_1
@ DATA_FORGE_1
Definition
utgarde_keep.h:24
DATA_PRINCE_KELESETH
@ DATA_PRINCE_KELESETH
Definition
utgarde_keep.h:16
DATA_FORGE_3
@ DATA_FORGE_3
Definition
utgarde_keep.h:26
DATA_SKARVALD
@ DATA_SKARVALD
Definition
utgarde_keep.h:21
DATA_INGVAR
@ DATA_INGVAR
Definition
utgarde_keep.h:18
src
server
scripts
Northrend
UtgardeKeep
UtgardeKeep
instance_utgarde_keep.cpp
Generated on
for Project SkyFire Core by
1.17.0