From cc60bc0c353573f8b3d5b3d8024407f80912f24f Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Mon, 25 Sep 2023 06:10:23 -0300 Subject: [PATCH] =?UTF-8?q?fix(Scripts/Spells):=20Fix=20Healing=20&=20Mana?= =?UTF-8?q?=20injectors=20not=20giving=20bonus=20to=E2=80=A6=20(#17348)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(Scripts/Spells): Fix Healing & Mana injectors not giving bonus to engineers * Update SpellEffects.cpp * Update spell_item.cpp --- .../rev_1695609935652952000.sql | 7 ++++ src/server/game/Spells/SpellEffects.cpp | 7 ---- src/server/scripts/Spells/spell_item.cpp | 35 ++++++++++++++++--- 3 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1695609935652952000.sql diff --git a/data/sql/updates/pending_db_world/rev_1695609935652952000.sql b/data/sql/updates/pending_db_world/rev_1695609935652952000.sql new file mode 100644 index 000000000..9ac4d6392 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1695609935652952000.sql @@ -0,0 +1,7 @@ +-- +DELETE FROM `spell_script_names` WHERE `spell_id` IN (67486, 67489, 67487, 67490); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(67486, 'spell_item_healing_injector'), +(67489, 'spell_item_healing_injector'), +(67487, 'spell_item_mana_injector'), +(67490, 'spell_item_mana_injector'); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 91a6fc804..ea793ce8a 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1930,13 +1930,6 @@ void Spell::EffectEnergize(SpellEffIndex effIndex) case 48542: // Revitalize damage = int32(CalculatePct(unitTarget->GetMaxPower(power), damage)); break; - case 67490: // Runic Mana Injector (mana gain increased by 25% for engineers - 3.2.0 patch change) - { - if (Player* player = m_caster->ToPlayer()) - if (player->HasSkill(SKILL_ENGINEERING)) - AddPct(damage, 25); - break; - } case 71132: // Glyph of Shadow Word: Pain damage = int32(CalculatePct(unitTarget->GetCreateMana(), 1)); // set 1 as value, missing in dbc break; diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index a1cc175c8..17d9156e9 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -3342,9 +3342,9 @@ class spell_item_rocket_boots : public SpellScript } }; -class spell_item_runic_healing_injector : public SpellScript +class spell_item_healing_injector : public SpellScript { - PrepareSpellScript(spell_item_runic_healing_injector); + PrepareSpellScript(spell_item_healing_injector); bool Load() override { @@ -3360,7 +3360,33 @@ class spell_item_runic_healing_injector : public SpellScript void Register() override { - OnEffectHitTarget += SpellEffectFn(spell_item_runic_healing_injector::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL); + OnEffectHitTarget += SpellEffectFn(spell_item_healing_injector::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL); + } +}; + +class spell_item_mana_injector : public SpellScript +{ + PrepareSpellScript(spell_item_mana_injector); + + bool Load() override + { + return GetCaster()->GetTypeId() == TYPEID_PLAYER; + } + + void HandleEnergize(SpellEffIndex /*effIndex*/) + { + if (Player* caster = GetCaster()->ToPlayer()) + { + if (caster->HasSkill(SKILL_ENGINEERING)) + { + SetEffectValue(GetEffectValue() * 1.25f); + } + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_item_mana_injector::HandleEnergize, EFFECT_0, SPELL_EFFECT_ENERGIZE); } }; @@ -3959,7 +3985,8 @@ void AddSC_item_spell_scripts() RegisterSpellScript(spell_item_nitro_boots); RegisterSpellScript(spell_item_teach_language); RegisterSpellScript(spell_item_rocket_boots); - RegisterSpellScript(spell_item_runic_healing_injector); + RegisterSpellScript(spell_item_healing_injector); + RegisterSpellScript(spell_item_mana_injector); RegisterSpellScript(spell_item_pygmy_oil); RegisterSpellScript(spell_item_unusual_compass); RegisterSpellScript(spell_item_chicken_cover);