Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
instance_razorfen_downs.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 "
razorfen_downs.h
"
9
#include "
Player.h
"
10
#include "
TemporarySummon.h
"
11
12
#define MAX_ENCOUNTER 1
13
14
class
instance_razorfen_downs
:
public
InstanceMapScript
15
{
16
public
:
17
instance_razorfen_downs
() :
InstanceMapScript
(
"instance_razorfen_downs"
, 129) { }
18
19
InstanceScript
*
GetInstanceScript
(
InstanceMap
* map)
const
OVERRIDE
20
{
21
return
new
instance_razorfen_downs_InstanceMapScript
(map);
22
}
23
24
struct
instance_razorfen_downs_InstanceMapScript
:
public
InstanceScript
25
{
26
instance_razorfen_downs_InstanceMapScript
(
Map
* map) :
InstanceScript
(map)
27
{
28
}
29
30
uint64
uiGongGUID
;
31
32
uint32
m_auiEncounter
[
MAX_ENCOUNTER
];
33
34
uint16
uiGongWaves
;
35
36
std::string
str_data
;
37
38
void
Initialize
()
OVERRIDE
39
{
40
uiGongGUID
= 0;
41
42
uiGongWaves
= 0;
43
44
memset(&
m_auiEncounter
, 0,
sizeof
(
m_auiEncounter
));
45
}
46
47
std::string
GetSaveData
()
OVERRIDE
48
{
49
OUT_SAVE_INST_DATA
;
50
51
std::ostringstream saveStream;
52
53
saveStream <<
"T C "
<<
m_auiEncounter
[0]
54
<<
' '
<<
uiGongWaves
;
55
56
str_data
= saveStream.str();
57
58
OUT_SAVE_INST_DATA_COMPLETE
;
59
return
str_data
;
60
}
61
62
void
Load
(
const
char
* in)
OVERRIDE
63
{
64
if
(!in)
65
{
66
OUT_LOAD_INST_DATA_FAIL
;
67
return
;
68
}
69
70
OUT_LOAD_INST_DATA
(in);
71
72
char
dataHead1, dataHead2;
73
uint16
data0, data1;
74
75
std::istringstream loadStream(in);
76
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1;
77
78
if
(dataHead1 ==
'T'
&& dataHead2 ==
'C'
)
79
{
80
m_auiEncounter
[0] = data0;
81
82
for
(
uint8
i = 0; i <
MAX_ENCOUNTER
; ++i)
83
if
(
m_auiEncounter
[i] ==
IN_PROGRESS
)
84
m_auiEncounter
[i] =
NOT_STARTED
;
85
86
uiGongWaves
= data1;
87
}
else
OUT_LOAD_INST_DATA_FAIL
;
88
89
OUT_LOAD_INST_DATA_COMPLETE
;
90
}
91
92
void
OnGameObjectCreate
(
GameObject
* go)
OVERRIDE
93
{
94
switch
(go->GetEntry())
95
{
96
case
GO_GONG
:
97
uiGongGUID
= go->GetGUID();
98
if
(
m_auiEncounter
[0] ==
DONE
)
99
go->SetFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
100
break
;
101
default
:
102
break
;
103
}
104
}
105
106
void
SetData
(
uint32
uiType,
uint32
uiData)
OVERRIDE
107
{
108
if
(uiType ==
DATA_GONG_WAVES
)
109
{
110
uiGongWaves
= uiData;
111
112
switch
(
uiGongWaves
)
113
{
114
case
9:
115
case
14:
116
if
(
GameObject
* go =
instance
->GetGameObject(
uiGongGUID
))
117
go->RemoveFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
118
break
;
119
case
1:
120
case
10:
121
case
16:
122
{
123
GameObject
* go =
instance
->GetGameObject(
uiGongGUID
);
124
125
if
(!go)
126
return
;
127
128
go->
SetFlag
(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
129
130
uint32
uiCreature = 0;
131
uint8
uiSummonTimes = 0;
132
133
switch
(
uiGongWaves
)
134
{
135
case
1:
136
uiCreature =
NPC_TOMB_FIEND
;
137
uiSummonTimes = 7;
138
break
;
139
case
10:
140
uiCreature =
NPC_TOMB_REAVER
;
141
uiSummonTimes = 3;
142
break
;
143
case
16:
144
uiCreature =
NPC_TUTEN_KASH
;
145
break
;
146
default
:
147
break
;
148
}
149
150
if
(
Creature
* creature = go->
SummonCreature
(uiCreature, 2502.635f, 844.140f, 46.896f, 0.633f))
151
{
152
if
(
uiGongWaves
== 10 ||
uiGongWaves
== 1)
153
{
154
for
(
uint8
i = 0; i < uiSummonTimes; ++i)
155
{
156
if
(
Creature
* summon = go->
SummonCreature
(uiCreature, 2502.635f +
float
(std::rand() % 5 + -5), 844.140f +
float
(std::rand() % 5 + -5), 46.896f, 0.633f))
157
summon->GetMotionMaster()->MovePoint(0, 2533.479f +
float
(std::rand() % 5 + -5), 870.020f +
float
(std::rand() % 5 + -5), 47.678f);
158
}
159
}
160
creature->GetMotionMaster()->MovePoint(0, 2533.479f +
float
(std::rand() % 5 + -5), 870.020f +
float
(std::rand() % 5 + -5), 47.678f);
161
}
162
break
;
163
}
164
default
:
165
break
;
166
}
167
}
168
169
if
(uiType ==
BOSS_TUTEN_KASH
)
170
{
171
m_auiEncounter
[0] = uiData;
172
173
if
(uiData ==
DONE
)
174
SaveToDB
();
175
}
176
}
177
178
uint32
GetData
(
uint32
uiType)
const
OVERRIDE
179
{
180
switch
(uiType)
181
{
182
case
DATA_GONG_WAVES
:
183
return
uiGongWaves
;
184
}
185
186
return
0;
187
}
188
189
uint64
GetData64
(
uint32
uiType)
const
OVERRIDE
190
{
191
switch
(uiType)
192
{
193
case
DATA_GONG
:
return
uiGongGUID
;
194
}
195
196
return
0;
197
}
198
};
199
};
200
201
void
AddSC_instance_razorfen_downs
()
202
{
203
new
instance_razorfen_downs
();
204
}
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
Player.h
ScriptMgr.h
GO_FLAG_NOT_SELECTABLE
@ GO_FLAG_NOT_SELECTABLE
Definition
SharedDefines.h:1842
TemporarySummon.h
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::instance
Map * instance
Definition
InstanceScript.h:129
InstanceScript::SaveToDB
void SaveToDB()
Definition
InstanceScript.cpp:20
Map
Definition
Map.h:238
Object::SetFlag
void SetFlag(uint16 index, uint32 newFlag)
Definition
Object.cpp:1261
WorldObject::SummonCreature
TempSummon * SummonCreature(uint32 id, Position const &pos, TempSummonType spwtype=TempSummonType::TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0) const
Definition
Object.cpp:2703
instance_razorfen_downs
Definition
instance_razorfen_downs.cpp:15
instance_razorfen_downs::instance_razorfen_downs
instance_razorfen_downs()
Definition
instance_razorfen_downs.cpp:17
instance_razorfen_downs::GetInstanceScript
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
Definition
instance_razorfen_downs.cpp:19
AddSC_instance_razorfen_downs
void AddSC_instance_razorfen_downs()
Definition
instance_razorfen_downs.cpp:201
MAX_ENCOUNTER
#define MAX_ENCOUNTER
Definition
instance_razorfen_downs.cpp:12
razorfen_downs.h
DATA_GONG
@ DATA_GONG
Definition
razorfen_downs.h:17
GO_GONG
@ GO_GONG
Definition
razorfen_downs.h:22
NPC_TOMB_FIEND
@ NPC_TOMB_FIEND
Definition
razorfen_downs.h:27
NPC_TUTEN_KASH
@ NPC_TUTEN_KASH
Definition
razorfen_downs.h:29
NPC_TOMB_REAVER
@ NPC_TOMB_REAVER
Definition
razorfen_downs.h:28
BOSS_TUTEN_KASH
@ BOSS_TUTEN_KASH
Definition
razorfen_downs.h:11
DATA_GONG_WAVES
@ DATA_GONG_WAVES
Definition
razorfen_downs.h:12
instance_razorfen_downs::instance_razorfen_downs_InstanceMapScript
Definition
instance_razorfen_downs.cpp:25
instance_razorfen_downs::instance_razorfen_downs_InstanceMapScript::instance_razorfen_downs_InstanceMapScript
instance_razorfen_downs_InstanceMapScript(Map *map)
Definition
instance_razorfen_downs.cpp:26
instance_razorfen_downs::instance_razorfen_downs_InstanceMapScript::OnGameObjectCreate
void OnGameObjectCreate(GameObject *go) OVERRIDE
Definition
instance_razorfen_downs.cpp:92
instance_razorfen_downs::instance_razorfen_downs_InstanceMapScript::GetData
uint32 GetData(uint32 uiType) const OVERRIDE
Definition
instance_razorfen_downs.cpp:178
instance_razorfen_downs::instance_razorfen_downs_InstanceMapScript::SetData
void SetData(uint32 uiType, uint32 uiData) OVERRIDE
Definition
instance_razorfen_downs.cpp:106
instance_razorfen_downs::instance_razorfen_downs_InstanceMapScript::GetSaveData
std::string GetSaveData() OVERRIDE
Definition
instance_razorfen_downs.cpp:47
instance_razorfen_downs::instance_razorfen_downs_InstanceMapScript::m_auiEncounter
uint32 m_auiEncounter[MAX_ENCOUNTER]
Definition
instance_razorfen_downs.cpp:32
instance_razorfen_downs::instance_razorfen_downs_InstanceMapScript::uiGongGUID
uint64 uiGongGUID
Definition
instance_razorfen_downs.cpp:30
instance_razorfen_downs::instance_razorfen_downs_InstanceMapScript::Initialize
void Initialize() OVERRIDE
Definition
instance_razorfen_downs.cpp:38
instance_razorfen_downs::instance_razorfen_downs_InstanceMapScript::Load
void Load(const char *in) OVERRIDE
Definition
instance_razorfen_downs.cpp:62
instance_razorfen_downs::instance_razorfen_downs_InstanceMapScript::GetData64
uint64 GetData64(uint32 uiType) const OVERRIDE
Definition
instance_razorfen_downs.cpp:189
instance_razorfen_downs::instance_razorfen_downs_InstanceMapScript::uiGongWaves
uint16 uiGongWaves
Definition
instance_razorfen_downs.cpp:34
instance_razorfen_downs::instance_razorfen_downs_InstanceMapScript::str_data
std::string str_data
Definition
instance_razorfen_downs.cpp:36
src
server
scripts
Kalimdor
RazorfenDowns
instance_razorfen_downs.cpp
Generated on
for Project SkyFire Core by
1.17.0