diff options
-rw-r--r-- | src/server/scripts/Spells/spell_mage.cpp | 45 |
1 files changed, 12 insertions, 33 deletions
diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index 1f10515f33b..927a0467525 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -1844,20 +1844,21 @@ class spell_mage_water_elemental_freeze : public SpellScript }; // 383493 - Wildfire -class spell_mage_wildfire_area_crit : public AuraScript +// 383492 - Wildfire +class spell_mage_wildfire_crit : public AuraScript { bool Validate(SpellInfo const* /*spellInfo*/) override { - return ValidateSpellEffect({ { SPELL_MAGE_WILDFIRE_TALENT, EFFECT_3 } }); + return ValidateSpellEffect({ { SPELL_MAGE_WILDFIRE_TALENT, _effIndex } }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) const { Unit* caster = GetCaster(); if (!caster) return; - AuraEffect const* wildfireCritEffect = caster->GetAuraEffect(SPELL_MAGE_WILDFIRE_TALENT, EFFECT_3); + AuraEffect const* wildfireCritEffect = caster->GetAuraEffect(SPELL_MAGE_WILDFIRE_TALENT, _effIndex); if (!wildfireCritEffect) return; @@ -1867,36 +1868,14 @@ class spell_mage_wildfire_area_crit : public AuraScript void Register() override { - DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mage_wildfire_area_crit::CalculateAmount, EFFECT_0, SPELL_AURA_MOD_CRIT_PCT); + DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mage_wildfire_crit::CalculateAmount, EFFECT_0, _auraType); } -}; - -// 383492 - Wildfire -class spell_mage_wildfire_caster_crit : public AuraScript -{ - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellEffect({ { SPELL_MAGE_WILDFIRE_TALENT, EFFECT_2 } }); - } - - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) - { - Unit* caster = GetCaster(); - if (!caster) - return; - AuraEffect const* wildfireCritEffect = caster->GetAuraEffect(SPELL_MAGE_WILDFIRE_TALENT, EFFECT_2); - if (!wildfireCritEffect) - return; + AuraType _auraType; + SpellEffIndex _effIndex; - canBeRecalculated = false; - amount = wildfireCritEffect->GetAmount(); - } - - void Register() override - { - DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mage_wildfire_caster_crit::CalculateAmount, EFFECT_0, SPELL_AURA_ADD_PCT_MODIFIER); - } +public: + explicit spell_mage_wildfire_crit(AuraType auraType, SpellEffIndex effIndex) : _auraType(auraType), _effIndex(effIndex) { } }; void AddSC_mage_spell_scripts() @@ -1959,6 +1938,6 @@ void AddSC_mage_spell_scripts() RegisterSpellScript(spell_mage_tempest_barrier); RegisterSpellScript(spell_mage_touch_of_the_magi_aura); RegisterSpellScript(spell_mage_water_elemental_freeze); - RegisterSpellScript(spell_mage_wildfire_area_crit); - RegisterSpellScript(spell_mage_wildfire_caster_crit); + RegisterSpellScriptWithArgs(spell_mage_wildfire_crit, "spell_mage_wildfire_area_crit", SPELL_AURA_MOD_CRIT_PCT, EFFECT_3); + RegisterSpellScriptWithArgs(spell_mage_wildfire_crit, "spell_mage_wildfire_caster_crit", SPELL_AURA_ADD_PCT_MODIFIER, EFFECT_2); } |