From f9f65a89579b819d69eb810818db7c24d0079d4f Mon Sep 17 00:00:00 2001 From: offl <11556157+offl@users.noreply.github.com> Date: Mon, 28 Mar 2022 00:42:52 +0300 Subject: Scripts/Spells: BOTM Empty Bottle (#27889) (cherry picked from commit cedd95f9850d2c6d25d7dfda59d3e16e97a26b40) --- src/server/scripts/Events/brewfest.cpp | 64 ++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'src/server/scripts/Events/brewfest.cpp') diff --git a/src/server/scripts/Events/brewfest.cpp b/src/server/scripts/Events/brewfest.cpp index 084a42bc740..75335504ace 100644 --- a/src/server/scripts/Events/brewfest.cpp +++ b/src/server/scripts/Events/brewfest.cpp @@ -414,6 +414,68 @@ class spell_brewfest_mount_transformation : public SpellScript } }; +enum CreateEmptyBrewBottle +{ + SPELL_BOTM_CREATE_EMPTY_BREW_BOTTLE = 51655 +}; + +// 42254, 42255, 42256, 42257, 42258, 42259, 42260, 42261, 42263, 42264, 43959, 43961 - Weak Alcohol +class spell_brewfest_botm_weak_alcohol : public SpellScript +{ + PrepareSpellScript(spell_brewfest_botm_weak_alcohol); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_BOTM_CREATE_EMPTY_BREW_BOTTLE }); + } + + void HandleAfterCast() + { + GetCaster()->CastSpell(GetCaster(), SPELL_BOTM_CREATE_EMPTY_BREW_BOTTLE, true); + } + + void Register() override + { + AfterCast += SpellCastFn(spell_brewfest_botm_weak_alcohol::HandleAfterCast); + } +}; + +enum EmptyBottleThrow +{ + SPELL_BOTM_EMPTY_BOTTLE_THROW_IMPACT_CREATURE = 51695, // Just unit, not creature + SPELL_BOTM_EMPTY_BOTTLE_THROW_IMPACT_GROUND = 51697 +}; + +// 51694 - BOTM - Empty Bottle Throw - Resolve +class spell_brewfest_botm_empty_bottle_throw_resolve : public SpellScript +{ + PrepareSpellScript(spell_brewfest_botm_empty_bottle_throw_resolve); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_BOTM_EMPTY_BOTTLE_THROW_IMPACT_CREATURE, + SPELL_BOTM_EMPTY_BOTTLE_THROW_IMPACT_GROUND + }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + + if (Unit* target = GetHitUnit()) + caster->CastSpell(target, SPELL_BOTM_EMPTY_BOTTLE_THROW_IMPACT_CREATURE, true); + else + caster->CastSpell(GetHitDest()->GetPosition(), SPELL_BOTM_EMPTY_BOTTLE_THROW_IMPACT_GROUND, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_brewfest_botm_empty_bottle_throw_resolve::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + void AddSC_event_brewfest() { RegisterSpellScript(spell_brewfest_giddyup); @@ -426,4 +488,6 @@ void AddSC_event_brewfest() RegisterSpellScript(spell_brewfest_dismount_ram); RegisterSpellScript(spell_brewfest_barker_bunny); RegisterSpellScript(spell_brewfest_mount_transformation); + RegisterSpellScript(spell_brewfest_botm_weak_alcohol); + RegisterSpellScript(spell_brewfest_botm_empty_bottle_throw_resolve); } -- cgit v1.2.3