spell mage arcane orb

This commit is contained in:
luis
2026-09-13 13:07:31 -03:00
parent b7b0238bc8
commit cf16c6eec7
+59
View File
@@ -48,6 +48,8 @@ enum MageSpells
SPELL_MAGE_ARCANE_BARRAGE_R3 = 321526,
SPELL_MAGE_ARCANE_CHARGE = 36032,
SPELL_MAGE_ARCANE_MAGE = 137021,
SPELL_MAGE_ARCANE_ORB = 153626,
SPELL_MAGE_ARCANE_ORB_DAMAGE = 153640,
SPELL_MAGE_BLAZING_BARRIER_TRIGGER = 235314,
SPELL_MAGE_BLINK = 1953,
SPELL_MAGE_BLIZZARD_DAMAGE = 190357,
@@ -296,6 +298,61 @@ class spell_mage_arcane_barrage : public SpellScript
ObjectGuid _primaryTarget;
};
// 153626 - Arcane Orb: grants 1 Arcane Charge when cast and every time it deals damage
class spell_mage_arcane_orb : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_MAGE_ARCANE_ORB_DAMAGE });
}
void HandleHitTarget(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
Unit* target = GetHitUnit();
if (!caster || !target)
return;
caster->CastSpell(target, SPELL_MAGE_ARCANE_ORB_DAMAGE, true);
}
void GrantChargeOnCast()
{
Unit* caster = GetCaster();
if (!caster || caster->GetTypeId() != TYPEID_PLAYER)
return;
caster->ModifyPower(POWER_ARCANE_CHARGES, 1);
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_mage_arcane_orb::HandleHitTarget, EFFECT_0, SPELL_EFFECT_CREATE_AREATRIGGER);
AfterCast += SpellCastFn(spell_mage_arcane_orb::GrantChargeOnCast);
}
};
// 153640 - Arcane Orb (Damage): 1 Arcane Charge each time the orb deals damage
class spell_mage_arcane_orb_damage : public SpellScript
{
void HandleOnHit()
{
Unit* caster = GetCaster();
if (!caster || caster->GetTypeId() != TYPEID_PLAYER)
return;
caster->ModifyPower(POWER_ARCANE_CHARGES, 1);
}
void Register() override
{
OnHit += SpellHitFn(spell_mage_arcane_orb_damage::HandleOnHit);
}
};
// 195302 - Arcane Charge
class spell_mage_arcane_charge_clear : public SpellScript
{
@@ -3039,6 +3096,8 @@ void AddSC_mage_spell_scripts()
RegisterSpellScript(spell_mage_alter_time_active);
RegisterSpellScript(spell_mage_arcane_barrage);
RegisterSpellScript(spell_mage_arcane_charge_clear);
RegisterSpellScript(spell_mage_arcane_orb);
RegisterSpellScript(spell_mage_arcane_orb_damage);
RegisterSpellScript(spell_mage_arcane_explosion);
RegisterSpellScript(spell_mage_blazing_barrier);
RegisterAreaTriggerAI(areatrigger_mage_blizzard);