Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
instance_drak_tharon_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 "
ScriptedCreature.h
"
8
#include "
InstanceScript.h
"
9
#include "
drak_tharon_keep.h
"
10
11
class
instance_drak_tharon_keep
:
public
InstanceMapScript
12
{
13
public
:
14
instance_drak_tharon_keep
() :
InstanceMapScript
(
DrakTharonKeepScriptName
, 600) { }
15
16
struct
instance_drak_tharon_keep_InstanceScript
:
public
InstanceScript
17
{
18
instance_drak_tharon_keep_InstanceScript
(
Map
* map) :
InstanceScript
(map)
19
{
20
SetBossNumber
(
EncounterCount
);
21
22
TrollgoreGUID
= 0;
23
NovosGUID
= 0;
24
KingDredGUID
= 0;
25
TharonJaGUID
= 0;
26
27
memset(
TrollgoreInvaderSummonerGuids
, 0, 3 *
sizeof
(
uint64
));
28
memset(
NovosCrystalGUIDs
, 0, 4 *
sizeof
(
uint64
));
29
memset(
NovosSummonerGUIDs
, 0, 4 *
sizeof
(
uint64
));
30
}
31
32
void
OnCreatureCreate
(
Creature
* creature)
OVERRIDE
33
{
34
switch
(creature->GetEntry())
35
{
36
case
NPC_TROLLGORE
:
37
TrollgoreGUID
= creature->GetGUID();
38
break
;
39
case
NPC_NOVOS
:
40
NovosGUID
= creature->GetGUID();
41
break
;
42
case
NPC_KING_DRED
:
43
KingDredGUID
= creature->GetGUID();
44
break
;
45
case
NPC_THARON_JA
:
46
TharonJaGUID
= creature->GetGUID();
47
break
;
48
case
NPC_WORLD_TRIGGER
:
49
InitializeTrollgoreInvaderSummoner
(creature);
50
break
;
51
case
NPC_CRYSTAL_CHANNEL_TARGET
:
52
InitializeNovosSummoner
(creature);
53
break
;
54
default
:
55
break
;
56
}
57
}
58
59
void
OnGameObjectCreate
(
GameObject
* go)
OVERRIDE
60
{
61
switch
(go->GetEntry())
62
{
63
case
GO_NOVOS_CRYSTAL_1
:
64
NovosCrystalGUIDs
[0] = go->GetGUID();
65
break
;
66
case
GO_NOVOS_CRYSTAL_2
:
67
NovosCrystalGUIDs
[1] = go->GetGUID();
68
break
;
69
case
GO_NOVOS_CRYSTAL_3
:
70
NovosCrystalGUIDs
[2] = go->GetGUID();
71
break
;
72
case
GO_NOVOS_CRYSTAL_4
:
73
NovosCrystalGUIDs
[3] = go->GetGUID();
74
break
;
75
default
:
76
break
;
77
}
78
}
79
80
void
InitializeTrollgoreInvaderSummoner
(
Creature
* creature)
81
{
82
float
y = creature->
GetPositionY
();
83
float
z = creature->
GetPositionZ
();
84
85
if
(z < 50.0f)
86
return
;
87
88
if
(y < -650.0f && y > -660.0f)
89
TrollgoreInvaderSummonerGuids
[0] = creature->
GetGUID
();
90
else
if
(y < -660.0f && y > -670.0f)
91
TrollgoreInvaderSummonerGuids
[1] = creature->
GetGUID
();
92
else
if
(y < -675.0f && y > -685.0f)
93
TrollgoreInvaderSummonerGuids
[2] = creature->
GetGUID
();
94
}
95
96
void
InitializeNovosSummoner
(
Creature
* creature)
97
{
98
float
x = creature->
GetPositionX
();
99
float
y = creature->
GetPositionY
();
100
float
z = creature->
GetPositionZ
();
101
102
if
(x < -374.0f && x > -379.0f && y > -820.0f && y < -815.0f && z < 60.0f && z > 58.0f)
103
NovosSummonerGUIDs
[0] = creature->
GetGUID
();
104
else
if
(x < -379.0f && x > -385.0f && y > -820.0f && y < -815.0f && z < 60.0f && z > 58.0f)
105
NovosSummonerGUIDs
[1] = creature->
GetGUID
();
106
else
if
(x < -374.0f && x > -385.0f && y > -827.0f && y < -820.0f && z < 60.0f && z > 58.0f)
107
NovosSummonerGUIDs
[2] = creature->
GetGUID
();
108
else
if
(x < -338.0f && x > -344.0f && y > -727.0f && y < 721.0f && z < 30.0f && z > 26.0f)
109
NovosSummonerGUIDs
[3] = creature->
GetGUID
();
110
}
111
112
uint64
GetData64
(
uint32
type)
const
OVERRIDE
113
{
114
switch
(type)
115
{
116
case
DATA_TROLLGORE
:
117
return
TrollgoreGUID
;
118
case
DATA_NOVOS
:
119
return
NovosGUID
;
120
case
DATA_KING_DRED
:
121
return
KingDredGUID
;
122
case
DATA_THARON_JA
:
123
return
TharonJaGUID
;
124
case
DATA_TROLLGORE_INVADER_SUMMONER_1
:
125
case
DATA_TROLLGORE_INVADER_SUMMONER_2
:
126
case
DATA_TROLLGORE_INVADER_SUMMONER_3
:
127
return
TrollgoreInvaderSummonerGuids
[type -
DATA_TROLLGORE_INVADER_SUMMONER_1
];
128
case
DATA_NOVOS_CRYSTAL_1
:
129
case
DATA_NOVOS_CRYSTAL_2
:
130
case
DATA_NOVOS_CRYSTAL_3
:
131
case
DATA_NOVOS_CRYSTAL_4
:
132
return
NovosCrystalGUIDs
[type -
DATA_NOVOS_CRYSTAL_1
];
133
case
DATA_NOVOS_SUMMONER_1
:
134
case
DATA_NOVOS_SUMMONER_2
:
135
case
DATA_NOVOS_SUMMONER_3
:
136
case
DATA_NOVOS_SUMMONER_4
:
137
return
NovosSummonerGUIDs
[type -
DATA_NOVOS_SUMMONER_1
];
138
}
139
140
return
0;
141
}
142
143
void
OnUnitDeath
(
Unit
* unit)
OVERRIDE
144
{
145
if
(unit->GetEntry() ==
NPC_CRYSTAL_HANDLER
)
146
if
(
Creature
* novos =
instance
->GetCreature(
NovosGUID
))
147
novos->AI()->DoAction(
ACTION_CRYSTAL_HANDLER_DIED
);
148
}
149
150
std::string
GetSaveData
()
OVERRIDE
151
{
152
OUT_SAVE_INST_DATA
;
153
154
std::ostringstream saveStream;
155
saveStream <<
"D K "
<<
GetBossSaveData
();
156
157
OUT_SAVE_INST_DATA_COMPLETE
;
158
return
saveStream.str();
159
}
160
161
void
Load
(
char
const
* str)
OVERRIDE
162
{
163
if
(!str)
164
{
165
OUT_LOAD_INST_DATA_FAIL
;
166
return
;
167
}
168
169
OUT_LOAD_INST_DATA
(str);
170
171
char
dataHead1, dataHead2;
172
173
std::istringstream loadStream(str);
174
loadStream >> dataHead1 >> dataHead2;
175
176
if
(dataHead1 ==
'D'
&& dataHead2 ==
'K'
)
177
{
178
for
(
uint32
i = 0; i <
EncounterCount
; ++i)
179
{
180
uint32
tmpState;
181
loadStream >> tmpState;
182
if
(tmpState ==
IN_PROGRESS
|| tmpState >
SPECIAL
)
183
tmpState =
NOT_STARTED
;
184
SetBossState
(i,
EncounterState
(tmpState));
185
}
186
}
187
else
188
OUT_LOAD_INST_DATA_FAIL
;
189
190
OUT_LOAD_INST_DATA_COMPLETE
;
191
}
192
193
protected
:
194
uint64
TrollgoreGUID
;
195
uint64
NovosGUID
;
196
uint64
KingDredGUID
;
197
uint64
TharonJaGUID
;
198
199
uint64
TrollgoreInvaderSummonerGuids
[3];
200
uint64
NovosCrystalGUIDs
[4];
201
uint64
NovosSummonerGUIDs
[4];
202
};
203
204
InstanceScript
*
GetInstanceScript
(
InstanceMap
* map)
const
OVERRIDE
205
{
206
return
new
instance_drak_tharon_keep_InstanceScript
(map);
207
}
208
};
209
210
void
AddSC_instance_drak_tharon_keep
()
211
{
212
new
instance_drak_tharon_keep
();
213
}
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
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
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
Map
Definition
Map.h:238
Object::GetGUID
uint64 GetGUID() const
Definition
Object.h:119
Unit
Definition
Unit.h:1367
instance_drak_tharon_keep
Definition
instance_drak_tharon_keep.cpp:12
instance_drak_tharon_keep::instance_drak_tharon_keep
instance_drak_tharon_keep()
Definition
instance_drak_tharon_keep.cpp:14
instance_drak_tharon_keep::GetInstanceScript
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
Definition
instance_drak_tharon_keep.cpp:204
drak_tharon_keep.h
DrakTharonKeepScriptName
#define DrakTharonKeepScriptName
Definition
drak_tharon_keep.h:9
GO_NOVOS_CRYSTAL_4
@ GO_NOVOS_CRYSTAL_4
Definition
drak_tharon_keep.h:71
GO_NOVOS_CRYSTAL_1
@ GO_NOVOS_CRYSTAL_1
Definition
drak_tharon_keep.h:68
GO_NOVOS_CRYSTAL_2
@ GO_NOVOS_CRYSTAL_2
Definition
drak_tharon_keep.h:69
GO_NOVOS_CRYSTAL_3
@ GO_NOVOS_CRYSTAL_3
Definition
drak_tharon_keep.h:70
NPC_TROLLGORE
@ NPC_TROLLGORE
Definition
drak_tharon_keep.h:42
NPC_CRYSTAL_CHANNEL_TARGET
@ NPC_CRYSTAL_CHANNEL_TARGET
Definition
drak_tharon_keep.h:53
NPC_WORLD_TRIGGER
@ NPC_WORLD_TRIGGER
Definition
drak_tharon_keep.h:63
NPC_THARON_JA
@ NPC_THARON_JA
Definition
drak_tharon_keep.h:45
NPC_NOVOS
@ NPC_NOVOS
Definition
drak_tharon_keep.h:43
NPC_KING_DRED
@ NPC_KING_DRED
Definition
drak_tharon_keep.h:44
NPC_CRYSTAL_HANDLER
@ NPC_CRYSTAL_HANDLER
Definition
drak_tharon_keep.h:54
DATA_NOVOS_CRYSTAL_2
@ DATA_NOVOS_CRYSTAL_2
Definition
drak_tharon_keep.h:29
DATA_NOVOS_SUMMONER_4
@ DATA_NOVOS_SUMMONER_4
Definition
drak_tharon_keep.h:35
DATA_NOVOS_CRYSTAL_3
@ DATA_NOVOS_CRYSTAL_3
Definition
drak_tharon_keep.h:30
DATA_NOVOS_SUMMONER_3
@ DATA_NOVOS_SUMMONER_3
Definition
drak_tharon_keep.h:34
DATA_TROLLGORE_INVADER_SUMMONER_1
@ DATA_TROLLGORE_INVADER_SUMMONER_1
Definition
drak_tharon_keep.h:24
DATA_TROLLGORE_INVADER_SUMMONER_3
@ DATA_TROLLGORE_INVADER_SUMMONER_3
Definition
drak_tharon_keep.h:26
DATA_NOVOS_SUMMONER_1
@ DATA_NOVOS_SUMMONER_1
Definition
drak_tharon_keep.h:32
DATA_KING_DRED
@ DATA_KING_DRED
Definition
drak_tharon_keep.h:18
DATA_NOVOS_SUMMONER_2
@ DATA_NOVOS_SUMMONER_2
Definition
drak_tharon_keep.h:33
DATA_TROLLGORE_INVADER_SUMMONER_2
@ DATA_TROLLGORE_INVADER_SUMMONER_2
Definition
drak_tharon_keep.h:25
DATA_NOVOS_CRYSTAL_4
@ DATA_NOVOS_CRYSTAL_4
Definition
drak_tharon_keep.h:31
DATA_TROLLGORE
@ DATA_TROLLGORE
Definition
drak_tharon_keep.h:16
DATA_NOVOS
@ DATA_NOVOS
Definition
drak_tharon_keep.h:17
DATA_THARON_JA
@ DATA_THARON_JA
Definition
drak_tharon_keep.h:19
ACTION_CRYSTAL_HANDLER_DIED
@ ACTION_CRYSTAL_HANDLER_DIED
Definition
drak_tharon_keep.h:37
DATA_NOVOS_CRYSTAL_1
@ DATA_NOVOS_CRYSTAL_1
Definition
drak_tharon_keep.h:28
AddSC_instance_drak_tharon_keep
void AddSC_instance_drak_tharon_keep()
Definition
instance_drak_tharon_keep.cpp:210
Position::GetPositionZ
float GetPositionZ() const
Definition
Object.h:330
Position::GetPositionX
float GetPositionX() const
Definition
Object.h:328
Position::GetPositionY
float GetPositionY() const
Definition
Object.h:329
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript
Definition
instance_drak_tharon_keep.cpp:17
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::OnCreatureCreate
void OnCreatureCreate(Creature *creature) OVERRIDE
Definition
instance_drak_tharon_keep.cpp:32
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::OnGameObjectCreate
void OnGameObjectCreate(GameObject *go) OVERRIDE
Definition
instance_drak_tharon_keep.cpp:59
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::instance_drak_tharon_keep_InstanceScript
instance_drak_tharon_keep_InstanceScript(Map *map)
Definition
instance_drak_tharon_keep.cpp:18
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::InitializeTrollgoreInvaderSummoner
void InitializeTrollgoreInvaderSummoner(Creature *creature)
Definition
instance_drak_tharon_keep.cpp:80
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::OnUnitDeath
void OnUnitDeath(Unit *unit) OVERRIDE
Definition
instance_drak_tharon_keep.cpp:143
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::TrollgoreGUID
uint64 TrollgoreGUID
Definition
instance_drak_tharon_keep.cpp:194
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::InitializeNovosSummoner
void InitializeNovosSummoner(Creature *creature)
Definition
instance_drak_tharon_keep.cpp:96
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::NovosCrystalGUIDs
uint64 NovosCrystalGUIDs[4]
Definition
instance_drak_tharon_keep.cpp:200
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::TrollgoreInvaderSummonerGuids
uint64 TrollgoreInvaderSummonerGuids[3]
Definition
instance_drak_tharon_keep.cpp:199
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::NovosSummonerGUIDs
uint64 NovosSummonerGUIDs[4]
Definition
instance_drak_tharon_keep.cpp:201
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::TharonJaGUID
uint64 TharonJaGUID
Definition
instance_drak_tharon_keep.cpp:197
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::Load
void Load(char const *str) OVERRIDE
Definition
instance_drak_tharon_keep.cpp:161
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::GetData64
uint64 GetData64(uint32 type) const OVERRIDE
Definition
instance_drak_tharon_keep.cpp:112
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::KingDredGUID
uint64 KingDredGUID
Definition
instance_drak_tharon_keep.cpp:196
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::GetSaveData
std::string GetSaveData() OVERRIDE
Definition
instance_drak_tharon_keep.cpp:150
instance_drak_tharon_keep::instance_drak_tharon_keep_InstanceScript::NovosGUID
uint64 NovosGUID
Definition
instance_drak_tharon_keep.cpp:195
src
server
scripts
Northrend
DraktharonKeep
instance_drak_tharon_keep.cpp
Generated on
for Project SkyFire Core by
1.17.0