using Content.Server.Nutrition.EntitySystems; using Robust.Shared.Audio; namespace Content.Server.Nutrition.Components; /// /// A drink or food that can be opened. /// Starts closed, open it with Z or E. /// [RegisterComponent, Access(typeof(OpenableSystem))] public sealed partial class OpenableComponent : Component { /// /// Whether this drink or food is opened or not. /// Drinks can only be drunk or poured from/into when open, and food can only be eaten when open. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public bool Opened; /// /// If this is false you cant press Z to open it. /// Requires an OpenBehavior damage threshold or other logic to open. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public bool OpenableByHand = true; /// /// Text shown when examining and its open. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public LocId ExamineText = "drink-component-on-examine-is-opened"; /// /// The locale id for the popup shown when IsClosed is called and closed. Needs a "owner" entity argument passed to it. /// Defaults to the popup drink uses since its "correct". /// It's still generic enough that you should change it if you make openable non-drinks, i.e. unwrap it first, peel it first. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public LocId ClosedPopup = "drink-component-try-use-drink-not-open"; /// /// Sound played when opening. /// [DataField] public SoundSpecifier Sound = new SoundCollectionSpecifier("canOpenSounds"); }