diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp index fcd5fdcb3..b76ed95a0 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp @@ -69,10 +69,12 @@ enum Spells SPELL_BLAZE_SUMMON = 45236 }; -enum Misc +enum TwinPhases { ACTION_SISTER_DIED = 1, - GROUP_SPECIAL_ABILITY = 1 + GROUP_SPECIAL_ABILITY = 1, + GROUP_PYROGENICS = 2, + GROUP_FLAME_SEAR = 3 }; struct boss_sacrolash : public BossAI @@ -226,16 +228,24 @@ struct boss_alythess : public BossAI Talk(YELL_SISTER_SACROLASH_DEAD); me->CastSpell(me, SPELL_EMPOWER, true); - scheduler.CancelGroup(GROUP_SPECIAL_ABILITY); + scheduler.CancelAll(); + // PYROGENICS Phase 2 + scheduler.Schedule(16s, GROUP_PYROGENICS, [this](TaskContext context) { + DoCastSelf(SPELL_PYROGENICS); + context.Repeat(16s, 28s); + }); + // FLAME_SEAR phase 2 + ScheduleTimedEvent(8s, 10s, [&] { + me->CastCustomSpell(SPELL_FLAME_SEAR, SPELLVALUE_MAX_TARGETS, urand(4, 5), me, TRIGGERED_NONE); + }, 8s, 10s, GROUP_FLAME_SEAR); ScheduleTimedEvent(20s, 26s, [&] { Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 100.0f); if (!target) target = me->GetVictim(); DoCast(target, SPELL_SHADOW_NOVA); - if (Creature * sacrolash = instance->GetCreature(DATA_SACROLASH)) + if (Creature* sacrolash = instance->GetCreature(DATA_SACROLASH)) sacrolash->AI()->Talk(EMOTE_SHADOW_NOVA, target); - }, 20s, 26s); } } @@ -253,13 +263,16 @@ struct boss_alythess : public BossAI DoCastVictim(SPELL_BLAZE); }, 3800ms); - ScheduleTimedEvent(21s, 34s, [&] { + // PYROGENICS Phase 1 + scheduler.Schedule(21s, GROUP_PYROGENICS, [this](TaskContext context) { DoCastSelf(SPELL_PYROGENICS); - }, 21s, 34s); + context.Repeat(21s, 34s); + }); + // FLAME_SEAR Phase 1 ScheduleTimedEvent(10s, 15s, [&] { me->CastCustomSpell(SPELL_FLAME_SEAR, SPELLVALUE_MAX_TARGETS, urand(4, 5), me, TRIGGERED_NONE); - }, 10s, 15s); + }, 10s, 15s, GROUP_FLAME_SEAR); scheduler.Schedule(20s, GROUP_SPECIAL_ABILITY, [this](TaskContext context) { Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 100.0f);