Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
instance_forge_of_souls.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 "
forge_of_souls.h
"
9
#include "
Player.h
"
10
11
#define MAX_ENCOUNTER 2
12
13
/* Forge of Souls encounters:
14
0- Bronjahm, The Godfather of Souls
15
1- The Devourer of Souls
16
*/
17
18
class
instance_forge_of_souls
:
public
InstanceMapScript
19
{
20
public
:
21
instance_forge_of_souls
() :
InstanceMapScript
(
FoSScriptName
, 632) { }
22
23
struct
instance_forge_of_souls_InstanceScript
:
public
InstanceScript
24
{
25
instance_forge_of_souls_InstanceScript
(
Map
* map) :
InstanceScript
(map)
26
{
27
SetBossNumber
(
MAX_ENCOUNTER
);
28
bronjahm
= 0;
29
devourerOfSouls
= 0;
30
31
teamInInstance
= 0;
32
}
33
34
void
OnCreatureCreate
(
Creature
* creature)
OVERRIDE
35
{
36
Map::PlayerList
const
&players =
instance
->GetPlayers();
37
if
(!players.
isEmpty
())
38
if
(
Player
* player = players.
begin
()->
GetSource
())
39
teamInInstance
= player->GetTeam();
40
41
switch
(creature->GetEntry())
42
{
43
case
CREATURE_BRONJAHM
:
44
bronjahm
= creature->GetGUID();
45
break
;
46
case
CREATURE_DEVOURER
:
47
devourerOfSouls
= creature->GetGUID();
48
break
;
49
case
NPC_SYLVANAS_PART1
:
50
if
(
teamInInstance
==
ALLIANCE
)
51
creature->UpdateEntry(
NPC_JAINA_PART1
,
ALLIANCE
);
52
break
;
53
case
NPC_LORALEN
:
54
if
(
teamInInstance
==
ALLIANCE
)
55
creature->UpdateEntry(
NPC_ELANDRA
,
ALLIANCE
);
56
break
;
57
case
NPC_KALIRA
:
58
if
(
teamInInstance
==
ALLIANCE
)
59
creature->UpdateEntry(
NPC_KORELN
,
ALLIANCE
);
60
break
;
61
}
62
}
63
64
uint32
GetData
(
uint32
type)
const
OVERRIDE
65
{
66
switch
(type)
67
{
68
case
DATA_TEAM_IN_INSTANCE
:
69
return
teamInInstance
;
70
default
:
71
break
;
72
}
73
74
return
0;
75
}
76
77
uint64
GetData64
(
uint32
type)
const
OVERRIDE
78
{
79
switch
(type)
80
{
81
case
DATA_BRONJAHM
:
82
return
bronjahm
;
83
case
DATA_DEVOURER
:
84
return
devourerOfSouls
;
85
default
:
86
break
;
87
}
88
89
return
0;
90
}
91
92
std::string
GetSaveData
()
OVERRIDE
93
{
94
OUT_SAVE_INST_DATA
;
95
96
std::ostringstream saveStream;
97
saveStream <<
"F S "
<<
GetBossSaveData
();
98
99
OUT_SAVE_INST_DATA_COMPLETE
;
100
return
saveStream.str();
101
}
102
103
void
Load
(
const
char
* in)
OVERRIDE
104
{
105
if
(!in)
106
{
107
OUT_LOAD_INST_DATA_FAIL
;
108
return
;
109
}
110
111
OUT_LOAD_INST_DATA
(in);
112
113
char
dataHead1, dataHead2;
114
115
std::istringstream loadStream(in);
116
loadStream >> dataHead1 >> dataHead2;
117
118
if
(dataHead1 ==
'F'
&& dataHead2 ==
'S'
)
119
{
120
for
(
uint8
i = 0; i <
MAX_ENCOUNTER
; ++i)
121
{
122
uint32
tmpState;
123
loadStream >> tmpState;
124
if
(tmpState ==
IN_PROGRESS
|| tmpState >
SPECIAL
)
125
tmpState =
NOT_STARTED
;
126
SetBossState
(i,
EncounterState
(tmpState));
127
}
128
}
else
OUT_LOAD_INST_DATA_FAIL
;
129
130
OUT_LOAD_INST_DATA_COMPLETE
;
131
}
132
133
private
:
134
uint64
bronjahm
;
135
uint64
devourerOfSouls
;
136
137
uint32
teamInInstance
;
138
};
139
140
InstanceScript
*
GetInstanceScript
(
InstanceMap
* map)
const
OVERRIDE
141
{
142
return
new
instance_forge_of_souls_InstanceScript
(map);
143
}
144
};
145
146
void
AddSC_instance_forge_of_souls
()
147
{
148
new
instance_forge_of_souls
();
149
}
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
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
Player.h
ScriptMgr.h
ALLIANCE
@ ALLIANCE
Definition
SharedDefines.h:877
Creature
Definition
Creature.h:427
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
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_forge_of_souls
Definition
instance_forge_of_souls.cpp:19
instance_forge_of_souls::GetInstanceScript
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
Definition
instance_forge_of_souls.cpp:140
instance_forge_of_souls::instance_forge_of_souls
instance_forge_of_souls()
Definition
instance_forge_of_souls.cpp:21
forge_of_souls.h
NPC_JAINA_PART1
@ NPC_JAINA_PART1
Definition
forge_of_souls.h:26
CREATURE_BRONJAHM
@ CREATURE_BRONJAHM
Definition
forge_of_souls.h:21
CREATURE_DEVOURER
@ CREATURE_DEVOURER
Definition
forge_of_souls.h:22
NPC_KALIRA
@ NPC_KALIRA
Definition
forge_of_souls.h:28
NPC_KORELN
@ NPC_KORELN
Definition
forge_of_souls.h:31
NPC_LORALEN
@ NPC_LORALEN
Definition
forge_of_souls.h:30
NPC_ELANDRA
@ NPC_ELANDRA
Definition
forge_of_souls.h:29
NPC_SYLVANAS_PART1
@ NPC_SYLVANAS_PART1
Definition
forge_of_souls.h:24
FoSScriptName
#define FoSScriptName
Definition
forge_of_souls.h:9
DATA_TEAM_IN_INSTANCE
@ DATA_TEAM_IN_INSTANCE
Definition
forge_of_souls.h:16
DATA_BRONJAHM
@ DATA_BRONJAHM
Definition
forge_of_souls.h:13
DATA_DEVOURER
@ DATA_DEVOURER
Definition
forge_of_souls.h:14
AddSC_instance_forge_of_souls
void AddSC_instance_forge_of_souls()
Definition
instance_forge_of_souls.cpp:146
MAX_ENCOUNTER
#define MAX_ENCOUNTER
Definition
instance_forge_of_souls.cpp:11
instance_forge_of_souls::instance_forge_of_souls_InstanceScript
Definition
instance_forge_of_souls.cpp:24
instance_forge_of_souls::instance_forge_of_souls_InstanceScript::Load
void Load(const char *in) OVERRIDE
Definition
instance_forge_of_souls.cpp:103
instance_forge_of_souls::instance_forge_of_souls_InstanceScript::GetData
uint32 GetData(uint32 type) const OVERRIDE
Definition
instance_forge_of_souls.cpp:64
instance_forge_of_souls::instance_forge_of_souls_InstanceScript::OnCreatureCreate
void OnCreatureCreate(Creature *creature) OVERRIDE
Definition
instance_forge_of_souls.cpp:34
instance_forge_of_souls::instance_forge_of_souls_InstanceScript::teamInInstance
uint32 teamInInstance
Definition
instance_forge_of_souls.cpp:137
instance_forge_of_souls::instance_forge_of_souls_InstanceScript::GetSaveData
std::string GetSaveData() OVERRIDE
Definition
instance_forge_of_souls.cpp:92
instance_forge_of_souls::instance_forge_of_souls_InstanceScript::bronjahm
uint64 bronjahm
Definition
instance_forge_of_souls.cpp:134
instance_forge_of_souls::instance_forge_of_souls_InstanceScript::devourerOfSouls
uint64 devourerOfSouls
Definition
instance_forge_of_souls.cpp:135
instance_forge_of_souls::instance_forge_of_souls_InstanceScript::GetData64
uint64 GetData64(uint32 type) const OVERRIDE
Definition
instance_forge_of_souls.cpp:77
instance_forge_of_souls::instance_forge_of_souls_InstanceScript::instance_forge_of_souls_InstanceScript
instance_forge_of_souls_InstanceScript(Map *map)
Definition
instance_forge_of_souls.cpp:25
src
server
scripts
Northrend
FrozenHalls
ForgeOfSouls
instance_forge_of_souls.cpp
Generated on
for Project SkyFire Core by
1.17.0