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