aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWyrserth <43747507+Wyrserth@users.noreply.github.com>2019-05-17 12:08:20 +0200
committerGiacomo Pozzoni <giacomopoz@gmail.com>2019-05-17 12:08:20 +0200
commit4d04344b414adc965bd2760d3f30338bcce70431 (patch)
tree7db41c80a4d601171c5df741546874eb1d6d30f2 /src
parent71e7394b74bc36467f478986c0bd179e18e04fb8 (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.cpp49
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp23
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);
}