From 47cc6a7a4b73d7bddd78949325a59c7414401e54 Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Fri, 30 May 2025 16:37:38 +0300 Subject: [PATCH] fix(Scripts/Items): Noblegarden Chocolate instantly giving Well Fed buff (#22150) --- .../rev_1747599295510408800.sql | 4 ++ src/server/scripts/Events/noblegarden.cpp | 42 ++++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 data/sql/updates/pending_db_world/rev_1747599295510408800.sql diff --git a/data/sql/updates/pending_db_world/rev_1747599295510408800.sql b/data/sql/updates/pending_db_world/rev_1747599295510408800.sql new file mode 100644 index 000000000..897754e95 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1747599295510408800.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=-61874 AND `spell_effect`=24870; +DELETE FROM `spell_script_names` WHERE `spell_id`=61874 AND `ScriptName`='spell_item_noblegarden_chocolate'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (61874, 'spell_item_noblegarden_chocolate'); diff --git a/src/server/scripts/Events/noblegarden.cpp b/src/server/scripts/Events/noblegarden.cpp index df04be6c1..4187087f1 100644 --- a/src/server/scripts/Events/noblegarden.cpp +++ b/src/server/scripts/Events/noblegarden.cpp @@ -21,7 +21,8 @@ enum eNoblegarden { - SPELL_NOBLEGARDEN_BUNNY = 61734 + SPELL_NOBLEGARDEN_BUNNY = 61734, + SPELL_WELL_FED = 24870, }; // 61712 Summon Noblegarden Bunny Controller @@ -55,7 +56,46 @@ class spell_summon_noblegarden_bunny_controller : public SpellScript } }; +// 61874 - Food (Noblegarden Chocolate, item 44791) +class spell_item_noblegarden_chocolate : public AuraScript +{ + PrepareAuraScript(spell_item_noblegarden_chocolate); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_WELL_FED }); + } + + bool Load() override + { + _buffGiven = false; + return true; + } + + void HandlePeriodic(AuraEffect const* /*aurEff*/) + { + if (Unit* caster = GetCaster()) + { + uint32 duration = static_cast(GetDuration()); + if (duration <= 14000 && !_buffGiven) + { + _buffGiven = true; + caster->CastSpell(caster, SPELL_WELL_FED, true); + } + } + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_item_noblegarden_chocolate::HandlePeriodic, EFFECT_0, SPELL_AURA_OBS_MOD_HEALTH); + } + +private: + bool _buffGiven; +}; + void AddSC_event_noblegarden_scripts() { RegisterSpellScript(spell_summon_noblegarden_bunny_controller); + RegisterSpellScript(spell_item_noblegarden_chocolate); }