diff options
-rw-r--r-- | src/server/scripts/Spells/spell_rogue.cpp | 59 |
1 files changed, 10 insertions, 49 deletions
diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index dc724340f64..ac52ff3768a 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -248,48 +248,34 @@ class spell_rog_deadly_poison : public SpellScript // 32645 - Envenom class spell_rog_envenom : public SpellScript { - void CalculateDamage(SpellEffIndex /*effIndex*/) + void CalculateDamage(Unit* /*victim*/, int32& /*damage*/, int32& flatMod, float& pctMod) const { - int32 damagePerCombo = GetHitDamage(); - if (AuraEffect const* t5 = GetCaster()->GetAuraEffect(SPELL_ROGUE_T5_2P_SET_BONUS, EFFECT_0)) - damagePerCombo += t5->GetAmount(); + pctMod *= GetSpell()->GetPowerTypeCostAmount(POWER_COMBO_POINTS).value_or(0); - int32 finalDamage = damagePerCombo; - std::vector<SpellPowerCost> const& costs = GetSpell()->GetPowerCost(); - auto c = std::find_if(costs.begin(), costs.end(), [](SpellPowerCost const& cost) { return cost.Power == POWER_COMBO_POINTS; }); - if (c != costs.end()) - finalDamage *= c->Amount; - - SetHitDamage(finalDamage); + if (AuraEffect const* t5 = GetCaster()->GetAuraEffect(SPELL_ROGUE_T5_2P_SET_BONUS, EFFECT_0)) + flatMod += t5->GetAmount(); } void Register() override { - OnEffectHitTarget += SpellEffectFn(spell_rog_envenom::CalculateDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + CalcDamage += SpellCalcDamageFn(spell_rog_envenom::CalculateDamage); } }; // 196819 - Eviscerate class spell_rog_eviscerate : public SpellScript { - void CalculateDamage(SpellEffIndex /*effIndex*/) + void CalculateDamage(Unit* /*victim*/, int32& /*damage*/, int32& flatMod, float& pctMod) const { - int32 damagePerCombo = GetHitDamage(); - if (AuraEffect const* t5 = GetCaster()->GetAuraEffect(SPELL_ROGUE_T5_2P_SET_BONUS, EFFECT_0)) - damagePerCombo += t5->GetAmount(); + pctMod *= GetSpell()->GetPowerTypeCostAmount(POWER_COMBO_POINTS).value_or(0); - int32 finalDamage = damagePerCombo; - std::vector<SpellPowerCost> const& costs = GetSpell()->GetPowerCost(); - auto c = std::find_if(costs.begin(), costs.end(), [](SpellPowerCost const& cost) { return cost.Power == POWER_COMBO_POINTS; }); - if (c != costs.end()) - finalDamage *= c->Amount; - - SetHitDamage(finalDamage); + if (AuraEffect const* t5 = GetCaster()->GetAuraEffect(SPELL_ROGUE_T5_2P_SET_BONUS, EFFECT_0)) + flatMod += t5->GetAmount(); } void Register() override { - OnEffectHitTarget += SpellEffectFn(spell_rog_eviscerate::CalculateDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + CalcDamage += SpellCalcDamageFn(spell_rog_eviscerate::CalculateDamage); } }; @@ -580,30 +566,6 @@ class spell_rog_rupture : public AuraScript return ValidateSpellInfo({ SPELL_ROGUE_VENOMOUS_WOUNDS }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) - { - if (Unit* caster = GetCaster()) - { - canBeRecalculated = false; - - float const attackpowerPerCombo[6] = - { - 0.0f, - 0.015f, // 1 point: ${($m1 + $b1*1 + 0.015 * $AP) * 4} damage over 8 secs - 0.024f, // 2 points: ${($m1 + $b1*2 + 0.024 * $AP) * 5} damage over 10 secs - 0.03f, // 3 points: ${($m1 + $b1*3 + 0.03 * $AP) * 6} damage over 12 secs - 0.03428571f, // 4 points: ${($m1 + $b1*4 + 0.03428571 * $AP) * 7} damage over 14 secs - 0.0375f // 5 points: ${($m1 + $b1*5 + 0.0375 * $AP) * 8} damage over 16 secs - }; - - int32 cp = caster->GetPower(POWER_COMBO_POINTS); - if (cp > 5) - cp = 5; - - amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * attackpowerPerCombo[cp]); - } - } - void OnEffectRemoved(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_DEATH) @@ -630,7 +592,6 @@ class spell_rog_rupture : public AuraScript void Register() override { - DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_rog_rupture::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE); OnEffectRemove += AuraEffectRemoveFn(spell_rog_rupture::OnEffectRemoved, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL); } }; |