From e2434e4f4726f9c99f9260607b78ece09b5df249 Mon Sep 17 00:00:00 2001 From: Metalaka Date: Thu, 14 May 2020 21:17:00 +0200 Subject: Core/CreatureAI: Shambling Horror re-cast Enrage as soon as it is not stun (#24618) --- .../Northrend/IcecrownCitadel/boss_the_lich_king.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/server/scripts/Northrend') diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index 808edce56d0..0167e562928 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -190,6 +190,7 @@ enum Spells #define REMORSELESS_WINTER_2 RAID_MODE(72259, 74273, 74274, 74275) #define SUMMON_VALKYR RAID_MODE(69037, 74361, 69037, 74361) #define HARVEST_SOUL RAID_MODE(68980, 74325, 74296, 74297) +#define ENRAGE RAID_MODE(72143, 72146, 72147, 72148) enum Events { @@ -1365,8 +1366,10 @@ class npc_shambling_horror_icc : public CreatureScript _events.ScheduleEvent(EVENT_SHOCKWAVE, 20s, 25s); break; case EVENT_ENRAGE: - DoCast(me, SPELL_ENRAGE); - _events.ScheduleEvent(EVENT_ENRAGE, 20s, 25s); + if (SPELL_CAST_OK != DoCast(me, SPELL_ENRAGE)) + _events.ScheduleEvent(EVENT_ENRAGE, 1s); + else + _events.ScheduleEvent(EVENT_ENRAGE, 20s, 25s); break; default: break; @@ -1376,6 +1379,15 @@ class npc_shambling_horror_icc : public CreatureScript DoMeleeAttackIfReady(); } + void OnSpellCastInterrupt(SpellInfo const* spell) override + { + ScriptedAI::OnSpellCastInterrupt(spell); + + // When enrage is interrupted, reschedule the event + if (spell->Id == ENRAGE) + _events.RescheduleEvent(EVENT_ENRAGE, 1s); + } + private: EventMap _events; bool _frenzied; -- cgit v1.2.3