Skip to content

Commit

Permalink
refactor(Scripts/MagisterTerrace): Update Vexallus script (azerothcor…
Browse files Browse the repository at this point in the history
…e#17892)

* refactor(Scripts/MagisterTerrace): Update Vexallus script

* Update src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp
  • Loading branch information
Nyeriah authored Nov 29, 2023
1 parent 635288b commit 4552e89
Showing 1 changed file with 33 additions and 85 deletions.
118 changes: 33 additions & 85 deletions src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,37 +48,36 @@ enum Spells

enum Misc
{
NPC_PURE_ENERGY = 24745,

INTERVAL_MODIFIER = 15,
INTERVAL_SWITCH = 6,

EVENT_SPELL_CHAIN_LIGHTNING = 1,
EVENT_SPELL_ARCANE_SHOCK = 2,
EVENT_HEALTH_CHECK = 3,
NPC_PURE_ENERGY = 24745
};

struct boss_vexallus : public ScriptedAI
struct boss_vexallus : public BossAI
{
boss_vexallus(Creature* creature) : ScriptedAI(creature), summons(me)
{
instance = creature->GetInstanceScript();
}

InstanceScript* instance;
EventMap events;
SummonList summons;

uint8 IntervalHealthAmount;
bool Enraged;
boss_vexallus(Creature* creature) : BossAI(creature, DATA_VEXALLUS) { }

void Reset() override
{
summons.DespawnAll();
IntervalHealthAmount = 1;
_Reset();

ScheduleHealthCheckEvent({ 85, 70, 55, 40 }, [&]
{
Talk(SAY_ENERGY);
Talk(EMOTE_DISCHARGE_ENERGY);

if (IsHeroic())
{
DoCastSelf(SPELL_SUMMON_PURE_ENERGY_H1);
DoCastSelf(SPELL_SUMMON_PURE_ENERGY_H2);
}
else
DoCastSelf(SPELL_SUMMON_PURE_ENERGY_N);
});

instance->SetBossState(DATA_VEXALLUS, NOT_STARTED);
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_ENERGY_FEEDBACK);
ScheduleHealthCheckEvent(20, [&]
{
scheduler.CancelAll();
DoCastSelf(SPELL_OVERLOAD, true);
});
}

void KilledUnit(Unit* victim) override
Expand All @@ -87,21 +86,20 @@ struct boss_vexallus : public ScriptedAI
Talk(SAY_KILL);
}

void JustDied(Unit* /*killer*/) override
{
summons.DespawnAll();
instance->SetBossState(DATA_VEXALLUS, DONE);
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_ENERGY_FEEDBACK);
}

void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
Talk(SAY_AGGRO);
instance->SetBossState(DATA_VEXALLUS, IN_PROGRESS);

events.ScheduleEvent(EVENT_SPELL_CHAIN_LIGHTNING, 8000);
events.ScheduleEvent(EVENT_SPELL_ARCANE_SHOCK, 5000);
events.ScheduleEvent(EVENT_HEALTH_CHECK, 1000);
ScheduleTimedEvent(8s, [&]
{
DoCastRandomTarget(DUNGEON_MODE(SPELL_CHAIN_LIGHTNING_N, SPELL_CHAIN_LIGHTNING_H));
}, 8s, 8s);

ScheduleTimedEvent(5s, [&]
{
DoCastRandomTarget(DUNGEON_MODE(SPELL_ARCANE_SHOCK_N, SPELL_ARCANE_SHOCK_H));
}, 8s, 8s);
}

void JustSummoned(Creature* summon) override
Expand All @@ -121,56 +119,6 @@ struct boss_vexallus : public ScriptedAI
if (killer)
killer->CastSpell(killer, SPELL_ENERGY_FEEDBACK, true, 0, 0, summon->GetGUID());
}

void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;

events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;

switch (events.ExecuteEvent())
{
case EVENT_HEALTH_CHECK:
//used for check, when Vexallus cast adds 85%, 70%, 55%, 40%
if (!HealthAbovePct(100 - INTERVAL_MODIFIER * IntervalHealthAmount))
{
if (IntervalHealthAmount++ == INTERVAL_SWITCH)
{
events.Reset();
me->CastSpell(me, SPELL_OVERLOAD, true);
return;
}

Talk(SAY_ENERGY);
Talk(EMOTE_DISCHARGE_ENERGY);

if (IsHeroic())
{
me->CastSpell(me, SPELL_SUMMON_PURE_ENERGY_H1, false);
me->CastSpell(me, SPELL_SUMMON_PURE_ENERGY_H2, false);
}
else
me->CastSpell(me, SPELL_SUMMON_PURE_ENERGY_N, false);
}
events.ScheduleEvent(EVENT_HEALTH_CHECK, 0);
break;
case EVENT_SPELL_CHAIN_LIGHTNING:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
me->CastSpell(target, DUNGEON_MODE(SPELL_CHAIN_LIGHTNING_N, SPELL_CHAIN_LIGHTNING_H), false);
events.ScheduleEvent(EVENT_SPELL_CHAIN_LIGHTNING, 8000);
break;
case EVENT_SPELL_ARCANE_SHOCK:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 20.0f))
me->CastSpell(target, DUNGEON_MODE(SPELL_ARCANE_SHOCK_N, SPELL_ARCANE_SHOCK_H), false);
events.ScheduleEvent(EVENT_SPELL_ARCANE_SHOCK, 8000);
break;
}

DoMeleeAttackIfReady();
}
};

void AddSC_boss_vexallus()
Expand Down

0 comments on commit 4552e89

Please sign in to comment.