TrinityCore
instance_ruby_sanctum.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 "ruby_sanctum.h"
19#include "AreaBoundary.h"
20#include "CreatureAI.h"
21#include "GameObject.h"
22#include "InstanceScript.h"
23#include "Map.h"
24#include "ScriptMgr.h"
25#include "TemporarySummon.h"
26
27Position const HalionControllerSpawnPos = { 3156.037f, 533.2656f, 72.97205f, 0.0f };
28
30{
31 { DATA_GENERAL_ZARITHRIAN, new EllipseBoundary(Position(3013.409f, 529.492f), 45.0, 100.0) },
32 { DATA_HALION, new CircleBoundary(Position(3156.037f, 533.2656f), 52.5) }
33};
34
36{
44};
45
47{
59 { 0, 0 } // END
60};
61
63{
71 { 0, 0 } //END
72};
73
75{
76 { DATA_BALTHARUS_THE_WARBORN, {{ 1147 }} },
77 { DATA_SAVIANA_RAGEFIRE, {{ 1149 }} },
78 { DATA_GENERAL_ZARITHRIAN, {{ 1148 }} },
79 { DATA_HALION, {{ 1150 }} }
80};
81
83{
84 public:
86
88 {
90 {
98 }
99
100 void OnPlayerEnter(Player* /*player*/) override
101 {
103 {
106 halionController->AI()->DoAction(ACTION_INTRO_HALION_2);
107 }
108 }
109
110 void OnCreatureCreate(Creature* creature) override
111 {
113
114 if (creature->GetEntry() == NPC_ZARITHRIAN_SPAWN_STALKER)
115 {
117 ZarithrianSpawnStalkerGUID[0] = creature->GetGUID();
118 else
119 ZarithrianSpawnStalkerGUID[1] = creature->GetGUID();
120 }
121 }
122
124 {
126
127 switch (go->GetEntry())
128 {
135 break;
136 default:
137 break;
138 }
139 }
140
141 ObjectGuid GetGuidData(uint32 type) const override
142 {
143 switch (type)
144 {
148 default:
149 return InstanceScript::GetGuidData(type);
150 }
151 }
152
153 bool SetBossState(uint32 type, EncounterState state) override
154 {
155 if (!InstanceScript::SetBossState(type, state))
156 return false;
157
158 switch (type)
159 {
162 if (state == DONE)
163 CheckGeneral();
164 break;
166 if (state == DONE && GetBossState(DATA_HALION) != DONE)
167 if (Creature* halionController = GetCreature(DATA_HALION_CONTROLLER))
168 halionController->AI()->DoAction(ACTION_INTRO_HALION);
169 break;
170 case DATA_HALION:
174 break;
175 default:
176 break;
177 }
178
179 return true;
180 }
181
183 {
186 {
187 zarithrian->SetUninteractible(false);
188 zarithrian->SetImmuneToPC(false);
189 }
190 }
191
192 void SetData(uint32 type, uint32 data) override
193 {
195 return;
196
198 }
199
200 uint32 GetData(uint32 type) const override
201 {
203 return 0;
204
206 }
207
208 protected:
211 };
212
214 {
216 }
217};
218
220{
222}
uint32_t uint32
Definition: Define.h:142
EncounterState
@ DONE
#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 HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
void LoadDungeonEncounterData(T const &encounters)
void DoUpdateWorldState(int32 worldStateId, int32 value)
virtual ObjectGuid GetGuidData(uint32 type) const override
InstanceMap * instance
EncounterState GetBossState(uint32 id) const
virtual void OnGameObjectCreate(GameObject *go) override
void LoadDoorData(DoorData const *data)
void LoadBossBoundaries(BossBoundaryData const &data)
void SetHeaders(std::string const &dataHeaders)
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
void LoadGrid(float x, float y)
Definition: Map.cpp:405
Creature * GetCreature(ObjectGuid const &guid)
Definition: Map.cpp:3479
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 gameObjectData[]
ObjectData const creatureData[]
DoorData const doorData[]
void AddSC_instance_ruby_sanctum()
BossBoundaryData const boundaries
Position const HalionControllerSpawnPos
DungeonEncounterData const encounters[]
@ DATA_HALION_CONTROLLER
Definition: ruby_sanctum.h:43
@ DATA_TWILIGHT_FLAME_RING
Definition: ruby_sanctum.h:51
@ DATA_CRYSTAL_CHANNEL_TARGET
Definition: ruby_sanctum.h:39
@ DATA_BALTHARUS_SHARED_HEALTH
Definition: ruby_sanctum.h:40
@ DATA_BURNING_TREE_1
Definition: ruby_sanctum.h:46
@ DATA_GENERAL_ZARITHRIAN
Definition: ruby_sanctum.h:32
@ DATA_BURNING_TREE_2
Definition: ruby_sanctum.h:47
@ DATA_SAVIANA_RAGEFIRE
Definition: ruby_sanctum.h:33
@ DATA_BURNING_TREE_3
Definition: ruby_sanctum.h:48
@ DATA_FLAME_WALLS
Definition: ruby_sanctum.h:53
@ DATA_BALTHARUS_CLONE
Definition: ruby_sanctum.h:52
@ DATA_ZARITHRIAN_SPAWN_STALKER_2
Definition: ruby_sanctum.h:42
@ DATA_BURNING_TREE_4
Definition: ruby_sanctum.h:49
@ DATA_ZARITHRIAN_SPAWN_STALKER_1
Definition: ruby_sanctum.h:41
@ DATA_XERESTRASZA
Definition: ruby_sanctum.h:38
@ DATA_ORB_CARRIER
Definition: ruby_sanctum.h:44
@ DATA_TWILIGHT_HALION
Definition: ruby_sanctum.h:37
@ DATA_FLAME_RING
Definition: ruby_sanctum.h:50
@ DATA_HALION
Definition: ruby_sanctum.h:34
@ DATA_ORB_ROTATION_FOCUS
Definition: ruby_sanctum.h:45
@ DATA_BALTHARUS_THE_WARBORN
Definition: ruby_sanctum.h:31
#define RSScriptName
Definition: ruby_sanctum.h:23
@ WORLDSTATE_CORPOREALITY_TOGGLE
Definition: ruby_sanctum.h:124
@ WORLDSTATE_CORPOREALITY_MATERIAL
Definition: ruby_sanctum.h:122
@ WORLDSTATE_CORPOREALITY_TWILIGHT
Definition: ruby_sanctum.h:123
@ GO_FIRE_FIELD
Definition: ruby_sanctum.h:110
@ GO_BURNING_TREE_2
Definition: ruby_sanctum.h:115
@ GO_TWILIGHT_FLAME_RING
Definition: ruby_sanctum.h:113
@ GO_FLAME_RING
Definition: ruby_sanctum.h:112
@ GO_BURNING_TREE_1
Definition: ruby_sanctum.h:114
@ GO_BURNING_TREE_3
Definition: ruby_sanctum.h:116
@ GO_BURNING_TREE_4
Definition: ruby_sanctum.h:117
@ GO_FLAME_WALLS
Definition: ruby_sanctum.h:111
@ NPC_HALION_CONTROLLER
Definition: ruby_sanctum.h:82
@ NPC_SAVIANA_RAGEFIRE
Definition: ruby_sanctum.h:77
@ NPC_BALTHARUS_THE_WARBORN_CLONE
Definition: ruby_sanctum.h:68
@ NPC_ORB_CARRIER
Definition: ruby_sanctum.h:85
@ NPC_HALION
Definition: ruby_sanctum.h:80
@ NPC_BALTHARUS_THE_WARBORN
Definition: ruby_sanctum.h:67
@ NPC_BALTHARUS_TARGET
Definition: ruby_sanctum.h:69
@ NPC_ORB_ROTATION_FOCUS
Definition: ruby_sanctum.h:86
@ NPC_TWILIGHT_HALION
Definition: ruby_sanctum.h:81
@ NPC_XERESTRASZA
Definition: ruby_sanctum.h:102
@ NPC_GENERAL_ZARITHRIAN
Definition: ruby_sanctum.h:72
@ NPC_ZARITHRIAN_SPAWN_STALKER
Definition: ruby_sanctum.h:74
@ ACTION_INTRO_HALION_2
Definition: ruby_sanctum.h:61
@ ACTION_INTRO_HALION
Definition: ruby_sanctum.h:60
constexpr float GetPositionX() const
Definition: Position.h:76
constexpr float GetPositionY() const
Definition: Position.h:77
bool SetBossState(uint32 type, EncounterState state) override