using Content.Shared.Interaction.Events;
using Content.Shared.Mobs.Components;
using Content.Shared.Weapons.Melee.Events;
+using Content.Shared.Timing;
using Robust.Shared.Player;
namespace Content.Server.Chemistry.EntitySystems
{
public sealed partial class ChemistrySystem
{
+ [Dependency] private readonly UseDelaySystem _useDelay = default!;
+
private void InitializeHypospray()
{
SubscribeLocalEvent<HyposprayComponent, AfterInteractEvent>(OnAfterInteract);
if (!EligibleEntity(target, _entMan))
return false;
+ if (TryComp(uid, out UseDelayComponent? delayComp))
+ if (_useDelay.ActiveDelay(uid, delayComp))
+ return false;
+
string? msgFormat = null;
if (target == user)
_audio.PlayPvs(component.InjectSound, user);
+ // Medipens and such use this system and don't have a delay, requiring extra checks
+ // BeginDelay function returns if item is already on delay
+ if (delayComp is not null)
+ _useDelay.BeginDelay(uid, delayComp);
+
// Get transfer amount. May be smaller than component.TransferAmount if not enough room
var realTransferAmount = FixedPoint2.Min(component.TransferAmount, targetSolution.AvailableVolume);