From 570201077f6cce3429c38cf465c9c7475f2d53ed Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sun, 12 Apr 2026 12:06:24 -0300 Subject: [PATCH] fix(Scripts/DraktharonKeep): chain King Dred claw emote with slash sequence (#25151) Co-authored-by: Claude Opus 4.6 --- .../Northrend/DraktharonKeep/boss_dred.cpp | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp index 44a6b1182..d55f079ee 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_dred.cpp @@ -66,37 +66,45 @@ public: void ScheduleTasks() override { - ScheduleTimedEvent(20s, [&] { - DoCastVictim(SPELL_GRIEVOUS_BITE); - }, 20s); - - ScheduleTimedEvent(18s + 500ms, [&] { - DoCastVictim(SPELL_MANGLING_SLASH); - }, 20s); - ScheduleTimedEvent(10s, 20s, [&] { DoCastAOE(SPELL_FEARSOME_ROAR); }, 17s); - ScheduleTimedEvent(17s, [&] { - DoCastVictim(SPELL_PIERCING_SLASH); - }, 20s); + // Claw emote followed by Piercing Slash, Mangling Slash, Grievous Bite sequence + scheduler.Schedule(13s, 18s, [this](TaskContext context) + { + Talk(SAY_CLAW_EMOTE); + if (Unit* victim = me->GetVictim()) + { + me->setAttackTimer(BASE_ATTACK, 2000); + me->AttackerStateUpdate(victim); + if (me->GetVictim()) + me->AttackerStateUpdate(me->GetVictim()); + if (me->GetVictim()) + me->AttackerStateUpdate(me->GetVictim()); + } + + context.Schedule(1500ms, [this](TaskContext context) + { + DoCastVictim(SPELL_PIERCING_SLASH); + context.Schedule(1500ms, [this](TaskContext context) + { + DoCastVictim(SPELL_MANGLING_SLASH); + context.Schedule(1500ms, [this](TaskContext /*context*/) + { + DoCastVictim(SPELL_GRIEVOUS_BITE); + }); + }); + }); + + context.Repeat(18s, 35s); + }); if (IsHeroic()) { ScheduleTimedEvent(16s, [&] { DoCastSelf(SPELL_RAPTOR_CALL); }, 30s); - - ScheduleTimedEvent(21s, [&] { - Talk(SAY_CLAW_EMOTE); - me->setAttackTimer(BASE_ATTACK, 2000); - me->AttackerStateUpdate(me->GetVictim()); - if (me->GetVictim()) - me->AttackerStateUpdate(me->GetVictim()); - if (me->GetVictim()) - me->AttackerStateUpdate(me->GetVictim()); - }, 20s); } }