fix(Scripts/MagisterTerrace): Fix Selin's crystal drain being interru… (#20727)

fix(Scripts/MagisterTerrace): Fix Selin's crystal drain being interrupted
This commit is contained in:
Andrew
2024-11-24 19:38:52 -03:00
committed by GitHub
parent 94873d129b
commit 78dc29371c
@@ -41,16 +41,6 @@ enum Spells
SPELL_DRAIN_MANA = 46153 SPELL_DRAIN_MANA = 46153
}; };
enum Events
{
EVENT_SPELL_DRAIN_LIFE = 1,
EVENT_SPELL_FEL_EXPLOSION = 2,
EVENT_SPELL_DRAIN_MANA = 3,
EVENT_DRAIN_CRYSTAL = 4,
EVENT_EMPOWER = 5,
EVENT_RESTORE_COMBAT = 6
};
const Position crystalSummons[5] = const Position crystalSummons[5] =
{ {
{248.053f, 14.592f, 3.74882f, 3.94444f}, {248.053f, 14.592f, 3.74882f, 3.94444f},
@@ -82,16 +72,10 @@ struct boss_selin_fireheart : public BossAI
me->SummonCreature(NPC_FEL_CRYSTAL, pos, TEMPSUMMON_CORPSE_DESPAWN); me->SummonCreature(NPC_FEL_CRYSTAL, pos, TEMPSUMMON_CORPSE_DESPAWN);
} }
void JustSummoned(Creature* summon) override
{
BossAI::JustSummoned(summon);
summon->SetReactState(REACT_PASSIVE);
}
void SummonedCreatureDies(Creature* summon, Unit* killer) override void SummonedCreatureDies(Creature* summon, Unit* killer) override
{ {
BossAI::SummonedCreatureDies(summon, killer); BossAI::SummonedCreatureDies(summon, killer);
me->GetMotionMaster()->MoveChase(me->GetVictim()); me->ResumeChasingVictim();
} }
void OnPowerUpdate(Powers /*power*/, int32 /*gain*/, int32 /*updateVal*/, uint32 currentPower) override void OnPowerUpdate(Powers /*power*/, int32 /*gain*/, int32 /*updateVal*/, uint32 currentPower) override
@@ -100,9 +84,9 @@ struct boss_selin_fireheart : public BossAI
{ {
Talk(SAY_EMPOWERED); Talk(SAY_EMPOWERED);
if (Creature* crystal = SelectNearestCrystal(false)) if (Creature* crystal = SelectNearestCrystal(false))
crystal->Kill(crystal, crystal); crystal->KillSelf();
scheduler.DelayAll(10s); scheduler.DelayAll(10s);
me->GetMotionMaster()->MoveChase(me->GetVictim()); me->ResumeChasingVictim();
} }
} }
@@ -125,7 +109,7 @@ struct boss_selin_fireheart : public BossAI
ScheduleTimedEvent(7500ms, [&]{ ScheduleTimedEvent(7500ms, [&]{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, PowerUsersSelector(me, POWER_MANA, 40.0f, false))) if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, PowerUsersSelector(me, POWER_MANA, 40.0f, false)))
DoCast(target, SPELL_DRAIN_MANA); DoCast(target, SPELL_DRAIN_MANA);
}, 10000ms); }, 10s);
} }
} }
@@ -178,11 +162,12 @@ struct boss_selin_fireheart : public BossAI
{ {
Talk(EMOTE_CRYSTAL); Talk(EMOTE_CRYSTAL);
crystal->ReplaceAllUnitFlags(UNIT_FLAG_NONE); crystal->ReplaceAllUnitFlags(UNIT_FLAG_NONE);
crystal->SetInCombatWithZone();
crystal->AI()->DoCast(me, SPELL_MANA_RAGE, true); crystal->AI()->DoCast(me, SPELL_MANA_RAGE, true);
DoCast(crystal, SPELL_FEL_CRYSTAL_COSMETIC, true); DoCast(crystal, SPELL_FEL_CRYSTAL_COSMETIC, true);
} }
else else
me->GetMotionMaster()->MoveChase(me->GetVictim()); me->ResumeChasingVictim();
} }
} }
}; };