diff options
author | Wyrserth <43747507+Wyrserth@users.noreply.github.com> | 2019-05-17 12:08:20 +0200 |
---|---|---|
committer | Giacomo Pozzoni <giacomopoz@gmail.com> | 2019-05-17 12:08:20 +0200 |
commit | 4d04344b414adc965bd2760d3f30338bcce70431 (patch) | |
tree | 7db41c80a4d601171c5df741546874eb1d6d30f2 /src | |
parent | 71e7394b74bc36467f478986c0bd179e18e04fb8 (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
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 49 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 23 |
2 files changed, 72 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index a61293f59f3..51ba9ff7580 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3976,6 +3976,55 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_10_YARDS); }); + // 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 92218791e1f..3a828eaa50b 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -4245,6 +4245,28 @@ 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()) + { + WorldPacket data; + caster->GetSpellHistory()->BuildCooldownPacket(data, SPELL_COOLDOWN_FLAG_NONE, GetSpellInfo()->Id, GetSpellInfo()->RecoveryTime); + owner->SendDirectMessage(&data); + } + } + + void Register() override + { + OnCast += SpellCastFn(spell_gen_charmed_unit_spell_cooldown::HandleCast); + } +}; + void AddSC_generic_spell_scripts() { RegisterAuraScript(spell_gen_absorb0_hitlimit1); @@ -4370,4 +4392,5 @@ 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); } |