fix(Scripts/MagisterTerrace): Fix Kael's outro and close door during … (#21289)
This commit is contained in:
parent
18cb8f7d6c
commit
2809f70dc1
@ -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;
|
||||
};
|
||||
|
||||
|
||||
@ -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
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user