aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp23
1 files changed, 23 insertions, 0 deletions
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);
}