diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index 75fe903201..bea4ea0fed 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -42,6 +42,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem SubscribeLocalEvent(OnGetState); SubscribeLocalEvent(OnHandleState); SubscribeLocalEvent(OnMeleeDropped); + SubscribeLocalEvent(OnMeleeSelected); SubscribeAllEvent(OnLightAttack); SubscribeAllEvent(OnStartHeavyAttack); @@ -51,6 +52,22 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem SubscribeAllEvent(OnStopAttack); } + private void OnMeleeSelected(EntityUid uid, MeleeWeaponComponent component, HandSelectedEvent args) + { + if (component.AttackRate.Equals(0f)) + return; + + // If someone swaps to this weapon then reset its cd. + var curTime = Timing.CurTime; + var minimum = curTime + TimeSpan.FromSeconds(1 / component.AttackRate); + + if (minimum < component.NextAttack) + return; + + component.NextAttack = minimum; + Dirty(component); + } + private void OnMeleeDropped(EntityUid uid, MeleeWeaponComponent component, HandDeselectedEvent args) { if (component.WindUpStart == null)