mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-09 00:08:01 +00:00
fix(Scripts/Magtheridon): Clicking cubes should Banish Magtheridon (#18856)
* init * rewrite without action * fix: add Talk(SAY_BANISH)
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
--
|
||||||
|
DELETE FROM `spell_script_names` WHERE `spell_id` = 30166;
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (30166, 'spell_magtheridon_shadow_grasp_visual');
|
||||||
@@ -52,6 +52,7 @@ enum Spells
|
|||||||
SPELL_BERSERK = 27680,
|
SPELL_BERSERK = 27680,
|
||||||
SPELL_SHADOW_GRASP = 30410,
|
SPELL_SHADOW_GRASP = 30410,
|
||||||
SPELL_SHADOW_GRASP_VISUAL = 30166,
|
SPELL_SHADOW_GRASP_VISUAL = 30166,
|
||||||
|
SPELL_SHADOW_CAGE_STUN = 30168,
|
||||||
SPELL_MIND_EXHAUSTION = 44032,
|
SPELL_MIND_EXHAUSTION = 44032,
|
||||||
SPELL_QUAKE = 30657,
|
SPELL_QUAKE = 30657,
|
||||||
SPELL_QUAKE_KNOCKBACK = 30571,
|
SPELL_QUAKE_KNOCKBACK = 30571,
|
||||||
@@ -65,13 +66,13 @@ enum Spells
|
|||||||
|
|
||||||
enum Groups
|
enum Groups
|
||||||
{
|
{
|
||||||
GROUP_INTERRUPT_CHECK = 0,
|
GROUP_EARLY_RELEASE_CHECK = 0
|
||||||
GROUP_EARLY_RELEASE_CHECK = 1
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Actions
|
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
|
struct boss_magtheridon : public BossAI
|
||||||
@@ -188,21 +189,6 @@ struct boss_magtheridon : public BossAI
|
|||||||
{
|
{
|
||||||
DoCastSelf(SPELL_BLAST_NOVA);
|
DoCastSelf(SPELL_BLAST_NOVA);
|
||||||
scheduler.DelayAll(10s);
|
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);
|
context.Repeat(54350ms, 55400ms);
|
||||||
}).Schedule(22min, [this](TaskContext /*context*/)
|
}).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
|
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
|
class spell_magtheridon_quake : public SpellScript
|
||||||
{
|
{
|
||||||
PrepareSpellScript(spell_magtheridon_quake);
|
PrepareSpellScript(spell_magtheridon_quake);
|
||||||
@@ -417,6 +432,7 @@ void AddSC_boss_magtheridon()
|
|||||||
RegisterMagtheridonsLairCreatureAI(npc_target_trigger);
|
RegisterMagtheridonsLairCreatureAI(npc_target_trigger);
|
||||||
RegisterSpellScript(spell_magtheridon_blaze);
|
RegisterSpellScript(spell_magtheridon_blaze);
|
||||||
RegisterSpellScript(spell_magtheridon_shadow_grasp);
|
RegisterSpellScript(spell_magtheridon_shadow_grasp);
|
||||||
|
RegisterSpellScript(spell_magtheridon_shadow_grasp_visual);
|
||||||
RegisterSpellScript(spell_magtheridon_quake);
|
RegisterSpellScript(spell_magtheridon_quake);
|
||||||
RegisterSpellScript(spell_magtheridon_debris_target_selector);
|
RegisterSpellScript(spell_magtheridon_debris_target_selector);
|
||||||
new go_manticron_cube();
|
new go_manticron_cube();
|
||||||
|
|||||||
Reference in New Issue
Block a user