diff --git a/data/sql/updates/pending_db_world/rev_1632482613720296800.sql b/data/sql/updates/pending_db_world/rev_1632482613720296800.sql new file mode 100644 index 000000000..ce773438b --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1632482613720296800.sql @@ -0,0 +1,5 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1632482613720296800'); + +DELETE FROM `spell_script_names` WHERE `spell_id`=43714; +INSERT INTO `spell_script_names` VALUES +(43714,'spell_brewfest_relay_race_force_cast'); diff --git a/src/server/scripts/Events/brewfest.cpp b/src/server/scripts/Events/brewfest.cpp index 090cfebbe..b072a77c2 100644 --- a/src/server/scripts/Events/brewfest.cpp +++ b/src/server/scripts/Events/brewfest.cpp @@ -1904,6 +1904,46 @@ public: } }; +class spell_brewfest_relay_race_force_cast : public SpellScriptLoader +{ +public: + spell_brewfest_relay_race_force_cast() : SpellScriptLoader("spell_brewfest_relay_race_force_cast") {} + + class spell_brewfest_relay_race_force_cast_SpellScript : public SpellScript + { + PrepareSpellScript(spell_brewfest_relay_race_force_cast_SpellScript); + + SpellCastResult CheckItem() + { + if (Unit* target = GetExplTargetUnit()) + { + if (SpellInfo const* triggeredSpellInfo = sSpellMgr->GetSpellInfo(GetSpellInfo()->Effects[EFFECT_0].TriggerSpell)) + { + if (Player* player = target->ToPlayer()) + { + if (player->HasItemCount(triggeredSpellInfo->Reagent[0])) + { + return SPELL_CAST_OK; + } + } + } + } + + return SPELL_FAILED_DONT_REPORT; + } + + void Register() override + { + OnCheckCast += SpellCheckCastFn(spell_brewfest_relay_race_force_cast_SpellScript::CheckItem); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_brewfest_relay_race_force_cast_SpellScript(); + } +}; + void AddSC_event_brewfest_scripts() { // Npcs @@ -1928,6 +1968,7 @@ void AddSC_event_brewfest_scripts() new spell_brewfest_unfill_keg(); new spell_brewfest_toss_mug(); new spell_brewfest_add_mug(); + new spell_brewfest_relay_race_force_cast(); new spell_brewfest_reveler_transform(); // beer effect