Reset melee cd on hand selected (#11709)

This commit is contained in:
metalgearsloth
2022-11-04 12:18:00 +11:00
committed by GitHub
parent 6a5300d6e3
commit 4720201607

View File

@@ -42,6 +42,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
SubscribeLocalEvent<MeleeWeaponComponent, ComponentGetState>(OnGetState);
SubscribeLocalEvent<MeleeWeaponComponent, ComponentHandleState>(OnHandleState);
SubscribeLocalEvent<MeleeWeaponComponent, HandDeselectedEvent>(OnMeleeDropped);
SubscribeLocalEvent<MeleeWeaponComponent, HandSelectedEvent>(OnMeleeSelected);
SubscribeAllEvent<LightAttackEvent>(OnLightAttack);
SubscribeAllEvent<StartHeavyAttackEvent>(OnStartHeavyAttack);
@@ -51,6 +52,22 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
SubscribeAllEvent<StopAttackEvent>(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)