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