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); }