aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/scripts/Spells/spell_rogue.cpp59
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);
}
};