TrinityCore
Loading...
Searching...
No Matches
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 "ScriptMgr.h"
24
34
35static constexpr DungeonEncounterData encounters[] =
36{
37 { DATA_THE_TARRAGRUE, {{ 2423 }} },
38 { DATA_THE_EYE_OF_THE_JAILER, {{ 2433 }} },
39 { DATA_THE_NINE, {{ 2429 }} },
40 { DATA_REMNANT_OF_NERZHUL, {{ 2432 }} },
41 { DATA_SOULRENDER_DORMAZAIN, {{ 2434 }} },
42 { DATA_PAINSMITH_RAZNAL, {{ 2430 }} },
43 { DATA_GUARDIAN_OF_THE_FIRST_ONES, {{ 2436 }} },
44 { DATA_FATESCRIBE_ROHKALO, {{ 2431 }} },
45 { DATA_KELTHUZAD, {{ 2422 }} },
46 { DATA_SYLVANAS_WINDRUNNER, {{ 2435 }} }
47};
48
50{
51public:
53
55 {
65
66 void OnCreatureCreate(Creature* creature) override
67 {
69
70 switch (creature->GetEntry())
71 {
73 SylvanasGUID = creature->GetGUID();
74 break;
75
78 break;
79
81 BolvarPinnacleGUID = creature->GetGUID();
82 break;
83
85 JainaPinnacleGUID = creature->GetGUID();
86 break;
87
89 ThrallPinnacleGUID = creature->GetGUID();
90 break;
91
93 ThroneOfTheDamnedGUID = creature->GetGUID();
94 break;
95
96 default:
97 break;
98 }
99 }
100
124
125 ObjectGuid GetGuidData(uint32 type) const override
126 {
127 switch (type)
128 {
130 return SylvanasGUID;
132 return BolvarPinnacleGUID;
134 return JainaPinnacleGUID;
136 return ThrallPinnacleGUID;
139 default:
140 break;
141 }
142
143 return ObjectGuid::Empty;
144 }
145
146 bool SetBossState(uint32 id, EncounterState state) override
147 {
148 if (!InstanceScript::SetBossState(id, state))
149 return false;
150
151 switch (id)
152 {
154 {
155 if (state == NOT_STARTED)
156 {
158
159 if (Creature* throneTeleporter = GetCreature(DATA_THRONE_OF_THE_DAMNED))
160 throneTeleporter->SetVisible(true);
161
162 for (ObjectGuid const& spikeGUID : TorghastSpikeGUIDs)
163 if (GameObject* torghastSpike = instance->GetGameObject(spikeGUID))
164 torghastSpike->SetSpellVisualId(0);
165 }
166 else if (state == IN_PROGRESS)
167 {
169
170 if (Creature* throneTeleporter = GetCreature(DATA_THRONE_OF_THE_DAMNED))
171 throneTeleporter->SetVisible(false);
172 }
173
174 break;
175 }
176
177 default:
178 break;
179 }
180
181 return true;
182 }
183
184 void SetData(uint32 type, uint32 data) override
185 {
186 switch (type)
187 {
189 {
190 switch (data)
191 {
192 case IN_PROGRESS:
195 sylvanas->SetHomePosition(SylvanasRespawnPos);
196 break;
197
198 case DONE:
201 {
202 sylvanas->RemoveUnitFlag(UNIT_FLAG_NOT_ATTACKABLE_1);
203 sylvanas->SetImmuneToAll(false);
204 sylvanas->SetSpeed(MOVE_RUN, 14.0f);
205 }
206 break;
207
208 default:
209 break;
210 }
211 break;
212 }
213
214 default:
215 break;
216 }
217 }
218
219 uint32 GetData(uint32 type) const override
220 {
221 switch (type)
222 {
225 default:
226 break;
227 }
228
229 return 0;
230 }
231
232 protected:
239 std::vector<ObjectGuid> TorghastSpikeGUIDs;
241 };
242
247};
248
uint8_t uint8
Definition Define.h:156
uint32_t uint32
Definition Define.h:154
EncounterState
@ IN_PROGRESS
@ DONE
@ NOT_STARTED
@ MOVE_RUN
@ UNIT_FLAG_NOT_ATTACKABLE_1
#define DataHeader
uint32 const EncounterCount
ObjectGuid const & GetGUID() const
Definition BaseEntity.h:163
void SetBossNumber(uint32 number)
virtual bool SetBossState(uint32 id, EncounterState state)
virtual void OnCreatureCreate(Creature *creature) override
Creature * GetCreature(uint32 type)
void DoUpdateWorldState(int32 worldStateId, int32 value)
void LoadObjectData(std::span< ObjectData const > creatureData, std::span< ObjectData const > gameObjectData)
InstanceMap * instance
void SetHeaders(std::string_view dataHeaders)
void LoadDungeonEncounterData(std::span< DungeonEncounterData const > encounters)
GameObject * GetGameObject(ObjectGuid const &guid)
Definition Map.cpp:3552
static ObjectGuid const Empty
Definition ObjectGuid.h:314
uint32 GetEntry() const
Definition Object.h:89
InstanceScript * GetInstanceScript(InstanceMap *map) const override
static constexpr ObjectData creatureData[]
void AddSC_instance_sanctum_of_domination()
static constexpr DungeonEncounterData 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