fix(Scripts/Magtheridon): Clicking cubes should Banish Magtheridon (#18856)

* init

* rewrite without action

* fix: add Talk(SAY_BANISH)
This commit is contained in:
Jelle Meeus
2024-05-04 16:56:48 +02:00
committed by GitHub
parent ab7405f94e
commit 0dc822d21e
2 changed files with 37 additions and 18 deletions

View File

@@ -52,6 +52,7 @@ enum Spells
SPELL_BERSERK = 27680,
SPELL_SHADOW_GRASP = 30410,
SPELL_SHADOW_GRASP_VISUAL = 30166,
SPELL_SHADOW_CAGE_STUN = 30168,
SPELL_MIND_EXHAUSTION = 44032,
SPELL_QUAKE = 30657,
SPELL_QUAKE_KNOCKBACK = 30571,
@@ -65,13 +66,13 @@ enum Spells
enum Groups
{
GROUP_INTERRUPT_CHECK = 0,
GROUP_EARLY_RELEASE_CHECK = 1
GROUP_EARLY_RELEASE_CHECK = 0
};
enum Actions
{
ACTION_INCREASE_HELLFIRE_CHANNELER_DEATH_COUNT = 1
ACTION_INCREASE_HELLFIRE_CHANNELER_DEATH_COUNT = 1,
ACTION_BANISH_SELF = 2
};
struct boss_magtheridon : public BossAI
@@ -188,21 +189,6 @@ struct boss_magtheridon : public BossAI
{
DoCastSelf(SPELL_BLAST_NOVA);
scheduler.DelayAll(10s);
_interruptScheduler.Schedule(50ms, GROUP_INTERRUPT_CHECK, [this](TaskContext context)
{
if (me->GetAuraCount(SPELL_SHADOW_GRASP_VISUAL) == 5)
{
Talk(SAY_BANISH);
me->InterruptNonMeleeSpells(true);
scheduler.CancelGroup(GROUP_INTERRUPT_CHECK);
}
else
context.Repeat(50ms);
}).Schedule(12s, GROUP_INTERRUPT_CHECK, [this](TaskContext /*context*/)
{
_interruptScheduler.CancelGroup(GROUP_INTERRUPT_CHECK);
});
context.Repeat(54350ms, 55400ms);
}).Schedule(22min, [this](TaskContext /*context*/)
{
@@ -228,6 +214,11 @@ struct boss_magtheridon : public BossAI
});
}
}
else if (action == ACTION_BANISH_SELF )
{
Talk(SAY_BANISH);
me->CastSpell(me, SPELL_SHADOW_CAGE_STUN, true);
}
}
void JustEngagedWith(Unit* who) override
@@ -350,6 +341,30 @@ class spell_magtheridon_shadow_grasp : public AuraScript
}
};
class spell_magtheridon_shadow_grasp_visual : public AuraScript
{
PrepareAuraScript(spell_magtheridon_shadow_grasp_visual);
void HandleDummyApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (GetTarget()->GetAuraCount(SPELL_SHADOW_GRASP_VISUAL) == 5)
{
GetTarget()->GetAI()->DoAction(ACTION_BANISH_SELF);
}
}
void HandleDummyRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
GetTarget()->RemoveAurasDueToSpell(SPELL_SHADOW_CAGE_STUN);
}
void Register() override
{
OnEffectApply += AuraEffectApplyFn(spell_magtheridon_shadow_grasp_visual::HandleDummyApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
OnEffectRemove += AuraEffectRemoveFn(spell_magtheridon_shadow_grasp_visual::HandleDummyRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
class spell_magtheridon_quake : public SpellScript
{
PrepareSpellScript(spell_magtheridon_quake);
@@ -417,6 +432,7 @@ void AddSC_boss_magtheridon()
RegisterMagtheridonsLairCreatureAI(npc_target_trigger);
RegisterSpellScript(spell_magtheridon_blaze);
RegisterSpellScript(spell_magtheridon_shadow_grasp);
RegisterSpellScript(spell_magtheridon_shadow_grasp_visual);
RegisterSpellScript(spell_magtheridon_quake);
RegisterSpellScript(spell_magtheridon_debris_target_selector);
new go_manticron_cube();