From e273d6f4f0490b3a637dc738db8c9156053dd564 Mon Sep 17 00:00:00 2001 From: Grimgravy Date: Wed, 21 Sep 2022 12:03:43 -0300 Subject: [PATCH] fix(Scripts/Quest): improved egg freezing (#12575) --- .../rev_1659051490224635700.sql | 5 ++++ src/server/scripts/Spells/spell_item.cpp | 24 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1659051490224635700.sql diff --git a/data/sql/updates/pending_db_world/rev_1659051490224635700.sql b/data/sql/updates/pending_db_world/rev_1659051490224635700.sql new file mode 100644 index 000000000..3a9d984a4 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1659051490224635700.sql @@ -0,0 +1,5 @@ +-- +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_item_freeze_rookery_egg'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(15748, 'spell_item_freeze_rookery_egg'), -- item +(16028, 'spell_item_freeze_rookery_egg'); -- quest diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 9eeaeb14e..2dc0731cc 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -3702,6 +3702,29 @@ class spell_item_snowman : public SpellScript } }; +// https://www.wowhead.com/wotlk/spell=16028 Freeze Rookery Egg - Prototype +// https://www.wowhead.com/wotlk/spell=15748 Freeze Rookery Egg +class spell_item_freeze_rookery_egg : public SpellScript +{ + PrepareSpellScript(spell_item_freeze_rookery_egg); + + void HandleOpenObject(SpellEffIndex effIndex) + { + PreventHitDefaultEffect(effIndex); + + if (GameObject* rookery = GetHitGObj()) + { + if (rookery->getLootState() == GO_READY) + rookery->UseDoorOrButton(0, true); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_item_freeze_rookery_egg::HandleOpenObject, EFFECT_0, SPELL_EFFECT_OPEN_LOCK); + } +}; + void AddSC_item_spell_scripts() { RegisterSpellScript(spell_item_massive_seaforium_charge); @@ -3816,4 +3839,5 @@ void AddSC_item_spell_scripts() RegisterSpellScript(spell_item_wraith_scythe_drain_life); RegisterSpellScript(spell_item_mirrens_drinking_hat); RegisterSpellScript(spell_item_snowman); + RegisterSpellScript(spell_item_freeze_rookery_egg); }