using Content.Shared.Timing; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; using Content.Shared.Weapons.Ranged.Systems; namespace Content.Shared._RMC14.Weapons.Ranged; public sealed class ShootUseDelaySystem : EntitySystem { [Dependency] private readonly UseDelaySystem _useDelay = default!; private const string shootUseDelayId = "CMShootUseDelay"; public override void Initialize() { SubscribeLocalEvent(OnGunShot); } private void OnGunShot(Entity ent, ref GunShotEvent args) { if (!TryComp(ent, out UseDelayComponent? delayComponent) || !TryComp(ent, out GunComponent? gunComponent)) return; _useDelay.SetLength((ent.Owner, delayComponent), TimeSpan.FromSeconds(1f / gunComponent.FireRate), shootUseDelayId); _useDelay.TryResetDelay((ent.Owner, delayComponent), true, id: shootUseDelayId); } }