Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
instance_steam_vault.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 "
steam_vault.h
"
9
10
class
go_main_chambers_access_panel
:
public
GameObjectScript
11
{
12
public
:
13
go_main_chambers_access_panel
() :
GameObjectScript
(
"go_main_chambers_access_panel"
) { }
14
15
bool
OnGossipHello
(
Player
*
/*player*/
,
GameObject
* go)
OVERRIDE
16
{
17
InstanceScript
* instance = go->GetInstanceScript();
18
if
(!instance)
19
return
false
;
20
21
if
(go->GetEntry() ==
GO_ACCESS_PANEL_HYDRO
&& (instance->
GetBossState
(
DATA_HYDROMANCER_THESPIA
) ==
DONE
|| instance->
GetBossState
(
DATA_HYDROMANCER_THESPIA
) ==
SPECIAL
))
22
{
23
instance->
SetBossState
(
DATA_HYDROMANCER_THESPIA
,
SPECIAL
);
24
go->SetGoState(
GOState::GO_STATE_ACTIVE
);
25
}
26
27
if
(go->GetEntry() ==
GO_ACCESS_PANEL_MEK
&& (instance->
GetBossState
(
DATA_MEKGINEER_STEAMRIGGER
) ==
DONE
|| instance->
GetBossState
(
DATA_MEKGINEER_STEAMRIGGER
) ==
SPECIAL
))
28
{
29
instance->
SetBossState
(
DATA_MEKGINEER_STEAMRIGGER
,
SPECIAL
);
30
go->SetGoState(
GOState::GO_STATE_ACTIVE
);
31
}
32
33
return
true
;
34
}
35
};
36
37
class
instance_steam_vault
:
public
InstanceMapScript
38
{
39
public
:
40
instance_steam_vault
() :
InstanceMapScript
(
SteamVaultScriptName
, 545) { }
41
42
struct
instance_steam_vault_InstanceMapScript
:
public
InstanceScript
43
{
44
instance_steam_vault_InstanceMapScript
(
Map
* map) :
InstanceScript
(map)
45
{
46
SetBossNumber
(
EncounterCount
);
47
48
ThespiaGUID
= 0;
49
MekgineerGUID
= 0;
50
KalithreshGUID
= 0;
51
52
MainChambersDoorGUID
= 0;
53
DistillerState
= 0;
54
}
55
56
void
OnCreatureCreate
(
Creature
* creature)
OVERRIDE
57
{
58
switch
(creature->GetEntry())
59
{
60
case
NPC_HYDROMANCER_THESPIA
:
61
ThespiaGUID
= creature->GetGUID();
62
break
;
63
case
NPC_MEKGINEER_STEAMRIGGER
:
64
MekgineerGUID
= creature->GetGUID();
65
break
;
66
case
NPC_WARLORD_KALITHRESH
:
67
KalithreshGUID
= creature->GetGUID();
68
break
;
69
default
:
70
break
;
71
}
72
}
73
74
void
OnGameObjectCreate
(
GameObject
* go)
OVERRIDE
75
{
76
switch
(go->GetEntry())
77
{
78
case
GO_MAIN_CHAMBERS_DOOR
:
79
MainChambersDoorGUID
= go->GetGUID();
80
break
;
81
default
:
82
break
;
83
}
84
}
85
86
uint64
GetData64
(
uint32
type)
const
OVERRIDE
87
{
88
switch
(type)
89
{
90
case
DATA_HYDROMANCER_THESPIA
:
91
return
ThespiaGUID
;
92
case
DATA_MEKGINEER_STEAMRIGGER
:
93
return
MekgineerGUID
;
94
case
DATA_WARLORD_KALITHRESH
:
95
return
KalithreshGUID
;
96
default
:
97
break
;
98
}
99
return
0;
100
}
101
102
void
SetData
(
uint32
type,
uint32
data)
OVERRIDE
103
{
104
if
(type ==
DATA_DISTILLER
)
105
DistillerState
= data;
106
}
107
108
uint32
GetData
(
uint32
type)
const
OVERRIDE
109
{
110
if
(type ==
DATA_DISTILLER
)
111
return
DistillerState
;
112
return
0;
113
}
114
115
bool
SetBossState
(
uint32
type,
EncounterState
state)
OVERRIDE
116
{
117
if
(!
InstanceScript::SetBossState
(type, state))
118
return
false
;
119
120
switch
(type)
121
{
122
case
DATA_HYDROMANCER_THESPIA
:
123
if
(state ==
SPECIAL
)
124
{
125
if
(
GetBossState
(
DATA_MEKGINEER_STEAMRIGGER
) ==
SPECIAL
)
126
HandleGameObject
(
MainChambersDoorGUID
,
true
);
127
128
SF_LOG_DEBUG
(
"scripts"
,
"Instance Steamvault: Access panel used."
);
129
}
130
break
;
131
case
DATA_MEKGINEER_STEAMRIGGER
:
132
if
(state ==
SPECIAL
)
133
{
134
if
(
GetBossState
(
DATA_HYDROMANCER_THESPIA
) ==
SPECIAL
)
135
HandleGameObject
(
MainChambersDoorGUID
,
true
);
136
137
SF_LOG_DEBUG
(
"scripts"
,
"Instance Steamvault: Access panel used."
);
138
}
139
break
;
140
default
:
141
break
;
142
}
143
144
return
true
;
145
}
146
147
std::string
GetSaveData
()
OVERRIDE
148
{
149
OUT_SAVE_INST_DATA
;
150
151
std::ostringstream saveStream;
152
saveStream <<
"S V "
<<
GetBossSaveData
();
153
154
OUT_SAVE_INST_DATA_COMPLETE
;
155
return
saveStream.str();
156
}
157
158
void
Load
(
char
const
* str)
OVERRIDE
159
{
160
if
(!str)
161
{
162
OUT_LOAD_INST_DATA_FAIL
;
163
return
;
164
}
165
166
OUT_LOAD_INST_DATA
(str);
167
168
char
dataHead1, dataHead2;
169
170
std::istringstream loadStream(str);
171
loadStream >> dataHead1 >> dataHead2;
172
173
if
(dataHead1 ==
'S'
&& dataHead2 ==
'V'
)
174
{
175
for
(
uint32
i = 0; i <
EncounterCount
; ++i)
176
{
177
uint32
tmpState;
178
loadStream >> tmpState;
179
if
(tmpState ==
IN_PROGRESS
|| tmpState >
SPECIAL
)
180
tmpState =
NOT_STARTED
;
181
SetBossState
(i,
EncounterState
(tmpState));
182
}
183
}
184
else
185
OUT_LOAD_INST_DATA_FAIL
;
186
187
OUT_LOAD_INST_DATA_COMPLETE
;
188
}
189
190
protected
:
191
uint64
ThespiaGUID
;
192
uint64
MekgineerGUID
;
193
uint64
KalithreshGUID
;
194
195
uint64
MainChambersDoorGUID
;
196
uint8
DistillerState
;
197
};
198
199
InstanceScript
*
GetInstanceScript
(
InstanceMap
* map)
const
OVERRIDE
200
{
201
return
new
instance_steam_vault_InstanceMapScript
(map);
202
}
203
};
204
205
void
AddSC_instance_steam_vault
()
206
{
207
new
go_main_chambers_access_panel
();
208
new
instance_steam_vault
();
209
}
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
GOState::GO_STATE_ACTIVE
@ GO_STATE_ACTIVE
Definition
GameObject.h:576
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
SF_LOG_DEBUG
#define SF_LOG_DEBUG(filterType__,...)
Definition
Log.h:134
ScriptMgr.h
EncounterCount
uint32 const EncounterCount
Definition
baradin_hold.h:15
Creature
Definition
Creature.h:427
GameObject
Definition
GameObject.h:629
GameObjectScript::GameObjectScript
GameObjectScript(const char *name)
Definition
ScriptMgr.cpp:1442
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::GetBossState
EncounterState GetBossState(uint32 id) const
Definition
InstanceScript.h:185
InstanceScript::HandleGameObject
void HandleGameObject(uint64 guid, bool open, GameObject *go=NULL)
Definition
InstanceScript.cpp:33
Map
Definition
Map.h:238
Player
Definition
Player.h:1289
go_main_chambers_access_panel
Definition
instance_steam_vault.cpp:11
go_main_chambers_access_panel::OnGossipHello
bool OnGossipHello(Player *, GameObject *go) OVERRIDE
Definition
instance_steam_vault.cpp:15
go_main_chambers_access_panel::go_main_chambers_access_panel
go_main_chambers_access_panel()
Definition
instance_steam_vault.cpp:13
instance_steam_vault
Definition
instance_steam_vault.cpp:38
instance_steam_vault::instance_steam_vault
instance_steam_vault()
Definition
instance_steam_vault.cpp:40
instance_steam_vault::GetInstanceScript
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
Definition
instance_steam_vault.cpp:199
AddSC_instance_steam_vault
void AddSC_instance_steam_vault()
Definition
instance_steam_vault.cpp:205
steam_vault.h
SteamVaultScriptName
#define SteamVaultScriptName
Definition
steam_vault.h:9
GO_ACCESS_PANEL_HYDRO
@ GO_ACCESS_PANEL_HYDRO
Definition
steam_vault.h:31
GO_MAIN_CHAMBERS_DOOR
@ GO_MAIN_CHAMBERS_DOOR
Definition
steam_vault.h:30
GO_ACCESS_PANEL_MEK
@ GO_ACCESS_PANEL_MEK
Definition
steam_vault.h:32
NPC_HYDROMANCER_THESPIA
@ NPC_HYDROMANCER_THESPIA
Definition
steam_vault.h:23
NPC_WARLORD_KALITHRESH
@ NPC_WARLORD_KALITHRESH
Definition
steam_vault.h:25
NPC_MEKGINEER_STEAMRIGGER
@ NPC_MEKGINEER_STEAMRIGGER
Definition
steam_vault.h:24
DATA_HYDROMANCER_THESPIA
@ DATA_HYDROMANCER_THESPIA
Definition
steam_vault.h:15
DATA_MEKGINEER_STEAMRIGGER
@ DATA_MEKGINEER_STEAMRIGGER
Definition
steam_vault.h:16
DATA_DISTILLER
@ DATA_DISTILLER
Definition
steam_vault.h:18
DATA_WARLORD_KALITHRESH
@ DATA_WARLORD_KALITHRESH
Definition
steam_vault.h:17
instance_steam_vault::instance_steam_vault_InstanceMapScript
Definition
instance_steam_vault.cpp:43
instance_steam_vault::instance_steam_vault_InstanceMapScript::DistillerState
uint8 DistillerState
Definition
instance_steam_vault.cpp:196
instance_steam_vault::instance_steam_vault_InstanceMapScript::OnCreatureCreate
void OnCreatureCreate(Creature *creature) OVERRIDE
Definition
instance_steam_vault.cpp:56
instance_steam_vault::instance_steam_vault_InstanceMapScript::ThespiaGUID
uint64 ThespiaGUID
Definition
instance_steam_vault.cpp:191
instance_steam_vault::instance_steam_vault_InstanceMapScript::instance_steam_vault_InstanceMapScript
instance_steam_vault_InstanceMapScript(Map *map)
Definition
instance_steam_vault.cpp:44
instance_steam_vault::instance_steam_vault_InstanceMapScript::SetData
void SetData(uint32 type, uint32 data) OVERRIDE
Definition
instance_steam_vault.cpp:102
instance_steam_vault::instance_steam_vault_InstanceMapScript::GetData64
uint64 GetData64(uint32 type) const OVERRIDE
Definition
instance_steam_vault.cpp:86
instance_steam_vault::instance_steam_vault_InstanceMapScript::GetSaveData
std::string GetSaveData() OVERRIDE
Definition
instance_steam_vault.cpp:147
instance_steam_vault::instance_steam_vault_InstanceMapScript::OnGameObjectCreate
void OnGameObjectCreate(GameObject *go) OVERRIDE
Definition
instance_steam_vault.cpp:74
instance_steam_vault::instance_steam_vault_InstanceMapScript::MainChambersDoorGUID
uint64 MainChambersDoorGUID
Definition
instance_steam_vault.cpp:195
instance_steam_vault::instance_steam_vault_InstanceMapScript::Load
void Load(char const *str) OVERRIDE
Definition
instance_steam_vault.cpp:158
instance_steam_vault::instance_steam_vault_InstanceMapScript::GetData
uint32 GetData(uint32 type) const OVERRIDE
Definition
instance_steam_vault.cpp:108
instance_steam_vault::instance_steam_vault_InstanceMapScript::SetBossState
bool SetBossState(uint32 type, EncounterState state) OVERRIDE
Definition
instance_steam_vault.cpp:115
instance_steam_vault::instance_steam_vault_InstanceMapScript::KalithreshGUID
uint64 KalithreshGUID
Definition
instance_steam_vault.cpp:193
instance_steam_vault::instance_steam_vault_InstanceMapScript::MekgineerGUID
uint64 MekgineerGUID
Definition
instance_steam_vault.cpp:192
src
server
scripts
Outland
CoilfangReservoir
SteamVault
instance_steam_vault.cpp
Generated on
for Project SkyFire Core by
1.17.0