diff --git a/data/sql/updates/pending_db_world/rev_1610824463901751500.sql b/data/sql/updates/pending_db_world/rev_1610824463901751500.sql new file mode 100644 index 000000000..fa10615ba --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1610824463901751500.sql @@ -0,0 +1,18 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1610824463901751500'); + +DELETE FROM `spell_script_names` WHERE `ScriptName`="spell_gen_charmed_unit_spell_cooldown"; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(37727, "spell_gen_charmed_unit_spell_cooldown"), +(37851, "spell_gen_charmed_unit_spell_cooldown"), +(37917, "spell_gen_charmed_unit_spell_cooldown"), +(37918, "spell_gen_charmed_unit_spell_cooldown"), +(37919, "spell_gen_charmed_unit_spell_cooldown"), +(47911, "spell_gen_charmed_unit_spell_cooldown"), +(48620, "spell_gen_charmed_unit_spell_cooldown"), +(51748, "spell_gen_charmed_unit_spell_cooldown"), +(51752, "spell_gen_charmed_unit_spell_cooldown"), +(51756, "spell_gen_charmed_unit_spell_cooldown"), +(54996, "spell_gen_charmed_unit_spell_cooldown"), +(54997, "spell_gen_charmed_unit_spell_cooldown"), +(56513, "spell_gen_charmed_unit_spell_cooldown"), +(56524, "spell_gen_charmed_unit_spell_cooldown"); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 194d28a58..92d316db7 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -6766,10 +6766,58 @@ void SpellMgr::LoadDbcDataCorrections() spellInfo->EffectBasePoints[0] = 1; // corrects seat id (points - 1 = seatId) }); - // The Iron Colossus - ApplySpellFix({ 56513, 56524 }, [](SpellEntry* spellInfo) + // Jormungar Strike + ApplySpellFix({ 56513 }, [](SpellEntry* spellInfo) { - spellInfo->RecoveryTime = (spellInfo->Id == 56524 ? 6000 : 2000); + spellInfo->RecoveryTime = 2000; + }); + + ApplySpellFix({ + 37851, // Tag Greater Felfire Diemetradon + 37918 // Arcano-pince + }, [](SpellEntry* spellInfo) + { + spellInfo->RecoveryTime = 3000; + }); + + ApplySpellFix({ + 54997, // Cast Net (tooltip says 10s but sniffs say 6s) + 56524 // Acid Breath + }, [](SpellEntry* spellInfo) + { + spellInfo->RecoveryTime = 6000; + }); + + ApplySpellFix({ + 47911, // EMP + 48620, // Wing Buffet + 51752 // Stampy's Stompy-Stomp + }, [](SpellEntry* spellInfo) + { + spellInfo->RecoveryTime = 10000; + }); + + ApplySpellFix({ + 37727, // Touch of Darkness + 54996 // Ice Slick (tooltip says 20s but sniffs say 12s) + }, [](SpellEntry* spellInfo) + { + spellInfo->RecoveryTime = 12000; + }); + + // Signal Helmet to Attack + ApplySpellFix({ 51748 }, [](SpellEntry* spellInfo) + { + spellInfo->RecoveryTime = 15000; + }); + + ApplySpellFix({ + 51756, // Charge + 37919, //Arcano-dismantle + 37917 //Arcano-Cloak + }, [](SpellEntry* spellInfo) + { + spellInfo->RecoveryTime = 20000; }); // Kaw the Mammoth Destroyer diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 0d1e1bb9b..46f453f3d 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -5043,6 +5043,39 @@ public: } }; +// Used for some spells cast by vehicles or charmed creatures that do not send a cooldown event on their own +class spell_gen_charmed_unit_spell_cooldown : public SpellScriptLoader +{ +public: + spell_gen_charmed_unit_spell_cooldown() : SpellScriptLoader("spell_gen_charmed_unit_spell_cooldown") { } + + class spell_gen_charmed_unit_spell_cooldown_SpellScript : public SpellScript + { + PrepareSpellScript(spell_gen_charmed_unit_spell_cooldown_SpellScript); + + void HandleCast() + { + Unit* caster = GetCaster(); + if (Player* owner = caster->GetCharmerOrOwnerPlayerOrPlayerItself()) + { + WorldPacket data; + caster->BuildCooldownPacket(data, SPELL_COOLDOWN_FLAG_NONE, GetSpellInfo()->Id, GetSpellInfo()->RecoveryTime); + owner->SendDirectMessage(&data); + } + } + + void Register() override + { + OnCast += SpellCastFn(spell_gen_charmed_unit_spell_cooldown_SpellScript::HandleCast); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_gen_charmed_unit_spell_cooldown_SpellScript(); + } +}; + void AddSC_generic_spell_scripts() { // ours: @@ -5171,4 +5204,5 @@ void AddSC_generic_spell_scripts() new spell_gen_whisper_gulch_yogg_saron_whisper(); new spell_gen_eject_all_passengers(); new spell_gen_eject_passenger(); + new spell_gen_charmed_unit_spell_cooldown(); }