diff --git a/data/sql/updates/pending_db_world/rev_1587839068992670400.sql b/data/sql/updates/pending_db_world/rev_1587839068992670400.sql new file mode 100644 index 000000000..09783412d --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1587839068992670400.sql @@ -0,0 +1,5 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1587839068992670400'); + +DELETE FROM `spell_script_names` WHERE `spell_id`=21149 AND `ScriptName`="spell_item_eggnog"; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(21149,'spell_item_eggnog'); diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 10b15ce4e..4b594c2b1 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -4075,6 +4075,45 @@ public: } }; +enum Eggnog +{ + SPELL_EGG_NOG_REINDEER = 21936, + SPELL_EGG_NOG_SNOWMAN = 21980, +}; +class spell_item_eggnog : public SpellScriptLoader +{ +public: + spell_item_eggnog() : SpellScriptLoader("spell_item_eggnog") { } + + class spell_item_eggnog_SpellScript : public SpellScript + { + PrepareSpellScript(spell_item_eggnog_SpellScript); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + if (!sSpellMgr->GetSpellInfo(SPELL_EGG_NOG_REINDEER) || !sSpellMgr->GetSpellInfo(SPELL_EGG_NOG_SNOWMAN)) + return false; + return true; + } + + void HandleScript(SpellEffIndex /* effIndex */) + { + if (roll_chance_i(40)) + GetCaster()->CastSpell(GetHitUnit(), roll_chance_i(50) ? SPELL_EGG_NOG_REINDEER : SPELL_EGG_NOG_SNOWMAN, GetCastItem()); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_item_eggnog_SpellScript::HandleScript, EFFECT_2, SPELL_EFFECT_INEBRIATE); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_item_eggnog_SpellScript(); + } +}; + void AddSC_item_spell_scripts() { // Ours @@ -4180,4 +4219,5 @@ void AddSC_item_spell_scripts() new spell_item_chicken_cover(); new spell_item_muisek_vessel(); new spell_item_greatmothers_soulcatcher(); + new spell_item_eggnog(); }