using Content.Shared.Storage.EntitySystems; using Content.Shared.Containers.ItemSlots; using Content.Shared.Item; using Robust.Shared.Containers; using Robust.Shared.Prototypes; using Content.Shared.Tools; using Robust.Shared.GameStates; using Content.Shared.DoAfter; using Robust.Shared.Serialization; using Robust.Shared.Audio; namespace Content.Shared.Storage.Components { /// /// Logic for a secret slot stash, like plant pot or toilet cistern. /// Unlike it has logic for opening and closing /// the stash. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(SecretStashSystem))] public sealed partial class SecretStashComponent : Component { /// /// Max item size that can be inserted into secret stash. /// [DataField("maxItemSize")] public ProtoId MaxItemSize = "Small"; /// /// This sound will be played when you try to insert an item in the stash. /// The sound will be played whether or not the item is actually inserted. /// [DataField] public SoundSpecifier? TryInsertItemSound; /// /// This sound will be played when you try to remove an item in the stash. /// The sound will be played whether or not the item is actually removed. /// [DataField] public SoundSpecifier? TryRemoveItemSound; /// /// If true, verbs will appear to help interact with the stash. /// [DataField, AutoNetworkedField] public bool HasVerbs = true; /// /// The name of the secret stash. For example "the toilet cistern". /// If null, the name of the entity will be used instead. /// [DataField] public string? SecretStashName; /// /// Container used to keep secret stash item. /// [ViewVariables] public ContainerSlot ItemContainer = default!; } }