TrinityCore
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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
37{
44 { 0, 0, DOOR_TYPE_ROOM } // END
45};
46
48{
60 { 0, 0 } // END
61};
62
64{
72 { 0, 0 } //END
73};
74
76{
77 public:
79
81 {
83 {
90 }
91
92 void OnPlayerEnter(Player* /*player*/) override
93 {
95 {
98 halionController->AI()->DoAction(ACTION_INTRO_HALION_2);
99 }
100 }
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
219{
221}
uint32_t uint32
Definition: Define.h:133
EncounterState
@ DONE
@ DOOR_TYPE_ROOM
@ DOOR_TYPE_PASSAGE
@ UNIT_FLAG_UNINTERACTIBLE
Definition: UnitDefines.h:160
#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:4395
static ObjectGuid const Empty
Definition: ObjectGuid.h:132
uint32 GetEntry() const
Definition: Object.h:80
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:77
Definition: Player.h:915
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
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
@ 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
@ WORLDSTATE_CORPOREALITY_TOGGLE
Definition: ruby_sanctum.h:124
@ WORLDSTATE_CORPOREALITY_MATERIAL
Definition: ruby_sanctum.h:122
@ WORLDSTATE_CORPOREALITY_TWILIGHT
Definition: ruby_sanctum.h:123
@ 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
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