TrinityCore
Loading...
Searching...
No Matches
instance_black_temple.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 "ScriptMgr.h"
19#include "AreaBoundary.h"
20#include "black_temple.h"
21#include "Creature.h"
22#include "CreatureAI.h"
23#include "GameObject.h"
24#include "InstanceScript.h"
25#include "Map.h"
26
43
45{
46 { DATA_HIGH_WARLORD_NAJENTUS, new RectangleBoundary(394.0f, 479.4f, 707.8f, 859.1f) },
47 { DATA_SUPREMUS, new RectangleBoundary(556.1f, 850.2f, 542.0f, 1001.0f) },
48 { DATA_SHADE_OF_AKAMA, new RectangleBoundary(406.8f, 564.0f, 327.9f, 473.5f) },
49 { DATA_TERON_GOREFIEND, new RectangleBoundary(512.5f, 613.3f, 373.2f, 432.0f) },
50 { DATA_TERON_GOREFIEND, new ZRangeBoundary(179.5f, 223.6f) },
51 { DATA_GURTOGG_BLOODBOIL, new RectangleBoundary(720.5f, 864.5f, 159.3f, 316.0f) },
52 { DATA_RELIQUARY_OF_SOULS, new RectangleBoundary(435.9f, 660.3f, 21.2f, 229.6f) },
53 { DATA_RELIQUARY_OF_SOULS, new ZRangeBoundary(81.8f, 148.0f) },
54 { DATA_MOTHER_SHAHRAZ, new RectangleBoundary(903.4f, 982.1f, 92.4f, 313.2f) },
55 { DATA_ILLIDARI_COUNCIL, new EllipseBoundary(Position(696.6f, 305.0f), 70.0 , 85.0) },
56 { DATA_ILLIDAN_STORMRAGE, new EllipseBoundary(Position(694.8f, 309.0f), 80.0 , 95.0) }
57};
58
82
90
92{
93 public:
95
97 {
108
117
118 void OnCreatureCreate(Creature* creature) override
119 {
121
122 switch (creature->GetEntry())
123 {
130 case NPC_STORM_FURY:
131 AshtongueGUIDs.push_back(creature->GetGUID());
134 break;
135 default:
136 break;
137 }
138 }
139
140 uint32 GetData(uint32 type) const override
141 {
142 switch (type)
143 {
144 case DATA_AKAMA:
145 return AkamaState;
147 return AkamaIllidanIntro;
148 default:
149 return 0;
150 }
151 }
152
153 void SetData(uint32 type, uint32 data) override
154 {
155 switch (type)
156 {
157 case DATA_AKAMA:
158 AkamaState = data;
159 break;
160 case ACTION_OPEN_DOOR:
162 HandleGameObject(ObjectGuid::Empty, true, illidanGate);
163 break;
165 AkamaIllidanIntro = data;
166 break;
167 default:
168 break;
169 }
170 }
171
172 bool SetBossState(uint32 type, EncounterState state) override
173 {
174 if (!InstanceScript::SetBossState(type, state))
175 return false;
176
177 switch (type)
178 {
180 if (state == DONE)
182 trigger->AI()->Talk(EMOTE_HIGH_WARLORD_NAJENTUS_DIED);
183 break;
185 if (state == DONE)
186 for (ObjectGuid ashtongueGuid : AshtongueGUIDs)
187 if (Creature* ashtongue = instance->GetCreature(ashtongueGuid))
188 ashtongue->SetFaction(FACTION_ASHTONGUE_DEATHSWORN);
189 [[fallthrough]];
193 if (state == DONE && CheckDenOfMortalDoor())
194 {
196 trigger->AI()->Talk(EMOTE_DEN_OF_MORTAL_DOOR_OPEN);
197
200 }
201 break;
203 if (state == DONE)
204 if (Creature* akama = GetCreature(DATA_AKAMA))
205 akama->AI()->DoAction(ACTION_ACTIVE_AKAMA_INTRO);
206 break;
207 default:
208 break;
209 }
210
211 return true;
212 }
213
215 {
217 if (GetBossState(boss) != DONE)
218 return false;
219 return true;
220 }
221
222 protected:
226 };
227
229 {
231 }
232};
233
uint8_t uint8
Definition Define.h:135
uint32_t uint32
Definition Define.h:133
EncounterState
@ DONE
@ DOOR_TYPE_ROOM
@ DOOR_TYPE_PASSAGE
std::vector< ObjectGuid > GuidVector
Definition ObjectGuid.h:262
@ FACTION_ASHTONGUE_DEATHSWORN
@ ACTION_OPEN_DOOR
@ AKAMA_INTRO
@ ACTION_ACTIVE_AKAMA_INTRO
#define BTScriptName
@ EMOTE_DEN_OF_MORTAL_DOOR_OPEN
@ EMOTE_HIGH_WARLORD_NAJENTUS_DIED
BTDataTypes
@ DATA_TERON_GOREFIEND
@ DATA_AKAMA
@ DATA_ILLIDARI_COUNCIL
@ DATA_MOTHER_SHAHRAZ
@ DATA_HIGH_NETHERMANCER_ZEREVOR
@ DATA_SUPREMUS
@ DATA_GATHIOS_THE_SHATTERER
@ DATA_BLOOD_ELF_COUNCIL_VOICE
@ DATA_ILLIDAN_STORMRAGE
@ DATA_VERAS_DARKSHADOW
@ DATA_RELIQUARY_COMBAT_TRIGGER
@ DATA_ILLIDAN_MUSIC_CONTROLLER
@ DATA_AKAMA_SHADE
@ DATA_BLACK_TEMPLE_TRIGGER
@ DATA_LADY_MALANDE
@ DATA_GO_DEN_OF_MORTAL_DOOR
@ DATA_GO_ILLIDAN_GATE
@ DATA_HIGH_WARLORD_NAJENTUS
@ DATA_AKAMA_ILLIDAN_INTRO
@ DATA_SHADE_OF_AKAMA
@ DATA_MAIEV
@ DATA_GURTOGG_BLOODBOIL
@ DATA_RELIQUARY_OF_SOULS
@ NPC_TERON_GOREFIEND
@ NPC_VERAS_DARKSHADOW
@ NPC_ILLIDARI_COUNCIL
@ NPC_GURTOGG_BLOODBOIL
@ NPC_AKAMA
@ NPC_MOTHER_SHAHRAZ
@ NPC_GATHIOS_THE_SHATTERER
@ NPC_HIGH_WARLORD_NAJENTUS
@ NPC_SHADE_OF_AKAMA
@ NPC_ASHTONGUE_PRIMALIST
@ NPC_ILLIDAN_STORMRAGE
@ NPC_RELIQUARY_OF_SOULS
@ NPC_ASHTONGUE_MYSTIC
@ NPC_RELIQUARY_COMBAT_TRIGGER
@ NPC_ASHTONGUE_STORMCALLER
@ NPC_HIGH_NETHERMANCER_ZEREVOR
@ NPC_BLACK_TEMPLE_TRIGGER
@ NPC_LADY_MALANDE
@ NPC_ASHTONGUE_FERAL_SPIRIT
@ NPC_ASHTONGUE_STALKER
@ NPC_BLOOD_ELF_COUNCIL_VOICE
@ NPC_AKAMA_SHADE
@ NPC_ASHTONGUE_BATTLELORD
@ NPC_MAIEV_SHADOWSONG
@ NPC_SUPREMUS
@ NPC_STORM_FURY
@ GO_ILLIDAN_DOOR_R
@ GO_ILLIDAN_MUSIC_CONTROLLER
@ GO_TERON_DOOR_1
@ GO_TERON_DOOR_2
@ GO_COUNCIL_DOOR_1
@ GO_SHADE_OF_AKAMA_DOOR
@ GO_MOTHER_SHAHRAZ_DOOR
@ GO_GURTOGG_DOOR
@ GO_DEN_OF_MORTAL_DOOR
@ GO_NAJENTUS_GATE
@ GO_ILLIDAN_GATE
@ GO_COUNCIL_DOOR_2
@ GO_SUPREMUS_GATE
@ GO_ILLIDAN_DOOR_L
#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)
InstanceMap * instance
EncounterState GetBossState(uint32 id) const
virtual void OnGameObjectCreate(GameObject *go) override
void LoadDoorData(DoorData const *data)
GameObject * GetGameObject(uint32 type)
void LoadBossBoundaries(BossBoundaryData const &data)
void SetHeaders(std::string const &dataHeaders)
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
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
void SetFaction(uint32 faction) override
Definition Unit.h:974
InstanceScript * GetInstanceScript(InstanceMap *map) const override
ObjectData const gameObjectData[]
void AddSC_instance_black_temple()
ObjectData const creatureData[]
DoorData const doorData[]
BossBoundaryData const boundaries
bool SetBossState(uint32 type, EncounterState state) override