From 00c0e202ef3b036bc7ffb67549105418e485b0c0 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Thu, 5 Dec 2024 09:46:07 -0300 Subject: [PATCH] fix(Scripts/ZulAman): Akil'zon storm damage should multiply per tick (#20842) --- .../rev_1733366049086007200.sql | 4 ++++ .../EasternKingdoms/ZulAman/boss_akilzon.cpp | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1733366049086007200.sql diff --git a/data/sql/updates/pending_db_world/rev_1733366049086007200.sql b/data/sql/updates/pending_db_world/rev_1733366049086007200.sql new file mode 100644 index 000000000..b51b0598b --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1733366049086007200.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `spell_script_names` WHERE `spell_id` = 43657; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(43657, 'spell_electrical_storm_proc'); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp index 65c6112b0..7a8fc0ac2 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp @@ -20,6 +20,8 @@ #include "GridNotifiers.h" #include "GridNotifiersImpl.h" #include "ScriptedCreature.h" +#include "SpellAuras.h" +#include "SpellAuraEffects.h" #include "SpellScript.h" #include "SpellScriptLoader.h" #include "Weather.h" @@ -321,9 +323,30 @@ class spell_electrial_storm : public AuraScript } }; +// 43657 - Electrical Storm +class spell_electrical_storm_proc : public SpellScript +{ + PrepareSpellScript(spell_electrical_storm_proc); + + void HandleDamageCalc(SpellEffIndex /*effIndex*/) + { + if (Aura* aura = GetCaster()->GetAura(SPELL_ELECTRICAL_STORM)) + { + uint8 multiplier = aura->GetEffect(EFFECT_1)->GetTickNumber(); + SetHitDamage(GetHitDamage() * multiplier); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_electrical_storm_proc::HandleDamageCalc, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + void AddSC_boss_akilzon() { RegisterZulAmanCreatureAI(boss_akilzon); RegisterZulAmanCreatureAI(npc_akilzon_eagle); RegisterSpellScript(spell_electrial_storm); + RegisterSpellScript(spell_electrical_storm_proc); }