aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp48
1 files changed, 11 insertions, 37 deletions
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index d214753fee3..d7b09aab997 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -2168,46 +2168,20 @@ class spell_pri_power_word_shield : public AuraScript
});
}
- void CalculateAmount(AuraEffect const* auraEffect, int32& amount, bool& canBeRecalculated) const
+ void CalculateAbsorb(AuraEffect const* aurEff, Unit* /*victim*/, int32& /*absorb*/, int32& /*flatMod*/, float& pctMod)
{
- canBeRecalculated = false;
-
- if (Unit* caster = GetCaster())
- {
- float modifiedAmount = caster->SpellBaseDamageBonusDone(GetSpellInfo()->GetSchoolMask()) * 4.638f;
-
- if (Player* player = caster->ToPlayer())
- {
- AddPct(modifiedAmount, player->GetRatingBonusValue(CR_VERSATILITY_DAMAGE_DONE));
-
- // Mastery: Grace (TBD: move into DoEffectCalcDamageAndHealing hook with a new SpellScript and AuraScript).
- if (AuraEffect const* masteryGraceEffect = caster->GetAuraEffect(SPELL_PRIEST_MASTERY_GRACE, EFFECT_0))
- if (GetUnitOwner()->HasAura(SPELL_PRIEST_ATONEMENT_EFFECT))
- AddPct(modifiedAmount, masteryGraceEffect->GetAmount());
-
- switch (player->GetPrimarySpecialization())
- {
- case ChrSpecialization::PriestDiscipline:
- modifiedAmount *= 1.37f;
- break;
- case ChrSpecialization::PriestShadow:
- modifiedAmount *= 1.25f;
- if (caster->HasAura(SPELL_PVP_RULES_ENABLED_HARDCODED))
- modifiedAmount *= 0.8f;
- break;
- default:
- break;
- }
- }
+ Unit* caster = GetCaster();
- float critChanceDone = caster->SpellCritChanceDone(nullptr, auraEffect, GetSpellInfo()->GetSchoolMask(), GetSpellInfo()->GetAttackType());
- float critChanceTaken = GetUnitOwner()->SpellCritChanceTaken(caster, nullptr, auraEffect, GetSpellInfo()->GetSchoolMask(), critChanceDone, GetSpellInfo()->GetAttackType());
+ // Mastery: Grace (TBD: move into DoEffectCalcDamageAndHealing hook with a new SpellScript and AuraScript).
+ if (AuraEffect const* masteryGraceEffect = caster->GetAuraEffect(SPELL_PRIEST_MASTERY_GRACE, EFFECT_0))
+ if (GetUnitOwner()->HasAura(SPELL_PRIEST_ATONEMENT_EFFECT))
+ AddPct(pctMod, masteryGraceEffect->GetAmount());
- if (roll_chance_f(critChanceTaken))
- modifiedAmount *= 2;
+ float critChanceDone = caster->SpellCritChanceDone(nullptr, aurEff, GetSpellInfo()->GetSchoolMask(), GetSpellInfo()->GetAttackType());
+ float critChanceTaken = GetUnitOwner()->SpellCritChanceTaken(caster, nullptr, aurEff, GetSpellInfo()->GetSchoolMask(), critChanceDone, GetSpellInfo()->GetAttackType());
- amount = modifiedAmount;
- }
+ if (roll_chance_f(critChanceTaken))
+ pctMod *= 2;
}
void HandleOnApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) const
@@ -2233,7 +2207,7 @@ class spell_pri_power_word_shield : public AuraScript
void Register() override
{
- DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pri_power_word_shield::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB);
+ DoEffectCalcDamageAndHealing += AuraEffectCalcAbsorbFn(spell_pri_power_word_shield::CalculateAbsorb, EFFECT_0);
AfterEffectApply += AuraEffectApplyFn(spell_pri_power_word_shield::HandleOnApply, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
AfterEffectRemove += AuraEffectRemoveFn(spell_pri_power_word_shield::HandleOnRemove, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB, AURA_EFFECT_HANDLE_REAL);
}