diff --git a/Content.Server/Storage/EntitySystems/StorageSystem.cs b/Content.Server/Storage/EntitySystems/StorageSystem.cs
index 965f928f4c..c8adcec54b 100644
--- a/Content.Server/Storage/EntitySystems/StorageSystem.cs
+++ b/Content.Server/Storage/EntitySystems/StorageSystem.cs
@@ -3,6 +3,7 @@ using Content.Server.Hands.Components;
using Content.Server.Storage.Components;
using Content.Shared.Interaction;
using Content.Shared.Storage;
+using Content.Shared.Timing;
using Content.Shared.Verbs;
using JetBrains.Annotations;
using Robust.Server.GameObjects;
@@ -59,6 +60,7 @@ namespace Content.Server.Storage.EntitySystems
[Dependency] private readonly SharedCombatModeSystem _combatMode = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
+ [Dependency] private readonly UseDelaySystem _useDelay = default!;
///
public override void Initialize()
@@ -601,8 +603,14 @@ namespace Content.Server.Storage.EntitySystems
if (!Resolve(uid, ref storageComp) || !TryComp(entity, out ActorComponent? player))
return;
+ // prevent spamming bag open / honkerton honk sound
+ silent |= TryComp(uid, out var useDelay) && _useDelay.ActiveDelay(uid, useDelay);
if (!silent)
+ {
_audio.PlayPvs(storageComp.StorageOpenSound, uid);
+ if (useDelay != null)
+ _useDelay.BeginDelay(uid, useDelay);
+ }
Logger.DebugS(storageComp.LoggerName, $"Storage (UID {uid}) \"used\" by player session (UID {player.PlayerSession.AttachedEntity}).");
diff --git a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml
index 0b5d2ad25f..c1ddde80aa 100644
--- a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml
+++ b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml
@@ -23,6 +23,9 @@
interfaces:
- key: enum.StorageUiKey.Key
type: StorageBoundUserInterface
+ # to prevent bag open/honk spam
+ - type: UseDelay
+ delay: 0.5
- type: entity
parent: ClothingBackpack