Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
instance_arcatraz.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/* ScriptData
7SDName: Instance_Arcatraz
8SD%Complete: 80
9SDComment: Mainly Harbringer Skyriss event
10SDCategory: Tempest Keep, The Arcatraz
11EndScriptData */
12
13#include "ScriptMgr.h"
14#include "InstanceScript.h"
15#include "arcatraz.h"
16
17#define MAX_ENCOUNTER 9
18
20{
21 CONTAINMENT_CORE_SECURITY_FIELD_ALPHA = 184318, //door opened when Wrath-Scryer Soccothrates dies
22 CONTAINMENT_CORE_SECURITY_FIELD_BETA = 184319, //door opened when Dalliah the Doomsayer dies
23 POD_ALPHA = 183961, //pod first boss wave
24 POD_BETA = 183963, //pod second boss wave
25 POD_DELTA = 183964, //pod third boss wave
26 POD_GAMMA = 183962, //pod fourth boss wave
27 POD_OMEGA = 183965, //pod fifth boss wave
28 WARDENS_SHIELD = 184802, // warden shield
29 SEAL_SPHERE = 184802, //shield 'protecting' mellichar
30
31 MELLICHAR = 20904, //skyriss will kill this unit
32};
33
34/* Arcatraz encounters:
351 - Zereketh the Unbound event
362 - Dalliah the Doomsayer event
373 - Wrath-Scryer Soccothrates event
384 - Harbinger Skyriss event, 5 sub-events
39*/
40
42{
43 public:
45 : InstanceMapScript("instance_arcatraz", 552)
46 {
47 }
49 {
51
53
64
80
82 {
83 for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
85 return true;
86
87 return false;
88 }
89
91 {
92 switch (go->GetEntry())
93 {
96 break;
97
100 break;
101
102 case POD_ALPHA:
103 Pod_AlphaGUID = go->GetGUID();
104 break;
105
106 case POD_GAMMA:
107 Pod_GammaGUID = go->GetGUID();
108 break;
109
110 case POD_BETA:
111 Pod_BetaGUID = go->GetGUID();
112 break;
113
114 case POD_DELTA:
115 Pod_DeltaGUID = go->GetGUID();
116 break;
117
118 case POD_OMEGA:
119 Pod_OmegaGUID = go->GetGUID();
120 break;
121
122 case SEAL_SPHERE:
123 GoSphereGUID = go->GetGUID();
124 break;
125
126 /*case WARDENS_SHIELD:
127 Wardens_ShieldGUID = go->GetGUID();
128 break;*/
129 }
130 }
131
133 {
134 if (creature->GetEntry() == MELLICHAR)
135 MellicharGUID = creature->GetGUID();
136 }
137
138 void SetData(uint32 type, uint32 data) OVERRIDE
139 {
140 switch (type)
141 {
142 case TYPE_ZEREKETH:
143 m_auiEncounter[0] = data;
144 break;
145 case TYPE_DALLIAH:
146 if (data == DONE)
147 {
149 go->UseDoorOrButton();
150 }
151 m_auiEncounter[1] = data;
152 break;
154 if (data == DONE)
155 {
157 go->UseDoorOrButton();
158 }
159 m_auiEncounter[2] = data;
160 break;
162 if (data == NOT_STARTED || data == FAIL)
163 {
169 }
170 m_auiEncounter[3] = data;
171 break;
172 case TYPE_WARDEN_1:
173 if (data == IN_PROGRESS)
174 if (GameObject* go = instance->GetGameObject(Pod_AlphaGUID))
175 go->UseDoorOrButton();
176 m_auiEncounter[4] = data;
177 break;
178 case TYPE_WARDEN_2:
179 if (data == IN_PROGRESS)
180 {
181 if (GameObject* go = instance->GetGameObject(Pod_BetaGUID))
182 go->UseDoorOrButton();
183 }
184 m_auiEncounter[5] = data;
185 break;
186 case TYPE_WARDEN_3:
187 if (data == IN_PROGRESS)
188 {
189 if (GameObject* go = instance->GetGameObject(Pod_DeltaGUID))
190 go->UseDoorOrButton();
191 }
192 m_auiEncounter[6] = data;
193 break;
194 case TYPE_WARDEN_4:
195 if (data == IN_PROGRESS)
196 {
197 if (GameObject* go = instance->GetGameObject(Pod_GammaGUID))
198 go->UseDoorOrButton();
199 }
200 m_auiEncounter[7] = data;
201 break;
202 case TYPE_WARDEN_5:
203 if (data == IN_PROGRESS)
204 {
205 if (GameObject* go = instance->GetGameObject(Pod_OmegaGUID))
206 go->UseDoorOrButton();
207 }
208 m_auiEncounter[8] = data;
209 break;
210 case TYPE_SHIELD_OPEN:
211 if (data == IN_PROGRESS)
212 {
213 if (GameObject* go = instance->GetGameObject(Wardens_ShieldGUID))
214 go->UseDoorOrButton();
215 }
216 break;
217 }
218 }
219
221 {
222 switch (type)
223 {
225 case TYPE_WARDEN_1: return m_auiEncounter[4];
226 case TYPE_WARDEN_2: return m_auiEncounter[5];
227 case TYPE_WARDEN_3: return m_auiEncounter[6];
228 case TYPE_WARDEN_4: return m_auiEncounter[7];
229 case TYPE_WARDEN_5: return m_auiEncounter[8];
230 }
231 return 0;
232 }
233
235 {
236 switch (data)
237 {
238 case DATA_MELLICHAR: return MellicharGUID;
239 case DATA_SPHERE_SHIELD: return GoSphereGUID;
240 }
241 return 0;
242 }
243 };
244
249};
250
255
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
@ IN_PROGRESS
@ FAIL
@ DONE
@ NOT_STARTED
@ TYPE_WARDEN_5
Definition arcatraz.h:19
@ TYPE_WARDEN_1
Definition arcatraz.h:15
@ DATA_MELLICHAR
Definition arcatraz.h:20
@ TYPE_ZEREKETH
Definition arcatraz.h:11
@ TYPE_SHIELD_OPEN
Definition arcatraz.h:21
@ TYPE_SOCCOTHRATES
Definition arcatraz.h:13
@ DATA_SPHERE_SHIELD
Definition arcatraz.h:22
@ TYPE_HARBINGERSKYRISS
Definition arcatraz.h:14
@ TYPE_DALLIAH
Definition arcatraz.h:12
@ TYPE_WARDEN_4
Definition arcatraz.h:18
@ TYPE_WARDEN_3
Definition arcatraz.h:17
@ TYPE_WARDEN_2
Definition arcatraz.h:16
InstanceMapScript(const char *name, uint32 mapId)
InstanceScript(Map *map)
Definition Map.h:238
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
void AddSC_instance_arcatraz()
@ MELLICHAR
@ CONTAINMENT_CORE_SECURITY_FIELD_ALPHA
@ WARDENS_SHIELD
@ POD_OMEGA
@ POD_GAMMA
@ SEAL_SPHERE
@ CONTAINMENT_CORE_SECURITY_FIELD_BETA
@ POD_DELTA
@ POD_ALPHA
#define MAX_ENCOUNTER