diff options
author | Wyrserth <43747507+Wyrserth@users.noreply.github.com> | 2019-05-17 12:08:20 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-05 18:44:59 +0100 |
commit | fd030069f79adeb420564386f48198e50e4d37f8 (patch) | |
tree | 23ecf7b8c98fcac894a183c8501b6ba4af5b40bd | |
parent | 4f49cef15c5da51174ceb0932b28ae366c62dfb2 (diff) |
Core/Spell: add proper cooldowns to some spells used by vehicles (#23260)
* Core/Spell: add proper cooldowns to some spells used by vehicles, thanks to jackpoz and sirikfoll.
* Add Wing Buffet and Stampy's Stompy-Stomp.
* Add Tag Greater Felfire Diemetradon and Touch of Darkness.
* Rename 9999_99_99_99_world.sql to 2019_05_17_00_world.sql
(cherry picked from commit 4d04344b414adc965bd2760d3f30338bcce70431)
-rw-r--r-- | sql/updates/world/master/2021_12_05_32_world_2019_05_17_00_world.sql | 13 | ||||
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 49 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 26 |
3 files changed, 88 insertions, 0 deletions
diff --git a/sql/updates/world/master/2021_12_05_32_world_2019_05_17_00_world.sql b/sql/updates/world/master/2021_12_05_32_world_2019_05_17_00_world.sql new file mode 100644 index 00000000000..68b862d3cca --- /dev/null +++ b/sql/updates/world/master/2021_12_05_32_world_2019_05_17_00_world.sql @@ -0,0 +1,13 @@ +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"), +(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 98b0d414f95..42108d396c6 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3924,6 +3924,55 @@ void SpellMgr::LoadSpellInfoCorrections() }); }); + // Tag Greater Felfire Diemetradon + ApplySpellFix({ 37851 }, [](SpellInfo* spellInfo) + { + spellInfo->RecoveryTime = 3000; + }); + + // Jormungar Strike + ApplySpellFix({ 56513 }, [](SpellInfo* spellInfo) + { + spellInfo->RecoveryTime = 2000; + }); + + ApplySpellFix({ + 54997, // Cast Net (tooltip says 10s but sniffs say 6s) + 56524 // Acid Breath + }, [](SpellInfo* spellInfo) + { + spellInfo->RecoveryTime = 6000; + }); + + ApplySpellFix({ + 47911, // EMP + 48620, // Wing Buffet + 51752 // Stampy's Stompy-Stomp + }, [](SpellInfo* spellInfo) + { + spellInfo->RecoveryTime = 10000; + }); + + ApplySpellFix({ + 37727, // Touch of Darkness + 54996 // Ice Slick (tooltip says 20s but sniffs say 12s) + }, [](SpellInfo* spellInfo) + { + spellInfo->RecoveryTime = 12000; + }); + + // Signal Helmet to Attack + ApplySpellFix({ 51748 }, [](SpellInfo* spellInfo) + { + spellInfo->RecoveryTime = 15000; + }); + + // Charge + ApplySpellFix({ 51756 }, [](SpellInfo* spellInfo) + { + spellInfo->RecoveryTime = 20000; + }); + // // VIOLET HOLD SPELLS // diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 4d4d760fd68..8195b315a57 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -40,6 +40,7 @@ #include "SpellAuraEffects.h" #include "SpellHistory.h" #include "SpellMgr.h" +#include "SpellPackets.h" #include "SpellScript.h" #include "Vehicle.h" @@ -4182,6 +4183,30 @@ class spell_freezing_circle : public SpellScript } }; +// 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 SpellScript +{ + PrepareSpellScript(spell_gen_charmed_unit_spell_cooldown); + + void HandleCast() + { + Unit* caster = GetCaster(); + if (Player* owner = caster->GetCharmerOrOwnerPlayerOrPlayerItself()) + { + WorldPackets::Spells::SpellCooldown spellCooldown; + spellCooldown.Caster = owner->GetGUID(); + spellCooldown.Flags = SPELL_COOLDOWN_FLAG_NONE; + spellCooldown.SpellCooldowns.emplace_back(GetSpellInfo()->Id, GetSpellInfo()->RecoveryTime); + owner->SendDirectMessage(spellCooldown.Write()); + } + } + + void Register() override + { + OnCast += SpellCastFn(spell_gen_charmed_unit_spell_cooldown::HandleCast); + } +}; + // 169869 - Transformation Sickness class spell_gen_decimatus_transformation_sickness : public SpellScript { @@ -4551,6 +4576,7 @@ void AddSC_generic_spell_scripts() RegisterAuraScript(spell_corrupting_plague_aura); RegisterAuraScript(spell_gen_vehicle_control_link); RegisterSpellScript(spell_freezing_circle); + RegisterSpellScript(spell_gen_charmed_unit_spell_cooldown); RegisterSpellScript(spell_gen_decimatus_transformation_sickness); RegisterSpellScript(spell_gen_anetheron_summon_towering_infernal); RegisterSpellAndAuraScriptPair(spell_gen_mark_of_kazrogal_hellfire, spell_gen_mark_of_kazrogal_hellfire_aura); |