diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-09-17 15:06:03 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-09-17 15:06:03 +0200 |
commit | 8de5808fd4a4b88b10478d4cb686a5c7ba34c9a6 (patch) | |
tree | c74c18071d4605d37345d2bf1be3c4532ac0dfb7 | |
parent | 752309fbe30d0dfff44272fe4ab74ec1864e123c (diff) |
Scripts/Blackrock Depths: Added dungeon encounter ids
8 files changed, 157 insertions, 118 deletions
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp index 1265e378de1..ecf63179523 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp @@ -373,9 +373,9 @@ public: return GetBlackrockDepthsAI<npc_phalanxAI>(creature); } - struct npc_phalanxAI : public ScriptedAI + struct npc_phalanxAI : public BossAI { - npc_phalanxAI(Creature* creature) : ScriptedAI(creature) + npc_phalanxAI(Creature* creature) : BossAI(creature, BOSS_PHALANX) { Initialize(); } @@ -393,6 +393,7 @@ public: void Reset() override { + _Reset(); Initialize(); } diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.h b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.h index 9f7231581c6..0710badb73a 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.h +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.h @@ -23,6 +23,31 @@ #define BRDScriptName "instance_blackrock_depths" #define DataHeader "BRD" +enum BRDBossIds +{ + BOSS_HIGH_INTERROGATOR_GERSTAHN = 0, + BOSS_LORD_ROCCOR = 1, + BOSS_HOUNDMASTER_GREBMAR = 2, + BOSS_RING_OF_LAW = 3, + BOSS_PYROMANCER_LOREGRAIN = 4, + BOSS_LORD_INCENDIUS = 5, + BOSS_WARDER_STILGISS = 6, + BOSS_FINEOUS_DARKVIRE = 7, + BOSS_BAELGAR = 8, + BOSS_GENERAL_ANGERFORGE = 9, + BOSS_GOLEM_LORD_ARGELMACH = 10, + BOSS_HURLEY_BLACKBREATH = 11, + BOSS_PHALANX = 12, + BOSS_RIBBLY_SCREWSPIGOT = 13, + BOSS_PLUGGER_SPAZZRING = 14, + BOSS_AMBASSADOR_FLAMELASH = 15, + BOSS_THE_SEVEN = 16, + BOSS_MAGMUS = 17, + BOSS_EMPEROR_DAGRAN_THAURISSAN = 18, + + MAX_ENCOUNTER +}; + enum BRDDataTypes { TYPE_RING_OF_LAW = 1, diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_ambassador_flamelash.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_ambassador_flamelash.cpp index dc8046766bf..e6b303c9e21 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_ambassador_flamelash.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_ambassador_flamelash.cpp @@ -35,19 +35,15 @@ class boss_ambassador_flamelash : public CreatureScript public: boss_ambassador_flamelash() : CreatureScript("boss_ambassador_flamelash") { } - struct boss_ambassador_flamelashAI : public ScriptedAI + struct boss_ambassador_flamelashAI : public BossAI { - boss_ambassador_flamelashAI(Creature* creature) : ScriptedAI(creature) { } + boss_ambassador_flamelashAI(Creature* creature) : BossAI(creature, BOSS_AMBASSADOR_FLAMELASH) { } - void Reset() override + void JustEngagedWith(Unit* who) override { - _events.Reset(); - } - - void JustEngagedWith(Unit* /*who*/) override - { - _events.ScheduleEvent(EVENT_FIREBLAST, 2s); - _events.ScheduleEvent(EVENT_SUMMON_SPIRITS, 24s); + _JustEngagedWith(who); + events.ScheduleEvent(EVENT_FIREBLAST, 2s); + events.ScheduleEvent(EVENT_SUMMON_SPIRITS, 24s); } void SummonSpirit(Unit* victim) @@ -61,20 +57,20 @@ class boss_ambassador_flamelash : public CreatureScript if (!UpdateVictim()) return; - _events.Update(diff); + events.Update(diff); - while (uint32 eventId = _events.ExecuteEvent()) + while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) { case EVENT_FIREBLAST: DoCastVictim(SPELL_FIREBLAST); - _events.ScheduleEvent(EVENT_FIREBLAST, 7s); + events.ScheduleEvent(EVENT_FIREBLAST, 7s); break; case EVENT_SUMMON_SPIRITS: for (uint32 i = 0; i < 4; ++i) SummonSpirit(me->GetVictim()); - _events.ScheduleEvent(EVENT_SUMMON_SPIRITS, 30s); + events.ScheduleEvent(EVENT_SUMMON_SPIRITS, 30s); break; default: break; @@ -83,9 +79,6 @@ class boss_ambassador_flamelash : public CreatureScript DoMeleeAttackIfReady(); } - - private: - EventMap _events; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp index b6176bd2548..f2a381924f4 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp @@ -49,24 +49,19 @@ class boss_emperor_dagran_thaurissan : public CreatureScript public: boss_emperor_dagran_thaurissan() : CreatureScript("boss_emperor_dagran_thaurissan") { } - struct boss_draganthaurissanAI : public ScriptedAI + struct boss_draganthaurissanAI : public BossAI { - boss_draganthaurissanAI(Creature* creature) : ScriptedAI(creature) + boss_draganthaurissanAI(Creature* creature) : BossAI(creature, BOSS_EMPEROR_DAGRAN_THAURISSAN) { - _instance = me->GetInstanceScript(); } - void Reset() override - { - _events.Reset(); - } - - void JustEngagedWith(Unit* /*who*/) override + void JustEngagedWith(Unit* who) override { + _JustEngagedWith(who); Talk(SAY_AGGRO); me->CallForHelp(VISIBLE_RANGE); - _events.ScheduleEvent(EVENT_HANDOFTHAURISSAN, 4s); - _events.ScheduleEvent(EVENT_AVATAROFFLAME, 25s); + events.ScheduleEvent(EVENT_HANDOFTHAURISSAN, 4s); + events.ScheduleEvent(EVENT_AVATAROFFLAME, 25s); } void KilledUnit(Unit* who) override @@ -77,7 +72,8 @@ class boss_emperor_dagran_thaurissan : public CreatureScript void JustDied(Unit* /*killer*/) override { - if (Creature* moira = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_MOIRA))) + _JustDied(); + if (Creature* moira = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_MOIRA))) { moira->AI()->EnterEvadeMode(); moira->SetFaction(FACTION_FRIENDLY); @@ -90,20 +86,20 @@ class boss_emperor_dagran_thaurissan : public CreatureScript if (!UpdateVictim()) return; - _events.Update(diff); + events.Update(diff); - while (uint32 eventId = _events.ExecuteEvent()) + while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) { case EVENT_HANDOFTHAURISSAN: if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) DoCast(target, SPELL_HANDOFTHAURISSAN); - _events.ScheduleEvent(EVENT_HANDOFTHAURISSAN, 5s); + events.ScheduleEvent(EVENT_HANDOFTHAURISSAN, 5s); break; case EVENT_AVATAROFFLAME: DoCastVictim(SPELL_AVATAROFFLAME); - _events.ScheduleEvent(EVENT_AVATAROFFLAME, 18s); + events.ScheduleEvent(EVENT_AVATAROFFLAME, 18s); break; default: break; @@ -112,10 +108,6 @@ class boss_emperor_dagran_thaurissan : public CreatureScript DoMeleeAttackIfReady(); } - - private: - InstanceScript* _instance; - EventMap _events; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_general_angerforge.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_general_angerforge.cpp index 8542582f61a..ffb6229f919 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_general_angerforge.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_general_angerforge.cpp @@ -46,30 +46,26 @@ class boss_general_angerforge : public CreatureScript public: boss_general_angerforge() : CreatureScript("boss_general_angerforge") { } - struct boss_general_angerforgeAI : public ScriptedAI + struct boss_general_angerforgeAI : public BossAI { - boss_general_angerforgeAI(Creature* creature) : ScriptedAI(creature) { } + boss_general_angerforgeAI(Creature* creature) : BossAI(creature, BOSS_GENERAL_ANGERFORGE) { } - void Reset() override + void JustEngagedWith(Unit* who) override { - _events.Reset(); - } - - void JustEngagedWith(Unit* /*who*/) override - { - _events.SetPhase(PHASE_ONE); - _events.ScheduleEvent(EVENT_MIGHTYBLOW, 8s); - _events.ScheduleEvent(EVENT_HAMSTRING, 12s); - _events.ScheduleEvent(EVENT_CLEAVE, 16s); + _JustEngagedWith(who); + events.SetPhase(PHASE_ONE); + events.ScheduleEvent(EVENT_MIGHTYBLOW, 8s); + events.ScheduleEvent(EVENT_HAMSTRING, 12s); + events.ScheduleEvent(EVENT_CLEAVE, 16s); } void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override { - if (me->HealthBelowPctDamaged(20, damage) && _events.IsInPhase(PHASE_ONE)) + if (me->HealthBelowPctDamaged(20, damage) && events.IsInPhase(PHASE_ONE)) { - _events.SetPhase(PHASE_TWO); - _events.ScheduleEvent(EVENT_MEDIC, 0s, 0, PHASE_TWO); - _events.ScheduleEvent(EVENT_ADDS, 0s, 0, PHASE_TWO); + events.SetPhase(PHASE_TWO); + events.ScheduleEvent(EVENT_MEDIC, 0s, 0, PHASE_TWO); + events.ScheduleEvent(EVENT_ADDS, 0s, 0, PHASE_TWO); } } @@ -90,23 +86,23 @@ class boss_general_angerforge : public CreatureScript if (!UpdateVictim()) return; - _events.Update(diff); + events.Update(diff); - while (uint32 eventId = _events.ExecuteEvent()) + while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) { case EVENT_MIGHTYBLOW: DoCastVictim(SPELL_MIGHTYBLOW); - _events.ScheduleEvent(EVENT_MIGHTYBLOW, 18s); + events.ScheduleEvent(EVENT_MIGHTYBLOW, 18s); break; case EVENT_HAMSTRING: DoCastVictim(SPELL_HAMSTRING); - _events.ScheduleEvent(EVENT_HAMSTRING, 15s); + events.ScheduleEvent(EVENT_HAMSTRING, 15s); break; case EVENT_CLEAVE: DoCastVictim(SPELL_CLEAVE); - _events.ScheduleEvent(EVENT_CLEAVE, 9s); + events.ScheduleEvent(EVENT_CLEAVE, 9s); break; case EVENT_MEDIC: for (uint8 i = 0; i < 2; ++i) @@ -115,7 +111,7 @@ class boss_general_angerforge : public CreatureScript case EVENT_ADDS: for (uint8 i = 0; i < 3; ++i) SummonAdd(me->GetVictim()); - _events.ScheduleEvent(EVENT_ADDS, 25s, 0, PHASE_TWO); + events.ScheduleEvent(EVENT_ADDS, 25s, 0, PHASE_TWO); break; default: break; @@ -124,9 +120,6 @@ class boss_general_angerforge : public CreatureScript DoMeleeAttackIfReady(); } - - private: - EventMap _events; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_high_interrogator_gerstahn.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_high_interrogator_gerstahn.cpp index 1aafa41e2fb..3037205af3d 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_high_interrogator_gerstahn.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_high_interrogator_gerstahn.cpp @@ -40,21 +40,17 @@ class boss_high_interrogator_gerstahn : public CreatureScript public: boss_high_interrogator_gerstahn() : CreatureScript("boss_high_interrogator_gerstahn") { } - struct boss_high_interrogator_gerstahnAI : public ScriptedAI + struct boss_high_interrogator_gerstahnAI : public BossAI { - boss_high_interrogator_gerstahnAI(Creature* creature) : ScriptedAI(creature) { } + boss_high_interrogator_gerstahnAI(Creature* creature) : BossAI(creature, BOSS_HIGH_INTERROGATOR_GERSTAHN) { } - void Reset() override + void JustEngagedWith(Unit* who) override { - _events.Reset(); - } - - void JustEngagedWith(Unit* /*who*/) override - { - _events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 4s); - _events.ScheduleEvent(EVENT_MANABURN, 14s); - _events.ScheduleEvent(EVENT_PSYCHIC_SCREAM, 32s); - _events.ScheduleEvent(EVENT_SHADOWSHIELD, 8s); + _JustEngagedWith(who); + events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 4s); + events.ScheduleEvent(EVENT_MANABURN, 14s); + events.ScheduleEvent(EVENT_PSYCHIC_SCREAM, 32s); + events.ScheduleEvent(EVENT_SHADOWSHIELD, 8s); } void UpdateAI(uint32 diff) override @@ -62,29 +58,29 @@ class boss_high_interrogator_gerstahn : public CreatureScript if (!UpdateVictim()) return; - _events.Update(diff); + events.Update(diff); - while (uint32 eventId = _events.ExecuteEvent()) + while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) { case EVENT_SHADOW_WORD_PAIN: if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true)) DoCast(target, SPELL_SHADOWWORDPAIN); - _events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 7s); + events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, 7s); break; case EVENT_PSYCHIC_SCREAM: DoCastVictim(SPELL_PSYCHICSCREAM); - _events.ScheduleEvent(EVENT_PSYCHIC_SCREAM, 30s); + events.ScheduleEvent(EVENT_PSYCHIC_SCREAM, 30s); break; case EVENT_MANABURN: if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true)) DoCast(target, SPELL_MANABURN); - _events.ScheduleEvent(EVENT_MANABURN, 10s); + events.ScheduleEvent(EVENT_MANABURN, 10s); break; case EVENT_SHADOWSHIELD: DoCast(me, SPELL_SHADOWSHIELD); - _events.ScheduleEvent(EVENT_SHADOWSHIELD, 25s); + events.ScheduleEvent(EVENT_SHADOWSHIELD, 25s); break; default: break; @@ -93,9 +89,6 @@ class boss_high_interrogator_gerstahn : public CreatureScript DoMeleeAttackIfReady(); } - - private: - EventMap _events; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_magmus.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_magmus.cpp index af79183a553..f66ff800698 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_magmus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_magmus.cpp @@ -43,29 +43,23 @@ class boss_magmus : public CreatureScript public: boss_magmus() : CreatureScript("boss_magmus") { } - struct boss_magmusAI : public ScriptedAI + struct boss_magmusAI : public BossAI { - boss_magmusAI(Creature* creature) : ScriptedAI(creature) { } + boss_magmusAI(Creature* creature) : BossAI(creature, BOSS_MAGMUS) { } - void Reset() override + void JustEngagedWith(Unit* who) override { - _events.Reset(); - } - - void JustEngagedWith(Unit* /*who*/) override - { - if (InstanceScript* instance = me->GetInstanceScript()) - instance->SetData(TYPE_IRON_HALL, IN_PROGRESS); - _events.SetPhase(PHASE_ONE); - _events.ScheduleEvent(EVENT_FIERY_BURST, 5s); + _JustEngagedWith(who); + events.SetPhase(PHASE_ONE); + events.ScheduleEvent(EVENT_FIERY_BURST, 5s); } void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override { - if (me->HealthBelowPctDamaged(50, damage) && _events.IsInPhase(PHASE_ONE)) + if (me->HealthBelowPctDamaged(50, damage) && events.IsInPhase(PHASE_ONE)) { - _events.SetPhase(PHASE_TWO); - _events.ScheduleEvent(EVENT_WARSTOMP, 0s, 0, PHASE_TWO); + events.SetPhase(PHASE_TWO); + events.ScheduleEvent(EVENT_WARSTOMP, 0s, 0, PHASE_TWO); } } @@ -74,19 +68,19 @@ class boss_magmus : public CreatureScript if (!UpdateVictim()) return; - _events.Update(diff); + events.Update(diff); - while (uint32 eventId = _events.ExecuteEvent()) + while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) { case EVENT_FIERY_BURST: DoCastVictim(SPELL_FIERYBURST); - _events.ScheduleEvent(EVENT_FIERY_BURST, 6s); + events.ScheduleEvent(EVENT_FIERY_BURST, 6s); break; case EVENT_WARSTOMP: DoCastVictim(SPELL_WARSTOMP); - _events.ScheduleEvent(EVENT_WARSTOMP, 8s, 0, PHASE_TWO); + events.ScheduleEvent(EVENT_WARSTOMP, 8s, 0, PHASE_TWO); break; default: break; @@ -98,15 +92,10 @@ class boss_magmus : public CreatureScript void JustDied(Unit* /*killer*/) override { + _JustDied(); if (InstanceScript* instance = me->GetInstanceScript()) - { instance->HandleGameObject(instance->GetGuidData(DATA_THRONE_DOOR), true); - instance->SetData(TYPE_IRON_HALL, DONE); - } } - - private: - EventMap _events; }; CreatureAI* GetAI(Creature* creature) const override @@ -143,7 +132,7 @@ public: { if (!_active) { - if (_instance->GetData(TYPE_IRON_HALL) == NOT_STARTED) + if (_instance->GetBossState(BOSS_MAGMUS) == NOT_STARTED) return; // Once the boss is engaged, the guardians will stay activated until the next instance reset _events.ScheduleEvent(EVENT_GOUTOFFLAME, 0s, 10s); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp index 38089a22e85..8d1fe45f346 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp @@ -24,13 +24,17 @@ #include "ScriptedCreature.h" #define TIMER_TOMBOFTHESEVEN 15000 -#define MAX_ENCOUNTER 6 constexpr uint8 TOMB_OF_SEVEN_BOSS_NUM = 7; enum Creatures { + NPC_GOLEM_LORD_ARGELMACH = 8983, + NPC_BAELGAR = 9016, + NPC_LORD_INCENDIUS = 9017, NPC_EMPEROR = 9019, NPC_PHALANX = 9502, + NPC_PYROMANCER_LOREGRAIN = 9024, + NPC_LORD_ROCCOR = 9025, NPC_ANGERREL = 9035, NPC_DOPEREL = 9040, NPC_HATEREL = 9034, @@ -38,6 +42,12 @@ enum Creatures NPC_SEETHREL = 9038, NPC_GLOOMREL = 9037, NPC_DOOMREL = 9039, + NPC_WARDER_STILGISS = 9041, + NPC_FINEOUS_DARKVIRE = 9056, + NPC_HOUNDMASTER_GREBMAR = 9319, + NPC_PLUGGER_SPAZZRING = 9499, + NPC_HURLEY_BLACKBREATH = 9537, + NPC_RIBBLY_SCREWSPIGOT = 9543, NPC_MAGMUS = 9938, NPC_MOIRA = 8929, NPC_COREN = 23872, @@ -68,6 +78,29 @@ enum GameObjects GO_CHEST_SEVEN = 169243 }; +static constexpr DungeonEncounterData encounters[] = +{ + { BOSS_HIGH_INTERROGATOR_GERSTAHN, { { 227 }} }, + { BOSS_LORD_ROCCOR, { { 228 }} }, + { BOSS_HOUNDMASTER_GREBMAR, { { 229 }} }, + { BOSS_RING_OF_LAW, { { 230 }} }, + { BOSS_PYROMANCER_LOREGRAIN, { { 231 }} }, + { BOSS_LORD_INCENDIUS, { { 232 }} }, + { BOSS_WARDER_STILGISS, { { 233 }} }, + { BOSS_FINEOUS_DARKVIRE, { { 234 }} }, + { BOSS_BAELGAR, { { 235 }} }, + { BOSS_GENERAL_ANGERFORGE, { { 236 }} }, + { BOSS_GOLEM_LORD_ARGELMACH, { { 237 }} }, + { BOSS_HURLEY_BLACKBREATH, { { 238 }} }, + { BOSS_PHALANX, { { 239 }} }, + { BOSS_RIBBLY_SCREWSPIGOT, { { 240 }} }, + { BOSS_PLUGGER_SPAZZRING, { { 241 }} }, + { BOSS_AMBASSADOR_FLAMELASH, { { 242 }} }, + { BOSS_THE_SEVEN, { { 243 }} }, + { BOSS_MAGMUS, { { 244 }} }, + { BOSS_EMPEROR_DAGRAN_THAURISSAN, { { 245 }} } +}; + class instance_blackrock_depths : public InstanceMapScript { public: @@ -84,6 +117,7 @@ public: { SetHeaders(DataHeader); SetBossNumber(MAX_ENCOUNTER); + LoadDungeonEncounterData(encounters); BarAleCount = 0; GhostKillCount = 0; @@ -183,6 +217,25 @@ public: } } + void OnUnitDeath(Unit* unit) override + { + switch (unit->GetEntry()) + { + case NPC_LORD_ROCCOR: SetBossState(BOSS_LORD_ROCCOR, DONE); break; + case NPC_HOUNDMASTER_GREBMAR: SetBossState(BOSS_HOUNDMASTER_GREBMAR, DONE); break; + case NPC_PYROMANCER_LOREGRAIN: SetBossState(BOSS_PYROMANCER_LOREGRAIN, DONE); break; + case NPC_LORD_INCENDIUS: SetBossState(BOSS_LORD_INCENDIUS, DONE); break; + case NPC_WARDER_STILGISS: SetBossState(BOSS_WARDER_STILGISS, DONE); break; + case NPC_FINEOUS_DARKVIRE: SetBossState(BOSS_FINEOUS_DARKVIRE, DONE); break; + case NPC_BAELGAR: SetBossState(BOSS_BAELGAR, DONE); break; + case NPC_GOLEM_LORD_ARGELMACH: SetBossState(BOSS_GOLEM_LORD_ARGELMACH, DONE); break; + case NPC_HURLEY_BLACKBREATH: SetBossState(BOSS_HURLEY_BLACKBREATH, DONE); break; + case NPC_RIBBLY_SCREWSPIGOT: SetBossState(BOSS_RIBBLY_SCREWSPIGOT, DONE); break; + case NPC_PLUGGER_SPAZZRING: SetBossState(BOSS_PLUGGER_SPAZZRING, DONE); break; + default: break; + } + } + void SetGuidData(uint32 type, ObjectGuid data) override { TC_LOG_DEBUG("scripts", "Instance Blackrock Depths: SetGuidData update (Type: {} Data {})", type, data.ToString()); @@ -206,7 +259,7 @@ public: switch (type) { case TYPE_RING_OF_LAW: - SetBossState(0, EncounterState(data)); + SetBossState(BOSS_RING_OF_LAW, EncounterState(data)); break; case TYPE_VAULT: SetBossState(1, EncounterState(data)); @@ -218,13 +271,13 @@ public: SetBossState(2, EncounterState(data)); break; case TYPE_TOMB_OF_SEVEN: - SetBossState(3, EncounterState(data)); + SetBossState(BOSS_THE_SEVEN, EncounterState(data)); break; case TYPE_LYCEUM: SetBossState(4, EncounterState(data)); break; case TYPE_IRON_HALL: - SetBossState(5, EncounterState(data)); + SetBossState(BOSS_MAGMUS, EncounterState(data)); break; case DATA_GHOSTKILL: GhostKillCount += data; @@ -237,7 +290,7 @@ public: switch (type) { case TYPE_RING_OF_LAW: - return GetBossState(0); + return GetBossState(BOSS_RING_OF_LAW); case TYPE_VAULT: return GetBossState(1); case TYPE_BAR: @@ -246,11 +299,11 @@ public: else return GetBossState(2); case TYPE_TOMB_OF_SEVEN: - return GetBossState(3); + return GetBossState(BOSS_THE_SEVEN); case TYPE_LYCEUM: return GetBossState(4); case TYPE_IRON_HALL: - return GetBossState(5); + return GetBossState(BOSS_MAGMUS); case DATA_GHOSTKILL: return GhostKillCount; } |