rework full mechanics and spell added
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s

This commit is contained in:
luis
2026-09-01 19:11:16 -03:00
parent d42ac1bcca
commit 6db36c73c3
4 changed files with 71 additions and 5 deletions
@@ -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;
}
@@ -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);
}
@@ -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,
@@ -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;