TrinityCore
instance_sanctum_of_domination.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include "Creature.h"
19#include "GameObject.h"
20#include "InstanceScript.h"
21#include "Map.h"
22#include "Player.h"
23#include "ScriptMgr.h"
25
27{
34 { 0, 0 } // END
35};
36
38{
39 { DATA_THE_TARRAGRUE, {{ 2423 }} },
40 { DATA_THE_EYE_OF_THE_JAILER, {{ 2433 }} },
41 { DATA_THE_NINE, {{ 2429 }} },
42 { DATA_REMNANT_OF_NERZHUL, {{ 2432 }} },
43 { DATA_SOULRENDER_DORMAZAIN, {{ 2434 }} },
44 { DATA_PAINSMITH_RAZNAL, {{ 2430 }} },
45 { DATA_GUARDIAN_OF_THE_FIRST_ONES, {{ 2436 }} },
46 { DATA_FATESCRIBE_ROHKALO, {{ 2431 }} },
47 { DATA_KELTHUZAD, {{ 2422 }} },
48 { DATA_SYLVANAS_WINDRUNNER, {{ 2435 }} }
49};
50
52{
53public:
55
57 {
59 {
64
66 }
67
68 void OnCreatureCreate(Creature* creature) override
69 {
71
72 switch (creature->GetEntry())
73 {
75 SylvanasGUID = creature->GetGUID();
76 break;
77
80 break;
81
83 BolvarPinnacleGUID = creature->GetGUID();
84 break;
85
87 JainaPinnacleGUID = creature->GetGUID();
88 break;
89
91 ThrallPinnacleGUID = creature->GetGUID();
92 break;
93
95 ThroneOfTheDamnedGUID = creature->GetGUID();
96 break;
97
98 default:
99 break;
100 }
101 }
102
104 {
105 switch (go->GetEntry())
106 {
119 TorghastSpikeGUIDs.push_back(go->GetGUID());
120 break;
121
122 default:
123 break;
124 }
125 }
126
127 ObjectGuid GetGuidData(uint32 type) const override
128 {
129 switch (type)
130 {
132 return SylvanasGUID;
134 return BolvarPinnacleGUID;
136 return JainaPinnacleGUID;
138 return ThrallPinnacleGUID;
141 default:
142 break;
143 }
144
145 return ObjectGuid::Empty;
146 }
147
148 bool SetBossState(uint32 id, EncounterState state) override
149 {
150 if (!InstanceScript::SetBossState(id, state))
151 return false;
152
153 switch (id)
154 {
156 {
157 if (state == NOT_STARTED)
158 {
160
161 if (Creature* throneTeleporter = GetCreature(DATA_THRONE_OF_THE_DAMNED))
162 throneTeleporter->SetVisible(true);
163
164 for (ObjectGuid const& spikeGUID : TorghastSpikeGUIDs)
165 if (GameObject* torghastSpike = instance->GetGameObject(spikeGUID))
166 torghastSpike->SetSpellVisualId(0);
167 }
168 else if (state == IN_PROGRESS)
169 {
171
172 if (Creature* throneTeleporter = GetCreature(DATA_THRONE_OF_THE_DAMNED))
173 throneTeleporter->SetVisible(false);
174 }
175
176 break;
177 }
178
179 default:
180 break;
181 }
182
183 return true;
184 }
185
186 void SetData(uint32 type, uint32 data) override
187 {
188 switch (type)
189 {
191 {
192 switch (data)
193 {
194 case IN_PROGRESS:
197 sylvanas->SetHomePosition(SylvanasRespawnPos);
198 break;
199
200 case DONE:
203 {
204 sylvanas->RemoveUnitFlag(UNIT_FLAG_NOT_ATTACKABLE_1);
205 sylvanas->SetImmuneToAll(false);
206 sylvanas->SetSpeed(MOVE_RUN, 14.0f);
207 }
208 break;
209
210 default:
211 break;
212 }
213 break;
214 }
215
216 default:
217 break;
218 }
219 }
220
221 uint32 GetData(uint32 type) const override
222 {
223 switch (type)
224 {
227 default:
228 break;
229 }
230
231 return 0;
232 }
233
234 protected:
241 std::vector<ObjectGuid> TorghastSpikeGUIDs;
243 };
244
246 {
248 }
249};
250
252{
254}
uint8_t uint8
Definition: Define.h:144
uint32_t uint32
Definition: Define.h:142
EncounterState
@ IN_PROGRESS
@ DONE
@ NOT_STARTED
@ MOVE_RUN
Definition: UnitDefines.h:118
@ UNIT_FLAG_NOT_ATTACKABLE_1
Definition: UnitDefines.h:151
#define DataHeader
uint32 const EncounterCount
void SetBossNumber(uint32 number)
virtual bool SetBossState(uint32 id, EncounterState state)
virtual void OnCreatureCreate(Creature *creature) override
Creature * GetCreature(uint32 type)
void LoadDungeonEncounterData(T const &encounters)
void DoUpdateWorldState(int32 worldStateId, int32 value)
InstanceMap * instance
void SetHeaders(std::string const &dataHeaders)
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
GameObject * GetGameObject(ObjectGuid const &guid)
Definition: Map.cpp:3489
static ObjectGuid const Empty
Definition: ObjectGuid.h:274
uint32 GetEntry() const
Definition: Object.h:161
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:159
InstanceScript * GetInstanceScript(InstanceMap *map) const override
ObjectData const creatureData[]
void AddSC_instance_sanctum_of_domination()
DungeonEncounterData const encounters[]
@ DATA_KELTHUZAD
Definition: naxxramas.h:77
@ NPC_SYLVANAS_SHADOWCOPY_RIDING
@ BOSS_SYLVANAS_WINDRUNNER
@ NPC_JAINA_PROUDMOORE_PINNACLE
@ NPC_THRONE_OF_THE_DAMNED
@ NPC_BOLVAR_FORDRAGON_PINNACLE
@ NPC_THRALL_PINNACLE
Position const SylvanasRespawnPos
@ WORLD_STATE_SYLVANAS_ENCOUNTER_STARTED
@ DATA_THE_TARRAGRUE
@ DATA_JAINA_PROUDMOORE_PINNACLE
@ DATA_SYLVANAS_SHADOWCOPY_RIDING
@ DATA_THRALL_PINNACLE
@ DATA_PAINSMITH_RAZNAL
@ DATA_THRONE_OF_THE_DAMNED
@ DATA_GUARDIAN_OF_THE_FIRST_ONES
@ DATA_SYLVANAS_INTRODUCTION
@ DATA_THE_NINE
@ DATA_REMNANT_OF_NERZHUL
@ DATA_FATESCRIBE_ROHKALO
@ DATA_SOULRENDER_DORMAZAIN
@ DATA_BOLVAR_FORDRAGON_PINNACLE
@ DATA_SYLVANAS_WINDRUNNER
@ DATA_THE_EYE_OF_THE_JAILER
#define SODScriptName
@ GAMEOBJECT_TORGHAST_SPIKE_05
@ GAMEOBJECT_TORGHAST_SPIKE_08
@ GAMEOBJECT_TORGHAST_SPIKE_03
@ GAMEOBJECT_TORGHAST_SPIKE_12
@ GAMEOBJECT_TORGHAST_SPIKE_07
@ GAMEOBJECT_TORGHAST_SPIKE_11
@ GAMEOBJECT_TORGHAST_SPIKE_02
@ GAMEOBJECT_TORGHAST_SPIKE_06
@ GAMEOBJECT_TORGHAST_SPIKE_09
@ GAMEOBJECT_TORGHAST_SPIKE_01
@ GAMEOBJECT_TORGHAST_SPIKE_10
@ GAMEOBJECT_TORGHAST_SPIKE_04