aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2018_05_12_01_world.sql3
-rw-r--r--src/server/scripts/Spells/spell_rogue.cpp27
2 files changed, 23 insertions, 7 deletions
diff --git a/sql/updates/world/master/2018_05_12_01_world.sql b/sql/updates/world/master/2018_05_12_01_world.sql
new file mode 100644
index 00000000000..4655eee28c3
--- /dev/null
+++ b/sql/updates/world/master/2018_05_12_01_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_rog_eviscerate';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(196819, 'spell_rog_eviscerate');
diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp
index 57ee42572f9..03bb6ea5d5e 100644
--- a/src/server/scripts/Spells/spell_rogue.cpp
+++ b/src/server/scripts/Spells/spell_rogue.cpp
@@ -28,6 +28,7 @@
#include "Log.h"
#include "ObjectAccessor.h"
#include "Player.h"
+#include "Spell.h"
#include "SpellAuraEffects.h"
#include "SpellHistory.h"
#include "SpellMgr.h"
@@ -915,7 +916,7 @@ public:
}
};
-// 2098 - Eviscerate
+// 196819 - Eviscerate
class spell_rog_eviscerate : public SpellScriptLoader
{
public:
@@ -927,16 +928,22 @@ public:
void CalculateDamage(SpellEffIndex /*effIndex*/)
{
- int32 damagePerCombo = int32(GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK) * 0.559f);
+ int32 damagePerCombo = GetHitDamage();
if (AuraEffect const* t5 = GetCaster()->GetAuraEffect(SPELL_ROGUE_T5_2P_SET_BONUS, EFFECT_0))
damagePerCombo += t5->GetAmount();
- SetEffectValue(GetEffectValue() + damagePerCombo * GetCaster()->GetPower(POWER_COMBO_POINTS));
+ 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);
}
void Register() override
{
- OnEffectLaunchTarget += SpellEffectFn(spell_rog_eviscerate_SpellScript::CalculateDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ OnEffectHitTarget += SpellEffectFn(spell_rog_eviscerate_SpellScript::CalculateDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
@@ -958,16 +965,22 @@ public:
void CalculateDamage(SpellEffIndex /*effIndex*/)
{
- int32 damagePerCombo = int32(GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK) * 0.417f);
+ int32 damagePerCombo = GetHitDamage();
if (AuraEffect const* t5 = GetCaster()->GetAuraEffect(SPELL_ROGUE_T5_2P_SET_BONUS, EFFECT_0))
damagePerCombo += t5->GetAmount();
- SetEffectValue(GetEffectValue() + damagePerCombo * GetCaster()->GetPower(POWER_COMBO_POINTS));
+ 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);
}
void Register() override
{
- OnEffectLaunchTarget += SpellEffectFn(spell_rog_envenom_SpellScript::CalculateDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ OnEffectHitTarget += SpellEffectFn(spell_rog_envenom_SpellScript::CalculateDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};