From 53e0779ae82332ba965723a6c2d08e5f89260577 Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Tue, 27 Aug 2024 22:25:41 +0200 Subject: [PATCH] fix(Scripts/Spells): General's Heart trinket (#19756) * handle aura with spell_gen_absorb0_hitlimit1 * refactor enscapsulate limit --- .../pending_db_world/rev_1724764338252798941.sql | 3 +++ src/server/scripts/Spells/spell_generic.cpp | 12 +++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1724764338252798941.sql diff --git a/data/sql/updates/pending_db_world/rev_1724764338252798941.sql b/data/sql/updates/pending_db_world/rev_1724764338252798941.sql new file mode 100644 index 000000000..d35775f79 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1724764338252798941.sql @@ -0,0 +1,3 @@ +-- +DELETE FROM `spell_script_names` WHERE `spell_id` = 64765; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (64765, 'spell_gen_absorb0_hitlimit1'); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index d5ca8b153..2f3765c91 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1195,29 +1195,31 @@ class spell_gen_haunted_aura : public AuraScript }; /* 39228 - Argussian Compass - 60218 - Essence of Gossamer */ + 60218 - Essence of Gossamer + 64765 - The General's Heart */ class spell_gen_absorb0_hitlimit1 : public AuraScript { PrepareAuraScript(spell_gen_absorb0_hitlimit1); - uint32 limit; - bool Load() override { // Max absorb stored in 1 dummy effect - limit = GetSpellInfo()->Effects[EFFECT_1].CalcValue(); + _limit = GetSpellInfo()->Effects[EFFECT_1].CalcValue(); return true; } void Absorb(AuraEffect* /*aurEff*/, DamageInfo& /*dmgInfo*/, uint32& absorbAmount) { - absorbAmount = std::min(limit, absorbAmount); + absorbAmount = std::min(_limit, absorbAmount); } void Register() override { OnEffectAbsorb += AuraEffectAbsorbFn(spell_gen_absorb0_hitlimit1::Absorb, EFFECT_0); } + +private: + uint32 _limit; }; enum AdaptiveWarding