Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
instance_utgarde_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 "InstanceScript.h"
8#include "utgarde_keep.h"
9
16
22
24{
25 public:
27
29 {
41
43 {
44 switch (creature->GetEntry())
45 {
47 PrinceKelesethGUID = creature->GetGUID();
48 break;
49 case NPC_SKARVALD:
50 SkarvaldGUID = creature->GetGUID();
51 AddMinion(creature, true);
52 break;
53 case NPC_DALRONN:
54 DalronnGUID = creature->GetGUID();
55 AddMinion(creature, true);
56 break;
57 case NPC_INGVAR:
58 IngvarGUID = creature->GetGUID();
59 break;
60 default:
61 break;
62 }
63 }
64
66 {
67 switch (creature->GetEntry())
68 {
69 case NPC_SKARVALD:
70 case NPC_DALRONN:
71 AddMinion(creature, false);
72 break;
73 default:
74 break;
75 }
76 }
77
79 {
80 switch (go->GetEntry())
81 {
82 case GO_BELLOW_1:
83 Forges[0].BellowGUID = go->GetGUID();
84 HandleGameObject(0, Forges[0].Event != NOT_STARTED, go);
85 break;
86 case GO_BELLOW_2:
87 Forges[1].BellowGUID = go->GetGUID();
88 HandleGameObject(0, Forges[1].Event != NOT_STARTED, go);
89 break;
90 case GO_BELLOW_3:
91 Forges[2].BellowGUID = go->GetGUID();
92 HandleGameObject(0, Forges[2].Event != NOT_STARTED, go);
93 break;
94 case GO_FORGEFIRE_1:
95 Forges[0].FireGUID = go->GetGUID();
96 HandleGameObject(0, Forges[0].Event != NOT_STARTED, go);
97 break;
98 case GO_FORGEFIRE_2:
99 Forges[1].FireGUID = go->GetGUID();
100 HandleGameObject(0, Forges[1].Event != NOT_STARTED, go);
101 break;
102 case GO_FORGEFIRE_3:
103 Forges[2].FireGUID = go->GetGUID();
104 HandleGameObject(0, Forges[2].Event != NOT_STARTED, go);
105 break;
107 Forges[0].AnvilGUID = go->GetGUID();
108 HandleGameObject(0, Forges[0].Event != NOT_STARTED, go);
109 break;
111 Forges[1].AnvilGUID = go->GetGUID();
112 HandleGameObject(0, Forges[1].Event != NOT_STARTED, go);
113 break;
115 Forges[2].AnvilGUID = go->GetGUID();
116 HandleGameObject(0, Forges[2].Event != NOT_STARTED, go);
117 break;
120 AddDoor(go, true);
121 break;
122 default:
123 break;
124 }
125 }
126
128 {
129 switch (go->GetEntry())
130 {
133 AddDoor(go, false);
134 break;
135 default:
136 break;
137 }
138 }
139
141 {
142 switch (type)
143 {
145 return PrinceKelesethGUID;
146 case DATA_SKARVALD:
147 return SkarvaldGUID;
148 case DATA_DALRONN:
149 return DalronnGUID;
150 case DATA_INGVAR:
151 return IngvarGUID;
152 default:
153 break;
154 }
155
156 return 0;
157 }
158
159 void SetData(uint32 type, uint32 data) OVERRIDE
160 {
161 switch (type)
162 {
163 case DATA_FORGE_1:
164 case DATA_FORGE_2:
165 case DATA_FORGE_3:
166 {
167 uint8 i = type - DATA_FORGE_1;
168 HandleGameObject(Forges[i].AnvilGUID, data != NOT_STARTED);
169 HandleGameObject(Forges[i].BellowGUID, data != NOT_STARTED);
170 HandleGameObject(Forges[i].FireGUID, data != NOT_STARTED);
171 Forges[i].Event = data;
172
173 if (data == DONE)
174 SaveToDB();
175 break;
176 }
177 default:
178 break;
179 }
180 }
181
182 std::string GetSaveData() OVERRIDE
183 {
185
186 std::ostringstream saveStream;
187 saveStream << "U K " << GetBossSaveData();
188
189 for (uint8 i = 0; i < 3; ++i)
190 saveStream << Forges[i].Event << ' ';
191
193 return saveStream.str();
194 }
195
196 void Load(char const* str) OVERRIDE
197 {
198 if (!str)
199 {
201 return;
202 }
203
205
206 char dataHead1, dataHead2;
207
208 std::istringstream loadStream(str);
209 loadStream >> dataHead1 >> dataHead2;
210
211 if (dataHead1 == 'U' && dataHead2 == 'K')
212 {
213 for (uint32 i = 0; i < EncounterCount; ++i)
214 {
215 uint32 tmpState;
216 loadStream >> tmpState;
217 if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
218 tmpState = NOT_STARTED;
219 SetBossState(i, EncounterState(tmpState));
220 }
221
222 for (uint8 i = 0; i < 3; ++i)
223 loadStream >> Forges[i].Event;
224 }
225 else
227
229 }
230
231 protected:
233
238 };
239
244};
245
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
#define OUT_LOAD_INST_DATA_FAIL
EncounterState
@ IN_PROGRESS
@ DONE
@ SPECIAL
@ 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)
@ DOOR_TYPE_ROOM
@ DOOR_TYPE_PASSAGE
@ BOUNDARY_NONE
uint32 const EncounterCount
InstanceMapScript(const char *name, uint32 mapId)
InstanceScript(Map *map)
void SetBossNumber(uint32 number)
virtual bool SetBossState(uint32 id, EncounterState state)
std::string GetBossSaveData()
void AddMinion(Creature *minion, bool add)
void AddDoor(GameObject *door, bool add)
void LoadMinionData(MinionData const *data)
void LoadDoorData(DoorData const *data)
void HandleGameObject(uint64 guid, bool open, GameObject *go=NULL)
Definition Map.h:238
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
@ NPC_PRINCE_KELESETH
DoorData const doorData[]
MinionData const minionData[]
void AddSC_instance_utgarde_keep()
MinionData const minionData[]
DoorData const doorData[]
@ GO_FORGEFIRE_3
@ GO_GIANT_PORTCULLIS_1
@ GO_BELLOW_3
@ GO_GLOWING_ANVIL_1
@ GO_GLOWING_ANVIL_2
@ GO_BELLOW_1
@ GO_GIANT_PORTCULLIS_2
@ GO_BELLOW_2
@ GO_FORGEFIRE_2
@ GO_GLOWING_ANVIL_3
@ GO_FORGEFIRE_1
@ NPC_SKARVALD
@ NPC_INGVAR
@ NPC_DALRONN
#define UKScriptName
Definition utgarde_keep.h:9
@ DATA_DALRONN
@ DATA_FORGE_2
@ DATA_SKARVALD_DALRONN
@ DATA_FORGE_1
@ DATA_PRINCE_KELESETH
@ DATA_FORGE_3
@ DATA_SKARVALD
@ DATA_INGVAR