using Content.Server.Body.Components; using Content.Shared.Nutrition.Components; using Content.Server.Nutrition.EntitySystems; using Content.Shared.FixedPoint; using Robust.Shared.Audio; using Robust.Shared.Prototypes; namespace Content.Server.Nutrition.Components; [RegisterComponent, Access(typeof(FoodSystem), typeof(FoodSequenceSystem))] public sealed partial class FoodComponent : Component { [DataField] public string Solution = "food"; [DataField] public SoundSpecifier UseSound = new SoundCollectionSpecifier("eating"); [DataField] public List Trash = new(); [DataField] public FixedPoint2? TransferAmount = FixedPoint2.New(5); /// /// Acceptable utensil to use /// [DataField] public UtensilType Utensil = UtensilType.Fork; //There are more "solid" than "liquid" food /// /// Is utensil required to eat this food /// [DataField] public bool UtensilRequired; /// /// If this is set to true, food can only be eaten if you have a stomach with a /// that includes this entity in its whitelist, /// rather than just being digestible by anything that can eat food. /// Whitelist the food component to allow eating of normal food. /// [DataField] public bool RequiresSpecialDigestion; /// /// Stomachs required to digest this entity. /// Used to simulate 'ruminant' digestive systems (which can digest grass) /// [DataField] public int RequiredStomachs = 1; /// /// The localization identifier for the eat message. Needs a "food" entity argument passed to it. /// [DataField] public LocId EatMessage = "food-nom"; /// /// How long it takes to eat the food personally. /// [DataField] public float Delay = 1; /// /// This is how many seconds it takes to force feed someone this food. /// Should probably be smaller for small items like pills. /// [DataField] public float ForceFeedDelay = 3; /// /// For mobs that are food, requires killing them before eating. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public bool RequireDead = true; }