From 1ed5a11b79f02f3bec303fada5e15024f1cec305 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Thu, 2 May 2019 03:26:31 +0200 Subject: [PATCH] Core/Spells: * updated Concussion Blow spellscript and use proper calculation for damage values * fixed Eviscerate and Ferocious Bite damage bonus calculation * converted Warrior's Shockwave and Victory Rush damage bonus to spellscript and calculate values properly * fixed Death and Decay threat generation amount --- .../custom/custom_2019_05_02_00_world.sql | 13 +++++ src/server/game/Spells/SpellEffects.cpp | 22 -------- src/server/scripts/Spells/spell_druid.cpp | 4 +- src/server/scripts/Spells/spell_rogue.cpp | 8 +-- src/server/scripts/Spells/spell_warrior.cpp | 56 ++++++++++--------- 5 files changed, 50 insertions(+), 53 deletions(-) create mode 100644 sql/updates/world/custom/custom_2019_05_02_00_world.sql diff --git a/sql/updates/world/custom/custom_2019_05_02_00_world.sql b/sql/updates/world/custom/custom_2019_05_02_00_world.sql new file mode 100644 index 0000000000..556cc4c746 --- /dev/null +++ b/sql/updates/world/custom/custom_2019_05_02_00_world.sql @@ -0,0 +1,13 @@ +DELETE FROM `spell_threat` WHERE `entry` IN (52212, 43265); +INSERT INTO `spell_threat` (`entry`, `flatMod`, `pctMod`, `apPctMod`) VALUES +-- Death and Decay +(52212, 0, 1.9, 0); + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN +('spell_warr_shockwave', +'spell_warr_throw'); + +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(46968, 'spell_warr_shockwave'); + +UPDATE `spell_bonus_data` SET `ap_bonus`= 0 WHERE `entry`= 46968; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index eb650f3123..60614bc547 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -397,28 +397,6 @@ void Spell::EffectSchoolDMG(SpellEffIndex effIndex) } break; } - case SPELLFAMILY_WARRIOR: - { - switch (m_spellInfo->Id) - { - // Victory Rush - case 34428: - { - float coeff = m_spellInfo->Effects[effIndex].BasePoints * 0.01f; - damage = m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * coeff; - break; - } - // Shockwave - case 46968: - { - int32 pct = m_caster->CalculateSpellDamage(unitTarget, m_spellInfo, 2); - if (pct > 0) - damage += int32(CalculatePct(m_caster->GetTotalAttackPowerValue(BASE_ATTACK), pct)); - break; - } - } - break; - } case SPELLFAMILY_WARLOCK: { // Incinerate Rank 1 & 2 diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index a78d117c1b..d6d17ac578 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -1588,7 +1588,7 @@ class spell_dru_ferocious_bite : public SpellScript return true; } - void ChangeDamage() + void ChangeDamage(SpellEffIndex /*effIndex*/) { Unit* caster = GetCaster(); if (!caster) @@ -1617,7 +1617,7 @@ class spell_dru_ferocious_bite : public SpellScript void Register() override { - BeforeHit += SpellHitFn(spell_dru_ferocious_bite::ChangeDamage); + OnEffectLaunchTarget += SpellEffectFn(spell_dru_ferocious_bite::ChangeDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); } }; diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index e41923733e..c58bfc7ddc 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -1144,7 +1144,7 @@ class spell_rog_eviscerate : public SpellScript return true; } - void ChangeDamage() + void ChangeDamage(SpellEffIndex /*effIndex*/) { Unit* caster = GetCaster(); if (!caster) @@ -1152,20 +1152,20 @@ class spell_rog_eviscerate : public SpellScript if (Player* player = caster->ToPlayer()) { - int32 damage = GetHitDamage(); + int32 damage = GetEffectValue(); damage += int32(player->GetComboPoints() * (player->GetTotalAttackPowerValue(BASE_ATTACK) * 0.091f)); // Eviscerate and Envenom Bonus Damage (item set effect) if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_ROGUE_EVISCERATE_AND_ENVENOM_BONUS_DAMAGE, EFFECT_0)) damage += player->GetComboPoints() * aurEff->GetAmount(); - SetHitDamage(damage); + SetEffectValue(damage); } } void Register() override { - BeforeHit += SpellHitFn(spell_rog_eviscerate::ChangeDamage); + OnEffectLaunchTarget += SpellEffectFn(spell_rog_eviscerate::ChangeDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); } }; diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index be07cf44b4..bb31a746cd 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -236,30 +236,19 @@ class spell_warr_charge : public SpellScriptLoader }; /// Updated 4.3.4 -class spell_warr_concussion_blow : public SpellScriptLoader +class spell_warr_concussion_blow : public SpellScript { - public: - spell_warr_concussion_blow() : SpellScriptLoader("spell_warr_concussion_blow") { } + PrepareSpellScript(spell_warr_concussion_blow); - class spell_warr_concussion_blow_SpellScript : public SpellScript - { - PrepareSpellScript(spell_warr_concussion_blow_SpellScript); + void HandleDummy(SpellEffIndex effIndex) + { + SetEffectValue(CalculatePct(GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK), GetSpellInfo()->Effects[EFFECT_2].CalcValue())); + } - void HandleDummy(SpellEffIndex /*effIndex*/) - { - SetHitDamage(CalculatePct(GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK), GetEffectValue())); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_warr_concussion_blow_SpellScript::HandleDummy, EFFECT_2, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_warr_concussion_blow_SpellScript(); - } + void Register() override + { + OnEffectLaunchTarget += SpellEffectFn(spell_warr_concussion_blow::HandleDummy, EFFECT_1, SPELL_EFFECT_SCHOOL_DAMAGE); + } }; // Updated 4.3.4 @@ -945,9 +934,9 @@ class spell_warr_victory_rush : public SpellScript }); } - void HandleDamage() + void HandleDamage(SpellEffIndex /*effIndex*/) { - SetHitDamage(CalculatePct(GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK), GetSpellInfo()->Effects[EFFECT_0].BasePoints)); + SetEffectValue(CalculatePct(GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK), GetSpellInfo()->Effects[EFFECT_0].CalcValue())); } void HandleImpendingVictoryHeal(SpellEffIndex /*effIndex*/) @@ -974,7 +963,7 @@ class spell_warr_victory_rush : public SpellScript void Register() override { - OnHit += SpellHitFn(spell_warr_victory_rush::HandleDamage); + OnEffectLaunchTarget += SpellEffectFn(spell_warr_victory_rush::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); OnEffectHitTarget += SpellEffectFn(spell_warr_victory_rush::HandleImpendingVictoryHeal, EFFECT_2, SPELL_EFFECT_HEAL_PCT); } }; @@ -1214,13 +1203,29 @@ class spell_warr_blood_craze : public AuraScript } }; +// 46968 - Shockwave +class spell_warr_shockwave : public SpellScript +{ + PrepareSpellScript(spell_warr_shockwave); + + void HandleDamage(SpellEffIndex /*effIndex*/) + { + SetEffectValue(CalculatePct(GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK), GetSpellInfo()->Effects[EFFECT_2].CalcValue())); + } + + void Register() override + { + OnEffectLaunchTarget += SpellEffectFn(spell_warr_shockwave::HandleDamage, EFFECT_1, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + void AddSC_warrior_spell_scripts() { RegisterAuraScript(spell_warr_blood_craze); new spell_warr_bloodthirst(); new spell_warr_bloodthirst_heal(); new spell_warr_charge(); - new spell_warr_concussion_blow(); + RegisterSpellScript(spell_warr_concussion_blow); RegisterSpellScript(spell_warr_devastate); new spell_warr_deep_wounds(); new spell_warr_execute(); @@ -1236,6 +1241,7 @@ void AddSC_warrior_spell_scripts() new spell_warr_second_wind_trigger(); new spell_warr_shattering_throw(); RegisterAuraScript(spell_warr_shield_specialization); + RegisterSpellScript(spell_warr_shockwave); new spell_warr_slam(); RegisterAuraScript(spell_warr_strikes_of_opportunity); new spell_warr_sudden_death();