rework full mechanics and spell added
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user