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