From 4720201607a19da6a108b51d3901d86d2fa2604e Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Fri, 4 Nov 2022 12:18:00 +1100 Subject: [PATCH] Reset melee cd on hand selected (#11709) --- .../Weapons/Melee/SharedMeleeWeaponSystem.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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)