Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
instance_utgarde_pinnacle.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 "utgarde_pinnacle.h"
9
10#define MAX_ENCOUNTER 4
11
12/* Utgarde Pinnacle encounters:
130 - Svala Sorrowgrave
141 - Gortok Palehoof
152 - Skadi the Ruthless
163 - King Ymiron
17*/
18
25
27{
28public:
29 instance_utgarde_pinnacle() : InstanceMapScript("instance_utgarde_pinnacle", 575) { }
30
32 {
33 return new instance_pinnacle(map);
34 }
35
37 {
39
44
48
54
57
59
60 std::string str_data;
61
63 {
64 for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
66
70 uiKingYmiron = 0;
71
75
80 uiPalehoofOrb = 0;
81
82 uiSvala = 0;
84 }
85
87 {
88 for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
90 return true;
91
92 return false;
93 }
94
96 {
97 switch (creature->GetEntry())
98 {
99 case BOSS_SVALA_SORROWGRAVE: uiSvalaSorrowgrave = creature->GetGUID(); break;
100 case BOSS_GORTOK_PALEHOOF: uiGortokPalehoof = creature->GetGUID(); break;
101 case BOSS_SKADI_RUTHLESS: uiSkadiTheRuthless = creature->GetGUID(); break;
102 case BOSS_KING_YMIRON: uiKingYmiron = creature->GetGUID(); break;
103 case NPC_FRENZIED_WORGEN: uiFrenziedWorgen = creature->GetGUID(); break;
104 case NPC_RAVENOUS_FURBOLG: uiRavenousFurbolg = creature->GetGUID(); break;
105 case NPC_MASSIVE_JORMUNGAR: uiMassiveJormungar = creature->GetGUID(); break;
106 case NPC_FEROCIOUS_RHINO: uiFerociousRhino = creature->GetGUID(); break;
107 case NPC_SVALA: uiSvala = creature->GetGUID(); break;
108 case NPC_PALEHOOF_ORB: uiPalehoofOrb = creature->GetGUID(); break;
109 }
110 }
111
113 {
114 switch (go->GetEntry())
115 {
117 uiSkadiTheRuthlessDoor = go->GetGUID();
118 if (m_auiEncounter[2] == DONE) HandleGameObject(0, true, go);
119 break;
121 uiKingYmironDoor = go->GetGUID();
122 if (m_auiEncounter[3] == DONE) HandleGameObject(0, true, go);
123 break;
125 uiGortokPalehoofSphere = go->GetGUID();
126 if (m_auiEncounter[1] == DONE)
127 {
128 HandleGameObject(0, true, go);
130 }
131 break;
132 }
133 }
134
135 void SetData(uint32 type, uint32 data) OVERRIDE
136 {
137 switch (type)
138 {
140 m_auiEncounter[0] = data;
141 break;
143 m_auiEncounter[1] = data;
144 break;
146 if (data == DONE)
148 m_auiEncounter[2] = data;
149 break;
151 if (data == DONE)
153 m_auiEncounter[3] = data;
154 break;
155 }
156
157 if (data == DONE)
158 SaveToDB();
159 }
160
162 {
163 switch (type)
164 {
166 uiSacrificedPlayer = data;
167 break;
168 }
169 }
170
172 {
173 switch (type)
174 {
179 }
180 return 0;
181 }
182
183 uint64 GetData64(uint32 identifier) const OVERRIDE
184 {
185 switch (identifier)
186 {
190 case DATA_KING_YMIRON: return uiKingYmiron;
195 case DATA_NPC_ORB: return uiPalehoofOrb;
196 case DATA_SVALA: return uiSvala;
199 }
200
201 return 0;
202 }
203
204 std::string GetSaveData() OVERRIDE
205 {
207
208 std::ostringstream saveStream;
209 saveStream << "U P " << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' '
210 << m_auiEncounter[2] << ' ' << m_auiEncounter[3];
211
212 str_data = saveStream.str();
213
215 return str_data;
216 }
217
218 void Load(const char* in) OVERRIDE
219 {
220 if (!in)
221 {
223 return;
224 }
225
227
228 char dataHead1, dataHead2;
229 uint16 data0, data1, data2, data3;
230
231 std::istringstream loadStream(in);
232 loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3;
233
234 if (dataHead1 == 'U' && dataHead2 == 'P')
235 {
236 m_auiEncounter[0] = data0;
237 m_auiEncounter[1] = data1;
238 m_auiEncounter[2] = data2;
239 m_auiEncounter[3] = data3;
240
241 for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
242 if (m_auiEncounter[i] == IN_PROGRESS)
244
246
248 }
249 };
250};
251
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
std::uint64_t uint64
Definition Define.h:76
std::uint16_t uint16
Definition Define.h:78
#define OUT_LOAD_INST_DATA_FAIL
@ IN_PROGRESS
@ DONE
@ NOT_STARTED
#define OUT_SAVE_INST_DATA_COMPLETE
#define OUT_LOAD_INST_DATA_COMPLETE
#define OUT_SAVE_INST_DATA
#define OUT_LOAD_INST_DATA(a)
@ GO_FLAG_NOT_SELECTABLE
@ GAMEOBJECT_FIELD_FLAGS
InstanceMapScript(const char *name, uint32 mapId)
InstanceScript(Map *map)
void HandleGameObject(uint64 guid, bool open, GameObject *go=NULL)
Definition Map.h:238
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
@ ENTRY_SKADI_THE_RUTHLESS_DOOR
@ ENTRY_GORK_PALEHOOF_SPHERE
void AddSC_instance_utgarde_pinnacle()
#define MAX_ENCOUNTER
void SetData64(uint32 type, uint64 data) OVERRIDE
uint64 GetData64(uint32 identifier) const OVERRIDE
void SetData(uint32 type, uint32 data) OVERRIDE
@ BOSS_KING_YMIRON
@ NPC_RAVENOUS_FURBOLG
@ BOSS_SKADI_RUTHLESS
@ NPC_FRENZIED_WORGEN
@ BOSS_SVALA_SORROWGRAVE
@ NPC_SVALA
@ NPC_MASSIVE_JORMUNGAR
@ BOSS_GORTOK_PALEHOOF
@ NPC_PALEHOOF_ORB
@ NPC_FEROCIOUS_RHINO
@ DATA_GORTOK_PALEHOOF_SPHERE
@ DATA_SKADI_THE_RUTHLESS
@ DATA_SACRIFICED_PLAYER
@ DATA_KING_YMIRON
@ DATA_NPC_RAVENOUS_FURBOLG
@ DATA_SVALA
@ DATA_NPC_FRENZIED_WORGEN
@ DATA_SVALA_SORROWGRAVE
@ DATA_NPC_MASSIVE_JORMUNGAR
@ DATA_NPC_FEROCIOUS_RHINO
@ DATA_GORTOK_PALEHOOF
@ DATA_NPC_ORB
@ DATA_KING_YMIRON_EVENT
@ DATA_SVALA_SORROWGRAVE_EVENT
@ DATA_GORTOK_PALEHOOF_EVENT
@ DATA_SKADI_THE_RUTHLESS_EVENT