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
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 34 additions and 16 deletions

View File

@ -52,7 +52,12 @@ enum Spells
SPELL_GRAVITY_LAPSE_FLY = 44227,
SPELL_GRAVITY_LAPSE_DOT = 44226,
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
@ -72,7 +77,6 @@ struct boss_felblood_kaelthas : public BossAI
void Reset() override
{
BossAI::Reset();
_OOCScheduler.CancelAll();
_gravityLapseCounter = 0;
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);
me->SetImmuneToAll(true);
_OOCScheduler.Schedule(35s, [this](TaskContext) {
me->m_Events.AddEventAtOffset([&] {
me->ClearEmoteState();
me->SetReactState(REACT_AGGRESSIVE);
me->SetImmuneToAll(false);
});
}, 35s);
}
}
}
@ -185,19 +190,35 @@ struct boss_felblood_kaelthas : public BossAI
damage = me->GetHealth() - 1;
if (me->isRegeneratingHealth())
{
me->CombatStop();
me->CastStop();
me->SetRegeneratingHealth(false);
me->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE);
me->SetImmuneToAll(true);
me->SetStandState(UNIT_STAND_STATE_KNEEL);
me->CombatStop();
me->SetReactState(REACT_PASSIVE);
LapseAction(ACTION_REMOVE_FLY);
scheduler.CancelAll();
_OOCScheduler.Schedule(6s, [this](TaskContext){
me->KillSelf();
});
summons.DespawnAll();
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);
@ -208,6 +229,9 @@ struct boss_felblood_kaelthas : public BossAI
_gravityLapseCounter = 0;
me->GetMap()->DoForAllPlayers([&](Player* player)
{
if (player->IsGameMaster())
return;
if (action == ACTION_TELEPORT_PLAYERS)
DoCast(player, SPELL_GRAVITY_LAPSE_PLAYER + _gravityLapseCounter, true);
else if (action == ACTION_KNOCKUP)
@ -222,14 +246,7 @@ struct boss_felblood_kaelthas : public BossAI
++_gravityLapseCounter;
});
}
void UpdateAI(uint32 diff) override
{
_OOCScheduler.Update(diff);
BossAI::UpdateAI(diff);
}
private:
TaskScheduler _OOCScheduler;
uint8 _gravityLapseCounter;
};

View File

@ -48,6 +48,7 @@ DoorData const doorData[] =
{ GO_SELIN_ENCOUNTER_DOOR, DATA_SELIN_FIREHEART, DOOR_TYPE_ROOM },
{ GO_VEXALLUS_DOOR, DATA_VEXALLUS, 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
};