From de50ce3305ee3e61cc62f01c2dfdf4d7ec3b56bc Mon Sep 17 00:00:00 2001 From: Ludwig Date: Sun, 1 Oct 2023 09:26:18 +0200 Subject: [PATCH] fix(Scripts/Midsummer): Randomize ribbon pole beam color (#17380) * fix(Scripts/Midsummer): Randomize ribbon pole beam color * Update data/sql/updates/pending_db_world/rev_1695820418952974700.sql Co-authored-by: Dan <83884799+elthehablo@users.noreply.github.com> * Add Validate() to spell script spell_midsummer_ribbon_pole --------- Co-authored-by: Dan <83884799+elthehablo@users.noreply.github.com> --- .../rev_1695820418952974700.sql | 7 ++++ src/server/scripts/Events/midsummer.cpp | 33 +++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1695820418952974700.sql diff --git a/data/sql/updates/pending_db_world/rev_1695820418952974700.sql b/data/sql/updates/pending_db_world/rev_1695820418952974700.sql new file mode 100644 index 000000000..63003177a --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1695820418952974700.sql @@ -0,0 +1,7 @@ +-- #12145 midsummer add spell script spell_midsummer_ribbon_pole_visual +DELETE FROM `spell_script_names` WHERE `spell_id` IN (29531, 29705, 29726, 29727); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(29531, 'spell_midsummer_ribbon_pole_visual'), +(29705, 'spell_midsummer_ribbon_pole_visual'), +(29726, 'spell_midsummer_ribbon_pole_visual'), +(29727, 'spell_midsummer_ribbon_pole_visual'); diff --git a/src/server/scripts/Events/midsummer.cpp b/src/server/scripts/Events/midsummer.cpp index e74b0a3de..998a6211b 100644 --- a/src/server/scripts/Events/midsummer.cpp +++ b/src/server/scripts/Events/midsummer.cpp @@ -211,6 +211,10 @@ class spell_gen_crab_disguise : public AuraScript enum RibbonPole { SPELL_RIBBON_POLE_CHANNEL_VISUAL = 29172, + SPELL_RIBBON_POLE_CHANNEL_VISUAL_2 = 29531, + SPELL_TEST_RIBBON_POLE_CHANNEL_BLUE = 29705, + SPELL_TEST_RIBBON_POLE_CHANNEL_RED = 29726, + SPELL_TEST_RIBBON_POLE_CHANNEL_PINK = 29727, SPELL_RIBBON_POLE_XP = 29175, SPELL_RIBBON_POLE_FIREWORKS = 46971, @@ -221,6 +225,17 @@ class spell_midsummer_ribbon_pole : public AuraScript { PrepareAuraScript(spell_midsummer_ribbon_pole) + bool Validate(SpellInfo const* /*spell*/) override + { + return ValidateSpellInfo( + { + SPELL_RIBBON_POLE_XP, + SPELL_TEST_RIBBON_POLE_CHANNEL_BLUE, + SPELL_TEST_RIBBON_POLE_CHANNEL_RED, + SPELL_TEST_RIBBON_POLE_CHANNEL_PINK + }); + } + void HandleEffectPeriodic(AuraEffect const* /*aurEff*/) { PreventDefaultAction(); @@ -229,7 +244,9 @@ class spell_midsummer_ribbon_pole : public AuraScript Creature* cr = target->FindNearestCreature(NPC_RIBBON_POLE_DEBUG_TARGET, 10.0f); if (!cr) { - target->RemoveAura(SPELL_RIBBON_POLE_CHANNEL_VISUAL); + target->RemoveAura(SPELL_TEST_RIBBON_POLE_CHANNEL_BLUE); + target->RemoveAura(SPELL_TEST_RIBBON_POLE_CHANNEL_RED); + target->RemoveAura(SPELL_TEST_RIBBON_POLE_CHANNEL_PINK); SetDuration(1); return; } @@ -254,7 +271,19 @@ class spell_midsummer_ribbon_pole : public AuraScript void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { Unit* ar = GetTarget(); - ar->CastSpell(ar, SPELL_RIBBON_POLE_CHANNEL_VISUAL, true); + switch (urand(0, 2)) + { + case 0: + ar->CastSpell(ar, SPELL_TEST_RIBBON_POLE_CHANNEL_BLUE, true); + break; + case 1: + ar->CastSpell(ar, SPELL_TEST_RIBBON_POLE_CHANNEL_RED, true); + break; + case 2: + default: + ar->CastSpell(ar, SPELL_TEST_RIBBON_POLE_CHANNEL_PINK, true); + break; + } } void Register() override