using Content.Shared.Throwing; using Content.Shared.Timing; using Content.Shared.Weapons.Melee.Components; using Content.Shared.Weapons.Melee.Events; namespace Content.Shared.Weapons.Melee; /// public sealed class UseDelayOnMeleeHitSystem : EntitySystem { [Dependency] private readonly UseDelaySystem _delay = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnMeleeHit); SubscribeLocalEvent(OnThrowHitEvent); } private void OnThrowHitEvent(Entity ent, ref ThrowDoHitEvent args) { TryResetDelay(ent); } private void OnMeleeHit(Entity ent, ref MeleeHitEvent args) { TryResetDelay(ent); } private void TryResetDelay(Entity ent) { var uid = ent.Owner; if (!TryComp(uid, out var useDelay)) return; _delay.TryResetDelay((uid, useDelay), checkDelayed: true); } }