mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-16 18:40:28 +00:00
fix(Core/Dungeon) BRD - The seven minibosses re-order (#1792)
* Boss re-order 1st attacker is Anger'rel ID 9035 2nd attacker is Seeth'rel ID 9038 3rd Attacker is Dope'rel ID 9040 4th Attacker is Gloom'rel ID 9037 5th attacker is Vile'rel ID 9036 6th attacker is Hate'rel ID 9034 7th attacker is Doom'rel after his death spawnt the chest and the doors go back to ID 9039 * Domrel eventmap swapped timers to events * Update boss_tomb_of_seven.cpp * Update boss_tomb_of_seven.cpp * Update boss_tomb_of_seven.cpp * Update boss_tomb_of_seven.cpp * Update boss_tomb_of_seven.cpp * Doomrel ain't the first boss * Don't ignore first boss * Gossip option * Gossip done
This commit is contained in:
@@ -81,6 +81,14 @@ enum DoomrelSpells
|
||||
SPELL_DEMONARMOR = 13787,
|
||||
SPELL_SUMMON_VOIDWALKERS = 15092
|
||||
};
|
||||
enum DoomrelEvents
|
||||
{
|
||||
EVENT_SPELL_SHADOWBOLTVOLLEY = 1,
|
||||
EVENT_SPELL_IMMOLATE = 2,
|
||||
EVENT_SPELL_CURSEOFWEAKNESS = 3,
|
||||
EVENT_SPELL_DEMONARMOR = 4,
|
||||
EVENT_SPELL_SUMMON_VOIDWALKERS = 5,
|
||||
};
|
||||
|
||||
class boss_doomrel : public CreatureScript
|
||||
{
|
||||
@@ -98,10 +106,8 @@ public:
|
||||
break;
|
||||
case GOSSIP_ACTION_INFO_DEF+2:
|
||||
CloseGossipMenuFor(player);
|
||||
//start event here
|
||||
creature->setFaction(FACTION_HOSTILE);
|
||||
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
creature->AI()->AttackStart(player);
|
||||
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
// Start encounter
|
||||
InstanceScript* instance = creature->GetInstanceScript();
|
||||
if (instance)
|
||||
instance->SetData64(DATA_EVENSTARTER, player->GetGUID());
|
||||
@@ -131,19 +137,14 @@ public:
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
uint32 ShadowVolley_Timer;
|
||||
uint32 Immolate_Timer;
|
||||
uint32 CurseOfWeakness_Timer;
|
||||
uint32 DemonArmor_Timer;
|
||||
EventMap _events;
|
||||
bool Voidwalkers;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
ShadowVolley_Timer = 10000;
|
||||
Immolate_Timer = 18000;
|
||||
CurseOfWeakness_Timer = 5000;
|
||||
DemonArmor_Timer = 16000;
|
||||
Voidwalkers = false;
|
||||
// Reset his gossip menu
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
|
||||
me->setFaction(FACTION_FRIEND);
|
||||
|
||||
@@ -158,6 +159,11 @@ public:
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_SPELL_SHADOWBOLTVOLLEY, 10000);
|
||||
_events.ScheduleEvent(EVENT_SPELL_IMMOLATE, 18000);
|
||||
_events.ScheduleEvent(EVENT_SPELL_CURSEOFWEAKNESS, 5000);
|
||||
_events.ScheduleEvent(EVENT_SPELL_DEMONARMOR, 16000);
|
||||
_events.ScheduleEvent(EVENT_SPELL_SUMMON_VOIDWALKERS, 1000);
|
||||
}
|
||||
|
||||
void EnterEvadeMode() override
|
||||
@@ -182,41 +188,40 @@ public:
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
//ShadowVolley_Timer
|
||||
if (ShadowVolley_Timer <= diff)
|
||||
_events.Update(diff);
|
||||
|
||||
switch(_events.ExecuteEvent())
|
||||
{
|
||||
DoCastVictim(SPELL_SHADOWBOLTVOLLEY);
|
||||
ShadowVolley_Timer = 12000;
|
||||
} else ShadowVolley_Timer -= diff;
|
||||
|
||||
//Immolate_Timer
|
||||
if (Immolate_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target, SPELL_IMMOLATE);
|
||||
|
||||
Immolate_Timer = 25000;
|
||||
} else Immolate_Timer -= diff;
|
||||
|
||||
//CurseOfWeakness_Timer
|
||||
if (CurseOfWeakness_Timer <= diff)
|
||||
{
|
||||
DoCastVictim(SPELL_CURSEOFWEAKNESS);
|
||||
CurseOfWeakness_Timer = 45000;
|
||||
} else CurseOfWeakness_Timer -= diff;
|
||||
|
||||
//DemonArmor_Timer
|
||||
if (DemonArmor_Timer <= diff)
|
||||
{
|
||||
DoCast(me, SPELL_DEMONARMOR);
|
||||
DemonArmor_Timer = 300000;
|
||||
} else DemonArmor_Timer -= diff;
|
||||
|
||||
//Summon Voidwalkers
|
||||
if (!Voidwalkers && HealthBelowPct(51))
|
||||
{
|
||||
DoCastVictim(SPELL_SUMMON_VOIDWALKERS, true);
|
||||
Voidwalkers = true;
|
||||
case EVENT_SPELL_SHADOWBOLTVOLLEY:
|
||||
DoCastVictim(SPELL_SHADOWBOLTVOLLEY);
|
||||
_events.ScheduleEvent(EVENT_SPELL_SHADOWBOLTVOLLEY, 12000);
|
||||
break;
|
||||
case EVENT_SPELL_IMMOLATE:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
DoCast(target, SPELL_IMMOLATE);
|
||||
_events.ScheduleEvent(EVENT_SPELL_IMMOLATE, 25000);
|
||||
}
|
||||
// Didn't get a target, try again in 1s
|
||||
_events.ScheduleEvent(EVENT_SPELL_IMMOLATE, 1000);
|
||||
break;
|
||||
case EVENT_SPELL_CURSEOFWEAKNESS:
|
||||
DoCastVictim(SPELL_CURSEOFWEAKNESS);
|
||||
_events.ScheduleEvent(EVENT_SPELL_CURSEOFWEAKNESS, 45000);
|
||||
break;
|
||||
case EVENT_SPELL_DEMONARMOR:
|
||||
DoCast(me, SPELL_DEMONARMOR);
|
||||
_events.ScheduleEvent(EVENT_SPELL_DEMONARMOR, 300000);
|
||||
break;
|
||||
case EVENT_SPELL_SUMMON_VOIDWALKERS:
|
||||
if (!Voidwalkers && HealthBelowPct(51))
|
||||
{
|
||||
DoCastVictim(SPELL_SUMMON_VOIDWALKERS, true);
|
||||
Voidwalkers = true;
|
||||
}
|
||||
// Not ready yet, try again in 1s
|
||||
_events.ScheduleEvent(EVENT_SPELL_SUMMON_VOIDWALKERS, 1000);
|
||||
break;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
@@ -155,13 +155,13 @@ public:
|
||||
case NPC_EMPEROR: EmperorGUID = creature->GetGUID(); break;
|
||||
case NPC_PHALANX: PhalanxGUID = creature->GetGUID(); break;
|
||||
case NPC_MOIRA: MoiraGUID = creature->GetGUID(); break;
|
||||
case NPC_DOOMREL: TombBossGUIDs[0] = creature->GetGUID(); break;
|
||||
case NPC_DOPEREL: TombBossGUIDs[1] = creature->GetGUID(); break;
|
||||
case NPC_HATEREL: TombBossGUIDs[2] = creature->GetGUID(); break;
|
||||
case NPC_VILEREL: TombBossGUIDs[3] = creature->GetGUID(); break;
|
||||
case NPC_SEETHREL: TombBossGUIDs[4] = creature->GetGUID(); break;
|
||||
case NPC_GLOOMREL: TombBossGUIDs[5] = creature->GetGUID(); break;
|
||||
case NPC_ANGERREL: TombBossGUIDs[6] = creature->GetGUID(); break;
|
||||
case NPC_ANGERREL: TombBossGUIDs[0] = creature->GetGUID(); break;
|
||||
case NPC_SEETHREL: TombBossGUIDs[1] = creature->GetGUID(); break;
|
||||
case NPC_DOPEREL: TombBossGUIDs[2] = creature->GetGUID(); break;
|
||||
case NPC_GLOOMREL: TombBossGUIDs[3] = creature->GetGUID(); break;
|
||||
case NPC_VILEREL: TombBossGUIDs[4] = creature->GetGUID(); break;
|
||||
case NPC_HATEREL: TombBossGUIDs[5] = creature->GetGUID(); break;
|
||||
case NPC_DOOMREL: TombBossGUIDs[6] = creature->GetGUID(); break;
|
||||
case NPC_MAGMUS:
|
||||
MagmusGUID = creature->GetGUID();
|
||||
if (!creature->IsAlive())
|
||||
@@ -441,8 +441,8 @@ public:
|
||||
if (TombTimer <= diff)
|
||||
{
|
||||
TombTimer = TIMER_TOMBOFTHESEVEN;
|
||||
++TombEventCounter;
|
||||
TombOfSevenEvent();
|
||||
++TombEventCounter;
|
||||
// Check Killed bosses
|
||||
for (uint8 i = 0; i < 7; ++i)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user