fix(Scripts/MagisterTerrace): Fix Kael's outro and close door during … (#21289)

This commit is contained in:
Andrew
2025-01-29 06:27:30 -03:00
committed by GitHub
parent 18cb8f7d6c
commit 2809f70dc1
2 changed files with 34 additions and 16 deletions
@@ -52,7 +52,12 @@ enum Spells
SPELL_GRAVITY_LAPSE_FLY = 44227, SPELL_GRAVITY_LAPSE_FLY = 44227,
SPELL_GRAVITY_LAPSE_DOT = 44226, SPELL_GRAVITY_LAPSE_DOT = 44226,
SPELL_GRAVITY_LAPSE_CHANNEL = 44251, SPELL_GRAVITY_LAPSE_CHANNEL = 44251,
SPELL_POWER_FEEDBACK = 44233 SPELL_POWER_FEEDBACK = 44233,
SPELL_CLEAR_FLIGHT = 44232, // Does nothing currently
SPELL_EMOTE_EXCLAMATION = 48348,
SPELL_EMOTE_POINT = 48349,
SPELL_EMOTE_ROAR = 48350
}; };
enum Misc enum Misc
@@ -72,7 +77,6 @@ struct boss_felblood_kaelthas : public BossAI
void Reset() override void Reset() override
{ {
BossAI::Reset(); BossAI::Reset();
_OOCScheduler.CancelAll();
_gravityLapseCounter = 0; _gravityLapseCounter = 0;
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_INTERRUPT_CAST, false); me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_INTERRUPT_CAST, false);
@@ -169,11 +173,12 @@ struct boss_felblood_kaelthas : public BossAI
Talk(SAY_AGGRO_2, 20s); Talk(SAY_AGGRO_2, 20s);
me->SetImmuneToAll(true); me->SetImmuneToAll(true);
_OOCScheduler.Schedule(35s, [this](TaskContext) {
me->m_Events.AddEventAtOffset([&] {
me->ClearEmoteState(); me->ClearEmoteState();
me->SetReactState(REACT_AGGRESSIVE); me->SetReactState(REACT_AGGRESSIVE);
me->SetImmuneToAll(false); me->SetImmuneToAll(false);
}); }, 35s);
} }
} }
} }
@@ -185,19 +190,35 @@ struct boss_felblood_kaelthas : public BossAI
damage = me->GetHealth() - 1; damage = me->GetHealth() - 1;
if (me->isRegeneratingHealth()) if (me->isRegeneratingHealth())
{ {
me->CombatStop();
me->CastStop(); me->CastStop();
me->SetRegeneratingHealth(false); me->SetRegeneratingHealth(false);
me->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE); me->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE);
me->SetImmuneToAll(true); me->SetImmuneToAll(true);
me->SetStandState(UNIT_STAND_STATE_KNEEL);
me->CombatStop();
me->SetReactState(REACT_PASSIVE); me->SetReactState(REACT_PASSIVE);
LapseAction(ACTION_REMOVE_FLY); LapseAction(ACTION_REMOVE_FLY);
scheduler.CancelAll(); scheduler.CancelAll();
_OOCScheduler.Schedule(6s, [this](TaskContext){ summons.DespawnAll();
me->KillSelf();
});
Talk(SAY_DEATH); Talk(SAY_DEATH);
DoCastSelf(SPELL_EMOTE_EXCLAMATION);
me->m_Events.AddEventAtOffset([&] {
DoCastSelf(SPELL_EMOTE_POINT);
}, 3s);
me->m_Events.AddEventAtOffset([&] {
DoCastSelf(SPELL_EMOTE_ROAR);
}, 7s);
me->m_Events.AddEventAtOffset([&] {
DoCastSelf(SPELL_EMOTE_ROAR);
DoCastSelf(SPELL_CLEAR_FLIGHT);
}, 9s);
me->m_Events.AddEventAtOffset([&] {
me->KillSelf();
}, 11s);
} }
} }
BossAI::DamageTaken(attacker, damage, damagetype, damageSchoolMask); BossAI::DamageTaken(attacker, damage, damagetype, damageSchoolMask);
@@ -208,6 +229,9 @@ struct boss_felblood_kaelthas : public BossAI
_gravityLapseCounter = 0; _gravityLapseCounter = 0;
me->GetMap()->DoForAllPlayers([&](Player* player) me->GetMap()->DoForAllPlayers([&](Player* player)
{ {
if (player->IsGameMaster())
return;
if (action == ACTION_TELEPORT_PLAYERS) if (action == ACTION_TELEPORT_PLAYERS)
DoCast(player, SPELL_GRAVITY_LAPSE_PLAYER + _gravityLapseCounter, true); DoCast(player, SPELL_GRAVITY_LAPSE_PLAYER + _gravityLapseCounter, true);
else if (action == ACTION_KNOCKUP) else if (action == ACTION_KNOCKUP)
@@ -222,14 +246,7 @@ struct boss_felblood_kaelthas : public BossAI
++_gravityLapseCounter; ++_gravityLapseCounter;
}); });
} }
void UpdateAI(uint32 diff) override
{
_OOCScheduler.Update(diff);
BossAI::UpdateAI(diff);
}
private: private:
TaskScheduler _OOCScheduler;
uint8 _gravityLapseCounter; uint8 _gravityLapseCounter;
}; };
@@ -48,6 +48,7 @@ DoorData const doorData[] =
{ GO_SELIN_ENCOUNTER_DOOR, DATA_SELIN_FIREHEART, DOOR_TYPE_ROOM }, { GO_SELIN_ENCOUNTER_DOOR, DATA_SELIN_FIREHEART, DOOR_TYPE_ROOM },
{ GO_VEXALLUS_DOOR, DATA_VEXALLUS, DOOR_TYPE_PASSAGE }, { GO_VEXALLUS_DOOR, DATA_VEXALLUS, DOOR_TYPE_PASSAGE },
{ GO_DELRISSA_DOOR, DATA_DELRISSA, DOOR_TYPE_PASSAGE }, { GO_DELRISSA_DOOR, DATA_DELRISSA, DOOR_TYPE_PASSAGE },
{ GO_KAEL_DOOR, DATA_KAELTHAS, DOOR_TYPE_ROOM },
{ 0, 0, DOOR_TYPE_ROOM } // END { 0, 0, DOOR_TYPE_ROOM } // END
}; };