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 "CreatureAI.h"
21#include "GameObject.h"
22#include "InstanceScript.h"
23#include "Map.h"
24#include "ScriptMgr.h"
25#include "TemporarySummon.h"
26#include "WorldStatePackets.h"
27
28Position const HalionControllerSpawnPos = { 3156.037f, 533.2656f, 72.97205f, 0.0f };
29
31{
32 { DATA_GENERAL_ZARITHRIAN, new EllipseBoundary(Position(3013.409f, 529.492f), 45.0, 100.0) },
33 { DATA_HALION, new CircleBoundary(Position(3156.037f, 533.2656f), 52.5) }
34};
35
46
62
74
76{
77 public:
79
81 {
91
101
102 void OnCreatureCreate(Creature* creature) override
103 {
105
106 if (creature->GetEntry() == NPC_ZARITHRIAN_SPAWN_STALKER)
107 {
109 ZarithrianSpawnStalkerGUID[0] = creature->GetGUID();
110 else
111 ZarithrianSpawnStalkerGUID[1] = creature->GetGUID();
112 }
113 }
114
116 {
118
119 switch (go->GetEntry())
120 {
127 break;
128 default:
129 break;
130 }
131 }
132
133 ObjectGuid GetGuidData(uint32 type) const override
134 {
135 switch (type)
136 {
140 default:
141 return InstanceScript::GetGuidData(type);
142 }
143 }
144
145 bool SetBossState(uint32 type, EncounterState state) override
146 {
147 if (!InstanceScript::SetBossState(type, state))
148 return false;
149
150 switch (type)
151 {
154 if (state == DONE)
155 CheckGeneral();
156 break;
158 if (state == DONE && GetBossState(DATA_HALION) != DONE)
159 if (Creature* halionController = GetCreature(DATA_HALION_CONTROLLER))
160 halionController->AI()->DoAction(ACTION_INTRO_HALION);
161 break;
162 case DATA_HALION:
166 break;
167 default:
168 break;
169 }
170
171 return true;
172 }
173
175 {
178 {
179 zarithrian->RemoveUnitFlag(UNIT_FLAG_UNINTERACTIBLE);
180 zarithrian->SetImmuneToPC(false);
181 }
182 }
183
184 void SetData(uint32 type, uint32 data) override
185 {
187 return;
188
190 }
191
192 uint32 GetData(uint32 type) const override
193 {
195 return 0;
196
198 }
199
201 {
202 packet.Worldstates.emplace_back(WORLDSTATE_CORPOREALITY_MATERIAL, 50);
203 packet.Worldstates.emplace_back(WORLDSTATE_CORPOREALITY_TWILIGHT, 50);
204 packet.Worldstates.emplace_back(WORLDSTATE_CORPOREALITY_TOGGLE, 0);
205 }
206
207 protected:
210 };
211
213 {
215 }
216};
217
uint32_t uint32
Definition Define.h:133
EncounterState
@ DONE
@ DOOR_TYPE_ROOM
@ DOOR_TYPE_PASSAGE
@ UNIT_FLAG_UNINTERACTIBLE
#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)
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 DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue)
void SetHeaders(std::string const &dataHeaders)
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
void LoadGrid(float x, float y)
Definition Map.cpp:578
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:4397
static ObjectGuid const Empty
Definition ObjectGuid.h:140
uint32 GetEntry() const
Definition Object.h:81
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:78
std::vector< WorldStateInfo > Worldstates
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
@ 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
@ 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
@ WORLDSTATE_CORPOREALITY_TOGGLE
@ WORLDSTATE_CORPOREALITY_MATERIAL
@ WORLDSTATE_CORPOREALITY_TWILIGHT
@ 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
float GetPositionX() const
Definition Position.h:79
float GetPositionY() const
Definition Position.h:80
bool SetBossState(uint32 type, EncounterState state) override
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates &packet) override