aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorWyrserth <43747507+Wyrserth@users.noreply.github.com>2019-05-17 12:08:20 +0200
committerShauren <shauren.trinity@gmail.com>2021-12-05 18:44:59 +0100
commitfd030069f79adeb420564386f48198e50e4d37f8 (patch)
tree23ecf7b8c98fcac894a183c8501b6ba4af5b40bd /src/server/scripts
parent4f49cef15c5da51174ceb0932b28ae366c62dfb2 (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)
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp26
1 files changed, 26 insertions, 0 deletions
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);