diff options
| author | Malcrom <malcromdev@gmail.com> | 2013-08-07 10:50:06 -0230 |
|---|---|---|
| committer | Malcrom <malcromdev@gmail.com> | 2013-08-07 10:50:06 -0230 |
| commit | f5e4fd67c3ce100507daffa042fa72ae01fa8ffc (patch) | |
| tree | 6c54b2257c1d430e9801cf106a4935a27d1b4bcc /src/server/scripts/EasternKingdoms/BlackrockSpire | |
| parent | 33f8c3ead4da07ff024a94b5e8cf0d05c2ebc23a (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')
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(); -} |
