TrinityCore
Loading...
Searching...
No Matches
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 "Creature.h"
21#include "CreatureAI.h"
22#include "GameObject.h"
23#include "InstanceScript.h"
24#include "Map.h"
25#include "ScriptMgr.h"
26
27static constexpr Position HalionControllerSpawnPos = { 3156.037f, 533.2656f, 72.97205f, 0.0f };
28
30{
31 { DATA_GENERAL_ZARITHRIAN, new EllipseBoundary(Position(3013.409f, 529.492f), 45.0f, 100.0f) },
32 { DATA_HALION, new CircleBoundary(Position(3156.037f, 533.2656f), 52.5f) }
33};
34
44
59
70
71static constexpr DungeonEncounterData encounters[] =
72{
73 { DATA_BALTHARUS_THE_WARBORN, {{ 1147 }} },
74 { DATA_SAVIANA_RAGEFIRE, {{ 1149 }} },
75 { DATA_GENERAL_ZARITHRIAN, {{ 1148 }} },
76 { DATA_HALION, {{ 1150 }} }
77};
78
80{
81 public:
83
85 {
96
106
107 void OnCreatureCreate(Creature* creature) override
108 {
110
111 if (creature->GetEntry() == NPC_ZARITHRIAN_SPAWN_STALKER)
112 {
114 ZarithrianSpawnStalkerGUID[0] = creature->GetGUID();
115 else
116 ZarithrianSpawnStalkerGUID[1] = creature->GetGUID();
117 }
118 }
119
121 {
123
124 switch (go->GetEntry())
125 {
132 break;
133 default:
134 break;
135 }
136 }
137
138 ObjectGuid GetGuidData(uint32 type) const override
139 {
140 switch (type)
141 {
145 default:
146 return InstanceScript::GetGuidData(type);
147 }
148 }
149
150 bool SetBossState(uint32 type, EncounterState state) override
151 {
152 if (!InstanceScript::SetBossState(type, state))
153 return false;
154
155 switch (type)
156 {
159 if (state == DONE)
160 CheckGeneral();
161 break;
163 if (state == DONE && GetBossState(DATA_HALION) != DONE)
164 if (Creature* halionController = GetCreature(DATA_HALION_CONTROLLER))
165 halionController->AI()->DoAction(ACTION_INTRO_HALION);
166 break;
167 case DATA_HALION:
171 break;
172 default:
173 break;
174 }
175
176 return true;
177 }
178
180 {
183 {
184 zarithrian->SetUninteractible(false);
185 zarithrian->SetImmuneToPC(false);
186 }
187 }
188
189 void SetData(uint32 type, uint32 data) override
190 {
192 return;
193
195 }
196
197 uint32 GetData(uint32 type) const override
198 {
200 return 0;
201
203 }
204
205 protected:
208 };
209
211 {
213 }
214};
215
uint32_t uint32
Definition Define.h:154
EncounterState
@ DONE
#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 HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
void DoUpdateWorldState(int32 worldStateId, int32 value)
virtual ObjectGuid GetGuidData(uint32 type) const override
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)
EncounterState GetBossState(uint32 id) const
virtual void OnGameObjectCreate(GameObject *go) override
void LoadDoorData(std::span< DoorData const > data)
void LoadBossBoundaries(BossBoundaryData const &data)
void LoadGrid(float x, float y)
Definition Map.cpp:372
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:3542
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[]
static constexpr Position HalionControllerSpawnPos
static constexpr DoorData doorData[]
void AddSC_instance_ruby_sanctum()
BossBoundaryData const boundaries
static constexpr ObjectData gameObjectData[]
static constexpr DungeonEncounterData encounters[]
@ DATA_HALION_CONTROLLER
@ DATA_TWILIGHT_FLAME_RING
@ DATA_CRYSTAL_CHANNEL_TARGET
@ DATA_BALTHARUS_SHARED_HEALTH
@ DATA_BURNING_TREE_1
@ DATA_GENERAL_ZARITHRIAN
@ DATA_BURNING_TREE_2
@ DATA_SAVIANA_RAGEFIRE
@ DATA_BURNING_TREE_3
@ DATA_FLAME_WALLS
@ DATA_BALTHARUS_CLONE
@ DATA_ZARITHRIAN_SPAWN_STALKER_2
@ DATA_BURNING_TREE_4
@ DATA_ZARITHRIAN_SPAWN_STALKER_1
@ DATA_XERESTRASZA
@ DATA_ORB_CARRIER
@ DATA_TWILIGHT_HALION
@ DATA_FLAME_RING
@ DATA_HALION
@ DATA_ORB_ROTATION_FOCUS
@ DATA_BALTHARUS_THE_WARBORN
#define RSScriptName
@ WORLDSTATE_CORPOREALITY_TOGGLE
@ WORLDSTATE_CORPOREALITY_MATERIAL
@ WORLDSTATE_CORPOREALITY_TWILIGHT
@ GO_FIRE_FIELD
@ GO_BURNING_TREE_2
@ GO_TWILIGHT_FLAME_RING
@ GO_FLAME_RING
@ GO_BURNING_TREE_1
@ GO_BURNING_TREE_3
@ GO_BURNING_TREE_4
@ GO_FLAME_WALLS
@ NPC_HALION_CONTROLLER
@ NPC_SAVIANA_RAGEFIRE
@ NPC_BALTHARUS_THE_WARBORN_CLONE
@ NPC_ORB_CARRIER
@ NPC_HALION
@ NPC_BALTHARUS_THE_WARBORN
@ NPC_BALTHARUS_TARGET
@ NPC_ORB_ROTATION_FOCUS
@ NPC_TWILIGHT_HALION
@ NPC_XERESTRASZA
@ NPC_GENERAL_ZARITHRIAN
@ NPC_ZARITHRIAN_SPAWN_STALKER
@ ACTION_INTRO_HALION_2
@ ACTION_INTRO_HALION
constexpr float GetPositionX() const
Definition Position.h:87
constexpr float GetPositionY() const
Definition Position.h:88
bool SetBossState(uint32 type, EncounterState state) override