Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
instance_nexus.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 "
nexus.h
"
9
#include "
Player.h
"
10
11
#define NUMBER_OF_ENCOUNTERS 4
12
13
enum
Factions
14
{
15
FACTION_HOSTILE_FOR_ALL
= 16
16
};
17
18
class
instance_nexus
:
public
InstanceMapScript
19
{
20
public
:
21
instance_nexus
() :
InstanceMapScript
(
"instance_nexus"
, 576) { }
22
23
InstanceScript
*
GetInstanceScript
(
InstanceMap
* map)
const
OVERRIDE
24
{
25
return
new
instance_nexus_InstanceMapScript
(map);
26
}
27
28
struct
instance_nexus_InstanceMapScript
:
public
InstanceScript
29
{
30
instance_nexus_InstanceMapScript
(
Map
* map) :
InstanceScript
(map) { }
31
32
uint32
m_auiEncounter
[
NUMBER_OF_ENCOUNTERS
];
33
34
uint64
Anomalus
;
35
uint64
Keristrasza
;
36
37
uint64
AnomalusContainmentSphere
;
38
uint64
OrmoroksContainmentSphere
;
39
uint64
TelestrasContainmentSphere
;
40
41
std::string
strInstData
;
42
43
void
Initialize
()
OVERRIDE
44
{
45
memset(&
m_auiEncounter
, 0,
sizeof
(
m_auiEncounter
));
46
47
Anomalus
= 0;
48
Keristrasza
= 0;
49
AnomalusContainmentSphere
= 0;
50
OrmoroksContainmentSphere
= 0;
51
TelestrasContainmentSphere
= 0;
52
}
53
54
void
OnCreatureCreate
(
Creature
* creature)
OVERRIDE
55
{
56
Map::PlayerList
const
&players =
instance
->GetPlayers();
57
uint32
TeamInInstance = 0;
58
59
if
(!players.
isEmpty
())
60
{
61
if
(
Player
* player = players.
begin
()->
GetSource
())
62
TeamInInstance = player->GetTeam();
63
}
64
switch
(creature->GetEntry())
65
{
66
case
26763:
67
Anomalus
= creature->GetGUID();
68
break
;
69
case
26723:
70
Keristrasza
= creature->GetGUID();
71
break
;
72
// Alliance npcs are spawned by default, if you are alliance, you will fight against horde npcs.
73
case
26800:
74
{
75
if
(
ServerAllowsTwoSideGroups
())
76
creature->setFaction(
FACTION_HOSTILE_FOR_ALL
);
77
if
(TeamInInstance ==
ALLIANCE
)
78
creature->UpdateEntry(26799,
HORDE
);
79
break
;
80
}
81
case
26802:
82
{
83
if
(
ServerAllowsTwoSideGroups
())
84
creature->setFaction(
FACTION_HOSTILE_FOR_ALL
);
85
if
(TeamInInstance ==
ALLIANCE
)
86
creature->UpdateEntry(26801,
HORDE
);
87
break
;
88
}
89
case
26805:
90
{
91
if
(
ServerAllowsTwoSideGroups
())
92
creature->setFaction(
FACTION_HOSTILE_FOR_ALL
);
93
if
(TeamInInstance ==
ALLIANCE
)
94
creature->UpdateEntry(26803,
HORDE
);
95
break
;
96
}
97
case
27949:
98
{
99
if
(
ServerAllowsTwoSideGroups
())
100
creature->setFaction(
FACTION_HOSTILE_FOR_ALL
);
101
if
(TeamInInstance ==
ALLIANCE
)
102
creature->UpdateEntry(27947,
HORDE
);
103
break
;
104
}
105
case
26796:
106
{
107
if
(
ServerAllowsTwoSideGroups
())
108
creature->setFaction(
FACTION_HOSTILE_FOR_ALL
);
109
if
(TeamInInstance ==
ALLIANCE
)
110
creature->UpdateEntry(26798,
HORDE
);
111
break
;
112
}
113
}
114
}
115
116
void
OnGameObjectCreate
(
GameObject
* go)
OVERRIDE
117
{
118
switch
(go->GetEntry())
119
{
120
case
188527:
121
{
122
AnomalusContainmentSphere
= go->GetGUID();
123
if
(
m_auiEncounter
[1] ==
DONE
)
124
go->RemoveFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
125
break
;
126
}
127
case
188528:
128
{
129
OrmoroksContainmentSphere
= go->GetGUID();
130
if
(
m_auiEncounter
[2] ==
DONE
)
131
go->RemoveFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
132
break
;
133
}
134
case
188526:
135
{
136
TelestrasContainmentSphere
= go->GetGUID();
137
if
(
m_auiEncounter
[0] ==
DONE
)
138
go->RemoveFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
139
break
;
140
}
141
}
142
}
143
144
uint32
GetData
(
uint32
identifier)
const
OVERRIDE
145
{
146
switch
(identifier)
147
{
148
case
DATA_MAGUS_TELESTRA_EVENT
:
return
m_auiEncounter
[0];
149
case
DATA_ANOMALUS_EVENT
:
return
m_auiEncounter
[1];
150
case
DATA_ORMOROK_EVENT
:
return
m_auiEncounter
[2];
151
case
DATA_KERISTRASZA_EVENT
:
return
m_auiEncounter
[3];
152
}
153
return
0;
154
}
155
156
void
SetData
(
uint32
identifier,
uint32
data)
OVERRIDE
157
{
158
switch
(identifier)
159
{
160
case
DATA_MAGUS_TELESTRA_EVENT
:
161
{
162
if
(data ==
DONE
)
163
{
164
GameObject
*
Sphere
=
instance
->GetGameObject(
TelestrasContainmentSphere
);
165
if
(
Sphere
)
166
Sphere
->RemoveFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
167
}
168
m_auiEncounter
[0] = data;
169
break
;
170
}
171
case
DATA_ANOMALUS_EVENT
:
172
{
173
if
(data ==
DONE
)
174
{
175
if
(
GameObject
*
Sphere
=
instance
->GetGameObject(
AnomalusContainmentSphere
))
176
Sphere
->RemoveFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
177
}
178
m_auiEncounter
[1] = data;
179
break
;
180
}
181
case
DATA_ORMOROK_EVENT
:
182
{
183
if
(data ==
DONE
)
184
{
185
if
(
GameObject
*
Sphere
=
instance
->GetGameObject(
OrmoroksContainmentSphere
))
186
Sphere
->RemoveFlag(
GAMEOBJECT_FIELD_FLAGS
,
GO_FLAG_NOT_SELECTABLE
);
187
}
188
m_auiEncounter
[2] = data;
189
break
;
190
}
191
case
DATA_KERISTRASZA_EVENT
:
192
m_auiEncounter
[3] = data;
193
break
;
194
}
195
196
if
(data ==
DONE
)
197
{
198
OUT_SAVE_INST_DATA
;
199
200
std::ostringstream saveStream;
201
saveStream <<
m_auiEncounter
[0] <<
' '
<<
m_auiEncounter
[1] <<
' '
<<
m_auiEncounter
[2] <<
' '
202
<<
m_auiEncounter
[3];
203
204
strInstData
= saveStream.str();
205
206
SaveToDB
();
207
OUT_SAVE_INST_DATA_COMPLETE
;
208
}
209
}
210
211
uint64
GetData64
(
uint32
uiIdentifier)
const
OVERRIDE
212
{
213
switch
(uiIdentifier)
214
{
215
case
DATA_ANOMALUS
:
return
Anomalus
;
216
case
DATA_KERISTRASZA
:
return
Keristrasza
;
217
case
ANOMALUS_CONTAINMET_SPHERE
:
return
AnomalusContainmentSphere
;
218
case
ORMOROKS_CONTAINMET_SPHERE
:
return
OrmoroksContainmentSphere
;
219
case
TELESTRAS_CONTAINMET_SPHERE
:
return
TelestrasContainmentSphere
;
220
}
221
return
0;
222
}
223
224
std::string
GetSaveData
()
OVERRIDE
225
{
226
return
strInstData
;
227
}
228
229
void
Load
(
const
char
*chrIn)
OVERRIDE
230
{
231
if
(!chrIn)
232
{
233
OUT_LOAD_INST_DATA_FAIL
;
234
return
;
235
}
236
237
OUT_LOAD_INST_DATA
(chrIn);
238
239
std::istringstream loadStream(chrIn);
240
loadStream >>
m_auiEncounter
[0] >>
m_auiEncounter
[1] >>
m_auiEncounter
[2] >>
m_auiEncounter
[3];
241
242
for
(
uint8
i = 0; i <
NUMBER_OF_ENCOUNTERS
; ++i)
243
if
(
m_auiEncounter
[i] ==
IN_PROGRESS
)
244
m_auiEncounter
[i] =
NOT_STARTED
;
245
246
OUT_LOAD_INST_DATA_COMPLETE
;
247
}
248
};
249
};
250
251
void
AddSC_instance_nexus
()
252
{
253
new
instance_nexus
();
254
}
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
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
ALLIANCE
@ ALLIANCE
Definition
SharedDefines.h:877
HORDE
@ HORDE
Definition
SharedDefines.h:876
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::ServerAllowsTwoSideGroups
bool ServerAllowsTwoSideGroups()
Definition
InstanceScript.h:182
InstanceScript::instance
Map * instance
Definition
InstanceScript.h:129
InstanceScript::SaveToDB
void SaveToDB()
Definition
InstanceScript.cpp:20
LinkedListHead::isEmpty
bool isEmpty() const
Definition
LinkedList.h:86
Map
Definition
Map.h:238
Map::PlayerList
MapRefManager PlayerList
Definition
Map.h:406
MapRefManager::begin
iterator begin()
Definition
MapRefManager.h:24
Player
Definition
Player.h:1289
Reference::GetSource
FROM * GetSource() const
Definition
Reference.h:83
instance_nexus
Definition
instance_nexus.cpp:19
instance_nexus::instance_nexus
instance_nexus()
Definition
instance_nexus.cpp:21
instance_nexus::GetInstanceScript
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
Definition
instance_nexus.cpp:23
Factions
Factions
Definition
example_creature.cpp:63
AddSC_instance_nexus
void AddSC_instance_nexus()
Definition
instance_nexus.cpp:251
NUMBER_OF_ENCOUNTERS
#define NUMBER_OF_ENCOUNTERS
Definition
instance_nexus.cpp:11
FACTION_HOSTILE_FOR_ALL
@ FACTION_HOSTILE_FOR_ALL
Definition
instance_nexus.cpp:15
nexus.h
DATA_MAGUS_TELESTRA_EVENT
@ DATA_MAGUS_TELESTRA_EVENT
Definition
nexus.h:11
ORMOROKS_CONTAINMET_SPHERE
@ ORMOROKS_CONTAINMET_SPHERE
Definition
nexus.h:20
ANOMALUS_CONTAINMET_SPHERE
@ ANOMALUS_CONTAINMET_SPHERE
Definition
nexus.h:19
DATA_ORMOROK_EVENT
@ DATA_ORMOROK_EVENT
Definition
nexus.h:13
DATA_ANOMALUS_EVENT
@ DATA_ANOMALUS_EVENT
Definition
nexus.h:12
DATA_ANOMALUS
@ DATA_ANOMALUS
Definition
nexus.h:16
DATA_KERISTRASZA_EVENT
@ DATA_KERISTRASZA_EVENT
Definition
nexus.h:14
TELESTRAS_CONTAINMET_SPHERE
@ TELESTRAS_CONTAINMET_SPHERE
Definition
nexus.h:21
DATA_KERISTRASZA
@ DATA_KERISTRASZA
Definition
nexus.h:17
Sphere
Definition
CinematicPathMgr.cpp:36
instance_nexus::instance_nexus_InstanceMapScript
Definition
instance_nexus.cpp:29
instance_nexus::instance_nexus_InstanceMapScript::Load
void Load(const char *chrIn) OVERRIDE
Definition
instance_nexus.cpp:229
instance_nexus::instance_nexus_InstanceMapScript::strInstData
std::string strInstData
Definition
instance_nexus.cpp:41
instance_nexus::instance_nexus_InstanceMapScript::Keristrasza
uint64 Keristrasza
Definition
instance_nexus.cpp:35
instance_nexus::instance_nexus_InstanceMapScript::GetData64
uint64 GetData64(uint32 uiIdentifier) const OVERRIDE
Definition
instance_nexus.cpp:211
instance_nexus::instance_nexus_InstanceMapScript::Anomalus
uint64 Anomalus
Definition
instance_nexus.cpp:34
instance_nexus::instance_nexus_InstanceMapScript::OnGameObjectCreate
void OnGameObjectCreate(GameObject *go) OVERRIDE
Definition
instance_nexus.cpp:116
instance_nexus::instance_nexus_InstanceMapScript::Initialize
void Initialize() OVERRIDE
Definition
instance_nexus.cpp:43
instance_nexus::instance_nexus_InstanceMapScript::OrmoroksContainmentSphere
uint64 OrmoroksContainmentSphere
Definition
instance_nexus.cpp:38
instance_nexus::instance_nexus_InstanceMapScript::instance_nexus_InstanceMapScript
instance_nexus_InstanceMapScript(Map *map)
Definition
instance_nexus.cpp:30
instance_nexus::instance_nexus_InstanceMapScript::GetData
uint32 GetData(uint32 identifier) const OVERRIDE
Definition
instance_nexus.cpp:144
instance_nexus::instance_nexus_InstanceMapScript::SetData
void SetData(uint32 identifier, uint32 data) OVERRIDE
Definition
instance_nexus.cpp:156
instance_nexus::instance_nexus_InstanceMapScript::TelestrasContainmentSphere
uint64 TelestrasContainmentSphere
Definition
instance_nexus.cpp:39
instance_nexus::instance_nexus_InstanceMapScript::GetSaveData
std::string GetSaveData() OVERRIDE
Definition
instance_nexus.cpp:224
instance_nexus::instance_nexus_InstanceMapScript::m_auiEncounter
uint32 m_auiEncounter[NUMBER_OF_ENCOUNTERS]
Definition
instance_nexus.cpp:32
instance_nexus::instance_nexus_InstanceMapScript::OnCreatureCreate
void OnCreatureCreate(Creature *creature) OVERRIDE
Definition
instance_nexus.cpp:54
instance_nexus::instance_nexus_InstanceMapScript::AnomalusContainmentSphere
uint64 AnomalusContainmentSphere
Definition
instance_nexus.cpp:37
src
server
scripts
Northrend
Nexus
Nexus
instance_nexus.cpp
Generated on
for Project SkyFire Core by
1.17.0