aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-04-29 20:05:41 +0200
committerShauren <shauren.trinity@gmail.com>2016-04-29 20:05:41 +0200
commitcc262ec12e8e51e5b295a160b1c02e4568bd5810 (patch)
tree6ed8a6ebcf739524ec1440ca10ef60657758c723 /src
parentc963e703d53a9578cb5320ac0c3de24996e05906 (diff)
Core/Spells: Updated Eviscerate and Envenom formulas
Closes #16886 Closes #16887
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp51
-rw-r--r--src/server/scripts/Spells/spell_rogue.cpp67
2 files changed, 66 insertions, 52 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 4d1c5ab06a9..667249d897e 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -503,57 +503,6 @@ void Spell::EffectSchoolDMG(SpellEffIndex effIndex)
}
break;
}
- case SPELLFAMILY_ROGUE:
- {
- // Envenom
- if (m_spellInfo->SpellFamilyFlags[1] & 0x00000008)
- {
- if (Player* player = m_caster->ToPlayer())
- {
- // consume from stack dozes not more that have combo-points
- if (uint32 combo = player->GetComboPoints())
- {
- // Lookup for Deadly poison (only attacker applied)
- if (AuraEffect const* aurEff = unitTarget->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_ROGUE, flag128(0x00010000, 0, 0), m_caster->GetGUID()))
- {
- // count consumed deadly poison doses at target
- uint32 spellId = aurEff->GetId();
-
- uint32 doses = aurEff->GetBase()->GetStackAmount();
- if (doses > combo)
- doses = combo;
-
- for (uint32 i = 0; i < doses; ++i)
- unitTarget->RemoveAuraFromStack(spellId, m_caster->GetGUID());
-
- damage *= doses;
- damage += int32(player->GetTotalAttackPowerValue(BASE_ATTACK) * 0.09f * combo);
- }
-
- // Eviscerate and Envenom Bonus Damage (item set effect)
- if (m_caster->HasAura(37169))
- damage += combo * 40;
- }
- }
- }
- // Eviscerate
- else if (m_spellInfo->SpellFamilyFlags[0] & 0x00020000)
- {
- if (Player* player = m_caster->ToPlayer())
- {
- if (uint32 combo = player->GetComboPoints())
- {
- float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK);
- damage += irand(int32(ap * combo * 0.03f), int32(ap * combo * 0.07f));
-
- // Eviscerate and Envenom Bonus Damage (item set effect)
- if (m_caster->HasAura(37169))
- damage += combo*40;
- }
- }
- }
- break;
- }
case SPELLFAMILY_DEATHKNIGHT:
{
// Blood Boil - bonus for diseased targets
diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp
index 6e315e32e5a..a4f876b289e 100644
--- a/src/server/scripts/Spells/spell_rogue.cpp
+++ b/src/server/scripts/Spells/spell_rogue.cpp
@@ -53,7 +53,8 @@ enum RogueSpells
SPELL_ROGUE_SERRATED_BLADES_R1 = 14171,
SPELL_ROGUE_RUPTURE = 1943,
SPELL_ROGUE_HONOR_AMONG_THIEVES = 51698,
- SPELL_ROGUE_HONOR_AMONG_THIEVES_PROC = 51699
+ SPELL_ROGUE_HONOR_AMONG_THIEVES_PROC = 51699,
+ SPELL_ROGUE_T5_2P_SET_BONUS = 37169
};
enum RogueSpellIcons
@@ -944,6 +945,68 @@ public:
}
};
+// 2098 - Eviscerate
+class spell_rog_eviscerate : public SpellScriptLoader
+{
+public:
+ spell_rog_eviscerate() : SpellScriptLoader("spell_rog_eviscerate") { }
+
+ class spell_rog_eviscerate_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_rog_eviscerate_SpellScript);
+
+ void CalculateDamage(SpellEffIndex /*effIndex*/)
+ {
+ int32 damagePerCombo = int32(GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK) * 0.559f);
+ 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));
+ }
+
+ void Register() override
+ {
+ OnEffectLaunchTarget += SpellEffectFn(spell_rog_eviscerate_SpellScript::CalculateDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ }
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_rog_eviscerate_SpellScript();
+ }
+};
+
+// 32645 - Envenom
+class spell_rog_envenom : public SpellScriptLoader
+{
+public:
+ spell_rog_envenom() : SpellScriptLoader("spell_rog_envenom") { }
+
+ class spell_rog_envenom_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_rog_envenom_SpellScript);
+
+ void CalculateDamage(SpellEffIndex /*effIndex*/)
+ {
+ int32 damagePerCombo = int32(GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK) * 0.417f);
+ 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));
+ }
+
+ void Register() override
+ {
+ OnEffectLaunchTarget += SpellEffectFn(spell_rog_envenom_SpellScript::CalculateDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ }
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_rog_envenom_SpellScript();
+ }
+};
+
void AddSC_rogue_spell_scripts()
{
new spell_rog_blade_flurry();
@@ -963,4 +1026,6 @@ void AddSC_rogue_spell_scripts()
new spell_rog_tricks_of_the_trade_proc();
new spell_rog_serrated_blades();
new spell_rog_honor_among_thieves();
+ new spell_rog_eviscerate();
+ new spell_rog_envenom();
}