diff --git a/src/server/scripts/Midnight/DenofNalorakk/boss_nalorakk_midnight.cpp b/src/server/scripts/Midnight/DenofNalorakk/boss_nalorakk_midnight.cpp index f154dadd6..09fe0c230 100644 --- a/src/server/scripts/Midnight/DenofNalorakk/boss_nalorakk_midnight.cpp +++ b/src/server/scripts/Midnight/DenofNalorakk/boss_nalorakk_midnight.cpp @@ -24,8 +24,14 @@ enum NalorakkSpells SPELL_ECHOING_MAUL = 1242860, SPELL_ECHOING_MAUL_AURA = 1242869, + SPELL_ENGAGE_VISUAL_1 = 1243858, + SPELL_ENGAGE_VISUAL_2 = 1243830, + SPELL_ENGAGE_VISUAL_3 = 1291493, SPELL_FURY_OF_THE_WAR_GOD = 1243011, SPELL_FURY_OF_THE_WAR_GODS = 1243025, + SPELL_FURY_OF_THE_WAR_GOD_2 = 1243273, + SPELL_FURY_CHARGE = 1243002, + SPELL_GROWL = 1243831, }; enum NalorakkTexts @@ -40,6 +46,8 @@ enum NalorakkEvents EVENT_SUMMON_ECHOES, EVENT_FURY_OF_THE_WAR_GOD, EVENT_SUMMON_FURY_ECHOES, + EVENT_FURY_CHARGE, + EVENT_GROWL, }; enum NalorakkEchoData @@ -61,6 +69,9 @@ struct boss_nalorakk_midnight : public BossAI { BossAI::JustEngagedWith(who); Talk(SAY_AGGRO); + DoCastSelf(SPELL_ENGAGE_VISUAL_1, true); + DoCastSelf(SPELL_ENGAGE_VISUAL_2, true); + DoCastSelf(SPELL_ENGAGE_VISUAL_3, true); instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me); } @@ -82,6 +93,7 @@ struct boss_nalorakk_midnight : public BossAI { events.ScheduleEvent(EVENT_ECHOING_MAUL, 5s); events.ScheduleEvent(EVENT_FURY_OF_THE_WAR_GOD, 25s); + events.ScheduleEvent(EVENT_GROWL, 34s); } void SummonEchoes(uint32 count, bool fury = false) @@ -99,6 +111,7 @@ struct boss_nalorakk_midnight : public BossAI { case EVENT_ECHOING_MAUL: DoCastSelf(SPELL_ECHOING_MAUL); + DoCastSelf(SPELL_ECHOING_MAUL_AURA, true); events.Repeat(10s); events.ScheduleEvent(EVENT_SUMMON_ECHOES, 4s); break; @@ -108,12 +121,21 @@ struct boss_nalorakk_midnight : public BossAI case EVENT_FURY_OF_THE_WAR_GOD: DoCastSelf(SPELL_FURY_OF_THE_WAR_GOD); DoCastSelf(SPELL_FURY_OF_THE_WAR_GODS); + DoCastSelf(SPELL_FURY_OF_THE_WAR_GOD_2, true); events.ScheduleEvent(EVENT_SUMMON_FURY_ECHOES, 1s); + events.ScheduleEvent(EVENT_FURY_CHARGE, 1s); events.Repeat(30s); break; case EVENT_SUMMON_FURY_ECHOES: SummonEchoes(3, true); break; + case EVENT_FURY_CHARGE: + DoCastAOE(SPELL_FURY_CHARGE); + break; + case EVENT_GROWL: + DoCastSelf(SPELL_GROWL, true); + events.Repeat(30s); + break; default: break; } diff --git a/src/server/scripts/Midnight/DenofNalorakk/boss_sentinel_of_winter.cpp b/src/server/scripts/Midnight/DenofNalorakk/boss_sentinel_of_winter.cpp index ae7aa6ffa..9f67df99b 100644 --- a/src/server/scripts/Midnight/DenofNalorakk/boss_sentinel_of_winter.cpp +++ b/src/server/scripts/Midnight/DenofNalorakk/boss_sentinel_of_winter.cpp @@ -22,6 +22,9 @@ enum SentinelOfWinterSpells { SPELL_QUAKING = 1250959, + SPELL_DISPLAY_COLOR_OVERRIDE = 1236166, + SPELL_ACTIVATE_BEAR_IDOL = 1237170, + SPELL_DISPLAY_COLOR_OVERRIDE_2 = 1236167, SPELL_BLIZZARDS_WRATH = 1236323, SPELL_GLACIAL_TORMENT = 1235548, @@ -63,6 +66,8 @@ struct boss_sentinel_of_winter : public BossAI BossAI::JustEngagedWith(who); Talk(SAY_AGGRO); DoCastSelf(SPELL_QUAKING); + DoCastSelf(SPELL_DISPLAY_COLOR_OVERRIDE, true); + DoCastSelf(SPELL_ACTIVATE_BEAR_IDOL, true); instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me); } @@ -96,6 +101,7 @@ struct boss_sentinel_of_winter : public BossAI switch (eventId) { case EVENT_BLIZZARDS_WRATH: + DoCastSelf(SPELL_DISPLAY_COLOR_OVERRIDE_2, true); if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true)) me->SummonCreature(NPC_BLIZZARDS_WRATH, target->GetPosition(), TEMPSUMMON_TIMED_DESPAWN, 20s); events.Repeat(Milliseconds(20500)); @@ -131,6 +137,12 @@ enum BlizzardsWrathSpells SPELL_AVENGERS_SHIELD = 31935, }; +// 251189 - Create Bonfire uses 1253083, not the Sentinels 1253049 +enum CreateBonfireSpells +{ + SPELL_CREATE_BONFIRE_MAINTAIN = 1253083, +}; + enum BlizzardsWrathEvents { EVENT_FROST_MISSILES = 1, @@ -254,10 +266,23 @@ struct npc_avatar_of_determination : public ScriptedAI } }; +// 251189 - Create Bonfire (Spawned by Sentinel of Winter's death spell) +struct npc_create_bonfire : public ScriptedAI +{ + npc_create_bonfire(Creature* creature) : ScriptedAI(creature) { } + + void Reset() override + { + ScriptedAI::Reset(); + DoCastSelf(SPELL_CREATE_BONFIRE_MAINTAIN, true); + } +}; + void AddSC_boss_sentinel_of_winter() { RegisterDenofNalorakkCreatureAI(boss_sentinel_of_winter); RegisterDenofNalorakkCreatureAI(npc_blizzards_wrath); RegisterDenofNalorakkCreatureAI(npc_raging_squall); RegisterDenofNalorakkCreatureAI(npc_avatar_of_determination); + RegisterDenofNalorakkCreatureAI(npc_create_bonfire); } \ No newline at end of file diff --git a/src/server/scripts/Midnight/DenofNalorakk/denofnalorakk.h b/src/server/scripts/Midnight/DenofNalorakk/denofnalorakk.h index abcb6804f..6cdecf642 100644 --- a/src/server/scripts/Midnight/DenofNalorakk/denofnalorakk.h +++ b/src/server/scripts/Midnight/DenofNalorakk/denofnalorakk.h @@ -42,6 +42,7 @@ enum DenofNalorakkCreatureIds NPC_RAGING_SQUALL = 244696, NPC_GLACIAL_TOMB = 246591, NPC_BLIZZARDS_WRATH = 244869, + NPC_CREATE_BONFIRE = 251189, BOSS_THE_HOARDMONGER = 241812, NPC_AVATAR_OF_STARVATION = 241805, diff --git a/src/server/scripts/Midnight/DenofNalorakk/denofnalorakk_trash.cpp b/src/server/scripts/Midnight/DenofNalorakk/denofnalorakk_trash.cpp index dead53f0c..86d14223d 100644 --- a/src/server/scripts/Midnight/DenofNalorakk/denofnalorakk_trash.cpp +++ b/src/server/scripts/Midnight/DenofNalorakk/denofnalorakk_trash.cpp @@ -69,7 +69,9 @@ enum TrashSpells SPELL_INSATIABLE_HUNGER = 1238801, SPELL_STARVATION_EFFIGY_FX = 1309911, SPELL_FEAST_OF_MISERY = 1238687, + SPELL_FEAST_OF_MISERY_PULSE = 1238725, SPELL_STARVATION_EFFIGY = 1238760, + SPELL_JUDGMENT = 275779, SPELL_INVIS_STEALTH_DETECT = 18950, }; @@ -83,6 +85,7 @@ enum TrashEvents EVENT_INSATIABLE_HUNGER, EVENT_RAZOR_DIVE, EVENT_FEAST_OF_MISERY, + EVENT_FEAST_OF_MISERY_PULSE, EVENT_STARVATION_EFFIGY, EVENT_FRIGID_ROAR, EVENT_CRYO_SURGE, @@ -101,6 +104,7 @@ enum TrashEvents EVENT_POISON_SPEAR_BEAST, EVENT_SHOOT, EVENT_BESTIAL_WRATH, + EVENT_JUDGMENT, }; // 241876 - Glacial Revenant @@ -529,14 +533,23 @@ struct npc_starvation_effigy : public ScriptedAI { DoZoneInCombat(); events.ScheduleEvent(EVENT_INSATIABLE_HUNGER, 3s); + events.ScheduleEvent(EVENT_JUDGMENT, 4s); } void ExecuteEvent(uint32 eventId) override { - if (eventId == EVENT_INSATIABLE_HUNGER) + switch (eventId) { - DoCastVictim(SPELL_INSATIABLE_HUNGER); - events.ScheduleEvent(EVENT_INSATIABLE_HUNGER, 8s); + case EVENT_INSATIABLE_HUNGER: + DoCastVictim(SPELL_INSATIABLE_HUNGER); + events.Repeat(8s); + break; + case EVENT_JUDGMENT: + DoCastVictim(SPELL_JUDGMENT); + events.Repeat(6s); + break; + default: + break; } } }; @@ -556,6 +569,7 @@ struct npc_spirit_of_hunger : public ScriptedAI { DoZoneInCombat(); events.ScheduleEvent(EVENT_FEAST_OF_MISERY, 1500ms); + events.ScheduleEvent(EVENT_FEAST_OF_MISERY_PULSE, 2s); events.ScheduleEvent(EVENT_STARVATION_EFFIGY, 6s); } @@ -565,11 +579,15 @@ struct npc_spirit_of_hunger : public ScriptedAI { case EVENT_FEAST_OF_MISERY: DoCastVictim(SPELL_FEAST_OF_MISERY); - events.ScheduleEvent(EVENT_FEAST_OF_MISERY, 5s); + events.Repeat(5s); + break; + case EVENT_FEAST_OF_MISERY_PULSE: + DoCastVictim(SPELL_FEAST_OF_MISERY_PULSE); + events.Repeat(1s); break; case EVENT_STARVATION_EFFIGY: DoCastSelf(SPELL_STARVATION_EFFIGY); - events.ScheduleEvent(EVENT_STARVATION_EFFIGY, 5s); + events.Repeat(5s); break; default: break;