aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/EasternKingdoms/BlackrockSpire
diff options
context:
space:
mode:
authorMalcrom <malcromdev@gmail.com>2013-08-07 10:50:06 -0230
committerMalcrom <malcromdev@gmail.com>2013-08-07 10:50:06 -0230
commitf5e4fd67c3ce100507daffa042fa72ae01fa8ffc (patch)
tree6c54b2257c1d430e9801cf106a4935a27d1b4bcc /src/server/scripts/EasternKingdoms/BlackrockSpire
parent33f8c3ead4da07ff024a94b5e8cf0d05c2ebc23a (diff)
Scripting: Moved Lord Valthalak from EAI to CPP. Moved all Blackrock Instances to Blackrock Mountain Dir.
Diffstat (limited to 'src/server/scripts/EasternKingdoms/BlackrockSpire')
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h118
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_drakkisath.cpp112
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gizrul_the_slavener.cpp112
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gyth.cpp172
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_halycon.cpp111
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_highlord_omokk.cpp101
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_mother_smolderweb.cpp106
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_overlord_wyrmthalak.cpp136
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp453
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_quartermaster_zigris.cpp99
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_rend_blackhand.cpp447
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp108
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_the_beast.cpp106
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_urok_doomhowl.cpp108
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/boss_warmaster_voone.cpp127
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp659
16 files changed, 0 insertions, 3075 deletions
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h b/src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h
deleted file mode 100644
index 5c34a30912a..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/blackrock_spire.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef DEF_BLACKROCK_SPIRE_H
-#define DEF_BLACKROCK_SPIRE_H
-
-uint32 const EncounterCount = 22;
-
-#define BRSScriptName "instance_blackrock_spire"
-
-enum DataTypes
-{
- DATA_HIGHLORD_OMOKK = 0,
- DATA_SHADOW_HUNTER_VOSHGAJIN = 1,
- DATA_WARMASTER_VOONE = 2,
- DATA_MOTHER_SMOLDERWEB = 3,
- DATA_UROK_DOOMHOWL = 4,
- DATA_QUARTERMASTER_ZIGRIS = 5,
- DATA_GIZRUL_THE_SLAVENER = 6,
- DATA_HALYCON = 7,
- DATA_OVERLORD_WYRMTHALAK = 8,
- DATA_PYROGAURD_EMBERSEER = 9,
- DATA_WARCHIEF_REND_BLACKHAND = 10,
- DATA_GYTH = 11,
- DATA_THE_BEAST = 12,
- DATA_GENERAL_DRAKKISATH = 13,
- // Extra
- DATA_DRAGONSPIRE_ROOM = 14,
- DATA_HALL_RUNE_1 = 15,
- DATA_HALL_RUNE_2 = 16,
- DATA_HALL_RUNE_3 = 17,
- DATA_HALL_RUNE_4 = 18,
- DATA_HALL_RUNE_5 = 19,
- DATA_HALL_RUNE_6 = 20,
- DATA_HALL_RUNE_7 = 21
-};
-
-enum CreaturesIds
-{
- NPC_HIGHLORD_OMOKK = 9196,
- NPC_SHADOW_HUNTER_VOSHGAJIN = 9236,
- NPC_WARMASTER_VOONE = 9237,
- NPC_MOTHER_SMOLDERWEB = 10596,
- NPC_UROK_DOOMHOWL = 10584,
- NPC_QUARTERMASTER_ZIGRIS = 9736,
- NPC_GIZRUL_THE_SLAVENER = 10268,
- NPC_HALYCON = 10220,
- NPC_OVERLORD_WYRMTHALAK = 9568,
- NPC_PYROGAURD_EMBERSEER = 9816,
- NPC_WARCHIEF_REND_BLACKHAND = 10429,
- NPC_GYTH = 10339,
- NPC_THE_BEAST = 10430,
- NPC_GENERAL_DRAKKISATH = 10363,
- NPC_BLACKHAND_DREADWEAVER = 9817,
- NPC_BLACKHAND_SUMMONER = 9818,
- NPC_BLACKHAND_VETERAN = 9819,
- NPC_BLACKHAND_INCARCERATOR = 10316,
- NPC_LORD_VICTOR_NEFARIUS = 10162
-};
-
-enum AdditionalData
-{
- SPELL_SUMMON_ROOKERY_WHELP = 15745,
- EVENT_PYROGUARD_EMBERSEER = 4884,
- AREATRIGGER = 1,
- AREATRIGGER_DRAGONSPIRE_HALL = 2046,
- AREATRIGGER_BLACKROCK_STADIUM = 2026
-};
-
-enum GameObjectsIds
-{
- GO_WHELP_SPAWNER = 175622, // trap spawned by go id 175124
- // Doors
- GO_EMBERSEER_IN = 175244, // First door to Pyroguard Emberseer
- GO_DOORS = 175705, // Second door to Pyroguard Emberseer
- GO_EMBERSEER_OUT = 175153, // Door after Pyroguard Emberseer event
- GO_GYTH_ENTRY_DOOR = 164726,
- GO_GYTH_COMBAT_DOOR = 175185,
- GO_GYTH_EXIT_DOOR = 175186,
- GO_DRAKKISATH_DOOR_1 = 175946,
- GO_DRAKKISATH_DOOR_2 = 175947,
- // Runes in dragonspire hall
- GO_HALL_RUNE_1 = 175197,
- GO_HALL_RUNE_2 = 175199,
- GO_HALL_RUNE_3 = 175195,
- GO_HALL_RUNE_4 = 175200,
- GO_HALL_RUNE_5 = 175198,
- GO_HALL_RUNE_6 = 175196,
- GO_HALL_RUNE_7 = 175194,
- // Runes in emberseers room
- GO_EMBERSEER_RUNE_1 = 175266,
- GO_EMBERSEER_RUNE_2 = 175267,
- GO_EMBERSEER_RUNE_3 = 175268,
- GO_EMBERSEER_RUNE_4 = 175269,
- GO_EMBERSEER_RUNE_5 = 175270,
- GO_EMBERSEER_RUNE_6 = 175271,
- GO_EMBERSEER_RUNE_7 = 175272,
- // For Gyth event
- GO_DR_PORTCULLIS = 175185,
- GO_PORTCULLIS_ACTIVE = 164726,
- GO_PORTCULLIS_TOBOSSROOMS = 175186
-};
-
-#endif
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_drakkisath.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_drakkisath.cpp
deleted file mode 100644
index 59581204b05..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_drakkisath.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "blackrock_spire.h"
-
-enum Spells
-{
- SPELL_FIRENOVA = 23462,
- SPELL_CLEAVE = 20691,
- SPELL_CONFLIGURATION = 16805,
- SPELL_THUNDERCLAP = 15548, //Not sure if right ID. 23931 would be a harder possibility.
-};
-
-enum Events
-{
- EVENT_FIRE_NOVA = 1,
- EVENT_CLEAVE = 2,
- EVENT_CONFLIGURATION = 3,
- EVENT_THUNDERCLAP = 4,
-};
-
-class boss_drakkisath : public CreatureScript
-{
-public:
- boss_drakkisath() : CreatureScript("boss_drakkisath") { }
-
- struct boss_drakkisathAI : public BossAI
- {
- boss_drakkisathAI(Creature* creature) : BossAI(creature, DATA_GENERAL_DRAKKISATH) {}
-
- void Reset() OVERRIDE
- {
- _Reset();
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- _EnterCombat();
- events.ScheduleEvent(EVENT_FIRE_NOVA, 6000);
- events.ScheduleEvent(EVENT_CLEAVE, 8000);
- events.ScheduleEvent(EVENT_CONFLIGURATION, 15000);
- events.ScheduleEvent(EVENT_THUNDERCLAP, 17000);
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- _JustDied();
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_FIRE_NOVA:
- DoCastVictim(SPELL_FIRENOVA);
- events.ScheduleEvent(EVENT_FIRE_NOVA, 10000);
- break;
- case EVENT_CLEAVE:
- DoCastVictim(SPELL_CLEAVE);
- events.ScheduleEvent(EVENT_CLEAVE, 8000);
- break;
- case EVENT_CONFLIGURATION:
- DoCastVictim(SPELL_CONFLIGURATION);
- events.ScheduleEvent(EVENT_CONFLIGURATION, 18000);
- break;
- case EVENT_THUNDERCLAP:
- DoCastVictim(SPELL_THUNDERCLAP);
- events.ScheduleEvent(EVENT_THUNDERCLAP, 20000);
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- };
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_drakkisathAI(creature);
- }
-};
-
-void AddSC_boss_drakkisath()
-{
- new boss_drakkisath();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gizrul_the_slavener.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gizrul_the_slavener.cpp
deleted file mode 100644
index f1bd81f2e6a..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gizrul_the_slavener.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "blackrock_spire.h"
-#include "TemporarySummon.h"
-
-enum Spells
-{
- SPELL_FATAL_BITE = 16495,
- SPELL_INFECTED_BITE = 16128,
- SPELL_FRENZY = 8269
-};
-
-enum Paths
-{
- GIZRUL_PATH = 402450
-};
-
-enum Events
-{
- EVENT_FATAL_BITE = 1,
- EVENT_INFECTED_BITE = 2,
- EVENT_FRENZY = 3
-};
-
-class boss_gizrul_the_slavener : public CreatureScript
-{
-public:
- boss_gizrul_the_slavener() : CreatureScript("boss_gizrul_the_slavener") { }
-
- struct boss_gizrul_the_slavenerAI : public BossAI
- {
- boss_gizrul_the_slavenerAI(Creature* creature) : BossAI(creature, DATA_GIZRUL_THE_SLAVENER) {}
-
- void Reset() OVERRIDE
- {
- _Reset();
- }
-
- void IsSummonedBy(Unit* /*summoner*/) OVERRIDE
- {
- me->GetMotionMaster()->MovePath(GIZRUL_PATH, false);
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- _EnterCombat();
- events.ScheduleEvent(EVENT_FATAL_BITE, urand(17000,20000));
- events.ScheduleEvent(EVENT_INFECTED_BITE, urand(10000,12000));
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- _JustDied();
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_FATAL_BITE:
- DoCastVictim(SPELL_FATAL_BITE);
- events.ScheduleEvent(EVENT_FATAL_BITE, urand(8000,10000));
- break;
- case EVENT_INFECTED_BITE:
- DoCast(me, SPELL_INFECTED_BITE);
- events.ScheduleEvent(EVENT_FATAL_BITE, urand(8000,10000));
- break;
- default:
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- };
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_gizrul_the_slavenerAI(creature);
- }
-};
-
-void AddSC_boss_gizrul_the_slavener()
-{
- new boss_gizrul_the_slavener();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gyth.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gyth.cpp
deleted file mode 100644
index dbc3056b1ff..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_gyth.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "blackrock_spire.h"
-
-enum Spells
-{
- SPELL_REND_MOUNTS = 16167, // Change model
- SPELL_CORROSIVE_ACID = 16359, // Combat (self cast)
- SPELL_FLAMEBREATH = 16390, // Combat (Self cast)
- SPELL_FREEZE = 16350, // Combat (Self cast)
- SPELL_KNOCK_AWAY = 10101, // Combat
- SPELL_SUMMON_REND = 16328 // Summons Rend near death
-};
-
-enum Misc
-{
- NEFARIUS_PATH_2 = 1379671,
- NEFARIUS_PATH_3 = 1379672,
- GYTH_PATH_1 = 1379681,
-};
-
-enum Events
-{
- EVENT_CORROSIVE_ACID = 1,
- EVENT_FREEZE = 2,
- EVENT_FLAME_BREATH = 3,
- EVENT_KNOCK_AWAY = 4,
- EVENT_SUMMONED_1 = 5,
- EVENT_SUMMONED_2 = 6
-};
-
-class boss_gyth : public CreatureScript
-{
-public:
- boss_gyth() : CreatureScript("boss_gyth") { }
-
- struct boss_gythAI : public BossAI
- {
- boss_gythAI(Creature* creature) : BossAI(creature, DATA_GYTH) { }
-
- bool SummonedRend;
-
- void Reset() OVERRIDE
- {
- SummonedRend = false;
- if (instance->GetBossState(DATA_GYTH) == IN_PROGRESS)
- {
- instance->SetBossState(DATA_GYTH, DONE);
- me->DespawnOrUnsummon();
- }
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- _EnterCombat();
-
- events.ScheduleEvent(EVENT_CORROSIVE_ACID, urand(8000, 16000));
- events.ScheduleEvent(EVENT_FREEZE, urand(8000, 16000));
- events.ScheduleEvent(EVENT_FLAME_BREATH, urand(8000, 16000));
- events.ScheduleEvent(EVENT_KNOCK_AWAY, urand(12000, 18000));
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- instance->SetBossState(DATA_GYTH, DONE);
- }
-
- void SetData(uint32 /*type*/, uint32 data) OVERRIDE
- {
- switch (data)
- {
- case 1:
- events.ScheduleEvent(EVENT_SUMMONED_1, 1000);
- break;
- default:
- break;
- }
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
-
- if (!SummonedRend && HealthBelowPct(5))
- {
- DoCast(me, SPELL_SUMMON_REND);
- me->RemoveAura(SPELL_REND_MOUNTS);
- SummonedRend = true;
- }
-
- if (!UpdateVictim())
- {
- events.Update(diff);
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_SUMMONED_1:
- me->AddAura(SPELL_REND_MOUNTS, me);
- if (GameObject* portcullis = me->FindNearestGameObject(GO_DR_PORTCULLIS, 40.0f))
- portcullis->UseDoorOrButton();
- if (Creature* victor = me->FindNearestCreature(NPC_LORD_VICTOR_NEFARIUS, 75.0f, true))
- victor->AI()->SetData(1, 1);
- events.ScheduleEvent(EVENT_SUMMONED_2, 2000);
- break;
- case EVENT_SUMMONED_2:
- me->GetMotionMaster()->MovePath(GYTH_PATH_1, false);
- break;
- default:
- break;
- }
- }
- return;
- }
-
- events.Update(diff);
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_CORROSIVE_ACID:
- DoCast(me, SPELL_CORROSIVE_ACID);
- events.ScheduleEvent(EVENT_CORROSIVE_ACID, urand(10000, 16000));
- break;
- case EVENT_FREEZE:
- DoCast(me, SPELL_FREEZE);
- events.ScheduleEvent(EVENT_FREEZE, urand(10000, 16000));
- break;
- case EVENT_FLAME_BREATH:
- DoCast(me, SPELL_FLAMEBREATH);
- events.ScheduleEvent(EVENT_FLAME_BREATH, urand(10000, 16000));
- break;
- case EVENT_KNOCK_AWAY:
- DoCastVictim(SPELL_KNOCK_AWAY);
- events.ScheduleEvent(EVENT_KNOCK_AWAY, urand(14000, 20000));
- break;
- default:
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- };
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_gythAI(creature);
- }
-};
-
-void AddSC_boss_gyth()
-{
- new boss_gyth();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_halycon.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_halycon.cpp
deleted file mode 100644
index 630d6ff2a0d..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_halycon.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "blackrock_spire.h"
-
-enum Spells
-{
- SPELL_REND = 13738,
- SPELL_THRASH = 3391,
-};
-
-enum Says
-{
- EMOTE_DEATH = 0
-};
-
-enum Events
-{
- EVENT_REND = 1,
- EVENT_THRASH = 2,
-};
-
-const Position SummonLocation = { -167.9561f, -411.7844f, 76.23057f, 1.53589f };
-
-class boss_halycon : public CreatureScript
-{
-public:
- boss_halycon() : CreatureScript("boss_halycon") { }
-
- struct boss_halyconAI : public BossAI
- {
- boss_halyconAI(Creature* creature) : BossAI(creature, DATA_HALYCON) {}
-
- void Reset() OVERRIDE
- {
- _Reset();
- Summoned = false;
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- _EnterCombat();
- events.ScheduleEvent(EVENT_REND, urand(17000,20000));
- events.ScheduleEvent(EVENT_THRASH, urand(10000,12000));
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- me->SummonCreature(NPC_GIZRUL_THE_SLAVENER, SummonLocation, TEMPSUMMON_TIMED_DESPAWN, 300000);
- Talk(EMOTE_DEATH);
-
- Summoned = true;
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_REND:
- DoCastVictim(SPELL_REND);
- events.ScheduleEvent(EVENT_REND, urand(8000,10000));
- break;
- case EVENT_THRASH:
- DoCast(me, SPELL_THRASH);
- break;
- default:
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- private:
- bool Summoned;
- };
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_halyconAI(creature);
- }
-};
-
-void AddSC_boss_halycon()
-{
- new boss_halycon();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_highlord_omokk.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_highlord_omokk.cpp
deleted file mode 100644
index 54ed5d44e34..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_highlord_omokk.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "blackrock_spire.h"
-
-enum Spells
-{
- SPELL_FRENZY = 8269,
- SPELL_KNOCK_AWAY = 10101
-};
-
-enum Events
-{
- EVENT_FRENZY = 1,
- EVENT_KNOCK_AWAY = 2
-};
-
-class boss_highlord_omokk : public CreatureScript
-{
-public:
- boss_highlord_omokk() : CreatureScript("boss_highlord_omokk") { }
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_highlordomokkAI(creature);
- }
-
- struct boss_highlordomokkAI : public BossAI
- {
- boss_highlordomokkAI(Creature* creature) : BossAI(creature, DATA_HIGHLORD_OMOKK) {}
-
- void Reset() OVERRIDE
- {
- _Reset();
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- _EnterCombat();
- events.ScheduleEvent(EVENT_FRENZY, 20000);
- events.ScheduleEvent(EVENT_KNOCK_AWAY, 18000);
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- _JustDied();
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_FRENZY:
- DoCastVictim(SPELL_FRENZY);
- events.ScheduleEvent(EVENT_FRENZY, 60000);
- break;
- case EVENT_KNOCK_AWAY:
- DoCastVictim(SPELL_KNOCK_AWAY);
- events.ScheduleEvent(EVENT_KNOCK_AWAY, 12000);
- break;
- default:
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- };
-
-};
-
-void AddSC_boss_highlordomokk()
-{
- new boss_highlord_omokk();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_mother_smolderweb.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_mother_smolderweb.cpp
deleted file mode 100644
index 608cb75bbb2..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_mother_smolderweb.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "blackrock_spire.h"
-
-enum Spells
-{
- SPELL_CRYSTALIZE = 16104,
- SPELL_MOTHERSMILK = 16468,
- SPELL_SUMMON_SPIRE_SPIDERLING = 16103,
-};
-
-enum Events
-{
- EVENT_CRYSTALIZE = 1,
- EVENT_MOTHERS_MILK = 2,
-};
-
-class boss_mother_smolderweb : public CreatureScript
-{
-public:
- boss_mother_smolderweb() : CreatureScript("boss_mother_smolderweb") { }
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_mothersmolderwebAI(creature);
- }
-
- struct boss_mothersmolderwebAI : public BossAI
- {
- boss_mothersmolderwebAI(Creature* creature) : BossAI(creature, DATA_MOTHER_SMOLDERWEB) {}
-
- void Reset() OVERRIDE
- {
- _Reset();
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- _EnterCombat();
- events.ScheduleEvent(EVENT_CRYSTALIZE, 20 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_MOTHERS_MILK, 10 * IN_MILLISECONDS);
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- _JustDied();
- }
-
- void DamageTaken(Unit* /*done_by*/, uint32 &damage) OVERRIDE
- {
- if (me->GetHealth() <= damage)
- DoCast(me, SPELL_SUMMON_SPIRE_SPIDERLING, true);
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_CRYSTALIZE:
- DoCast(me, SPELL_CRYSTALIZE);
- events.ScheduleEvent(EVENT_CRYSTALIZE, 15 * IN_MILLISECONDS);
- break;
- case EVENT_MOTHERS_MILK:
- DoCast(me, SPELL_MOTHERSMILK);
- events.ScheduleEvent(EVENT_MOTHERS_MILK, urand(5 * IN_MILLISECONDS, 12500));
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- };
-
-};
-
-void AddSC_boss_mothersmolderweb()
-{
- new boss_mother_smolderweb();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_overlord_wyrmthalak.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_overlord_wyrmthalak.cpp
deleted file mode 100644
index 2b68b640720..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_overlord_wyrmthalak.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "blackrock_spire.h"
-
-enum Spells
-{
- SPELL_BLASTWAVE = 11130,
- SPELL_SHOUT = 23511,
- SPELL_CLEAVE = 20691,
- SPELL_KNOCKAWAY = 20686
-};
-
-enum Events
-{
- EVENT_BLAST_WAVE = 1,
- EVENT_SHOUT = 2,
- EVENT_CLEAVE = 3,
- EVENT_KNOCK_AWAY = 4
-};
-
-enum Adds
-{
- NPC_SPIRESTONE_WARLORD = 9216,
- NPC_SMOLDERTHORN_BERSERKER = 9268
-};
-
-const Position SummonLocation1 = { -39.355f, -513.456f, 88.472f, 4.679f };
-const Position SummonLocation2 = { -49.875f, -511.896f, 88.195f, 4.613f };
-
-class boss_overlord_wyrmthalak : public CreatureScript
-{
-public:
- boss_overlord_wyrmthalak() : CreatureScript("boss_overlord_wyrmthalak") { }
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_overlordwyrmthalakAI(creature);
- }
-
- struct boss_overlordwyrmthalakAI : public BossAI
- {
- boss_overlordwyrmthalakAI(Creature* creature) : BossAI(creature, DATA_OVERLORD_WYRMTHALAK) {}
-
- bool Summoned;
-
- void Reset() OVERRIDE
- {
- _Reset();
- Summoned = false;
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- _EnterCombat();
- events.ScheduleEvent(EVENT_BLAST_WAVE, 20 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_SHOUT, 2 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_CLEAVE, 6 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_KNOCK_AWAY, 12 * IN_MILLISECONDS);
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- _JustDied();
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (!UpdateVictim())
- return;
-
- if (!Summoned && HealthBelowPct(51))
- {
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
- {
- if (Creature* warlord = me->SummonCreature(NPC_SPIRESTONE_WARLORD, SummonLocation1, TEMPSUMMON_TIMED_DESPAWN, 300 * IN_MILLISECONDS))
- warlord->AI()->AttackStart(target);
- if (Creature* berserker = me->SummonCreature(NPC_SMOLDERTHORN_BERSERKER, SummonLocation2, TEMPSUMMON_TIMED_DESPAWN, 300 * IN_MILLISECONDS))
- berserker->AI()->AttackStart(target);
- Summoned = true;
- }
- }
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_BLAST_WAVE:
- DoCastVictim(SPELL_BLASTWAVE);
- events.ScheduleEvent(EVENT_BLAST_WAVE, 20 * IN_MILLISECONDS);
- break;
- case EVENT_SHOUT:
- DoCastVictim(SPELL_SHOUT);
- events.ScheduleEvent(EVENT_SHOUT, 10 * IN_MILLISECONDS);
- break;
- case EVENT_CLEAVE:
- DoCastVictim(SPELL_CLEAVE);
- events.ScheduleEvent(EVENT_CLEAVE, 7 * IN_MILLISECONDS);
- break;
- case EVENT_KNOCK_AWAY:
- DoCastVictim(SPELL_KNOCKAWAY);
- events.ScheduleEvent(EVENT_KNOCK_AWAY, 14 * IN_MILLISECONDS);
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- };
-};
-
-void AddSC_boss_overlordwyrmthalak()
-{
- new boss_overlord_wyrmthalak();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp
deleted file mode 100644
index b84be2feb17..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_pyroguard_emberseer.cpp
+++ /dev/null
@@ -1,453 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ObjectMgr.h"
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "Player.h"
-#include "Spell.h"
-#include "blackrock_spire.h"
-
-enum Text
-{
- EMOTE_ONE_STACK = 0,
- EMOTE_TEN_STACK = 1,
- EMOTE_FREE_OF_BONDS = 2,
- YELL_FREE_OF_BONDS = 3
-};
-
-enum Spells
-{
- SPELL_ENCAGED_EMBERSEER = 15282, // Self on spawn
- SPELL_FIRE_SHIELD_TRIGGER = 13377, // Self on spawn missing from 335 dbc triggers SPELL_FIRE_SHIELD every 3 sec
- SPELL_FIRE_SHIELD = 13376, // Triggered by SPELL_FIRE_SHIELD_TRIGGER
- SPELL_FREEZE_ANIM = 16245, // Self on event start
- SPELL_EMBERSEER_GROWING = 16048, // Self on event start
- SPELL_EMBERSEER_GROWING_TRIGGER = 16049, // Triggered by SPELL_EMBERSEER_GROWING
- SPELL_EMBERSEER_FULL_STRENGTH = 16047, // Emberseer Full Strength
- SPELL_FIRENOVA = 23462, // Combat
- SPELL_FLAMEBUFFET = 23341, // Combat
- SPELL_PYROBLAST = 17274, // Combat
- // Blackhand Incarcerator Spells
- SPELL_ENCAGE_EMBERSEER = 15281, // Emberseer on spawn
- SPELL_STRIKE = 15580, // Combat
- SPELL_ENCAGE = 16045, // Combat
- // Cast on player by altar
- SPELL_EMBERSEER_OBJECT_VISUAL = 16532
-};
-
-enum Events
-{
- // Respawn
- EVENT_RESPAWN = 1,
- // Pre fight
- EVENT_PRE_FIGHT_1 = 2,
- EVENT_PRE_FIGHT_2 = 3,
- // Combat
- EVENT_FIRENOVA = 4,
- EVENT_FLAMEBUFFET = 5,
- EVENT_PYROBLAST = 6,
- // Hack due to trigger spell not in dbc
- EVENT_FIRE_SHIELD = 7,
- // Make sure all players have aura from altar
- EVENT_PLAYER_CHECK = 8,
- EVENT_ENTER_COMBAT = 9
-};
-
-class boss_pyroguard_emberseer : public CreatureScript
-{
-public:
- boss_pyroguard_emberseer() : CreatureScript("boss_pyroguard_emberseer") { }
-
- struct boss_pyroguard_emberseerAI : public BossAI
- {
- boss_pyroguard_emberseerAI(Creature* creature) : BossAI(creature, DATA_PYROGAURD_EMBERSEER) {}
-
- void Reset() OVERRIDE
- {
- if (instance)
- {
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE);
- events.Reset();
- // Apply auras on spawn and reset
- // DoCast(me, SPELL_FIRE_SHIELD_TRIGGER); // Need to find this in old DBC if possible
- me->RemoveAura(SPELL_EMBERSEER_FULL_STRENGTH);
- me->RemoveAura(SPELL_EMBERSEER_GROWING);
- me->RemoveAura(SPELL_EMBERSEER_GROWING_TRIGGER);
- events.ScheduleEvent(EVENT_RESPAWN, 5000);
- // Hack for missing trigger spell
- events.ScheduleEvent(EVENT_FIRE_SHIELD, 3000);
-
- // Open doors on reset
- if (instance->GetBossState(DATA_PYROGAURD_EMBERSEER) == IN_PROGRESS)
- OpenDoors(false); // Opens 2 entrance doors
- }
- }
-
- void SetData(uint32 /*type*/, uint32 data) OVERRIDE
- {
- switch (data)
- {
- case 1:
- events.ScheduleEvent(EVENT_PLAYER_CHECK, 5000);
- break;
- case 2:
- // Close these two doors on Blackhand Incarcerators aggro
- if (GameObject* door1 = me->GetMap()->GetGameObject(instance->GetData64(GO_EMBERSEER_IN)))
- if (door1->GetGoState() == GO_STATE_ACTIVE)
- door1->SetGoState(GO_STATE_READY);
- if (GameObject* door2 = me->GetMap()->GetGameObject(instance->GetData64(GO_DOORS)))
- if (door2->GetGoState() == GO_STATE_ACTIVE)
- door2->SetGoState(GO_STATE_READY);
- break;
- case 3:
- Reset();
- break;
- default:
- break;
- }
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- // ### TODO Check combat timing ###
- events.ScheduleEvent(EVENT_FIRENOVA, 6000);
- events.ScheduleEvent(EVENT_FLAMEBUFFET, 3000);
- events.ScheduleEvent(EVENT_PYROBLAST, 14000);
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- if (instance)
- {
- // Activate all the runes
- UpdateRunes(GO_STATE_READY);
- // Opens all 3 doors
- OpenDoors(true);
- // Complete encounter
- instance->SetBossState(DATA_PYROGAURD_EMBERSEER, DONE);
- }
- }
-
- void SpellHit(Unit* /*caster*/, SpellInfo const* spell) OVERRIDE
- {
- if (spell->Id == SPELL_ENCAGE_EMBERSEER)
- {
- if (!me->GetAuraCount(SPELL_ENCAGED_EMBERSEER))
- me->CastSpell(me, SPELL_ENCAGED_EMBERSEER);
- }
-
- if (spell->Id == SPELL_EMBERSEER_GROWING_TRIGGER)
- {
- if (me->GetAuraCount(SPELL_EMBERSEER_GROWING_TRIGGER) == 10)
- Talk(EMOTE_TEN_STACK);
-
- if (me->GetAuraCount(SPELL_EMBERSEER_GROWING_TRIGGER) == 20)
- {
- me->RemoveAura(SPELL_ENCAGED_EMBERSEER);
- me->RemoveAura(SPELL_FREEZE_ANIM);
- me->CastSpell(me, SPELL_EMBERSEER_FULL_STRENGTH);
- Talk(EMOTE_FREE_OF_BONDS);
- Talk(YELL_FREE_OF_BONDS);
- me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE);
- events.ScheduleEvent(EVENT_ENTER_COMBAT, 2000);
- }
- }
- }
-
- void OpenDoors(bool Boss_Killed)
- {
- // These two doors reopen on reset or boss kill
- if (GameObject* door1 = me->GetMap()->GetGameObject(instance->GetData64(GO_EMBERSEER_IN)))
- door1->SetGoState(GO_STATE_ACTIVE);
- if (GameObject* door2 = me->GetMap()->GetGameObject(instance->GetData64(GO_DOORS)))
- door2->SetGoState(GO_STATE_ACTIVE);
-
- // This door opens on boss kill
- if (Boss_Killed)
- if (GameObject* door3 = me->GetMap()->GetGameObject(instance->GetData64(GO_EMBERSEER_OUT)))
- door3->SetGoState(GO_STATE_ACTIVE);
- }
-
- void UpdateRunes(GOState state)
- {
- if (instance)
- {
- // update all runes
- if (GameObject* rune1 = me->GetMap()->GetGameObject(instance->GetData64(GO_EMBERSEER_RUNE_1)))
- rune1->SetGoState(state);
- if (GameObject* rune2 = me->GetMap()->GetGameObject(instance->GetData64(GO_EMBERSEER_RUNE_2)))
- rune2->SetGoState(state);
- if (GameObject* rune3 = me->GetMap()->GetGameObject(instance->GetData64(GO_EMBERSEER_RUNE_3)))
- rune3->SetGoState(state);
- if (GameObject* rune4 = me->GetMap()->GetGameObject(instance->GetData64(GO_EMBERSEER_RUNE_4)))
- rune4->SetGoState(state);
- if (GameObject* rune5 = me->GetMap()->GetGameObject(instance->GetData64(GO_EMBERSEER_RUNE_5)))
- rune5->SetGoState(state);
- if (GameObject* rune6 = me->GetMap()->GetGameObject(instance->GetData64(GO_EMBERSEER_RUNE_6)))
- rune6->SetGoState(state);
- if (GameObject* rune7 = me->GetMap()->GetGameObject(instance->GetData64(GO_EMBERSEER_RUNE_7)))
- rune7->SetGoState(state);
- }
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (!UpdateVictim())
- {
- events.Update(diff);
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_RESPAWN:
- {
- // Respawn all Blackhand Incarcerators
- std::list<Creature*> creatureList;
- GetCreatureListWithEntryInGrid(creatureList, me, NPC_BLACKHAND_INCARCERATOR, 35.0f);
- for (std::list<Creature*>::iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr)
- if (Creature* creatureList = *itr)
- {
- if (!creatureList->IsAlive())
- {
- creatureList->Respawn();
- }
- creatureList->AI()->SetData(1, 2);
- }
- me->AddAura(SPELL_ENCAGED_EMBERSEER, me);
- instance->SetBossState(DATA_PYROGAURD_EMBERSEER, NOT_STARTED);
- break;
- }
- case EVENT_PRE_FIGHT_1:
- {
- // Set data on all Blackhand Incarcerators
- std::list<Creature*> creatureList;
- GetCreatureListWithEntryInGrid(creatureList, me, NPC_BLACKHAND_INCARCERATOR, 35.0f);
- for (std::list<Creature*>::iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr)
- {
- if (Creature* creatureList = *itr)
- creatureList->AI()->SetData(1, 1);
- }
- events.ScheduleEvent(EVENT_PRE_FIGHT_2, 32000);
- break;
- }
- case EVENT_PRE_FIGHT_2:
- me->CastSpell(me, SPELL_FREEZE_ANIM);
- me->CastSpell(me, SPELL_EMBERSEER_GROWING);
- Talk(EMOTE_ONE_STACK);
- break;
- case EVENT_FIRE_SHIELD:
- // #### Spell isn't doing any damage ??? ####
- DoCast(me, SPELL_FIRE_SHIELD);
- events.ScheduleEvent(EVENT_FIRE_SHIELD, 3000);
- break;
- case EVENT_PLAYER_CHECK:
- {
- // Check to see if all players in instance have aura SPELL_EMBERSEER_START before starting event
- bool _hasAura = true;
- Map::PlayerList const &players = me->GetMap()->GetPlayers();
- for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
- if (Player* player = itr->GetSource()->ToPlayer())
- if (!player->HasAura(SPELL_EMBERSEER_OBJECT_VISUAL))
- _hasAura = false;
-
- if (_hasAura)
- {
- events.ScheduleEvent(EVENT_PRE_FIGHT_1, 1000);
- instance->SetBossState(DATA_PYROGAURD_EMBERSEER, IN_PROGRESS);
- }
- break;
- }
- case EVENT_ENTER_COMBAT:
- AttackStart(me->SelectNearestPlayer(30.0f));
- break;
- default:
- break;
- }
- }
- return;
- }
-
- events.Update(diff);
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_FIRE_SHIELD:
- DoCast(me, SPELL_FIRE_SHIELD);
- events.ScheduleEvent(EVENT_FIRE_SHIELD, 3000);
- break;
- case EVENT_FIRENOVA:
- DoCast(me, SPELL_FIRENOVA);
- events.ScheduleEvent(EVENT_FIRENOVA, 6000);
- break;
- case EVENT_FLAMEBUFFET:
- DoCast(me, SPELL_FLAMEBUFFET);
- events.ScheduleEvent(EVENT_FLAMEBUFFET, 14000);
- break;
- case EVENT_PYROBLAST:
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
- DoCast(target, SPELL_PYROBLAST);
- events.ScheduleEvent(EVENT_PYROBLAST, 15000);
- break;
- default:
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- };
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_pyroguard_emberseerAI(creature);
- }
-};
-
-/*####
-## npc_blackhand_incarcerator
-####*/
-
-enum IncarceratorEvents
-{
- // OOC
- EVENT_ENCAGED_EMBERSEER = 1,
- // Combat
- EVENT_STRIKE = 2,
- EVENT_ENCAGE = 3
-};
-
-class npc_blackhand_incarcerator : public CreatureScript
-{
-public:
- npc_blackhand_incarcerator() : CreatureScript("npc_blackhand_incarcerator") { }
-
- struct npc_blackhand_incarceratorAI : public ScriptedAI
- {
- npc_blackhand_incarceratorAI(Creature* creature) : ScriptedAI(creature) {}
-
- void Reset() OVERRIDE
- {
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
- if (Creature* Emberseer = me->FindNearestCreature(NPC_PYROGAURD_EMBERSEER, 30.0f, true))
- Emberseer->AI()->SetData(1, 3);
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- me->DespawnOrUnsummon(10000);
- }
-
- void SetData(uint32 data, uint32 value) OVERRIDE
- {
- if (data == 1 && value == 1)
- {
- me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
- me->InterruptSpell(CURRENT_CHANNELED_SPELL);
- _events.CancelEvent(EVENT_ENCAGED_EMBERSEER);
- }
-
- if (data == 1 && value == 2)
- {
- _events.ScheduleEvent(EVENT_ENCAGED_EMBERSEER, 1000);
- }
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- // Used to close doors
- if (Creature* Emberseer = me->FindNearestCreature(NPC_PYROGAURD_EMBERSEER, 30.0f, true))
- Emberseer->AI()->SetData(1, 2);
-
- // Had to do this because CallForHelp will ignore any npcs without LOS
- std::list<Creature*> creatureList;
- GetCreatureListWithEntryInGrid(creatureList, me, NPC_BLACKHAND_INCARCERATOR, 60.0f);
- for (std::list<Creature*>::iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr)
- {
- if (Creature* creatureList = *itr)
- creatureList->SetInCombatWithZone(); // AI()->AttackStart(me->GetVictim());
- }
-
- _events.ScheduleEvent(EVENT_STRIKE, urand(8000, 16000));
- _events.ScheduleEvent(EVENT_ENCAGE, urand(10000, 20000));
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
-
-
- if (!UpdateVictim())
- {
- _events.Update(diff);
-
- while (uint32 eventId = _events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_ENCAGED_EMBERSEER:
- {
- if (me->GetPositionX() == me->GetHomePosition().GetPositionX())
- if (!me->HasAura(SPELL_ENCAGE_EMBERSEER))
- if (Creature* Emberseer = me->FindNearestCreature(NPC_PYROGAURD_EMBERSEER, 30.0f, true))
- DoCast(Emberseer, SPELL_ENCAGE_EMBERSEER);
- break;
-
- }
- }
- }
- return;
- }
-
- _events.Update(diff);
-
- while (uint32 eventId = _events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_STRIKE:
- DoCastVictim(SPELL_STRIKE, true);
- _events.ScheduleEvent(EVENT_STRIKE, urand(14000, 23000));
- break;
- case EVENT_ENCAGE:
- DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), EVENT_ENCAGE, true);
- _events.ScheduleEvent(EVENT_ENCAGE, urand(6000, 12000));
- break;
- default:
- break;
- }
- }
-
- DoMeleeAttackIfReady();
- }
-
- private:
- EventMap _events;
- };
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new npc_blackhand_incarceratorAI(creature);
- }
-};
-
-void AddSC_boss_pyroguard_emberseer()
-{
- new boss_pyroguard_emberseer();
- new npc_blackhand_incarcerator();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_quartermaster_zigris.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_quartermaster_zigris.cpp
deleted file mode 100644
index a20822839e6..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_quartermaster_zigris.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "blackrock_spire.h"
-
-enum Spells
-{
- SPELL_SHOOT = 16496,
- SPELL_STUNBOMB = 16497,
- SPELL_HEALING_POTION = 15504,
- SPELL_HOOKEDNET = 15609
-};
-
-enum Events
-{
- EVENT_SHOOT = 1,
- EVENT_STUN_BOMB = 2
-};
-
-class quartermaster_zigris : public CreatureScript
-{
-public:
- quartermaster_zigris() : CreatureScript("quartermaster_zigris") { }
-
- struct boss_quatermasterzigrisAI : public BossAI
- {
- boss_quatermasterzigrisAI(Creature* creature) : BossAI(creature, DATA_QUARTERMASTER_ZIGRIS) {}
-
- void Reset() OVERRIDE
- {
- _Reset();
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- _EnterCombat();
- events.ScheduleEvent(EVENT_SHOOT, 1000);
- events.ScheduleEvent(EVENT_STUN_BOMB, 16000);
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- _JustDied();
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_SHOOT:
- DoCastVictim(SPELL_SHOOT);
- events.ScheduleEvent(EVENT_SHOOT, 500);
- break;
- case EVENT_STUN_BOMB:
- DoCastVictim(SPELL_STUNBOMB);
- events.ScheduleEvent(EVENT_STUN_BOMB, 14000);
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- };
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_quatermasterzigrisAI(creature);
- }
-};
-
-void AddSC_boss_quatermasterzigris()
-{
- new quartermaster_zigris();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_rend_blackhand.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_rend_blackhand.cpp
deleted file mode 100644
index 275b3802764..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_rend_blackhand.cpp
+++ /dev/null
@@ -1,447 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "Player.h"
-#include "blackrock_spire.h"
-
-enum Spells
-{
- SPELL_WHIRLWIND = 13736, // sniffed
- SPELL_CLEAVE = 15284,
- SPELL_MORTAL_STRIKE = 16856,
- SPELL_FRENZY = 8269,
- SPELL_KNOCKDOWN = 13360 // On spawn during Gyth fight
-};
-
-enum Says
-{
- // Rend Blackhand
- SAY_BLACKHAND_1 = 0,
- SAY_BLACKHAND_2 = 1,
- EMOTE_BLACKHAND_DISMOUNT = 2,
- // Victor Nefarius
- SAY_NEFARIUS_0 = 0,
- SAY_NEFARIUS_1 = 1,
- SAY_NEFARIUS_2 = 2,
- SAY_NEFARIUS_3 = 3,
- SAY_NEFARIUS_4 = 4,
- SAY_NEFARIUS_5 = 5,
- SAY_NEFARIUS_6 = 6,
- SAY_NEFARIUS_7 = 7,
- SAY_NEFARIUS_8 = 8,
- SAY_NEFARIUS_9 = 9,
-};
-
-enum Adds
-{
- NPC_CHROMATIC_WHELP = 10442,
- NPC_CHROMATIC_DRAGONSPAWN = 10447,
- NPC_BLACKHAND_DRAGON_HANDLER = 10742
-};
-
-enum Misc
-{
- NEFARIUS_PATH_1 = 1379670,
- NEFARIUS_PATH_2 = 1379671,
- NEFARIUS_PATH_3 = 1379672,
- REND_PATH_1 = 1379680,
- REND_PATH_2 = 1379681,
-};
-
-/*
-struct Wave
-{
- uint32 entry;
- float x_pos;
- float y_pos;
- float z_pos;
- float o_pos;
-};
-
-static Wave Wave2[]= // 22 sec
-{
- { 10447, 209.8637f, -428.2729f, 110.9877f, 0.6632251f },
- { 10442, 209.3122f, -430.8724f, 110.9814f, 2.9147f },
- { 10442, 211.3309f, -425.9111f, 111.0006f, 1.727876f }
-};
-
-static Wave Wave3[]= // 60 sec
-{
- { 10742, 208.6493f, -424.5787f, 110.9872f, 5.8294f },
- { 10447, 203.9482f, -428.9446f, 110.982f, 4.677482f },
- { 10442, 203.3441f, -426.8668f, 110.9772f, 4.712389f },
- { 10442, 206.3079f, -424.7509f, 110.9943f, 4.08407f }
-};
-
-static Wave Wave4[]= // 49 sec
-{
- { 10742, 212.3541f, -412.6826f, 111.0352f, 5.88176f },
- { 10447, 212.5754f, -410.2841f, 111.0296f, 2.740167f },
- { 10442, 212.3449f, -414.8659f, 111.0348f, 2.356194f },
- { 10442, 210.6568f, -412.1552f, 111.0124f, 0.9773844f }
-};
-
-static Wave Wave5[]= // 60 sec
-{
- { 10742, 210.2188f, -410.6686f, 111.0211f, 5.8294f },
- { 10447, 209.4078f, -414.13f, 111.0264f, 4.677482f },
- { 10442, 208.0858f, -409.3145f, 111.0118f, 4.642576f },
- { 10442, 207.9811f, -413.0728f, 111.0098f, 5.288348f },
- { 10442, 208.0854f, -412.1505f, 111.0057f, 4.08407f }
-};
-
-static Wave Wave6[]= // 27 sec
-{
- { 10742, 213.9138f, -426.512f, 111.0013f, 3.316126f },
- { 10447, 213.7121f, -429.8102f, 110.9888f, 1.413717f },
- { 10447, 213.7157f, -424.4268f, 111.009f, 3.001966f },
- { 10442, 210.8935f, -423.913f, 111.0125f, 5.969026f },
- { 10442, 212.2642f, -430.7648f, 110.9807f, 5.934119f }
-};
-*/
-
-Position const GythLoc = { 211.762f, -397.5885f, 111.1817f, 4.747295f };
-Position const Teleport1Loc = { 194.2993f, -474.0814f, 121.4505f, -0.01225555f };
-Position const Teleport2Loc = { 216.485f, -434.93f, 110.888f, -0.01225555f };
-
-enum Events
-{
- EVENT_START_1 = 1,
- EVENT_START_2 = 2,
- EVENT_START_3 = 3,
- EVENT_START_4 = 4,
- EVENT_TURN_TO_REND = 5,
- EVENT_TURN_TO_PLAYER = 6,
- EVENT_TURN_TO_FACING_1 = 7,
- EVENT_TURN_TO_FACING_2 = 8,
- EVENT_TURN_TO_FACING_3 = 9,
- EVENT_WAVE_1 = 10,
- EVENT_WAVE_2 = 11,
- EVENT_WAVE_3 = 12,
- EVENT_WAVE_4 = 13,
- EVENT_WAVE_5 = 14,
- EVENT_WAVE_6 = 15,
- EVENT_WAVES_TEXT_1 = 16,
- EVENT_WAVES_TEXT_2 = 17,
- EVENT_WAVES_TEXT_3 = 18,
- EVENT_WAVES_TEXT_4 = 19,
- EVENT_WAVES_TEXT_5 = 20,
- EVENT_WAVES_COMPLETE_TEXT_1 = 21,
- EVENT_WAVES_COMPLETE_TEXT_2 = 22,
- EVENT_WAVES_COMPLETE_TEXT_3 = 23,
- EVENT_WAVES_EMOTE_1 = 24,
- EVENT_WAVES_EMOTE_2 = 25,
- EVENT_PATH_REND = 26,
- EVENT_PATH_NEFARIUS = 27,
- EVENT_TELEPORT_1 = 28,
- EVENT_TELEPORT_2 = 29,
- EVENT_WHIRLWIND = 30,
- EVENT_CLEAVE = 31,
- EVENT_MORTAL_STRIKE = 32,
-};
-
-class boss_rend_blackhand : public CreatureScript
-{
-public:
- boss_rend_blackhand() : CreatureScript("boss_rend_blackhand") { }
-
- struct boss_rend_blackhandAI : public BossAI
- {
- boss_rend_blackhandAI(Creature* creature) : BossAI(creature, DATA_WARCHIEF_REND_BLACKHAND) { }
-
- void Reset() OVERRIDE
- {
- _Reset();
- gythEvent = false;
- victorGUID = 0;
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- _EnterCombat();
- events.ScheduleEvent(EVENT_WHIRLWIND, urand(13000, 15000));
- events.ScheduleEvent(EVENT_CLEAVE, urand(15000, 17000));
- events.ScheduleEvent(EVENT_MORTAL_STRIKE, urand(17000, 19000));
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- _JustDied();
- if (Creature* victor = me->FindNearestCreature(NPC_LORD_VICTOR_NEFARIUS, 75.0f, true))
- victor->AI()->SetData(1, 2);
- }
-
- void SetData(uint32 type, uint32 data) OVERRIDE
- {
- if (instance && type == AREATRIGGER && data == AREATRIGGER_BLACKROCK_STADIUM)
- {
- if (!gythEvent)
- {
- gythEvent = true;
-
- if (Creature* victor = me->FindNearestCreature(NPC_LORD_VICTOR_NEFARIUS, 5.0f, true))
- victorGUID = victor->GetGUID();
-
- if (GameObject* portcullis = me->FindNearestGameObject(GO_DR_PORTCULLIS, 50.0f))
- portcullisGUID = portcullis->GetGUID();
-
- events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
- events.ScheduleEvent(EVENT_START_1, 1000);
- }
- }
- }
-
- void MovementInform(uint32 type, uint32 id) OVERRIDE
- {
- if (type == WAYPOINT_MOTION_TYPE)
- {
- switch (id)
- {
- case 5:
- events.ScheduleEvent(EVENT_TELEPORT_1, 2000);
- break;
- case 11:
- if (Creature* gyth = me->FindNearestCreature(NPC_GYTH, 10.0f, true))
- gyth->AI()->SetData(1, 1);
- me->DespawnOrUnsummon(1000);
- break;
- }
- }
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (gythEvent)
- {
- events.Update(diff);
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_START_1:
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- victor->AI()->Talk(SAY_NEFARIUS_0);
- events.ScheduleEvent(EVENT_START_2, 4000);
- break;
- case EVENT_START_2:
- events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- victor->HandleEmoteCommand(EMOTE_ONESHOT_POINT);
- events.ScheduleEvent(EVENT_START_3, 4000);
- break;
- case EVENT_START_3:
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- victor->AI()->Talk(SAY_NEFARIUS_1);
- events.ScheduleEvent(EVENT_WAVE_1, 2000);
- events.ScheduleEvent(EVENT_TURN_TO_REND, 4000);
- events.ScheduleEvent(EVENT_WAVES_TEXT_1, 20000);
- break;
- case EVENT_TURN_TO_REND:
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- {
- victor->SetFacingToObject(me);
- victor->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
- }
- break;
- case EVENT_TURN_TO_PLAYER:
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- if (Unit* player = victor->SelectNearestPlayer(60.0f))
- victor->SetFacingToObject(player);
- break;
- case EVENT_TURN_TO_FACING_1:
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- victor->SetFacingTo(1.518436f);
- break;
- case EVENT_TURN_TO_FACING_2:
- me->SetFacingTo(1.658063f);
- break;
- case EVENT_TURN_TO_FACING_3:
- me->SetFacingTo(1.500983f);
- break;
- case EVENT_WAVES_EMOTE_1:
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- victor->HandleEmoteCommand(EMOTE_ONESHOT_QUESTION);
- break;
- case EVENT_WAVES_EMOTE_2:
- me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
- break;
- case EVENT_WAVES_TEXT_1:
- events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- victor->AI()->Talk(SAY_NEFARIUS_2);
- me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
- events.ScheduleEvent(EVENT_TURN_TO_FACING_1, 4000);
- events.ScheduleEvent(EVENT_WAVES_EMOTE_1, 5000);
- events.ScheduleEvent(EVENT_WAVE_2, 2000);
- events.ScheduleEvent(EVENT_WAVES_TEXT_2, 20000);
- break;
- case EVENT_WAVES_TEXT_2:
- events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- victor->AI()->Talk(SAY_NEFARIUS_3);
- events.ScheduleEvent(EVENT_TURN_TO_FACING_1, 4000);
- events.ScheduleEvent(EVENT_WAVE_3, 2000);
- events.ScheduleEvent(EVENT_WAVES_TEXT_3, 20000);
- break;
- case EVENT_WAVES_TEXT_3:
- events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- victor->AI()->Talk(SAY_NEFARIUS_4);
- events.ScheduleEvent(EVENT_TURN_TO_FACING_1, 4000);
- events.ScheduleEvent(EVENT_WAVE_4, 2000);
- events.ScheduleEvent(EVENT_WAVES_TEXT_4, 20000);
- break;
- case EVENT_WAVES_TEXT_4:
- Talk(SAY_BLACKHAND_1);
- events.ScheduleEvent(EVENT_WAVES_EMOTE_2, 4000);
- events.ScheduleEvent(EVENT_TURN_TO_FACING_3, 8000);
- events.ScheduleEvent(EVENT_WAVE_5, 2000);
- events.ScheduleEvent(EVENT_WAVES_TEXT_5, 20000);
- break;
- case EVENT_WAVES_TEXT_5:
- events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- victor->AI()->Talk(SAY_NEFARIUS_5);
- events.ScheduleEvent(EVENT_TURN_TO_FACING_1, 4000);
- events.ScheduleEvent(EVENT_WAVE_6, 2000);
- events.ScheduleEvent(EVENT_WAVES_COMPLETE_TEXT_1, 20000);
- break;
- case EVENT_WAVES_COMPLETE_TEXT_1:
- events.ScheduleEvent(EVENT_TURN_TO_PLAYER, 0);
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- victor->AI()->Talk(SAY_NEFARIUS_6);
- events.ScheduleEvent(EVENT_TURN_TO_FACING_1, 4000);
- events.ScheduleEvent(EVENT_WAVES_COMPLETE_TEXT_2, 13000);
- break;
- case EVENT_WAVES_COMPLETE_TEXT_2:
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- victor->AI()->Talk(SAY_NEFARIUS_7);
- Talk(SAY_BLACKHAND_2);
- events.ScheduleEvent(EVENT_PATH_REND, 1000);
- events.ScheduleEvent(EVENT_WAVES_COMPLETE_TEXT_3, 4000);
- break;
- case EVENT_WAVES_COMPLETE_TEXT_3:
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- victor->AI()->Talk(SAY_NEFARIUS_8);
- events.ScheduleEvent(EVENT_PATH_NEFARIUS, 1000);
- events.ScheduleEvent(EVENT_PATH_REND, 1000);
- break;
- case EVENT_PATH_NEFARIUS:
- if (Creature* victor = me->GetCreature(*me, victorGUID))
- victor->GetMotionMaster()->MovePath(NEFARIUS_PATH_1, true);
- break;
- case EVENT_PATH_REND:
- me->GetMotionMaster()->MovePath(REND_PATH_1, false);
- break;
- case EVENT_TELEPORT_1:
- me->NearTeleportTo(194.2993f, -474.0814f, 121.4505f, -0.01225555f);
- events.ScheduleEvent(EVENT_TELEPORT_2, 50000);
- break;
- case EVENT_TELEPORT_2:
- me->NearTeleportTo(216.485f, -434.93f, 110.888f, -0.01225555f);
- me->SummonCreature(NPC_GYTH, 211.762f, -397.5885f, 111.1817f, 4.747295f);
- break;
- case EVENT_WAVE_1:
- if (GameObject* portcullis = me->GetMap()->GetGameObject(portcullisGUID))
- portcullis->UseDoorOrButton();
- // move wave
- break;
- case EVENT_WAVE_2:
- // spawn wave
- if (GameObject* portcullis = me->GetMap()->GetGameObject(portcullisGUID))
- portcullis->UseDoorOrButton();
- // move wave
- break;
- case EVENT_WAVE_3:
- // spawn wave
- if (GameObject* portcullis = me->GetMap()->GetGameObject(portcullisGUID))
- portcullis->UseDoorOrButton();
- // move wave
- break;
- case EVENT_WAVE_4:
- // spawn wave
- if (GameObject* portcullis = me->GetMap()->GetGameObject(portcullisGUID))
- portcullis->UseDoorOrButton();
- // move wave
- break;
- case EVENT_WAVE_5:
- // spawn wave
- if (GameObject* portcullis = me->GetMap()->GetGameObject(portcullisGUID))
- portcullis->UseDoorOrButton();
- // move wave
- break;
- case EVENT_WAVE_6:
- // spawn wave
- if (GameObject* portcullis = me->GetMap()->GetGameObject(portcullisGUID))
- portcullis->UseDoorOrButton();
- // move wave
- break;
- default:
- break;
- }
- }
- }
-
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_WHIRLWIND:
- DoCast(SPELL_WHIRLWIND);
- events.ScheduleEvent(EVENT_WHIRLWIND, urand(13000, 18000));
- break;
- case EVENT_CLEAVE:
- DoCastVictim(SPELL_CLEAVE);
- events.ScheduleEvent(EVENT_CLEAVE, urand(10000, 14000));
- break;
- case EVENT_MORTAL_STRIKE:
- DoCastVictim(SPELL_MORTAL_STRIKE);
- events.ScheduleEvent(EVENT_MORTAL_STRIKE, urand(14000, 16000));
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
-
- private:
- bool gythEvent;
- uint64 victorGUID;
- uint64 portcullisGUID;
- };
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_rend_blackhandAI(creature);
- }
-};
-
-void AddSC_boss_rend_blackhand()
-{
- new boss_rend_blackhand();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp
deleted file mode 100644
index 1936e5e72d0..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "blackrock_spire.h"
-
-enum Spells
-{
- SPELL_CURSEOFBLOOD = 24673,
- SPELL_HEX = 16708,
- SPELL_CLEAVE = 20691,
-};
-
-enum Events
-{
- EVENT_CURSE_OF_BLOOD = 1,
- EVENT_HEX = 2,
- EVENT_CLEAVE = 3,
-};
-
-class boss_shadow_hunter_voshgajin : public CreatureScript
-{
-public:
- boss_shadow_hunter_voshgajin() : CreatureScript("boss_shadow_hunter_voshgajin") { }
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_shadowvoshAI(creature);
- }
-
- struct boss_shadowvoshAI : public BossAI
- {
- boss_shadowvoshAI(Creature* creature) : BossAI(creature, DATA_SHADOW_HUNTER_VOSHGAJIN) {}
-
- void Reset() OVERRIDE
- {
- _Reset();
- //DoCast(me, SPELL_ICEARMOR, true);
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- _EnterCombat();
- events.ScheduleEvent(EVENT_CURSE_OF_BLOOD, 2 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_HEX, 8 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_CLEAVE, 14 * IN_MILLISECONDS);
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- _JustDied();
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_CURSE_OF_BLOOD:
- DoCastVictim(SPELL_CURSEOFBLOOD);
- events.ScheduleEvent(EVENT_CURSE_OF_BLOOD, 45 * IN_MILLISECONDS);
- break;
- case EVENT_HEX:
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
- DoCast(target, SPELL_HEX);
- events.ScheduleEvent(EVENT_HEX, 15 * IN_MILLISECONDS);
- break;
- case EVENT_CLEAVE:
- DoCastVictim(SPELL_CLEAVE);
- events.ScheduleEvent(EVENT_CLEAVE, 7 * IN_MILLISECONDS);
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- };
-
-};
-
-void AddSC_boss_shadowvosh()
-{
- new boss_shadow_hunter_voshgajin();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_the_beast.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_the_beast.cpp
deleted file mode 100644
index c4abaac158c..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_the_beast.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "blackrock_spire.h"
-
-enum Spells
-{
- SPELL_FLAMEBREAK = 16785,
- SPELL_IMMOLATE = 20294,
- SPELL_TERRIFYINGROAR = 14100,
-};
-
-enum Events
-{
- EVENT_FLAME_BREAK = 1,
- EVENT_IMMOLATE = 2,
- EVENT_TERRIFYING_ROAR = 3,
-};
-
-class boss_the_beast : public CreatureScript
-{
-public:
- boss_the_beast() : CreatureScript("boss_the_beast") { }
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_thebeastAI(creature);
- }
-
- struct boss_thebeastAI : public BossAI
- {
- boss_thebeastAI(Creature* creature) : BossAI(creature, DATA_THE_BEAST) {}
-
- void Reset() OVERRIDE
- {
- _Reset();
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- _EnterCombat();
- events.ScheduleEvent(EVENT_FLAME_BREAK, 12 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_IMMOLATE, 3 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_TERRIFYING_ROAR, 23 * IN_MILLISECONDS);
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- _JustDied();
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_FLAME_BREAK:
- DoCastVictim(SPELL_FLAMEBREAK);
- events.ScheduleEvent(EVENT_FLAME_BREAK, 10 * IN_MILLISECONDS);
- break;
- case EVENT_IMMOLATE:
- if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
- DoCast(target, SPELL_IMMOLATE);
- events.ScheduleEvent(EVENT_IMMOLATE, 8 * IN_MILLISECONDS);
- break;
- case EVENT_TERRIFYING_ROAR:
- DoCastVictim(SPELL_TERRIFYINGROAR);
- events.ScheduleEvent(EVENT_TERRIFYING_ROAR, 20 * IN_MILLISECONDS);
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- };
-};
-
-void AddSC_boss_thebeast()
-{
- new boss_the_beast();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_urok_doomhowl.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_urok_doomhowl.cpp
deleted file mode 100644
index afee357aad5..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_urok_doomhowl.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "blackrock_spire.h"
-
-enum Spells
-{
- SPELL_REND = 16509,
- SPELL_STRIKE = 15580,
- SPELL_INTIMIDATING_ROAR = 16508
-};
-
-enum Says
-{
- SAY_SUMMON = 0,
- SAY_AGGRO = 1,
-};
-
-enum Events
-{
- EVENT_REND = 1,
- EVENT_STRIKE = 2,
- EVENT_INTIMIDATING_ROAR = 3
-};
-
-class boss_urok_doomhowl : public CreatureScript
-{
-public:
- boss_urok_doomhowl() : CreatureScript("boss_urok_doomhowl") { }
-
- struct boss_urok_doomhowlAI : public BossAI
- {
- boss_urok_doomhowlAI(Creature* creature) : BossAI(creature, DATA_UROK_DOOMHOWL) {}
-
- void Reset() OVERRIDE
- {
- _Reset();
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- _EnterCombat();
- events.ScheduleEvent(SPELL_REND, urand(17000,20000));
- events.ScheduleEvent(SPELL_STRIKE, urand(10000,12000));
- Talk(SAY_AGGRO);
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- _JustDied();
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case SPELL_REND:
- DoCastVictim(SPELL_REND);
- events.ScheduleEvent(SPELL_REND, urand(8000,10000));
- break;
- case SPELL_STRIKE:
- DoCastVictim(SPELL_STRIKE);
- events.ScheduleEvent(SPELL_STRIKE, urand(8000,10000));
- break;
- default:
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- };
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_urok_doomhowlAI(creature);
- }
-};
-
-void AddSC_boss_urok_doomhowl()
-{
- new boss_urok_doomhowl();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_warmaster_voone.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_warmaster_voone.cpp
deleted file mode 100644
index e3423fd02b6..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/boss_warmaster_voone.cpp
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ScriptMgr.h"
-#include "ScriptedCreature.h"
-#include "blackrock_spire.h"
-
-enum Spells
-{
- SPELL_SNAPKICK = 15618,
- SPELL_CLEAVE = 15579,
- SPELL_UPPERCUT = 10966,
- SPELL_MORTALSTRIKE = 16856,
- SPELL_PUMMEL = 15615,
- SPELL_THROWAXE = 16075,
-};
-
-enum Events
-{
- EVENT_SNAP_KICK = 1,
- EVENT_CLEAVE = 2,
- EVENT_UPPERCUT = 3,
- EVENT_MORTAL_STRIKE = 4,
- EVENT_PUMMEL = 5,
- EVENT_THROW_AXE = 6,
-};
-
-class boss_warmaster_voone : public CreatureScript
-{
-public:
- boss_warmaster_voone() : CreatureScript("boss_warmaster_voone") { }
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new boss_warmastervooneAI(creature);
- }
-
- struct boss_warmastervooneAI : public BossAI
- {
- boss_warmastervooneAI(Creature* creature) : BossAI(creature, DATA_WARMASTER_VOONE) {}
-
- void Reset() OVERRIDE
- {
- _Reset();
- }
-
- void EnterCombat(Unit* /*who*/) OVERRIDE
- {
- _EnterCombat();
- events.ScheduleEvent(EVENT_SNAP_KICK, 8 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_CLEAVE, 14 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_UPPERCUT, 20 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_MORTAL_STRIKE, 12 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_PUMMEL, 32 * IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_THROW_AXE, 1 * IN_MILLISECONDS);
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- _JustDied();
- }
-
- void UpdateAI(uint32 diff) OVERRIDE
- {
- if (!UpdateVictim())
- return;
-
- events.Update(diff);
-
- if (me->HasUnitState(UNIT_STATE_CASTING))
- return;
-
- while (uint32 eventId = events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_SNAP_KICK:
- DoCastVictim(SPELL_SNAPKICK);
- events.ScheduleEvent(EVENT_SNAP_KICK, 6 * IN_MILLISECONDS);
- break;
- case EVENT_CLEAVE:
- DoCastVictim(SPELL_CLEAVE);
- events.ScheduleEvent(EVENT_CLEAVE, 12 * IN_MILLISECONDS);
- break;
- case EVENT_UPPERCUT:
- DoCastVictim(SPELL_UPPERCUT);
- events.ScheduleEvent(EVENT_UPPERCUT, 14 * IN_MILLISECONDS);
- break;
- case EVENT_MORTAL_STRIKE:
- DoCastVictim(SPELL_MORTALSTRIKE);
- events.ScheduleEvent(EVENT_MORTAL_STRIKE, 10 * IN_MILLISECONDS);
- break;
- case EVENT_PUMMEL:
- DoCastVictim(SPELL_PUMMEL);
- events.ScheduleEvent(EVENT_MORTAL_STRIKE, 16 * IN_MILLISECONDS);
- break;
- case EVENT_THROW_AXE:
- DoCastVictim(SPELL_THROWAXE);
- events.ScheduleEvent(EVENT_THROW_AXE, 8 * IN_MILLISECONDS);
- break;
- }
- }
- DoMeleeAttackIfReady();
- }
- };
-
-};
-
-void AddSC_boss_warmastervoone()
-{
- new boss_warmaster_voone();
-}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp
deleted file mode 100644
index f07e426c808..00000000000
--- a/src/server/scripts/EasternKingdoms/BlackrockSpire/instance_blackrock_spire.cpp
+++ /dev/null
@@ -1,659 +0,0 @@
-/*
- * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ObjectMgr.h"
-#include "ScriptMgr.h"
-#include "ObjectDefines.h"
-#include "Cell.h"
-#include "CellImpl.h"
-#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
-#include "InstanceScript.h"
-#include "ScriptedCreature.h"
-#include "blackrock_spire.h"
-
-uint32 const DragonspireRunes[7] = { GO_HALL_RUNE_1, GO_HALL_RUNE_2, GO_HALL_RUNE_3, GO_HALL_RUNE_4, GO_HALL_RUNE_5, GO_HALL_RUNE_6, GO_HALL_RUNE_7 };
-
-uint32 const DragonspireMobs[3] = { NPC_BLACKHAND_DREADWEAVER, NPC_BLACKHAND_SUMMONER, NPC_BLACKHAND_VETERAN };
-
-enum EventIds
-{
- EVENT_DARGONSPIRE_ROOM_STORE = 1,
- EVENT_DARGONSPIRE_ROOM_CHECK = 2
-};
-
-class instance_blackrock_spire : public InstanceMapScript
-{
-public:
- instance_blackrock_spire() : InstanceMapScript(BRSScriptName, 229) { }
-
- struct instance_blackrock_spireMapScript : public InstanceScript
- {
- instance_blackrock_spireMapScript(InstanceMap* map) : InstanceScript(map)
- {
- SetBossNumber(EncounterCount);
- HighlordOmokk = 0;
- ShadowHunterVoshgajin = 0;
- WarMasterVoone = 0;
- MotherSmolderweb = 0;
- UrokDoomhowl = 0;
- QuartermasterZigris = 0;
- GizrultheSlavener = 0;
- Halycon = 0;
- OverlordWyrmthalak = 0;
- PyroguardEmberseer = 0;
- WarchiefRendBlackhand = 0;
- Gyth = 0;
- LordVictorNefarius = 0;
- TheBeast = 0;
- GeneralDrakkisath = 0;
- go_emberseerin = 0;
- go_doors = 0;
- go_emberseerout = 0;
- go_blackrockaltar = 0;
- go_portcullis_active = 0;
- go_portcullis_tobossrooms = 0;
- }
-
- void OnCreatureCreate(Creature* creature)
- {
- switch (creature->GetEntry())
- {
- case NPC_HIGHLORD_OMOKK:
- HighlordOmokk = creature->GetGUID();
- break;
- case NPC_SHADOW_HUNTER_VOSHGAJIN:
- ShadowHunterVoshgajin = creature->GetGUID();
- break;
- case NPC_WARMASTER_VOONE:
- WarMasterVoone = creature->GetGUID();
- break;
- case NPC_MOTHER_SMOLDERWEB:
- MotherSmolderweb = creature->GetGUID();
- break;
- case NPC_UROK_DOOMHOWL:
- UrokDoomhowl = creature->GetGUID();
- break;
- case NPC_QUARTERMASTER_ZIGRIS:
- QuartermasterZigris = creature->GetGUID();
- break;
- case NPC_GIZRUL_THE_SLAVENER:
- GizrultheSlavener = creature->GetGUID();
- break;
- case NPC_HALYCON:
- Halycon = creature->GetGUID();
- break;
- case NPC_OVERLORD_WYRMTHALAK:
- OverlordWyrmthalak = creature->GetGUID();
- break;
- case NPC_PYROGAURD_EMBERSEER:
- PyroguardEmberseer = creature->GetGUID();
- if (GetBossState(DATA_PYROGAURD_EMBERSEER) == DONE)
- creature->DisappearAndDie();
- break;
- case NPC_WARCHIEF_REND_BLACKHAND:
- WarchiefRendBlackhand = creature->GetGUID();
- if (GetBossState(DATA_GYTH) == DONE)
- creature->DisappearAndDie();
- break;
- case NPC_GYTH:
- Gyth = creature->GetGUID();
- break;
- case NPC_THE_BEAST:
- TheBeast = creature->GetGUID();
- break;
- case NPC_GENERAL_DRAKKISATH:
- GeneralDrakkisath = creature->GetGUID();
- break;
- case NPC_LORD_VICTOR_NEFARIUS:
- LordVictorNefarius = creature->GetGUID();
- if (GetBossState(DATA_GYTH) == DONE)
- creature->DisappearAndDie();
- break;
- }
- }
-
- void OnGameObjectCreate(GameObject* go)
- {
- switch (go->GetEntry())
- {
- case GO_WHELP_SPAWNER:
- go->CastSpell(NULL, SPELL_SUMMON_ROOKERY_WHELP);
- break;
- case GO_EMBERSEER_IN:
- go_emberseerin = go->GetGUID();
- if (GetBossState(DATA_DRAGONSPIRE_ROOM) == DONE)
- HandleGameObject(0, true, go);
- break;
- case GO_DOORS:
- go_doors = go->GetGUID();
- if (GetBossState(DATA_DRAGONSPIRE_ROOM) == DONE)
- HandleGameObject(0, true, go);
- break;
- case GO_EMBERSEER_OUT:
- go_emberseerout = go->GetGUID();
- if (GetBossState(DATA_PYROGAURD_EMBERSEER) == DONE)
- HandleGameObject(0, true, go);
- break;
- case GO_HALL_RUNE_1:
- go_roomrunes[0] = go->GetGUID();
- if (GetBossState(DATA_HALL_RUNE_1) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_HALL_RUNE_2:
- go_roomrunes[1] = go->GetGUID();
- if (GetBossState(DATA_HALL_RUNE_2) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_HALL_RUNE_3:
- go_roomrunes[2] = go->GetGUID();
- if (GetBossState(DATA_HALL_RUNE_3) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_HALL_RUNE_4:
- go_roomrunes[3] = go->GetGUID();
- if (GetBossState(DATA_HALL_RUNE_4) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_HALL_RUNE_5:
- go_roomrunes[4] = go->GetGUID();
- if (GetBossState(DATA_HALL_RUNE_5) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_HALL_RUNE_6:
- go_roomrunes[5] = go->GetGUID();
- if (GetBossState(DATA_HALL_RUNE_6) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_HALL_RUNE_7:
- go_roomrunes[6] = go->GetGUID();
- if (GetBossState(DATA_HALL_RUNE_7) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_EMBERSEER_RUNE_1:
- go_emberseerrunes[0] = go->GetGUID();
- if (GetBossState(DATA_PYROGAURD_EMBERSEER) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_EMBERSEER_RUNE_2:
- go_emberseerrunes[1] = go->GetGUID();
- if (GetBossState(DATA_PYROGAURD_EMBERSEER) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_EMBERSEER_RUNE_3:
- go_emberseerrunes[2] = go->GetGUID();
- if (GetBossState(DATA_PYROGAURD_EMBERSEER) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_EMBERSEER_RUNE_4:
- go_emberseerrunes[3] = go->GetGUID();
- if (GetBossState(DATA_PYROGAURD_EMBERSEER) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_EMBERSEER_RUNE_5:
- go_emberseerrunes[4] = go->GetGUID();
- if (GetBossState(DATA_PYROGAURD_EMBERSEER) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_EMBERSEER_RUNE_6:
- go_emberseerrunes[5] = go->GetGUID();
- if (GetBossState(DATA_PYROGAURD_EMBERSEER) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_EMBERSEER_RUNE_7:
- go_emberseerrunes[6] = go->GetGUID();
- if (GetBossState(DATA_PYROGAURD_EMBERSEER) == DONE)
- HandleGameObject(0, false, go);
- break;
- case GO_PORTCULLIS_ACTIVE:
- go_portcullis_active = go->GetGUID();
- if (GetBossState(DATA_GYTH) == DONE)
- HandleGameObject(0, true, go);
- break;
- case GO_PORTCULLIS_TOBOSSROOMS:
- go_portcullis_tobossrooms = go->GetGUID();
- if (GetBossState(DATA_GYTH) == DONE)
- HandleGameObject(0, true, go);
- break;
- default:
- break;
- }
- }
-
- bool SetBossState(uint32 type, EncounterState state)
- {
- if (!InstanceScript::SetBossState(type, state))
- return false;
-
- switch (type)
- {
- case DATA_HIGHLORD_OMOKK:
- case DATA_SHADOW_HUNTER_VOSHGAJIN:
- case DATA_WARMASTER_VOONE:
- case DATA_MOTHER_SMOLDERWEB:
- case DATA_UROK_DOOMHOWL:
- case DATA_QUARTERMASTER_ZIGRIS:
- case DATA_GIZRUL_THE_SLAVENER:
- case DATA_HALYCON:
- case DATA_OVERLORD_WYRMTHALAK:
- case DATA_PYROGAURD_EMBERSEER:
- case DATA_WARCHIEF_REND_BLACKHAND:
- case DATA_GYTH:
- case DATA_THE_BEAST:
- case DATA_GENERAL_DRAKKISATH:
- case DATA_DRAGONSPIRE_ROOM:
- break;
- default:
- break;
- }
-
- return true;
- }
-
- void ProcessEvent(WorldObject* /*gameObject*/, uint32 eventId)
- {
- switch (eventId)
- {
- case EVENT_PYROGUARD_EMBERSEER:
- if (GetBossState(DATA_PYROGAURD_EMBERSEER) == NOT_STARTED)
- {
- if (Creature* Emberseer = instance->GetCreature(PyroguardEmberseer))
- Emberseer->AI()->SetData(1, 1);
- }
- break;
- default:
- break;
- }
- }
-
- void SetData(uint32 type, uint32 data) OVERRIDE
- {
- switch (type)
- {
- case AREATRIGGER:
- if (data == AREATRIGGER_DRAGONSPIRE_HALL)
- {
- if (GetBossState(DATA_DRAGONSPIRE_ROOM) != DONE)
- Events.ScheduleEvent(EVENT_DARGONSPIRE_ROOM_STORE, 1000);
- }
- default:
- break;
- }
- }
-
- uint64 GetData64(uint32 type) const OVERRIDE
- {
- switch (type)
- {
- case DATA_HIGHLORD_OMOKK:
- return HighlordOmokk;
- break;
- case DATA_SHADOW_HUNTER_VOSHGAJIN:
- return ShadowHunterVoshgajin;
- break;
- case DATA_WARMASTER_VOONE:
- return WarMasterVoone;
- break;
- case DATA_MOTHER_SMOLDERWEB:
- return MotherSmolderweb;
- break;
- case DATA_UROK_DOOMHOWL:
- return UrokDoomhowl;
- break;
- case DATA_QUARTERMASTER_ZIGRIS:
- return QuartermasterZigris;
- break;
- case DATA_GIZRUL_THE_SLAVENER:
- return GizrultheSlavener;
- break;
- case DATA_HALYCON:
- return Halycon;
- break;
- case DATA_OVERLORD_WYRMTHALAK:
- return OverlordWyrmthalak;
- break;
- case DATA_PYROGAURD_EMBERSEER:
- return PyroguardEmberseer;
- break;
- case DATA_WARCHIEF_REND_BLACKHAND:
- return WarchiefRendBlackhand;
- break;
- case DATA_GYTH:
- return Gyth;
- break;
- case DATA_THE_BEAST:
- return TheBeast;
- break;
- case DATA_GENERAL_DRAKKISATH:
- return GeneralDrakkisath;
- break;
- case GO_EMBERSEER_IN:
- return go_emberseerin;
- break;
- case GO_DOORS:
- return go_doors;
- break;
- case GO_EMBERSEER_OUT:
- return go_emberseerout;
- break;
- case GO_HALL_RUNE_1:
- return go_roomrunes[0];
- break;
- case GO_HALL_RUNE_2:
- return go_roomrunes[1];
- break;
- case GO_HALL_RUNE_3:
- return go_roomrunes[2];
- break;
- case GO_HALL_RUNE_4:
- return go_roomrunes[3];
- break;
- case GO_HALL_RUNE_5:
- return go_roomrunes[4];
- break;
- case GO_HALL_RUNE_6:
- return go_roomrunes[5];
- break;
- case GO_HALL_RUNE_7:
- return go_roomrunes[6];
- break;
- case GO_EMBERSEER_RUNE_1:
- return go_emberseerrunes[0];
- break;
- case GO_EMBERSEER_RUNE_2:
- return go_emberseerrunes[1];
- break;
- case GO_EMBERSEER_RUNE_3:
- return go_emberseerrunes[2];
- break;
- case GO_EMBERSEER_RUNE_4:
- return go_emberseerrunes[3];
- break;
- case GO_EMBERSEER_RUNE_5:
- return go_emberseerrunes[4];
- break;
- case GO_EMBERSEER_RUNE_6:
- return go_emberseerrunes[5];
- break;
- case GO_EMBERSEER_RUNE_7:
- return go_emberseerrunes[6];
- break;
- case GO_PORTCULLIS_ACTIVE:
- return go_portcullis_active;
- break;
- case GO_PORTCULLIS_TOBOSSROOMS:
- return go_portcullis_tobossrooms;
- break;
- }
- return 0;
- }
-
- void Update(uint32 diff)
- {
- Events.Update(diff);
-
- while (uint32 eventId = Events.ExecuteEvent())
- {
- switch (eventId)
- {
- case EVENT_DARGONSPIRE_ROOM_STORE:
- Dragonspireroomstore();
- Events.ScheduleEvent(EVENT_DARGONSPIRE_ROOM_CHECK, 3000);
- break;
- case EVENT_DARGONSPIRE_ROOM_CHECK:
- Dragonspireroomcheck();
- if ((GetBossState(DATA_DRAGONSPIRE_ROOM) != DONE))
- Events.ScheduleEvent(EVENT_DARGONSPIRE_ROOM_CHECK, 3000);
- break;
- default:
- break;
- }
- }
- }
-
- void Dragonspireroomstore()
- {
- uint8 creaturecount;
-
- for (uint8 i = 0; i < 7; ++i)
- {
- creaturecount = 0;
-
- if (GameObject* rune = instance->GetGameObject(go_roomrunes[i]))
- {
- for (uint8 ii = 0; ii < 3; ++ii)
- {
- std::list<Creature*> creatureList;
- GetCreatureListWithEntryInGrid(creatureList, rune, DragonspireMobs[ii], 15.0f);
- for (std::list<Creature*>::iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr)
- {
- if (Creature* creatureList = *itr)
- {
- runecreaturelist[i] [creaturecount] = creatureList->GetGUID();
- ++creaturecount;
- }
- }
- }
- }
- }
- }
-
- void Dragonspireroomcheck()
- {
- Creature* mob = NULL;
- GameObject* rune = NULL;
-
- for (uint8 i = 0; i < 7; ++i)
- {
- bool _mobAlive = false;
- rune = instance->GetGameObject(go_roomrunes[i]);
- if (!rune)
- continue;
-
- if (rune->GetGoState() == GO_STATE_ACTIVE)
- {
- for (uint8 ii = 0; ii < 5; ++ii)
- {
- mob = instance->GetCreature(runecreaturelist[i][ii]);
- if (mob && mob->IsAlive())
- _mobAlive = true;
- }
- }
-
- if (!_mobAlive && rune->GetGoState() == GO_STATE_ACTIVE)
- {
- HandleGameObject(0, false, rune);
-
- switch (rune->GetEntry())
- {
- case GO_HALL_RUNE_1:
- SetBossState(DATA_HALL_RUNE_1, DONE);
- break;
- case GO_HALL_RUNE_2:
- SetBossState(DATA_HALL_RUNE_2, DONE);
- break;
- case GO_HALL_RUNE_3:
- SetBossState(DATA_HALL_RUNE_3, DONE);
- break;
- case GO_HALL_RUNE_4:
- SetBossState(DATA_HALL_RUNE_4, DONE);
- break;
- case GO_HALL_RUNE_5:
- SetBossState(DATA_HALL_RUNE_5, DONE);
- break;
- case GO_HALL_RUNE_6:
- SetBossState(DATA_HALL_RUNE_6, DONE);
- break;
- case GO_HALL_RUNE_7:
- SetBossState(DATA_HALL_RUNE_7, DONE);
- break;
- default:
- break;
- }
- }
- }
-
- if (GetBossState(DATA_HALL_RUNE_1) == DONE && GetBossState(DATA_HALL_RUNE_2) == DONE && GetBossState(DATA_HALL_RUNE_3) == DONE &&
- GetBossState(DATA_HALL_RUNE_4) == DONE && GetBossState(DATA_HALL_RUNE_5) == DONE && GetBossState(DATA_HALL_RUNE_6) == DONE &&
- GetBossState(DATA_HALL_RUNE_7) == DONE)
- {
- SetBossState(DATA_DRAGONSPIRE_ROOM, DONE);
- if (GameObject* door1 = instance->GetGameObject(go_emberseerin))
- HandleGameObject(0, true, door1);
- if (GameObject* door2 = instance->GetGameObject(go_doors))
- HandleGameObject(0, true, door2);
- }
- }
-
- std::string GetSaveData()
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "B S " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(const char* strIn)
- {
- if (!strIn)
- {
- OUT_LOAD_INST_DATA_FAIL;
- return;
- }
-
- OUT_LOAD_INST_DATA(strIn);
-
- char dataHead1, dataHead2;
-
- std::istringstream loadStream(strIn);
- loadStream >> dataHead1 >> dataHead2;
-
- if (dataHead1 == 'B' && dataHead2 == 'S')
- {
- for (uint8 i = 0; i < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
-
- SetBossState(i, EncounterState(tmpState));
- }
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
- protected:
- EventMap Events;
- uint32 encounter[EncounterCount];
- std::string m_strInstData;
- uint64 HighlordOmokk;
- uint64 ShadowHunterVoshgajin;
- uint64 WarMasterVoone;
- uint64 MotherSmolderweb;
- uint64 UrokDoomhowl;
- uint64 QuartermasterZigris;
- uint64 GizrultheSlavener;
- uint64 Halycon;
- uint64 OverlordWyrmthalak;
- uint64 PyroguardEmberseer;
- uint64 WarchiefRendBlackhand;
- uint64 Gyth;
- uint64 LordVictorNefarius;
- uint64 TheBeast;
- uint64 GeneralDrakkisath;
- uint64 go_emberseerin;
- uint64 go_doors;
- uint64 go_emberseerout;
- uint64 go_blackrockaltar;
- uint64 go_roomrunes[7];
- uint64 go_emberseerrunes[7];
- uint64 runecreaturelist[7][5];
- uint64 go_portcullis_active;
- uint64 go_portcullis_tobossrooms;
- };
-
- InstanceScript* GetInstanceScript(InstanceMap* map) const OVERRIDE
- {
- return new instance_blackrock_spireMapScript(map);
- }
-};
-
-/*#####
-# at_dragonspire_hall
-#####*/
-
-class at_dragonspire_hall : public AreaTriggerScript
-{
-public:
- at_dragonspire_hall() : AreaTriggerScript("at_dragonspire_hall") { }
-
- bool OnTrigger(Player* player, const AreaTriggerEntry* /*at*/) OVERRIDE
- {
- if (player && player->IsAlive())
- {
- if (InstanceScript* instance = player->GetInstanceScript())
- {
- instance->SetData(AREATRIGGER, AREATRIGGER_DRAGONSPIRE_HALL);
- return true;
- }
- }
-
- return false;
- }
-};
-
-/*#####
-# at_blackrock_stadium
-#####*/
-
-class at_blackrock_stadium : public AreaTriggerScript
-{
-public:
- at_blackrock_stadium() : AreaTriggerScript("at_blackrock_stadium") { }
-
- bool OnTrigger(Player* player, const AreaTriggerEntry* /*at*/) OVERRIDE
- {
- if (player && player->IsAlive())
- {
- InstanceScript* instance = player->GetInstanceScript();
- if (!instance)
- return false;
-
- if (Creature* rend = player->FindNearestCreature(NPC_WARCHIEF_REND_BLACKHAND, 50.0f))
- {
- rend->AI()->SetData(AREATRIGGER, AREATRIGGER_BLACKROCK_STADIUM);
- return true;
- }
- }
-
- return false;
- }
-};
-
-void AddSC_instance_blackrock_spire()
-{
- new instance_blackrock_spire();
- new at_dragonspire_hall();
- new at_blackrock_stadium();
-}