From e1e4c6cddc44971054c61df1a884ac7c795c8b73 Mon Sep 17 00:00:00 2001 From: Meramaf <76571216+Meramaf@users.noreply.github.com> Date: Sat, 2 Jul 2022 22:30:58 +0200 Subject: [PATCH] Script/Spell: fix Midsummer's Juggling Torch (#12198) * Script/Spell: fix Midsummer's Juggling Torch * Update juggling_torch_fix.sql * Update data/sql/updates/pending_db_world/juggling_torch_fix.sql Co-authored-by: Nefertumm * Update midsummer.cpp Co-authored-by: Nefertumm --- .../pending_db_world/juggling_torch_fix.sql | 3 ++ src/server/scripts/Events/midsummer.cpp | 34 ++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 data/sql/updates/pending_db_world/juggling_torch_fix.sql diff --git a/data/sql/updates/pending_db_world/juggling_torch_fix.sql b/data/sql/updates/pending_db_world/juggling_torch_fix.sql new file mode 100644 index 000000000..aa85b3bd0 --- /dev/null +++ b/data/sql/updates/pending_db_world/juggling_torch_fix.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` = 45644; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(45644, "spell_midsummer_torch_catch"); diff --git a/src/server/scripts/Events/midsummer.cpp b/src/server/scripts/Events/midsummer.cpp index 66e217d0c..3fe6b35e1 100644 --- a/src/server/scripts/Events/midsummer.cpp +++ b/src/server/scripts/Events/midsummer.cpp @@ -453,7 +453,8 @@ enum eJuggle SPELL_TORCH_CHECK = 45644, SPELL_GIVE_TORCH = 45280, - QUEST_CHECK = 11937, + QUEST_TORCH_CATCHING_A = 11657, + QUEST_TORCH_CATCHING_H = 11923 }; class spell_midsummer_juggling_torch : public SpellScript @@ -507,6 +508,36 @@ class spell_midsummer_juggling_torch : public SpellScript } }; +// 45644 - Juggle Torch (Catch) +class spell_midsummer_torch_catch : public SpellScript +{ + PrepareSpellScript(spell_midsummer_torch_catch); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_GIVE_TORCH }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Player* player = GetHitPlayer(); + if (!player) + { + return; + } + + if (player->GetQuestStatus(QUEST_TORCH_CATCHING_A) == QUEST_STATUS_REWARDED || player->GetQuestStatus(QUEST_TORCH_CATCHING_H) == QUEST_STATUS_REWARDED) + { + player->CastSpell(player, SPELL_GIVE_TORCH); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_midsummer_torch_catch::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + void AddSC_event_midsummer_scripts() { // NPCs @@ -520,4 +551,5 @@ void AddSC_event_midsummer_scripts() RegisterSpellScript(spell_midsummer_torch_quest); RegisterSpellScript(spell_midsummer_fling_torch); RegisterSpellScript(spell_midsummer_juggling_torch); + RegisterSpellScript(spell_midsummer_torch_catch); }