Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
instance_utgarde_pinnacle.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_pinnacle.h
"
9
10
#define MAX_ENCOUNTER 4
11
12
/* Utgarde Pinnacle encounters:
13
0 - Svala Sorrowgrave
14
1 - Gortok Palehoof
15
2 - Skadi the Ruthless
16
3 - King Ymiron
17
*/
18
19
enum
GameObjects
20
{
21
ENTRY_SKADI_THE_RUTHLESS_DOOR
= 192173,
22
ENTRY_KING_YMIRON_DOOR
= 192174,
23
ENTRY_GORK_PALEHOOF_SPHERE
= 188593
24
};
25
26
class
instance_utgarde_pinnacle
:
public
InstanceMapScript
27
{
28
public
:
29
instance_utgarde_pinnacle
() :
InstanceMapScript
(
"instance_utgarde_pinnacle"
, 575) { }
30
31
InstanceScript
*
GetInstanceScript
(
InstanceMap
* map)
const
OVERRIDE
32
{
33
return
new
instance_pinnacle
(map);
34
}
35
36
struct
instance_pinnacle
:
public
InstanceScript
37
{
38
instance_pinnacle
(
Map
* map) :
InstanceScript
(map) { }
39
40
uint64
uiSvalaSorrowgrave
;
41
uint64
uiGortokPalehoof
;
42
uint64
uiSkadiTheRuthless
;
43
uint64
uiKingYmiron
;
44
45
uint64
uiSkadiTheRuthlessDoor
;
46
uint64
uiKingYmironDoor
;
47
uint64
uiGortokPalehoofSphere
;
48
49
uint64
uiFrenziedWorgen
;
50
uint64
uiRavenousFurbolg
;
51
uint64
uiFerociousRhino
;
52
uint64
uiMassiveJormungar
;
53
uint64
uiPalehoofOrb
;
54
55
uint64
uiSvala
;
56
uint64
uiSacrificedPlayer
;
57
58
uint32
m_auiEncounter
[
MAX_ENCOUNTER
];
59
60
std::string
str_data
;
61
62
void
Initialize
()
OVERRIDE
63
{
64
for
(
uint8
i = 0; i <
MAX_ENCOUNTER
; ++i)
65
m_auiEncounter
[i] =
NOT_STARTED
;
66
67
uiSvalaSorrowgrave
= 0;
68
uiGortokPalehoof
= 0;
69
uiSkadiTheRuthless
= 0;
70
uiKingYmiron
= 0;
71
72
uiSkadiTheRuthlessDoor
= 0;
73
uiKingYmironDoor
= 0;
74
uiGortokPalehoofSphere
= 0;
75
76
uiFrenziedWorgen
= 0;
77
uiRavenousFurbolg
= 0;
78
uiFerociousRhino
= 0;
79
uiMassiveJormungar
= 0;
80
uiPalehoofOrb
= 0;
81
82
uiSvala
= 0;
83
uiSacrificedPlayer
= 0;
84
}
85
86
bool
IsEncounterInProgress
() const
OVERRIDE
87
{
88
for
(
uint8
i = 0; i <
MAX_ENCOUNTER
; ++i)
89
if
(
m_auiEncounter
[i] ==
IN_PROGRESS
)
90
return
true
;
91
92
return
false
;
93
}
94
95
void
OnCreatureCreate
(
Creature
* creature)
OVERRIDE
96
{
97
switch
(creature->GetEntry())
98
{
99
case
BOSS_SVALA_SORROWGRAVE
:
uiSvalaSorrowgrave
= creature->GetGUID();
break
;
100
case
BOSS_GORTOK_PALEHOOF
:
uiGortokPalehoof
= creature->GetGUID();
break
;
101
case
BOSS_SKADI_RUTHLESS
:
uiSkadiTheRuthless
= creature->GetGUID();
break
;
102
case
BOSS_KING_YMIRON
:
uiKingYmiron
= creature->GetGUID();
break
;
103
case
NPC_FRENZIED_WORGEN
:
uiFrenziedWorgen
= creature->GetGUID();
break
;
104
case
NPC_RAVENOUS_FURBOLG
:
uiRavenousFurbolg
= creature->GetGUID();
break
;
105
case
NPC_MASSIVE_JORMUNGAR
:
uiMassiveJormungar
= creature->GetGUID();
break
;
106
case
NPC_FEROCIOUS_RHINO
:
uiFerociousRhino
= creature->GetGUID();
break
;
107
case
NPC_SVALA
:
uiSvala
= creature->GetGUID();
break
;
108
case
NPC_PALEHOOF_ORB
:
uiPalehoofOrb
= creature->GetGUID();
break
;
109
}
110
}
111
112
void
OnGameObjectCreate
(
GameObject
* go)
OVERRIDE
113
{
114
switch
(go->GetEntry())
115
{
116
case
ENTRY_SKADI_THE_RUTHLESS_DOOR
:
117
uiSkadiTheRuthlessDoor
= go->GetGUID();
118
if
(
m_auiEncounter
[2] ==
DONE
)
HandleGameObject
(0,
true
, go);
119
break
;
120
case
ENTRY_KING_YMIRON_DOOR
:
121
uiKingYmironDoor
= go->GetGUID();
122
if
(
m_auiEncounter
[3] ==
DONE
)
HandleGameObject
(0,
true
, go);
123
break
;
124
case
ENTRY_GORK_PALEHOOF_SPHERE
:
125
uiGortokPalehoofSphere
= go->GetGUID();
126
if
(
m_auiEncounter
[1] ==
DONE
)
127
{
128
HandleGameObject
(0,
true
, go);
129
go->SetFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
130
}
131
break
;
132
}
133
}
134
135
void
SetData
(
uint32
type,
uint32
data)
OVERRIDE
136
{
137
switch
(type)
138
{
139
case
DATA_SVALA_SORROWGRAVE_EVENT
:
140
m_auiEncounter
[0] = data;
141
break
;
142
case
DATA_GORTOK_PALEHOOF_EVENT
:
143
m_auiEncounter
[1] = data;
144
break
;
145
case
DATA_SKADI_THE_RUTHLESS_EVENT
:
146
if
(data ==
DONE
)
147
HandleGameObject
(
uiSkadiTheRuthlessDoor
,
true
);
148
m_auiEncounter
[2] = data;
149
break
;
150
case
DATA_KING_YMIRON_EVENT
:
151
if
(data ==
DONE
)
152
HandleGameObject
(
uiKingYmironDoor
,
true
);
153
m_auiEncounter
[3] = data;
154
break
;
155
}
156
157
if
(data ==
DONE
)
158
SaveToDB
();
159
}
160
161
void
SetData64
(
uint32
type,
uint64
data)
OVERRIDE
162
{
163
switch
(type)
164
{
165
case
DATA_SACRIFICED_PLAYER
:
166
uiSacrificedPlayer
= data;
167
break
;
168
}
169
}
170
171
uint32
GetData
(
uint32
type)
const
OVERRIDE
172
{
173
switch
(type)
174
{
175
case
DATA_SVALA_SORROWGRAVE_EVENT
:
return
m_auiEncounter
[0];
176
case
DATA_GORTOK_PALEHOOF_EVENT
:
return
m_auiEncounter
[1];
177
case
DATA_SKADI_THE_RUTHLESS_EVENT
:
return
m_auiEncounter
[2];
178
case
DATA_KING_YMIRON_EVENT
:
return
m_auiEncounter
[3];
179
}
180
return
0;
181
}
182
183
uint64
GetData64
(
uint32
identifier)
const
OVERRIDE
184
{
185
switch
(identifier)
186
{
187
case
DATA_SVALA_SORROWGRAVE
:
return
uiSvalaSorrowgrave
;
188
case
DATA_GORTOK_PALEHOOF
:
return
uiGortokPalehoof
;
189
case
DATA_SKADI_THE_RUTHLESS
:
return
uiSkadiTheRuthless
;
190
case
DATA_KING_YMIRON
:
return
uiKingYmiron
;
191
case
DATA_NPC_FRENZIED_WORGEN
:
return
uiFrenziedWorgen
;
192
case
DATA_NPC_RAVENOUS_FURBOLG
:
return
uiRavenousFurbolg
;
193
case
DATA_NPC_MASSIVE_JORMUNGAR
:
return
uiMassiveJormungar
;
194
case
DATA_NPC_FEROCIOUS_RHINO
:
return
uiFerociousRhino
;
195
case
DATA_NPC_ORB
:
return
uiPalehoofOrb
;
196
case
DATA_SVALA
:
return
uiSvala
;
197
case
DATA_GORTOK_PALEHOOF_SPHERE
:
return
uiGortokPalehoofSphere
;
198
case
DATA_SACRIFICED_PLAYER
:
return
uiSacrificedPlayer
;
199
}
200
201
return
0;
202
}
203
204
std::string
GetSaveData
()
OVERRIDE
205
{
206
OUT_SAVE_INST_DATA
;
207
208
std::ostringstream saveStream;
209
saveStream <<
"U P "
<<
m_auiEncounter
[0] <<
' '
<<
m_auiEncounter
[1] <<
' '
210
<<
m_auiEncounter
[2] <<
' '
<<
m_auiEncounter
[3];
211
212
str_data
= saveStream.str();
213
214
OUT_SAVE_INST_DATA_COMPLETE
;
215
return
str_data
;
216
}
217
218
void
Load
(
const
char
* in)
OVERRIDE
219
{
220
if
(!in)
221
{
222
OUT_LOAD_INST_DATA_FAIL
;
223
return
;
224
}
225
226
OUT_LOAD_INST_DATA
(in);
227
228
char
dataHead1, dataHead2;
229
uint16
data0, data1, data2, data3;
230
231
std::istringstream loadStream(in);
232
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3;
233
234
if
(dataHead1 ==
'U'
&& dataHead2 ==
'P'
)
235
{
236
m_auiEncounter
[0] = data0;
237
m_auiEncounter
[1] = data1;
238
m_auiEncounter
[2] = data2;
239
m_auiEncounter
[3] = data3;
240
241
for
(
uint8
i = 0; i <
MAX_ENCOUNTER
; ++i)
242
if
(
m_auiEncounter
[i] ==
IN_PROGRESS
)
243
m_auiEncounter
[i] =
NOT_STARTED
;
244
245
}
else
OUT_LOAD_INST_DATA_FAIL
;
246
247
OUT_LOAD_INST_DATA_COMPLETE
;
248
}
249
};
250
};
251
252
void
AddSC_instance_utgarde_pinnacle
()
253
{
254
new
instance_utgarde_pinnacle
();
255
}
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
uint16
std::uint16_t uint16
Definition
Define.h:78
InstanceScript.h
OUT_LOAD_INST_DATA_FAIL
#define OUT_LOAD_INST_DATA_FAIL
Definition
InstanceScript.h:18
IN_PROGRESS
@ IN_PROGRESS
Definition
InstanceScript.h:47
DONE
@ DONE
Definition
InstanceScript.h:49
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
GO_FLAG_NOT_SELECTABLE
@ GO_FLAG_NOT_SELECTABLE
Definition
SharedDefines.h:1842
GAMEOBJECT_FIELD_FLAGS
@ GAMEOBJECT_FIELD_FLAGS
Definition
UpdateFields.h:250
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::SaveToDB
void SaveToDB()
Definition
InstanceScript.cpp:20
InstanceScript::HandleGameObject
void HandleGameObject(uint64 guid, bool open, GameObject *go=NULL)
Definition
InstanceScript.cpp:33
Map
Definition
Map.h:238
instance_utgarde_pinnacle
Definition
instance_utgarde_pinnacle.cpp:27
instance_utgarde_pinnacle::GetInstanceScript
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
Definition
instance_utgarde_pinnacle.cpp:31
instance_utgarde_pinnacle::instance_utgarde_pinnacle
instance_utgarde_pinnacle()
Definition
instance_utgarde_pinnacle.cpp:29
GameObjects
GameObjects
Definition
instance_blackrock_depths.cpp:30
ENTRY_SKADI_THE_RUTHLESS_DOOR
@ ENTRY_SKADI_THE_RUTHLESS_DOOR
Definition
instance_utgarde_pinnacle.cpp:21
ENTRY_GORK_PALEHOOF_SPHERE
@ ENTRY_GORK_PALEHOOF_SPHERE
Definition
instance_utgarde_pinnacle.cpp:23
ENTRY_KING_YMIRON_DOOR
@ ENTRY_KING_YMIRON_DOOR
Definition
instance_utgarde_pinnacle.cpp:22
AddSC_instance_utgarde_pinnacle
void AddSC_instance_utgarde_pinnacle()
Definition
instance_utgarde_pinnacle.cpp:252
MAX_ENCOUNTER
#define MAX_ENCOUNTER
Definition
instance_utgarde_pinnacle.cpp:10
instance_utgarde_pinnacle::instance_pinnacle
Definition
instance_utgarde_pinnacle.cpp:37
instance_utgarde_pinnacle::instance_pinnacle::uiSkadiTheRuthless
uint64 uiSkadiTheRuthless
Definition
instance_utgarde_pinnacle.cpp:42
instance_utgarde_pinnacle::instance_pinnacle::uiSvala
uint64 uiSvala
Definition
instance_utgarde_pinnacle.cpp:55
instance_utgarde_pinnacle::instance_pinnacle::str_data
std::string str_data
Definition
instance_utgarde_pinnacle.cpp:60
instance_utgarde_pinnacle::instance_pinnacle::OnCreatureCreate
void OnCreatureCreate(Creature *creature) OVERRIDE
Definition
instance_utgarde_pinnacle.cpp:95
instance_utgarde_pinnacle::instance_pinnacle::SetData64
void SetData64(uint32 type, uint64 data) OVERRIDE
Definition
instance_utgarde_pinnacle.cpp:161
instance_utgarde_pinnacle::instance_pinnacle::instance_pinnacle
instance_pinnacle(Map *map)
Definition
instance_utgarde_pinnacle.cpp:38
instance_utgarde_pinnacle::instance_pinnacle::uiKingYmironDoor
uint64 uiKingYmironDoor
Definition
instance_utgarde_pinnacle.cpp:46
instance_utgarde_pinnacle::instance_pinnacle::uiGortokPalehoofSphere
uint64 uiGortokPalehoofSphere
Definition
instance_utgarde_pinnacle.cpp:47
instance_utgarde_pinnacle::instance_pinnacle::IsEncounterInProgress
bool IsEncounterInProgress() const OVERRIDE
Definition
instance_utgarde_pinnacle.cpp:86
instance_utgarde_pinnacle::instance_pinnacle::GetData
uint32 GetData(uint32 type) const OVERRIDE
Definition
instance_utgarde_pinnacle.cpp:171
instance_utgarde_pinnacle::instance_pinnacle::uiFrenziedWorgen
uint64 uiFrenziedWorgen
Definition
instance_utgarde_pinnacle.cpp:49
instance_utgarde_pinnacle::instance_pinnacle::uiFerociousRhino
uint64 uiFerociousRhino
Definition
instance_utgarde_pinnacle.cpp:51
instance_utgarde_pinnacle::instance_pinnacle::uiMassiveJormungar
uint64 uiMassiveJormungar
Definition
instance_utgarde_pinnacle.cpp:52
instance_utgarde_pinnacle::instance_pinnacle::uiRavenousFurbolg
uint64 uiRavenousFurbolg
Definition
instance_utgarde_pinnacle.cpp:50
instance_utgarde_pinnacle::instance_pinnacle::uiKingYmiron
uint64 uiKingYmiron
Definition
instance_utgarde_pinnacle.cpp:43
instance_utgarde_pinnacle::instance_pinnacle::GetData64
uint64 GetData64(uint32 identifier) const OVERRIDE
Definition
instance_utgarde_pinnacle.cpp:183
instance_utgarde_pinnacle::instance_pinnacle::m_auiEncounter
uint32 m_auiEncounter[MAX_ENCOUNTER]
Definition
instance_utgarde_pinnacle.cpp:58
instance_utgarde_pinnacle::instance_pinnacle::uiSvalaSorrowgrave
uint64 uiSvalaSorrowgrave
Definition
instance_utgarde_pinnacle.cpp:40
instance_utgarde_pinnacle::instance_pinnacle::uiGortokPalehoof
uint64 uiGortokPalehoof
Definition
instance_utgarde_pinnacle.cpp:41
instance_utgarde_pinnacle::instance_pinnacle::uiSacrificedPlayer
uint64 uiSacrificedPlayer
Definition
instance_utgarde_pinnacle.cpp:56
instance_utgarde_pinnacle::instance_pinnacle::SetData
void SetData(uint32 type, uint32 data) OVERRIDE
Definition
instance_utgarde_pinnacle.cpp:135
instance_utgarde_pinnacle::instance_pinnacle::uiSkadiTheRuthlessDoor
uint64 uiSkadiTheRuthlessDoor
Definition
instance_utgarde_pinnacle.cpp:45
instance_utgarde_pinnacle::instance_pinnacle::Load
void Load(const char *in) OVERRIDE
Definition
instance_utgarde_pinnacle.cpp:218
instance_utgarde_pinnacle::instance_pinnacle::GetSaveData
std::string GetSaveData() OVERRIDE
Definition
instance_utgarde_pinnacle.cpp:204
instance_utgarde_pinnacle::instance_pinnacle::OnGameObjectCreate
void OnGameObjectCreate(GameObject *go) OVERRIDE
Definition
instance_utgarde_pinnacle.cpp:112
instance_utgarde_pinnacle::instance_pinnacle::Initialize
void Initialize() OVERRIDE
Definition
instance_utgarde_pinnacle.cpp:62
instance_utgarde_pinnacle::instance_pinnacle::uiPalehoofOrb
uint64 uiPalehoofOrb
Definition
instance_utgarde_pinnacle.cpp:53
utgarde_pinnacle.h
BOSS_KING_YMIRON
@ BOSS_KING_YMIRON
Definition
utgarde_pinnacle.h:39
NPC_RAVENOUS_FURBOLG
@ NPC_RAVENOUS_FURBOLG
Definition
utgarde_pinnacle.h:41
BOSS_SKADI_RUTHLESS
@ BOSS_SKADI_RUTHLESS
Definition
utgarde_pinnacle.h:38
NPC_FRENZIED_WORGEN
@ NPC_FRENZIED_WORGEN
Definition
utgarde_pinnacle.h:40
BOSS_SVALA_SORROWGRAVE
@ BOSS_SVALA_SORROWGRAVE
Definition
utgarde_pinnacle.h:36
NPC_SVALA
@ NPC_SVALA
Definition
utgarde_pinnacle.h:44
NPC_MASSIVE_JORMUNGAR
@ NPC_MASSIVE_JORMUNGAR
Definition
utgarde_pinnacle.h:42
BOSS_GORTOK_PALEHOOF
@ BOSS_GORTOK_PALEHOOF
Definition
utgarde_pinnacle.h:37
NPC_PALEHOOF_ORB
@ NPC_PALEHOOF_ORB
Definition
utgarde_pinnacle.h:45
NPC_FEROCIOUS_RHINO
@ NPC_FEROCIOUS_RHINO
Definition
utgarde_pinnacle.h:43
DATA_GORTOK_PALEHOOF_SPHERE
@ DATA_GORTOK_PALEHOOF_SPHERE
Definition
utgarde_pinnacle.h:30
DATA_SKADI_THE_RUTHLESS
@ DATA_SKADI_THE_RUTHLESS
Definition
utgarde_pinnacle.h:22
DATA_SACRIFICED_PLAYER
@ DATA_SACRIFICED_PLAYER
Definition
utgarde_pinnacle.h:31
DATA_KING_YMIRON
@ DATA_KING_YMIRON
Definition
utgarde_pinnacle.h:24
DATA_NPC_RAVENOUS_FURBOLG
@ DATA_NPC_RAVENOUS_FURBOLG
Definition
utgarde_pinnacle.h:26
DATA_SVALA
@ DATA_SVALA
Definition
utgarde_pinnacle.h:19
DATA_NPC_FRENZIED_WORGEN
@ DATA_NPC_FRENZIED_WORGEN
Definition
utgarde_pinnacle.h:25
DATA_SVALA_SORROWGRAVE
@ DATA_SVALA_SORROWGRAVE
Definition
utgarde_pinnacle.h:20
DATA_NPC_MASSIVE_JORMUNGAR
@ DATA_NPC_MASSIVE_JORMUNGAR
Definition
utgarde_pinnacle.h:27
DATA_NPC_FEROCIOUS_RHINO
@ DATA_NPC_FEROCIOUS_RHINO
Definition
utgarde_pinnacle.h:28
DATA_GORTOK_PALEHOOF
@ DATA_GORTOK_PALEHOOF
Definition
utgarde_pinnacle.h:21
DATA_NPC_ORB
@ DATA_NPC_ORB
Definition
utgarde_pinnacle.h:29
DATA_KING_YMIRON_EVENT
@ DATA_KING_YMIRON_EVENT
Definition
utgarde_pinnacle.h:14
DATA_SVALA_SORROWGRAVE_EVENT
@ DATA_SVALA_SORROWGRAVE_EVENT
Definition
utgarde_pinnacle.h:11
DATA_GORTOK_PALEHOOF_EVENT
@ DATA_GORTOK_PALEHOOF_EVENT
Definition
utgarde_pinnacle.h:12
DATA_SKADI_THE_RUTHLESS_EVENT
@ DATA_SKADI_THE_RUTHLESS_EVENT
Definition
utgarde_pinnacle.h:13
src
server
scripts
Northrend
UtgardeKeep
UtgardePinnacle
instance_utgarde_pinnacle.cpp
Generated on
for Project SkyFire Core by
1.17.0