aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-09-17 15:06:03 +0200
committerShauren <shauren.trinity@gmail.com>2023-09-17 15:06:03 +0200
commit8de5808fd4a4b88b10478d4cb686a5c7ba34c9a6 (patch)
treec74c18071d4605d37345d2bf1be3c4532ac0dfb7
parent752309fbe30d0dfff44272fe4ab74ec1864e123c (diff)
Scripts/Blackrock Depths: Added dungeon encounter ids
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp5
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.h25
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_ambassador_flamelash.cpp27
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp32
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_general_angerforge.cpp43
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_high_interrogator_gerstahn.cpp35
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_magmus.cpp41
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp67
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;
}