From aa26bdfcae6e0b81db4444b7e1d09b960aa77512 Mon Sep 17 00:00:00 2001 From: FL-OZ <58238103+FL-OZ@users.noreply.github.com> Date: Fri, 29 May 2020 15:50:23 -0500 Subject: [PATCH] Rework Drink/Food/FoodContainer entirely (#1009) Co-authored-by: FL-OZ Co-authored-by: Pieter-Jan Briers --- Content.Client/EntryPoint.cs | 2 +- .../DrinkFoodContainerVisualizer2D.cs | 16 +- .../Components/Kitchen/MicrowaveComponent.cs | 8 +- .../Components/Nutrition/DrinkComponent.cs | 179 ++++---- .../Nutrition/DrinkFoodContainerComponent.cs | 191 --------- .../Components/Nutrition/FoodComponent.cs | 157 +++---- .../Nutrition/FoodContainerComponent.cs | 99 +++++ .../SharedDrinkFoodContainerComponent.cs | 6 +- Resources/Audio/items/bottle_open1.ogg | Bin 0 -> 33261 bytes Resources/Audio/items/can_open1.ogg | Bin 0 -> 9583 bytes Resources/Audio/items/can_open2.ogg | Bin 0 -> 12374 bytes Resources/Audio/items/can_open3.ogg | Bin 0 -> 16920 bytes .../Entities/Items/Consumables/drinks.yml | 319 +++++++------- .../Items/Consumables/drinks_bottles.yml | 71 ++-- .../Items/Consumables/drinks_cans.yml | 167 +------- .../Items/Consumables/drinks_cups.yml | 1 - .../Entities/Items/Consumables/food.yml | 402 +++++++++++------- .../Items/Consumables/food_containers.yml | 344 +++++++-------- .../kitchen_reagent_containers.yml | 1 - .../Items/Consumables/trash_drinks.yml | 41 +- Resources/Prototypes/Kitchen/meal_recipes.yml | 14 +- .../SoundCollections/drink_open_sounds.yml | 11 + Resources/Prototypes/VendingMachines/cola.yml | 16 +- .../apple_cake.rsi/icon.png | Bin .../apple_cake.rsi/meta.json | 0 .../bananabread.rsi/icon.png | Bin .../bananabread.rsi/meta.json | 0 .../birthdaycake.rsi/icon.png | Bin .../birthdaycake.rsi/meta.json | 0 .../braincake.rsi/icon.png | Bin .../braincake.rsi/meta.json | 0 .../bread.rsi/icon.png | Bin .../bread.rsi/meta.json | 0 .../carrotcake.rsi/icon.png | Bin .../carrotcake.rsi/meta.json | 0 .../cheesecake.rsi/icon.png | Bin .../cheesecake.rsi/meta.json | 0 .../cheesewheel.rsi/icon.png | Bin .../cheesewheel.rsi/meta.json | 0 .../chocolatecake.rsi/icon.png | Bin .../chocolatecake.rsi/meta.json | 0 .../creamcheesebread.rsi/icon.png | Bin .../creamcheesebread.rsi/meta.json | 0 .../donutbox.rsi/donutbox-0.png | Bin .../donutbox.rsi/donutbox-1.png | Bin .../donutbox.rsi/donutbox-2.png | Bin .../donutbox.rsi/donutbox-3.png | Bin .../donutbox.rsi/donutbox-4.png | Bin .../donutbox.rsi/donutbox-5.png | Bin .../donutbox.rsi/donutbox-6.png | Bin .../donutbox.rsi/icon.png | Bin .../donutbox.rsi/meta.json | 0 .../eggbox.rsi/eggbox-0.png | Bin .../eggbox.rsi/eggbox-1.png | Bin .../eggbox.rsi/eggbox-10.png | Bin .../eggbox.rsi/eggbox-11.png | Bin .../eggbox.rsi/eggbox-12.png | Bin .../eggbox.rsi/eggbox-2.png | Bin .../eggbox.rsi/eggbox-3.png | Bin .../eggbox.rsi/eggbox-4.png | Bin .../eggbox.rsi/eggbox-5.png | Bin .../eggbox.rsi/eggbox-6.png | Bin .../eggbox.rsi/eggbox-7.png | Bin .../eggbox.rsi/eggbox-8.png | Bin .../eggbox.rsi/eggbox-9.png | Bin .../eggbox.rsi/meta.json | 0 .../eggbox_shut.rsi/icon.png | Bin .../eggbox_shut.rsi/meta.json | 0 .../lemoncake.rsi/icon.png | Bin .../lemoncake.rsi/meta.json | 0 .../limecake.rsi/icon.png | Bin .../limecake.rsi/meta.json | 0 .../meatbread.rsi/icon.png | Bin .../meatbread.rsi/meta.json | 0 .../meatpizza.rsi/icon.png | Bin .../meatpizza.rsi/meta.json | 0 .../monkeycubebox.rsi/icon.png | Bin .../monkeycubebox.rsi/meta.json | 0 .../monkeycubewrap.rsi/icon.png | Bin .../monkeycubewrap.rsi/meta.json | 0 .../mushroompizza.rsi/icon.png | Bin .../mushroompizza.rsi/meta.json | 0 .../orangecake.rsi/icon.png | Bin .../orangecake.rsi/meta.json | 0 .../pizzabox_open.rsi/icon.png | Bin .../pizzabox_open.rsi/meta.json | 0 .../pizzabox_tag.rsi/icon.png | Bin .../pizzabox_tag.rsi/meta.json | 0 .../pizzaboxstack.rsi/icon.png | Bin .../pizzaboxstack.rsi/meta.json | 0 .../pizzaboxstack.rsi/pizzaboxstack-0.png | Bin .../pizzaboxstack.rsi/pizzaboxstack-1.png | Bin .../pizzaboxstack.rsi/pizzaboxstack-2.png | Bin .../pizzaboxstack.rsi/pizzaboxstack-3.png | Bin .../pizzaboxstack.rsi/pizzaboxstack-4.png | Bin .../pizzamargherita.rsi/icon.png | Bin .../pizzamargherita.rsi/meta.json | 0 .../plaincake.rsi/icon.png | Bin .../plaincake.rsi/meta.json | 0 .../pumpkinpie.rsi/icon.png | Bin .../pumpkinpie.rsi/meta.json | 0 .../tofubread.rsi/icon.png | Bin .../tofubread.rsi/meta.json | 0 .../vegetablepizza.rsi/icon.png | Bin .../vegetablepizza.rsi/meta.json | 0 .../xenomeatbread.rsi/icon.png | Bin .../xenomeatbread.rsi/meta.json | 0 107 files changed, 946 insertions(+), 1099 deletions(-) delete mode 100644 Content.Server/GameObjects/Components/Nutrition/DrinkFoodContainerComponent.cs create mode 100644 Content.Server/GameObjects/Components/Nutrition/FoodContainerComponent.cs create mode 100644 Resources/Audio/items/bottle_open1.ogg create mode 100644 Resources/Audio/items/can_open1.ogg create mode 100644 Resources/Audio/items/can_open2.ogg create mode 100644 Resources/Audio/items/can_open3.ogg create mode 100644 Resources/Prototypes/SoundCollections/drink_open_sounds.yml rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/apple_cake.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/apple_cake.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/bananabread.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/bananabread.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/birthdaycake.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/birthdaycake.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/braincake.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/braincake.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/bread.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/bread.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/carrotcake.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/carrotcake.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/cheesecake.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/cheesecake.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/cheesewheel.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/cheesewheel.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/chocolatecake.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/chocolatecake.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/creamcheesebread.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/creamcheesebread.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/donutbox.rsi/donutbox-0.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/donutbox.rsi/donutbox-1.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/donutbox.rsi/donutbox-2.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/donutbox.rsi/donutbox-3.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/donutbox.rsi/donutbox-4.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/donutbox.rsi/donutbox-5.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/donutbox.rsi/donutbox-6.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/donutbox.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/donutbox.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/eggbox-0.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/eggbox-1.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/eggbox-10.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/eggbox-11.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/eggbox-12.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/eggbox-2.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/eggbox-3.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/eggbox-4.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/eggbox-5.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/eggbox-6.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/eggbox-7.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/eggbox-8.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/eggbox-9.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox_shut.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/eggbox_shut.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/lemoncake.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/lemoncake.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/limecake.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/limecake.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/meatbread.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/meatbread.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/meatpizza.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/meatpizza.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/monkeycubebox.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/monkeycubebox.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/monkeycubewrap.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/monkeycubewrap.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/mushroompizza.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/mushroompizza.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/orangecake.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/orangecake.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pizzabox_open.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pizzabox_open.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pizzabox_tag.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pizzabox_tag.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pizzaboxstack.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pizzaboxstack.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pizzaboxstack.rsi/pizzaboxstack-0.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pizzaboxstack.rsi/pizzaboxstack-1.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pizzaboxstack.rsi/pizzaboxstack-2.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pizzaboxstack.rsi/pizzaboxstack-3.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pizzaboxstack.rsi/pizzaboxstack-4.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pizzamargherita.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pizzamargherita.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/plaincake.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/plaincake.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pumpkinpie.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/pumpkinpie.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/tofubread.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/tofubread.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/vegetablepizza.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/vegetablepizza.rsi/meta.json (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/xenomeatbread.rsi/icon.png (100%) rename Resources/Textures/Objects/{DrinkFoodContainers => FoodContainers}/xenomeatbread.rsi/meta.json (100%) diff --git a/Content.Client/EntryPoint.cs b/Content.Client/EntryPoint.cs index 404e20157d..4468574b25 100644 --- a/Content.Client/EntryPoint.cs +++ b/Content.Client/EntryPoint.cs @@ -123,7 +123,7 @@ namespace Content.Client "Species", "Drink", "Food", - "DrinkFoodContainer", + "FoodContainer", "Stomach", "Hunger", "Thirst", diff --git a/Content.Client/GameObjects/Components/Nutrition/DrinkFoodContainerVisualizer2D.cs b/Content.Client/GameObjects/Components/Nutrition/DrinkFoodContainerVisualizer2D.cs index 93bd7aa745..52a6653924 100644 --- a/Content.Client/GameObjects/Components/Nutrition/DrinkFoodContainerVisualizer2D.cs +++ b/Content.Client/GameObjects/Components/Nutrition/DrinkFoodContainerVisualizer2D.cs @@ -11,11 +11,11 @@ using YamlDotNet.RepresentationModel; namespace Content.Client.GameObjects.Components.Nutrition { [UsedImplicitly] - public sealed class DrinkFoodContainerVisualizer2D : AppearanceVisualizer + public sealed class FoodContainerVisualizer2D : AppearanceVisualizer { private string _baseState; private int _steps; - private DrinkFoodContainerVisualMode _mode; + private FoodContainerVisualMode _mode; public override void LoadData(YamlMappingNode node) { @@ -25,11 +25,11 @@ namespace Content.Client.GameObjects.Components.Nutrition _steps = node.GetNode("steps").AsInt(); try { - _mode = node.GetNode("mode").AsEnum(); + _mode = node.GetNode("mode").AsEnum(); } catch (KeyNotFoundException) { - _mode = DrinkFoodContainerVisualMode.Rounded; + _mode = FoodContainerVisualMode.Rounded; } } @@ -37,12 +37,12 @@ namespace Content.Client.GameObjects.Components.Nutrition { var sprite = component.Owner.GetComponent(); - if (!component.TryGetData(DrinkFoodContainerVisuals.Current, out var current)) + if (!component.TryGetData(FoodContainerVisuals.Current, out var current)) { return; } - if (!component.TryGetData(DrinkFoodContainerVisuals.Capacity, out var capacity)) + if (!component.TryGetData(FoodContainerVisuals.Capacity, out var capacity)) { return; } @@ -51,10 +51,10 @@ namespace Content.Client.GameObjects.Components.Nutrition switch (_mode) { - case DrinkFoodContainerVisualMode.Discrete: + case FoodContainerVisualMode.Discrete: step = Math.Min(_steps - 1, current); break; - case DrinkFoodContainerVisualMode.Rounded: + case FoodContainerVisualMode.Rounded: step = ContentHelpers.RoundToLevels(current, capacity, _steps); break; default: diff --git a/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs b/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs index 88e6b6d95a..f05b227ee8 100644 --- a/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs +++ b/Content.Server/GameObjects/Components/Kitchen/MicrowaveComponent.cs @@ -241,7 +241,13 @@ namespace Content.Server.GameObjects.Components.Kitchen return true; } - itemEntity.TryGetComponent(typeof(ItemComponent), out var food); + if (!itemEntity.TryGetComponent(typeof(ItemComponent), out var food)) + { + + _notifyManager.PopupMessage(Owner, eventArgs.User, "That won't work!"); + return false; + } + var ent = food.Owner; //Get the entity of the ItemComponent. _storage.Insert(ent); _uiDirty = true; diff --git a/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs b/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs index baa6e7ac9d..56576b9c36 100644 --- a/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs +++ b/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs @@ -1,148 +1,163 @@ -using System; -using System.Linq; +using System; using Content.Server.GameObjects.Components.Chemistry; -using Content.Server.GameObjects.Components.Sound; using Content.Server.GameObjects.EntitySystems; -using Content.Server.Utility; +using Content.Shared.Audio; using Content.Shared.Chemistry; using Content.Shared.GameObjects.Components.Nutrition; using Content.Shared.Interfaces; -using Content.Shared.Maths; using Robust.Server.GameObjects; using Robust.Server.GameObjects.EntitySystems; using Robust.Shared.Audio; using Robust.Shared.GameObjects; -using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; using Robust.Shared.Localization; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; using Robust.Shared.Serialization; -using Robust.Shared.ViewVariables; using Robust.Shared.Utility; +using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Nutrition { [RegisterComponent] - public class DrinkComponent : Component, IAfterInteract, IUse + [ComponentReference(typeof(IAfterInteract))] + public class DrinkComponent : Component, IUse, IAfterInteract, ISolutionChange,IExamine { #pragma warning disable 649 - [Dependency] private readonly ILocalizationManager _localizationManager; + [Dependency] private readonly IPrototypeManager _prototypeManager; + [Dependency] private readonly IRobustRandom _random; + [Dependency] private readonly IEntitySystemManager _entitySystem; #pragma warning restore 649 + + private AudioSystem _audioSystem; public override string Name => "Drink"; + [ViewVariables] private SolutionComponent _contents; - - private AppearanceComponent _appearanceComponent; - [ViewVariables] private string _useSound; [ViewVariables] - private string _finishPrototype; - - public ReagentUnit TransferAmount => _transferAmount; + private bool _defaultToOpened; [ViewVariables] - private ReagentUnit _transferAmount = ReagentUnit.New(2); + public ReagentUnit TransferAmount { get; private set; } = ReagentUnit.New(2); - public ReagentUnit MaxVolume - { - get => _contents.MaxVolume; - set => _contents.MaxVolume = value; - } + [ViewVariables] + public bool Opened => _opened; - private bool _despawnOnFinish; - - private bool _drinking; - - public int UsesLeft() - { - // In case transfer amount exceeds volume left - if (_contents.CurrentVolume == 0) - { - return 0; - } - return Math.Max(1, (int)Math.Ceiling((_contents.CurrentVolume / _transferAmount).Float())); - } + [ViewVariables] + public bool Empty => _contents.CurrentVolume.Float() <= 0; + private AppearanceComponent _appearanceComponent; + private bool _opened = false; + private string _soundCollection; public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); - serializer.DataField(ref _useSound, "use_sound", "/Audio/items/drink.ogg"); - // E.g. cola can when done or clear bottle, whatever - // Currently this will enforce it has the same volume but this may change. - TODO: this should be implemented in a separate component - serializer.DataField(ref _despawnOnFinish, "despawn_empty", false); - serializer.DataField(ref _finishPrototype, "spawn_on_finish", null); + serializer.DataField(ref _useSound, "useSound", "/Audio/items/drink.ogg"); + serializer.DataField(ref _defaultToOpened, "isOpen", false); //For things like cups of coffee. + serializer.DataField(ref _soundCollection, "openSounds","canOpenSounds"); } - protected override void Startup() + public override void Initialize() { - base.Startup(); - _contents = Owner.GetComponent(); + base.Initialize(); + Owner.TryGetComponent(out _appearanceComponent); + if(!Owner.TryGetComponent(out _contents)) + { + _contents = Owner.AddComponent(); + } + _contents.Capabilities = SolutionCaps.PourIn | SolutionCaps.PourOut | SolutionCaps.Injectable; - _drinking = false; - Owner.TryGetComponent(out AppearanceComponent appearance); - _appearanceComponent = appearance; - _appearanceComponent?.SetData(SharedFoodComponent.FoodVisuals.MaxUses, MaxVolume.Float()); - _updateAppearance(); + _opened = _defaultToOpened; + UpdateAppearance(); } - private void _updateAppearance() + void ISolutionChange.SolutionChanged(SolutionChangeEventArgs eventArgs) + { + UpdateAppearance(); + } + + + private void UpdateAppearance() { _appearanceComponent?.SetData(SharedFoodComponent.FoodVisuals.Visual, _contents.CurrentVolume.Float()); } - - bool IUse.UseEntity(UseEntityEventArgs eventArgs) + bool IUse.UseEntity(UseEntityEventArgs args) { - UseDrink(eventArgs.User); - - return true; + if (!_opened) + { + //Do the opening stuff like playing the sounds. + var soundCollection = _prototypeManager.Index(_soundCollection); + var file = _random.Pick(soundCollection.PickFiles); + _audioSystem = _entitySystem.GetEntitySystem(); + _audioSystem.Play(file, Owner, AudioParams.Default); + _opened = true; + return false; + } + return TryUseDrink(args.User); } + //Force feeding a drink to someone. void IAfterInteract.AfterInteract(AfterInteractEventArgs eventArgs) { - if (!InteractionChecks.InRangeUnobstructed(eventArgs)) return; - - UseDrink(eventArgs.Target); + TryUseDrink(eventArgs.Target); } - private void UseDrink(IEntity targetEntity) + public void Examine(FormattedMessage message) { - if (targetEntity == null) + if (!Opened) { return; } + var color = Empty ? "gray" : "yellow"; + var openedText = Loc.GetString(Empty ? "Empty" : "Opened"); + message.AddMarkup(Loc.GetString("[color={0}]{1}[/color]", color, openedText)); - if (UsesLeft() == 0 && !_despawnOnFinish) + } + + private bool TryUseDrink(IEntity target) + { + if (target == null) { - targetEntity.PopupMessage(targetEntity, _localizationManager.GetString("Empty")); - return; + return false; } - if (targetEntity.TryGetComponent(out StomachComponent stomachComponent)) + if (!_opened) { - _drinking = true; - var transferAmount = ReagentUnit.Min(_transferAmount, _contents.CurrentVolume); - var split = _contents.SplitSolution(transferAmount); - if (stomachComponent.TryTransferSolution(split)) - { - // When we split Finish gets called which may delete the can so need to use the entity system for sound - if (_useSound != null) - { - var audioSystem = EntitySystem.Get(); - audioSystem.Play(_useSound, Owner, AudioParams.Default.WithVolume(-2f)); - targetEntity.PopupMessage(targetEntity, _localizationManager.GetString("Slurp")); - } - } - else - { - // Add it back in - _contents.TryAddSolution(split); - targetEntity.PopupMessage(targetEntity, _localizationManager.GetString("Can't drink")); - } - _drinking = false; + target.PopupMessage(target, Loc.GetString("Open it first!")); } + + if (_contents.CurrentVolume.Float() <= 0) + { + target.PopupMessage(target, Loc.GetString("It's empty!")); + return false; + } + + if (!target.TryGetComponent(out StomachComponent stomachComponent)) + { + return false; + } + + var transferAmount = ReagentUnit.Min(TransferAmount, _contents.CurrentVolume); + var split = _contents.SplitSolution(transferAmount); + if (stomachComponent.TryTransferSolution(split)) + { + if (_useSound == null) return false; + _audioSystem.Play(_useSound, Owner, AudioParams.Default.WithVolume(-2f)); + target.PopupMessage(target, Loc.GetString("Slurp")); + UpdateAppearance(); + return true; + } + + //Stomach was full or can't handle whatever solution we have. + _contents.TryAddSolution(split); + target.PopupMessage(target, Loc.GetString("You've had enough {0}!", Owner.Name)); + return false; } } } diff --git a/Content.Server/GameObjects/Components/Nutrition/DrinkFoodContainerComponent.cs b/Content.Server/GameObjects/Components/Nutrition/DrinkFoodContainerComponent.cs deleted file mode 100644 index 4c5dae3ba9..0000000000 --- a/Content.Server/GameObjects/Components/Nutrition/DrinkFoodContainerComponent.cs +++ /dev/null @@ -1,191 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Content.Server.GameObjects.Components.Sound; -using Content.Server.GameObjects.EntitySystems; -using Content.Shared.GameObjects.Components.Nutrition; -using Robust.Server.GameObjects; -using Robust.Server.GameObjects.Components.Container; -using Robust.Server.Interfaces.GameObjects; -using Robust.Shared.GameObjects; -using Robust.Shared.Interfaces.GameObjects; -using Robust.Shared.Interfaces.Random; -using Robust.Shared.IoC; -using Robust.Shared.Serialization; -using Robust.Shared.ViewVariables; - -namespace Content.Server.GameObjects.Components.Nutrition -{ - [RegisterComponent] - public sealed class DrinkFoodContainerComponent : SharedDrinkFoodContainerComponent, IMapInit, IUse - { - public override string Name => "DrinkFoodContainer"; - private string _useSound; - private Container _foodContainer; - // Optimisation scabbed from BallisticMagazineComponent to avoid loading entities until needed - [ViewVariables] private readonly Stack _loadedFood = new Stack(); - private AppearanceComponent _appearanceComponent; - [ViewVariables] public int Count => _availableSpawnCount + _loadedFood.Count; - private int _availableSpawnCount; - private Dictionary _prototypes; - private string _finishPrototype; - public int Capacity => _capacity; - private int _capacity; - - public override void ExposeData(ObjectSerializer serializer) - { - base.ExposeData(serializer); - serializer.DataField(ref _useSound, "use_sound", null); - // Is a dictionary for stuff with probabilities (mainly donut box) - serializer.DataField(ref _prototypes, "prototypes", null); - // If you want the final item to be different e.g. trash - serializer.DataField(ref _finishPrototype, "spawn_on_finish", null); - serializer.DataField(ref _availableSpawnCount, "available_spawn_count", 0); - serializer.DataField(ref _capacity, "capacity", 5); - } - - public override void Initialize() - { - base.Initialize(); - Owner.TryGetComponent(out AppearanceComponent appearance); - _appearanceComponent = appearance; - if (_prototypes == null) - { - throw new NullReferenceException(); - } - - if (_prototypes.Sum(x => x.Value) != 100) - { - throw new ArgumentOutOfRangeException(); - } - } - - public void MapInit() - { - _availableSpawnCount = Capacity; - } - - protected override void Startup() - { - base.Startup(); - - _foodContainer = - ContainerManagerComponent.Ensure("food_container", Owner, out var existed); - - if (existed) - { - foreach (var entity in _foodContainer.ContainedEntities) - { - _loadedFood.Push(entity); - } - } - - _updateAppearance(); - _appearanceComponent?.SetData(DrinkFoodContainerVisuals.Capacity, Capacity); - } - - bool IUse.UseEntity(UseEntityEventArgs eventArgs) - { - // TODO: Potentially change this depending upon desired functionality - IEntity item = TakeItem(eventArgs.User); - if (item == null) - { - return false; - } - if (item.TryGetComponent(out ItemComponent itemComponent) && - eventArgs.User.TryGetComponent(out HandsComponent handsComponent)) - { - if (handsComponent.CanPutInHand(itemComponent)) - { - handsComponent.PutInHand(itemComponent); - return true; - } - } - - item.Transform.GridPosition = eventArgs.User.Transform.GridPosition; - return true; - } - - // TODO: Somewhat shitcode - // Tried using .Prob() buuuuuttt trying that for each item wouldn't work. - private string _getProbItem(Dictionary prototypes) - { - if (prototypes.Count == 1) - { - return prototypes.Keys.ToList()[0]; - } - var prob = IoCManager.Resolve(); - var result = prob.Next(0, 100); - var runningTotal = 0; - foreach (var item in prototypes) - { - runningTotal += item.Value; - if (result < runningTotal) - { - return item.Key; - } - - } - throw new Exception(); - } - - public IEntity TakeItem(IEntity user) - { - if (_useSound != null) - { - if (Owner.TryGetComponent(out SoundComponent soundComponent) && _useSound != null) - { - soundComponent.Play(_useSound); - } - } - IEntity item = null; - if (_loadedFood.Count > 0) - { - item = _loadedFood.Pop(); - _foodContainer.Remove(item); - } - - if (_availableSpawnCount > 0) - { - var prototypeName = _getProbItem(_prototypes); - item = Owner.EntityManager.SpawnEntity(prototypeName, Owner.Transform.GridPosition); - _availableSpawnCount -= 1; - - } - - _tryDelete(user); - _updateAppearance(); - - return item; - } - - private void _tryDelete(IEntity user) - { - if (Count <= 0) - { - // Ideally this takes priority to be put into inventory rather than the desired item - if (_finishPrototype != null) - { - var item = Owner.EntityManager.SpawnEntity(_finishPrototype, Owner.Transform.GridPosition); - item.Transform.GridPosition = Owner.Transform.GridPosition; - Owner.Delete(); - if (user.TryGetComponent(out HandsComponent handsComponent) && - item.TryGetComponent(out ItemComponent itemComponent)) - { - if (handsComponent.CanPutInHand(itemComponent)) - { - handsComponent.PutInHand(itemComponent); - } - } - return; - } - Owner.Delete(); - } - } - - private void _updateAppearance() - { - _appearanceComponent?.SetData(DrinkFoodContainerVisuals.Current, Count); - } - } -} diff --git a/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs b/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs index dec7af1f70..927b4873df 100644 --- a/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs +++ b/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs @@ -1,12 +1,11 @@ -using System; +using System; using Content.Server.GameObjects.Components.Chemistry; using Content.Server.GameObjects.Components.Sound; using Content.Server.GameObjects.EntitySystems; -using Content.Server.Utility; using Content.Shared.Chemistry; -using Content.Shared.GameObjects.Components.Nutrition; using Content.Shared.Interfaces; -using Robust.Server.GameObjects; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Shared.Audio; using Robust.Shared.GameObjects; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; @@ -17,165 +16,105 @@ using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Nutrition { [RegisterComponent] - public class FoodComponent : Component, IAfterInteract, IUse + [ComponentReference(typeof(IAfterInteract))] + public class FoodComponent : Component, IUse, IAfterInteract { #pragma warning disable 649 - [Dependency] private readonly ILocalizationManager _localizationManager; + [Dependency] private readonly IEntitySystemManager _entitySystem; #pragma warning restore 649 - // Currently the design is similar to drinkcomponent but it's susceptible to change so left as is for now. public override string Name => "Food"; - private AppearanceComponent _appearanceComponent; - [ViewVariables] private string _useSound; [ViewVariables] - private string _finishPrototype; + private string _trashPrototype; [ViewVariables] private SolutionComponent _contents; [ViewVariables] private ReagentUnit _transferAmount; - private Solution _initialContents; // This is just for loading from yaml + public int UsesRemaining => _contents.CurrentVolume == 0 + ? + 0 : Math.Max(1, (int)Math.Ceiling((_contents.CurrentVolume / _transferAmount).Float())); + public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); - // Default is 1 use restoring 30 - serializer.DataField(ref _initialContents, "contents", null); - serializer.DataField(ref _useSound, "use_sound", "/Audio/items/eatfood.ogg"); - // Default is transfer 30 units - serializer.DataField(ref _transferAmount, "transfer_amount", ReagentUnit.New(5)); - // E.g. empty chip packet when done - serializer.DataField(ref _finishPrototype, "spawn_on_finish", null); + serializer.DataField(ref _useSound, "useSound", "/Audio/items/eatfood.ogg"); + serializer.DataField(ref _transferAmount, "transferAmount", ReagentUnit.New(5)); + serializer.DataField(ref _trashPrototype, "trash", "TrashPlate"); } public override void Initialize() { base.Initialize(); - if (_contents == null) - { - if (Owner.TryGetComponent(out SolutionComponent solutionComponent)) - { - _contents = solutionComponent; - } - else - { - _contents = Owner.AddComponent(); - } - } + _contents = Owner.GetComponent(); - _contents.MaxVolume = _initialContents.TotalVolume; - } - - protected override void Startup() - { - base.Startup(); - if (_initialContents != null) - { - _contents.TryAddSolution(_initialContents, true, true); - } - - _initialContents = null; - if (_contents.CurrentVolume == 0) - { - _contents.TryAddReagent("chem.Nutriment", ReagentUnit.New(5), out _); - } - Owner.TryGetComponent(out AppearanceComponent appearance); - _appearanceComponent = appearance; - // UsesLeft() at the start should match the max, at least currently. - _appearanceComponent?.SetData(SharedFoodComponent.FoodVisuals.MaxUses, UsesLeft()); - _updateAppearance(); - } - - private void _updateAppearance() - { - _appearanceComponent?.SetData(SharedFoodComponent.FoodVisuals.Visual, UsesLeft()); - } - - public int UsesLeft() - { - // In case transfer amount exceeds volume left - if (_contents.CurrentVolume == 0) - { - return 0; - } - return Math.Max(1, (int)Math.Ceiling((_contents.CurrentVolume / _transferAmount).Float())); } bool IUse.UseEntity(UseEntityEventArgs eventArgs) { - UseFood(eventArgs.User); - - return true; + return TryUseFood(eventArgs.User, null); } void IAfterInteract.AfterInteract(AfterInteractEventArgs eventArgs) { - if (!InteractionChecks.InRangeUnobstructed(eventArgs)) return; - - UseFood(eventArgs.Target); + TryUseFood(eventArgs.User, eventArgs.Target); } - void UseFood(IEntity user) + private bool TryUseFood(IEntity user, IEntity target) { if (user == null) { - return; + return false; } - if (UsesLeft() == 0) + if (UsesRemaining <= 0) { - user.PopupMessage(user, _localizationManager.GetString("Empty")); + user.PopupMessage(user, Loc.GetString($"The {Owner.Name} is empty!")); + return false; } - else + + var trueTarget = target ?? user; + + if (trueTarget.TryGetComponent(out StomachComponent stomachComponent)) { - // TODO: Add putting food back in boxes here? - if (user.TryGetComponent(out StomachComponent stomachComponent)) + var transferAmount = ReagentUnit.Min(_transferAmount, _contents.CurrentVolume); + var split = _contents.SplitSolution(transferAmount); + if (stomachComponent.TryTransferSolution(split)) { - var transferAmount = ReagentUnit.Min(_transferAmount, _contents.CurrentVolume); - var split = _contents.SplitSolution(transferAmount); - if (stomachComponent.TryTransferSolution(split)) - { - if (_useSound != null) - { - Owner.GetComponent()?.Play(_useSound); - user.PopupMessage(user, _localizationManager.GetString("Nom")); - } - } - else - { - // Add it back in - _contents.TryAddSolution(split); - user.PopupMessage(user, _localizationManager.GetString("Can't eat")); - } + _entitySystem.GetEntitySystem() + .Play(_useSound, trueTarget, AudioParams.Default.WithVolume(-1f)); + trueTarget.PopupMessage(user, Loc.GetString("Nom")); + } + else + { + _contents.TryAddSolution(split); + trueTarget.PopupMessage(user, Loc.GetString("You can't eat any more!")); } } - if (UsesLeft() > 0) + if (UsesRemaining > 0) { - return; - + return true; } + //We're empty. Become trash. var position = Owner.Transform.GridPosition; Owner.Delete(); - - if (_finishPrototype != null) + var finisher = Owner.EntityManager.SpawnEntity(_trashPrototype, position); + if (user.TryGetComponent(out HandsComponent handsComponent) && finisher.TryGetComponent(out ItemComponent itemComponent)) { - var finisher = Owner.EntityManager.SpawnEntity(_finishPrototype, position); - if (user.TryGetComponent(out HandsComponent handsComponent) && finisher.TryGetComponent(out ItemComponent itemComponent)) + if (handsComponent.CanPutInHand(itemComponent)) { - if (handsComponent.CanPutInHand(itemComponent)) - { - handsComponent.PutInHand(itemComponent); - return; - } + handsComponent.PutInHand(itemComponent); + return true; } - - finisher.Transform.GridPosition = user.Transform.GridPosition; - return; } + finisher.Transform.GridPosition = user.Transform.GridPosition; + return true; + } } } diff --git a/Content.Server/GameObjects/Components/Nutrition/FoodContainerComponent.cs b/Content.Server/GameObjects/Components/Nutrition/FoodContainerComponent.cs new file mode 100644 index 0000000000..efddfcc04b --- /dev/null +++ b/Content.Server/GameObjects/Components/Nutrition/FoodContainerComponent.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Content.Server.GameObjects.EntitySystems; +using Content.Shared.GameObjects.Components.Nutrition; +using Robust.Server.GameObjects; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using Robust.Shared.Serialization; +using Robust.Shared.ViewVariables; + +namespace Content.Server.GameObjects.Components.Nutrition +{ + /// + /// This container acts as a master object for things like Pizza, which holds slices. + /// + /// TODO: Perhaps implement putting food back (pizza boxes) but that really isn't mandatory. + /// This doesn't even need to have an actual Container for right now. + [RegisterComponent] + public sealed class FoodContainer : SharedFoodContainerComponent, IUse + { +#pragma warning disable 649 + [Dependency] private readonly IRobustRandom _random; + [Dependency] private readonly IEntityManager _entityManager; +#pragma warning restore 649 + public override string Name => "FoodContainer"; + + private AppearanceComponent _appearance; + private Dictionary _prototypes; + private uint _capacity; + + public int Capacity => (int)_capacity; + [ViewVariables] + public int Count => _count; + + private int _count = 0; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _prototypes, "prototypes", null); + serializer.DataField(ref _capacity, "capacity", 5); + } + + public override void Initialize() + { + base.Initialize(); + Owner.TryGetComponent(out _appearance); + _count = Capacity; + UpdateAppearance(); + + } + + bool IUse.UseEntity(UseEntityEventArgs eventArgs) + { + + var hands = eventArgs.User.TryGetComponent(out HandsComponent handsComponent); + var itemToSpawn = _entityManager.SpawnEntity(GetRandomPrototype(), Owner.Transform.GridPosition); + handsComponent.PutInHandOrDrop(itemToSpawn.GetComponent()); + _count--; + if (_count < 1) + { + Owner.Delete(); + return false; + } + return true; + + } + + + private string GetRandomPrototype() + { + var defaultProto = _prototypes.Keys.FirstOrDefault(); + if (_prototypes.Count == 1) + { + return defaultProto; + } + var probResult = _random.Next(0, 100); + var total = 0; + foreach (var item in _prototypes) + { + total += item.Value; + if (probResult < total) + { + return item.Key; + } + } + + return defaultProto; + } + + private void UpdateAppearance() + { + _appearance?.SetData(FoodContainerVisuals.Current, Count); + } + } +} diff --git a/Content.Shared/GameObjects/Components/Nutrition/SharedDrinkFoodContainerComponent.cs b/Content.Shared/GameObjects/Components/Nutrition/SharedDrinkFoodContainerComponent.cs index 96fbb796bf..5148a5769d 100644 --- a/Content.Shared/GameObjects/Components/Nutrition/SharedDrinkFoodContainerComponent.cs +++ b/Content.Shared/GameObjects/Components/Nutrition/SharedDrinkFoodContainerComponent.cs @@ -4,12 +4,12 @@ using Robust.Shared.Serialization; namespace Content.Shared.GameObjects.Components.Nutrition { - public abstract class SharedDrinkFoodContainerComponent : Component + public abstract class SharedFoodContainerComponent : Component { } [NetSerializable, Serializable] - public enum DrinkFoodContainerVisualMode + public enum FoodContainerVisualMode { /// /// Discrete: 50 eggs in a carton -> down to 25, will show 12/12 until it gets below max @@ -20,7 +20,7 @@ namespace Content.Shared.GameObjects.Components.Nutrition } [NetSerializable, Serializable] - public enum DrinkFoodContainerVisuals + public enum FoodContainerVisuals { Capacity, Current, diff --git a/Resources/Audio/items/bottle_open1.ogg b/Resources/Audio/items/bottle_open1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ed1065253a9773ff94ae62bc42748dbe11e010a3 GIT binary patch literal 33261 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/items/can_open1.ogg b/Resources/Audio/items/can_open1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5da8d89ff066b1dbd746d1a083aa9519839b9856 GIT binary patch literal 9583 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 GD*qo%X;Hoa literal 0 HcmV?d00001 diff --git a/Resources/Prototypes/Entities/Items/Consumables/drinks.yml b/Resources/Prototypes/Entities/Items/Consumables/drinks.yml index bb5562b769..53024b3993 100644 --- a/Resources/Prototypes/Entities/Items/Consumables/drinks.yml +++ b/Resources/Prototypes/Entities/Items/Consumables/drinks.yml @@ -10,8 +10,7 @@ maxVol: 50 - type: Pourable transferAmount: 5 - - type: Drink - despawn_empty: false + - type: Drink - type: Sound - type: Sprite state: icon @@ -33,7 +32,6 @@ maxVol: 50 caps: 16 - type: Drink - despawn_empty: false - type: Pourable transferAmount: 5 - type: TransformableContainer @@ -49,7 +47,7 @@ contents: reagents: - ReagentId: chem.Ale - Quantity: 20 + Quantity: 20 - type: Sprite sprite: Objects/Drinks/aleglass.rsi - type: Icon @@ -67,7 +65,7 @@ reagents: - ReagentId: chem.Antifreeze Quantity: 20 - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/antifreeze.rsi - type: Icon @@ -85,7 +83,7 @@ reagents: - ReagentId: chem.AtomicBomb Quantity: 20 - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/atomicbombglass.rsi - type: Icon @@ -102,8 +100,8 @@ contents: reagents: - ReagentId: chem.B52 - Quantity: 20 - - type: Drink + Quantity: 20 + - type: Drink - type: Sprite sprite: Objects/Drinks/b52glass.rsi - type: Icon @@ -115,7 +113,7 @@ name: Bananahonk glass description: A drink from Clown Heaven. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/bananahonkglass.rsi - type: Icon @@ -127,7 +125,7 @@ # name: Barflask # description: '' # components: -# - type: Drink# +# - type: Drink# # contents: # - water: 1 # - type: Sprite @@ -141,7 +139,7 @@ name: Beepsky smash glass description: Deny drinking this and prepare for THE LAW. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/beepskysmashglass.rsi - type: Icon @@ -153,7 +151,7 @@ name: Beer # Beer it is. Coffee. Beer? COFF-EE? BE-ER? C-O... B-E description: An alcoholic beverage made from malted grains, hops, yeast, and water. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -170,7 +168,7 @@ name: Beer glass description: An alcoholic beverage made from malted grains, hops, yeast, and water. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -187,7 +185,7 @@ name: Berry juice description: A delicious blend of several different kinds of berries. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/berryjuice.rsi - type: Icon @@ -199,7 +197,7 @@ # name: Bigteacup # description: '' # components: -# - type: Drink# +# - type: Drink# # contents: # - water: 1 # - type: Sprite @@ -213,7 +211,7 @@ name: Black russian glass description: For the lactose-intolerant. Still as classy as a White Russian. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/blackrussianglass.rsi - type: Icon @@ -225,7 +223,7 @@ name: Bloody mary glass description: A strange yet pleasurable mixture made of vodka, tomato and lime juice. Tastes like liquid murder components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/bloodymaryglass.rsi - type: Icon @@ -237,7 +235,7 @@ name: Booger description: Ewww... components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/booger.rsi - type: Icon @@ -249,7 +247,7 @@ name: Brave bull glass description: It's just as effective as Dutch-Courage! components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/bravebullglass.rsi - type: Icon @@ -261,7 +259,7 @@ # name: Flat mug # description: A mug with an unknown flag emblazoned on it. You feel like tea might be the only beverage that belongs in it. # components: -# - type: Drink# +# - type: Drink# # contents: # - water: 1 # - type: Sprite @@ -275,7 +273,7 @@ name: Brown star description: It's not what it sounds like... components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/brownstar.rsi - type: Icon @@ -287,7 +285,7 @@ name: Cafe latte description: A nice, strong and tasty beverage while you are reading. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/cafe_latte.rsi - type: Icon @@ -299,7 +297,7 @@ name: Pitcher description: A handled glass pitcher. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/carafe.rsi state: icon-10 @@ -317,7 +315,7 @@ name: Carrot juice description: Has a uniquely sweet flavour of concentrated carrots. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/carrotjuice.rsi - type: Icon @@ -329,7 +327,7 @@ name: Changeling sting description: You take a tiny sip and feel a burning sensation... components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/changelingsting.rsi - type: Icon @@ -341,7 +339,7 @@ name: Hot chocolate description: A heated drink consisting melted chocolate and heated milk. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/chocolateglass.rsi - type: Icon @@ -353,7 +351,7 @@ name: Coffee description: Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -370,7 +368,7 @@ name: Cognac glass description: A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. Classy as fornication. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -387,7 +385,7 @@ name: Space cola bottle description: Cola. in space components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -404,7 +402,7 @@ name: Cream description: Dairy product composed of the higher-fat layer skimmed from the top of milk before homogenization. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -421,7 +419,7 @@ name: Cuba libre glass description: Rum, mixed with cola. Viva la revolucion. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -438,7 +436,7 @@ name: Blue curacao description: Exotically blue, fruity drink, distilled from oranges. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/curacaoglass.rsi - type: Icon @@ -450,7 +448,7 @@ name: Demons blood description: AHHHH!!!! # AAHHHHHH components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/demonsblood.rsi - type: Icon @@ -462,7 +460,7 @@ name: Inspector's flask description: A metal flask with a leather band and golden badge belonging to the inspector. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/detflask.rsi - type: Icon @@ -474,7 +472,7 @@ name: Devil's kiss description: Creepy time! components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/devilskiss.rsi - type: Icon @@ -486,7 +484,7 @@ name: The Doctor's delight description: A gulp a day keeps the MediBot away. That's probably for the best. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/doctorsdelightglass.rsi - type: Icon @@ -498,7 +496,7 @@ name: Driest martini glass description: Only for the experienced. You think you see sand floating in the glass. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/driestmartiniglass.rsi - type: Icon @@ -510,7 +508,7 @@ name: Dr. Gibb description: A delicious blend of 42 different flavours components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/dr_gibb.rsi - type: Icon @@ -522,7 +520,7 @@ name: Dr. Gibb Glass description: A delicious blend of 42 different flavours components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/dr_gibb_glass.rsi - type: Icon @@ -534,7 +532,7 @@ name: Melon liquor description: A relatively sweet and fruity 46 proof liquor. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/emeraldglass.rsi - type: Icon @@ -546,7 +544,7 @@ name: Energy drink description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/energy_drink.rsi - type: Icon @@ -558,7 +556,7 @@ name: Erika surprise description: The surprise is, it's green! components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/erikasurprise.rsi - type: Icon @@ -570,7 +568,7 @@ name: Captain's flask description: A metal flask belonging to the captain components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/flask.rsi - type: Icon @@ -582,7 +580,7 @@ name: Flask description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/flask_old.rsi - type: Icon @@ -594,7 +592,7 @@ name: Pan-galactic gargle blaster description: Whoah, this stuff looks volatile! components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/gargleblasterglass.rsi - type: Icon @@ -606,7 +604,7 @@ name: Gin fizz glass description: Refreshingly lemony, deliciously dry. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/ginfizzglass.rsi - type: Icon @@ -618,7 +616,7 @@ name: Gin and tonic description: An all time classic, mild cocktail. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/gintonicglass.rsi - type: Icon @@ -630,7 +628,7 @@ name: Goldschlager description: 100 proof cinnamon schnapps, made for alcoholic teen girls on spring break. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/ginvodkaglass.rsi - type: Icon @@ -642,7 +640,7 @@ name: Bilk description: This appears to be beer mixed with milk. Disgusting. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/glass_brown.rsi - type: Icon @@ -654,7 +652,7 @@ name: Hooch description: Either someone's failure at cocktail making or attempt in alchohol production. In any case, do you really want to drink that? components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/glass_brown2.rsi - type: Icon @@ -666,7 +664,7 @@ name: Moonshine description: You've really hit rock bottom now... your liver packed its bags and left last night. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/glass_clear.rsi - type: Icon @@ -678,7 +676,7 @@ name: Lime juice description: The sweet-sour juice of limes. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/glass_green.rsi - type: Icon @@ -690,7 +688,7 @@ name: Orange juice description: Liquid extract of the orange tree fruit, produced by squeezing or reaming oranges. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/glass_orange.rsi - type: Icon @@ -702,7 +700,7 @@ name: Tomato juice description: Juice made from tomatoes, usually used as a beverage, either plain or in cocktails components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/glass_red.rsi - type: Icon @@ -714,7 +712,7 @@ name: Milk description: An opaque white liquid produced by the mammary glands of mammals. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -732,7 +730,7 @@ name: Lemon juice description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/glass_yellow.rsi - type: Icon @@ -744,7 +742,7 @@ name: Goldschlager glass description: 100 proof cinnamon schnapps, made for alcoholic teen girls on spring break. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/goldschlagerglass.rsi - type: Icon @@ -756,7 +754,7 @@ name: Grape juice description: The juice is often sold in stores or fermented and made into wine, brandy, or vinegar. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/grapejuice.rsi - type: Icon @@ -768,7 +766,12 @@ name: Grape soda description: Sweetened drink with a grape flavor and a deep purple color. components: - - type: Drink + - type: Drink + - type: Solution + contents: + reagents: + - ReagentId: chem.Cola + Quantity: 20 - type: Sprite sprite: Objects/Drinks/grapesoda.rsi - type: Icon @@ -780,7 +783,7 @@ name: Briar rose grenadine syrup bottle description: Sweet and tangy, a bar syrup used to add color or flavor to drinks. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/grenadinebottle.rsi - type: Icon @@ -792,7 +795,7 @@ name: Grenadine syrup glass description: Made in the modern day with proper pomegranate substitute. Who uses real fruit, anyways? components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/grenadineglass.rsi - type: Icon @@ -804,7 +807,7 @@ name: Grog glass description: Watered-down rum, pirate approved! components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/grogglass.rsi - type: Icon @@ -816,7 +819,7 @@ name: Grape soda glass description: Sweetened drink with a grape flavor and a deep purple color. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/gsodaglass.rsi - type: Icon @@ -828,7 +831,7 @@ name: Hell ramen description: The noodles are boiled, the flavors are artificial, just like being back in school. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/hell.rsi - type: Icon @@ -840,7 +843,7 @@ name: Hippies' delight glass description: You just don't get it maaaan. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/hippiesdelightglass.rsi - type: Icon @@ -852,7 +855,7 @@ name: Hot chocolate description: A heated drink consisting melted chocolate and heated milk. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/hot_coco.rsi - type: Icon @@ -864,7 +867,7 @@ name: Coffee description: Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -881,7 +884,7 @@ name: Iced coffee glass description: Coffee and ice, refreshing and cool. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/icedcoffeeglass.rsi - type: Icon @@ -893,7 +896,7 @@ name: Long island iced tea description: The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/icedteaglass.rsi - type: Icon @@ -905,7 +908,7 @@ name: Iced beer glass description: A beer which is so cold the air around it freezes. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/iced_beerglass.rsi - type: Icon @@ -917,7 +920,7 @@ name: Ice glass description: Water frozen into a solid state. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -934,7 +937,7 @@ name: Irish car bomb description: Mmm, tastes like chocolate cake... components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -951,7 +954,7 @@ name: Irish coffee glass description: Coffee, and alcohol. More fun than a Mimosa to drink in the morning. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -968,7 +971,7 @@ name: Irish cream glass description: Whiskey-imbued cream, what else would you expect from the Irish. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -985,7 +988,7 @@ name: Jar description: The hipster's cup components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/jar.rsi - type: Icon @@ -997,7 +1000,7 @@ name: Jar metroid description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/jar_metroid.rsi - type: Icon @@ -1009,7 +1012,7 @@ name: Jar of something description: You can't really tell what this is. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/jar_what.rsi - type: Icon @@ -1021,7 +1024,7 @@ name: Kahlua glass description: A widely known, Mexican coffee-flavoured liqueur. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -1038,7 +1041,7 @@ name: Kira special description: Long live the guy who everyone had mistaken for a girl. Baka! components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/kiraspecial.rsi - type: Icon @@ -1050,7 +1053,7 @@ name: Lemonade description: Drink using lemon juice, water, and a sweetener such as cane sugar or honey. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/lemonade.rsi - type: Icon @@ -1062,7 +1065,7 @@ name: Lemonade glass description: Drink using lemon juice, water, and a sweetener such as cane sugar or honey. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/lemonadeglass.rsi - type: Icon @@ -1074,7 +1077,7 @@ name: Lemon glass description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/lemonglass.rsi - type: Icon @@ -1086,7 +1089,7 @@ name: Lemon juice description: Used to make lemonade, soft drinks, and cocktails. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/lemonjuice.rsi - type: Icon @@ -1098,7 +1101,7 @@ name: Lemon lime description: A tangy substance made of lime and lemon. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/lemonlime.rsi - type: Icon @@ -1110,7 +1113,7 @@ name: Lime juice description: The sweet-sour juice of limes. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/limejuice.rsi - type: Icon @@ -1122,7 +1125,7 @@ name: Lithium flask description: A flask with a Lithium Atom symbol on it. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/lithiumflask.rsi - type: Icon @@ -1134,7 +1137,7 @@ name: Long island iced tea glass description: The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/longislandicedteaglass.rsi - type: Icon @@ -1146,7 +1149,7 @@ name: Manhattan glass description: The Detective's undercover drink of choice. He never could stomach gin... components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/manhattanglass.rsi - type: Icon @@ -1158,12 +1161,12 @@ name: The manly dorf glass description: Beer and Ale, brought together in a delicious mix. Intended for true men only. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: - ReagentId: chem.ManlyDorf - Quantity: 20 + Quantity: 20 - type: Sprite sprite: Objects/Drinks/manlydorfglass.rsi - type: Icon @@ -1175,7 +1178,7 @@ name: Margarita glass description: On the rocks with salt on the rim. Arriba~! components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/margaritaglass.rsi - type: Icon @@ -1187,7 +1190,7 @@ name: Vodka martini glass description: Vodka with Gin. Not quite how 007 enjoyed it, but still delicious. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/martiniglass.rsi - type: Icon @@ -1199,7 +1202,7 @@ name: Mead glass description: A Viking's drink, though a cheap one. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/meadglass.rsi - type: Icon @@ -1211,7 +1214,7 @@ name: Milk jug description: An opaque white liquid produced by the mammary glands of mammals. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -1228,7 +1231,7 @@ name: Milkshake description: Sweet, cold beverage that is usually made from milk components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/milkshake.rsi - type: Icon @@ -1240,7 +1243,7 @@ name: Mojito description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/mojito.rsi - type: Icon @@ -1252,7 +1255,7 @@ name: Neurotoxin glass description: A strong neurotoxin that puts the subject into a death-like state. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/neurotoxinglass.rsi - type: Icon @@ -1264,7 +1267,7 @@ name: Nothing description: Absolutely nothing. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/nothing.rsi - type: Icon @@ -1276,7 +1279,7 @@ name: NeoTheology cahors whine description: Fortified dessert wine made from cabernet sauvignon, saperavi and other grapes. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/ntcahors.rsi - type: Icon @@ -1288,7 +1291,7 @@ name: Nuka Cola glass description: Cola, cola never changes. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/nuka_colaglass.rsi - type: Icon @@ -1300,7 +1303,7 @@ name: Orange juice description: Liquid extract of the orange tree fruit, produced by squeezing or reaming oranges. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/orangejuice.rsi - type: Icon @@ -1312,7 +1315,7 @@ name: Patron glass description: Tequila with silver in it, a favorite of alcoholic women in the club scene. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/patronglass.rsi - type: Icon @@ -1324,7 +1327,7 @@ name: Poison berry juice description: A tasty juice blended from various kinds of very deadly and toxic berries. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/poisonberryjuice.rsi - type: Icon @@ -1336,7 +1339,7 @@ name: Manhattan project glass description: A scientist's drink of choice, for pondering ways to blow up the station. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/proj_manhattanglass.rsi - type: Icon @@ -1348,7 +1351,7 @@ name: Poison wine glass description: Is this even wine? Toxic! Hallucinogenic! Probably consumed in boatloads by your superiors! components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/pwineglass.rsi - type: Icon @@ -1360,7 +1363,7 @@ name: Rag description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/rag.rsi - type: Icon @@ -1372,7 +1375,7 @@ name: Rag lit description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/rag_lit.rsi - type: Icon @@ -1384,7 +1387,7 @@ name: Rag small description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/rag_small.rsi - type: Icon @@ -1396,7 +1399,7 @@ name: Rag small lit description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/rag_small_lit.rsi - type: Icon @@ -1408,7 +1411,7 @@ name: Cup ramen description: Just add 10ml water, self heats! A taste that reminds you of your school years. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/ramen.rsi - type: Icon @@ -1420,7 +1423,7 @@ name: Red mead glass description: The true Viking's drink! Even though it has a strange red color. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/red_meadglass.rsi - type: Icon @@ -1432,7 +1435,7 @@ name: Rewriter description: The secret of the sanctuary of the Libarian... components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/rewriter.rsi - type: Icon @@ -1444,7 +1447,7 @@ name: Deadrum glass description: Distilled alcoholic drink made from saltwater. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/rumglass.rsi - type: Icon @@ -1456,7 +1459,7 @@ name: Sbiten glass description: A spicy Vodka! Might be a little hot for the little guys! components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/sbitenglass.rsi - type: Icon @@ -1468,7 +1471,7 @@ name: Screwdriver glass description: Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/screwdriverglass.rsi - type: Icon @@ -1480,7 +1483,7 @@ name: Sui dream glass description: 'Comprised of: White soda, blue curacao, melon liquor.' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/sdreamglass.rsi - type: Icon @@ -1492,7 +1495,7 @@ name: Blue milkshake description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/shake-blue.rsi - type: Icon @@ -1505,7 +1508,7 @@ name: ShakeEmpty description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/shake-empty.rsi - type: Icon @@ -1517,7 +1520,7 @@ name: Meat shake description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/shake-meat.rsi - type: Icon @@ -1529,7 +1532,7 @@ name: Robo shake description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/shake-robo.rsi - type: Icon @@ -1541,7 +1544,7 @@ name: White shake description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/shake-white.rsi - type: Icon @@ -1554,7 +1557,7 @@ name: Shaker description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/shaker.rsi - type: Icon @@ -1566,7 +1569,7 @@ name: Shiny flask description: A shiny metal flask. It appears to have a Greek symbol inscribed on it. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/shinyflask.rsi - type: Icon @@ -1578,7 +1581,7 @@ name: Shot glass description: '' components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/shotglass.rsi - type: Icon @@ -1590,7 +1593,7 @@ name: Silencer glass description: A drink from Mime Heaven. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/silencerglass.rsi - type: Icon @@ -1602,7 +1605,7 @@ name: Singulo description: A blue-space beverage! components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/singulo.rsi - type: Icon @@ -1614,7 +1617,7 @@ name: Snow White description: A cold refreshment components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/snowwhite.rsi - type: Icon @@ -1626,7 +1629,7 @@ name: Soda water description: Water containing dissolved carbon dioxide gas. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/sodawater.rsi - type: Icon @@ -1638,7 +1641,7 @@ name: Soy milk description: An opaque white liquid made from soybeans. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/soymilk.rsi - type: Icon @@ -1650,7 +1653,7 @@ name: Soy latte description: A coffee drink made with espresso and steamed soy milk. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/soy_latte.rsi - type: Icon @@ -1662,7 +1665,7 @@ name: Space-up bottle description: Tastes like a hull breach in your mouth. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/space-up_bottle.rsi - type: Icon @@ -1674,7 +1677,7 @@ name: Space-up Glass description: Tastes like a hull breach in your mouth. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/space-up_glass.rsi - type: Icon @@ -1686,7 +1689,7 @@ name: Space Mountain Wind Bottle description: Blows right through you like a space wind. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/space_mountain_wind_bottle.rsi - type: Icon @@ -1698,7 +1701,7 @@ name: Space Mountain Wind Glass description: Blows right through you like a space wind. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/space_mountain_wind_glass.rsi - type: Icon @@ -1710,7 +1713,7 @@ name: Syndicate bomb description: Tastes like terrorism! components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -1727,7 +1730,7 @@ name: Teacup description: A plain white porcelain teacup. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -1750,7 +1753,7 @@ name: Tea glass description: Tasty black tea. Contains caffeine. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -1767,7 +1770,7 @@ name: Teapot # Short and stout description: An elegant teapot. It simply oozes class. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -1784,7 +1787,7 @@ name: Tequila glass description: A strong and mildly flavoured, mexican produced spirit. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/tequillaglass.rsi - type: Icon @@ -1796,7 +1799,7 @@ name: Tequila sunrise glass description: Tequila and orange juice. Much like a Screwdriver, only Mexican~ components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/tequillasunriseglass.rsi - type: Icon @@ -1808,7 +1811,7 @@ name: Thirteen Loko Glass description: A potent mixture of caffeine and alcohol. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/thirteen_loko_glass.rsi - type: Icon @@ -1820,7 +1823,7 @@ name: Three mile island glass description: Made for a woman, strong enough for a man. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/threemileislandglass.rsi - type: Icon @@ -1832,7 +1835,7 @@ name: Tomato juice description: Juice made from tomatoes, usually used as a beverage, either plain or in cocktails components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/tomatojuice.rsi - type: Icon @@ -1844,7 +1847,7 @@ name: Tonic water description: A carbonated soft drink in which quinine is dissolved. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/tonic.rsi - type: Icon @@ -1856,7 +1859,7 @@ name: Toxins special glass description: This thing is ON FIRE! CALL THE DAMN SHUTTLE!" components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/toxinsspecialglass.rsi - type: Icon @@ -1868,7 +1871,7 @@ name: Vacuum flask description: Keeping your drinks at the perfect temperature since 1892. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/vacuumflask.rsi - type: Icon @@ -1880,7 +1883,7 @@ name: Vermouth glass description: Aromatized, fortified white wine flavored with various botanicals. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/vermouthglass.rsi - type: Icon @@ -1892,7 +1895,7 @@ name: Vodka tonic glass description: For when a gin and tonic isn't russian enough. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/vodkatonicglass.rsi - type: Icon @@ -1904,7 +1907,7 @@ name: Water jug description: Stay hydrated components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/water.rsi - type: Icon @@ -1916,7 +1919,7 @@ name: Water bottle description: Simple clean water of unknown origin. You think that maybe you dont want to know it. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/waterbottle.rsi - type: Icon @@ -1928,7 +1931,7 @@ name: Watermelon juice description: Delicious juice made from watermelon. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/watermelon.rsi - type: Icon @@ -1940,7 +1943,7 @@ name: Water Cup description: A paper water cup. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/water_cup.rsi state: icon-1 @@ -1958,7 +1961,7 @@ name: Whiskey cola glass description: Whiskey, mixed with cola. Surprisingly refreshing. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -1975,7 +1978,7 @@ name: Special blend whiskey glass description: Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: @@ -1992,7 +1995,7 @@ name: Whiskey soda glass description: For the more refined griffon. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/whiskeysodaglass.rsi - type: Icon @@ -2004,7 +2007,7 @@ name: Whiskey soda glass description: For the more refined griffon. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/whiskeysodaglass2.rsi - type: Icon @@ -2016,7 +2019,7 @@ name: White Russian glass description: That's just, like, your opinion, man... components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/whiterussianglass.rsi - type: Icon @@ -2028,7 +2031,7 @@ name: Wine glass description: An premium alchoholic beverage made from distilled grape juice. components: - - type: Solution + - type: Solution maxVol: 20 contents: reagents: diff --git a/Resources/Prototypes/Entities/Items/Consumables/drinks_bottles.yml b/Resources/Prototypes/Entities/Items/Consumables/drinks_bottles.yml index c719d7e7f5..59f424c0dd 100644 --- a/Resources/Prototypes/Entities/Items/Consumables/drinks_bottles.yml +++ b/Resources/Prototypes/Entities/Items/Consumables/drinks_bottles.yml @@ -1,29 +1,42 @@ - type: entity - parent: DrinkBase + parent: BaseItem + id: DrinkBottleBaseFull + abstract: true + components: + - type: Drink + openSounds: bottleOpenSounds + - type: Solution + - type: Sprite + state: icon + - type: Icon + state: icon + +- type: entity + parent: DrinkBottleBaseFull id: DrinkAbsintheBottleFull name: Jailbreaker Verte description: One sip of this and you just know you're gonna have a good time. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/absinthebottle.rsi - type: Icon sprite: Objects/Drinks/absinthebottle.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkAlcoGreenFull name: Emeraldine Melon Liquor description: A bottle of 46 proof Emeraldine Melon Liquor. Sweet and light. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/alco-green.rsi - type: Icon sprite: Objects/Drinks/alco-green.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkAleBottleFull name: Magm-Ale description: A true dorf's drink of choice. @@ -33,26 +46,26 @@ contents: reagents: - ReagentId: chem.Ale - Quantity: 80 + Quantity: 80 - type: Sprite sprite: Objects/Drinks/alebottle.rsi - type: Icon sprite: Objects/Drinks/alebottle.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkBottleOfNothingFull name: Bottle of nothing description: A bottle filled with nothing components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/bottleofnothing.rsi - type: Icon sprite: Objects/Drinks/bottleofnothing.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkCognacBottleFull name: Cognac bottle description: A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time. @@ -62,38 +75,38 @@ contents: reagents: - ReagentId: chem.Cognac - Quantity: 80 + Quantity: 80 - type: Sprite sprite: Objects/Drinks/cognacbottle.rsi - type: Icon sprite: Objects/Drinks/cognacbottle.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkGinBottleFull name: Griffeater gin bottle description: A bottle of high quality gin, produced in the New London Space Station. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/ginbottle.rsi - type: Icon sprite: Objects/Drinks/ginbottle.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkGoldschlagerBottleFull name: Goldschlager bottle description: 100 proof cinnamon schnapps, made for alcoholic teen girls on spring break. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/goldschlagerbottle.rsi - type: Icon sprite: Objects/Drinks/goldschlagerbottle.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkKahluaBottleFull name: Kahlua bottle description: A widely known, Mexican coffee-flavoured liqueur. In production since 1936, HONK @@ -103,74 +116,74 @@ contents: reagents: - ReagentId: chem.H2O - Quantity: 80 + Quantity: 80 - type: Sprite sprite: Objects/Drinks/kahluabottle.rsi - type: Icon sprite: Objects/Drinks/kahluabottle.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkPatronBottleFull name: Wrapp artiste patron bottle description: Silver laced tequilla, served in space night clubs across the galaxy. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/patronbottle.rsi - type: Icon sprite: Objects/Drinks/patronbottle.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkPoisonWinebottleFull name: Warlock's velvet bottle description: What a delightful packaging for a surely high quality wine! The vintage must be amazing! components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/pwinebottle.rsi - type: Icon sprite: Objects/Drinks/pwinebottle.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkRumbottleFull name: Captain Pete's cuban spiced rum description: This isn't just rum, oh no. It's practically GRIFF in a bottle. components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/rumbottle.rsi - type: Icon sprite: Objects/Drinks/rumbottle.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkTequilabottleFull name: Caccavo guaranteed quality tequila bottle description: Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients! components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/tequillabottle.rsi - type: Icon sprite: Objects/Drinks/tequillabottle.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkVermouthBottleFull name: Goldeneye vermouth bottle description: Sweet, sweet dryness~ components: - - type: Drink + - type: Drink - type: Sprite sprite: Objects/Drinks/vermouthbottle.rsi - type: Icon sprite: Objects/Drinks/vermouthbottle.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkVodkaBottleFull name: Vodka bottle description: Aah, vodka. Prime choice of drink AND fuel by Russians worldwide. @@ -187,7 +200,7 @@ sprite: Objects/Drinks/vodkabottle.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkWhiskeyBottleFull name: Uncle Git's special reserve description: A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES. @@ -204,7 +217,7 @@ sprite: Objects/Drinks/whiskeybottle.rsi - type: entity - parent: DrinkBase + parent: DrinkBottleBaseFull id: DrinkWineBottleFull name: Doublebearded bearded special wine bottle description: A faint aura of unease and asspainery surrounds the bottle. diff --git a/Resources/Prototypes/Entities/Items/Consumables/drinks_cans.yml b/Resources/Prototypes/Entities/Items/Consumables/drinks_cans.yml index ba497f7751..0651a49558 100644 --- a/Resources/Prototypes/Entities/Items/Consumables/drinks_cans.yml +++ b/Resources/Prototypes/Entities/Items/Consumables/drinks_cans.yml @@ -1,230 +1,103 @@ - type: entity - parent: DrinkFoodContainerBase - name: Base can - id: DrinkFoodContainerBaseCan + parent: BaseItem + id: DrinkCanBaseFull abstract: true components: - - type: Sound - - type: DrinkFoodContainer - use_sound: /Audio/items/canopen.ogg - capacity: 1 - -# Below are grouped paired as "unopened" and "opened" -- type: entity - parent: DrinkFoodContainerBaseCan - name: Space cola (unopened) - id: DrinkFoodContainerColaCanUnopened - components: - - type: Sound - - type: DrinkFoodContainer - prototypes: - DrinkColaCan: 100 - - type: Sprite - sprite: Objects/Drinks/cola.rsi - - type: Icon - sprite: Objects/Drinks/cola.rsi - -- type: entity - parent: DrinkBase - id: DrinkColaCan - name: Space cola - description: A refreshing beverage. - components: + - type: Drink + openSounds: canOpenSounds - type: Solution maxVol: 20 contents: reagents: - ReagentId: chem.Cola Quantity: 20 - - type: Sprite - sprite: Objects/Drinks/cola.rsi - - type: Icon - sprite: Objects/Drinks/cola.rsi - + - type: Pourable + transferAmount: 5 - type: entity - parent: DrinkFoodContainerBaseCan - name: Ice tea can (unopened) - id: DrinkFoodContainerIceTeaCanUnopened + parent: DrinkCanBaseFull + id: DrinkColaCan + name: Space cola + description: A refreshing beverage. components: - - type: Sound - - type: DrinkFoodContainer - prototypes: - DrinkIceTeaCan: 100 + - type: Solution - type: Sprite - sprite: Objects/Drinks/ice_tea_can.rsi + sprite: Objects/Drinks/cola.rsi - type: Icon - sprite: Objects/Drinks/ice_tea_can.rsi + sprite: Objects/Drinks/cola.rsi - type: entity - parent: DrinkBase + parent: DrinkCanBaseFull id: DrinkIceTeaCan name: Ice tea can description: '' components: - - type: Drink - type: Sprite sprite: Objects/Drinks/ice_tea_can.rsi - type: Icon sprite: Objects/Drinks/ice_tea_can.rsi - - type: entity - parent: DrinkFoodContainerBaseCan - name: Lemon-lime can (unopened) - id: DrinkFoodContainerLemonLimeCanUnopened - components: - - type: Sound - - type: DrinkFoodContainer - prototypes: - DrinkLemonLimeCan: 100 - - type: Sprite - sprite: Objects/Drinks/lemon-lime.rsi - - type: Icon - sprite: Objects/Drinks/lemon-lime.rsi - -- type: entity - parent: DrinkBase + parent: DrinkCanBaseFull id: DrinkLemonLimeCan name: Lemon-lime can description: You wanted ORANGE. It gave you Lemon Lime. components: - - type: Drink - type: Sprite sprite: Objects/Drinks/lemon-lime.rsi - type: Icon sprite: Objects/Drinks/lemon-lime.rsi - - type: entity - parent: DrinkFoodContainerBaseCan - name: Purple can (unopened) - id: DrinkFoodContainerPurpleCanUnopened - components: - - type: Sound - - type: DrinkFoodContainer - prototypes: - DrinkPurpleCan: 100 - - type: Sprite - sprite: Objects/Drinks/purple_can.rsi - - type: Icon - sprite: Objects/Drinks/purple_can.rsi - -- type: entity - parent: DrinkBase + parent: DrinkCanBaseFull id: DrinkPurpleCan name: Purple Can description: '' components: - - type: Drink - type: Sprite sprite: Objects/Drinks/purple_can.rsi - type: Icon sprite: Objects/Drinks/purple_can.rsi - - type: entity - parent: DrinkFoodContainerBaseCan - name: Space mountain wind can (unopened) - id: DrinkFoodContainerSpaceMountainWindCanUnopened - components: - - type: Sound - - type: DrinkFoodContainer - prototypes: - DrinkSpaceMountainWindCan: 100 - - type: Sprite - sprite: Objects/Drinks/space_mountain_wind.rsi - - type: Icon - sprite: Objects/Drinks/space_mountain_wind.rsi - -- type: entity - parent: DrinkBase + parent: DrinkCanBaseFull id: DrinkSpaceMountainWindCan name: Space mountain wind can description: Blows right through you like a space wind. components: - - type: Drink - type: Sprite sprite: Objects/Drinks/space_mountain_wind.rsi - type: Icon sprite: Objects/Drinks/space_mountain_wind.rsi - - type: entity - parent: DrinkFoodContainerBaseCan - name: Space-up can (unopened) - id: DrinkFoodContainerSpaceUpCanUnopened - components: - - type: Sound - - type: DrinkFoodContainer - prototypes: - DrinkSpaceUpCan: 100 - - type: Sprite - sprite: Objects/Drinks/space-up.rsi - - type: Icon - sprite: Objects/Drinks/space-up.rsi - -- type: entity - parent: DrinkBase + parent: DrinkCanBaseFull id: DrinkSpaceUpCan name: Space-up can description: Tastes like a hull breach in your mouth. components: - - type: Drink - type: Sprite sprite: Objects/Drinks/space-up.rsi - type: Icon sprite: Objects/Drinks/space-up.rsi - - type: entity - parent: DrinkFoodContainerBaseCan - name: Starkist can (unopened) - id: DrinkFoodContaineStarkistCanUnopened - components: - - type: Sound - - type: DrinkFoodContainer - prototypes: - DrinkStarkistCan: 100 - - type: Sprite - sprite: Objects/Drinks/starkist.rsi - - type: Icon - sprite: Objects/Drinks/starkist.rsi - -- type: entity - parent: DrinkBase + parent: DrinkCanBaseFull id: DrinkStarkistCan name: Starkist can description: The taste of a star in liquid form. And, a bit of tuna...? components: - - type: Drink - type: Sprite sprite: Objects/Drinks/starkist.rsi - type: Icon sprite: Objects/Drinks/starkist.rsi - - type: entity - parent: DrinkFoodContainerBaseCan - name: Thirteen loko can (unopened) - id: DrinkFoodContaineThirteenLokoCanUnopened - components: - - type: Sound - - type: DrinkFoodContainer - prototypes: - DrinkThirteenLokoCan: 100 - - type: Sprite - sprite: Objects/Drinks/thirteen_loko.rsi - - type: Icon - sprite: Objects/Drinks/thirteen_loko.rsi - -- type: entity - parent: DrinkBase + parent: DrinkCanBaseFull id: DrinkThirteenLokoCan name: Thirteen loko can description: The MBO has advised crew members that consumption of Thirteen Loko may result in seizures, blindness, drunkeness, or even death. Please Drink Responsibly. components: - - type: Drink - type: Sprite sprite: Objects/Drinks/thirteen_loko.rsi - type: Icon diff --git a/Resources/Prototypes/Entities/Items/Consumables/drinks_cups.yml b/Resources/Prototypes/Entities/Items/Consumables/drinks_cups.yml index 0b29b551fa..0fe3d44d46 100644 --- a/Resources/Prototypes/Entities/Items/Consumables/drinks_cups.yml +++ b/Resources/Prototypes/Entities/Items/Consumables/drinks_cups.yml @@ -10,7 +10,6 @@ - type: Pourable transferAmount: 5 - type: Drink - despawn_empty: false - type: Sound - type: Sprite state: icon diff --git a/Resources/Prototypes/Entities/Items/Consumables/food.yml b/Resources/Prototypes/Entities/Items/Consumables/food.yml index 6ef5841454..a6c81d8a5a 100644 --- a/Resources/Prototypes/Entities/Items/Consumables/food.yml +++ b/Resources/Prototypes/Entities/Items/Consumables/food.yml @@ -3,7 +3,6 @@ id: FoodBase abstract: true components: - - type: Food - type: Sound - type: Sprite state: icon @@ -26,11 +25,12 @@ description: Dried raisins components: - type: Food + trash: TrashRaisins + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 12 - spawn_on_finish: TrashRaisins - type: Sprite sprite: Objects/Food/4no_raisins.rsi - type: Icon @@ -42,7 +42,7 @@ id: FoodAesirSalad description: Probably too incredible for mortal men to fully enjoy. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -59,7 +59,7 @@ id: FoodAmanitaPie description: Sweet and tasty poison pie. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -76,11 +76,12 @@ description: Looks curiously toxic components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 12 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/amanitajelly.rsi - type: Icon @@ -93,6 +94,7 @@ # description: # components: # - type: Food +# - type: Solution # uses: 1 # - type: Sprite # sprite: Objects/Food/ambrosiavulgariscrushed.rsi @@ -106,11 +108,12 @@ description: A slice of heavenly cake. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 6 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/apple_cake_slice.rsi - type: Icon @@ -122,7 +125,7 @@ id: FoodApplePie description: A pie containing sweet sweet love... or apple. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -140,6 +143,7 @@ # description: # components: # - type: Food +# - type: Solution # uses: 1 # - type: Sprite # sprite: Objects/Food/bacon.rsi @@ -152,7 +156,7 @@ id: FoodBadRecipe description: Someone should be demoted from chef for this. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -168,7 +172,7 @@ id: FoodBaguette description: Bon appetit! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -185,11 +189,12 @@ description: components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/breadslice.rsi - type: Icon @@ -202,11 +207,12 @@ description: components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/bananabreadslice.rsi - type: Icon @@ -219,11 +225,12 @@ description: Just like back home, on clown planet! HONK! components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/pie.rsi - type: Icon @@ -236,6 +243,7 @@ # description: # components: # - type: Food +# - type: Solution # uses: 1 # - type: Sprite # sprite: Objects/Food/bearmeat.rsi @@ -249,11 +257,12 @@ description: Wait, how do you spell it again..? components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/beetsoup.rsi - type: Icon @@ -266,11 +275,12 @@ description: No black birds, this is a good sign. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/berryclafoutis.rsi - type: Icon @@ -283,11 +293,12 @@ description: A slice of your birthday. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/birthday_cake_slice.rsi - type: Icon @@ -300,11 +311,12 @@ description: A plain dish of noodles, this sucks. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 4 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/spaghettiboiled.rsi - type: Icon @@ -317,11 +329,12 @@ description: '' components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/brain_cake_slice.rsi - type: Icon @@ -334,11 +347,12 @@ description: Nougat, love it or hate it. components: - type: Food + trash: TrashCandy + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 20 - spawn_on_finish: TrashCandy - type: Sprite sprite: Objects/Food/candy.rsi - type: Icon @@ -350,7 +364,7 @@ id: FoodCandyCorn description: It's a handful of candy corn. Cannot be stored in a detective's hat, alas. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -367,11 +381,12 @@ description: Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 10 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/carrotcake_slice.rsi - type: Icon @@ -384,11 +399,12 @@ description: Tasty fries from fresh Carrots. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 4 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/carrotfries.rsi - type: Icon @@ -401,11 +417,12 @@ description: A legendary egg custard that makes friends out of enemies. Probably too hot for a cat to eat. components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 10 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/chawanmushi.rsi - type: Icon @@ -417,7 +434,7 @@ id: FoodCheeseburger description: The cheese adds a good flavor. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -434,11 +451,12 @@ description: Slice of pure cheestisfaction components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 4 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/cheesecake_slice.rsi - type: Icon @@ -450,7 +468,7 @@ id: FoodCheeseWedge description: A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -467,11 +485,12 @@ description: Bite sized cheesie snacks that will honk all over your mouth components: - type: Food + trash: TrashCheesieHonkers + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashCheesieHonkers - type: Sprite sprite: Objects/Food/cheesie_honkers.rsi - type: Icon @@ -484,11 +503,12 @@ description: Fries. Covered in cheese. Duh. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/cheesyfries.rsi - type: Icon @@ -500,7 +520,7 @@ id: FoodCherryPie description: Taste so good, make a grown man cry. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -517,11 +537,12 @@ description: Commander Riker's What-The-Crisps components: - type: Food + trash: TrashChips + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 6 - spawn_on_finish: TrashChips - type: Sprite sprite: Objects/Food/chips.rsi - type: Icon @@ -533,7 +554,7 @@ id: FoodChocolateBar description: Such sweet, fattening food. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -550,11 +571,12 @@ description: A cake with added chocolate components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/chocolatecake_slice.rsi - type: Icon @@ -566,7 +588,7 @@ id: FoodChocolateEgg description: Such sweet, fattening food. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -582,7 +604,7 @@ id: FoodClownBurger description: This tastes funny... components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -598,7 +620,7 @@ id: FoodClownsTears description: Not very funny. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -615,6 +637,7 @@ # description: # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 3 # - type: Sprite @@ -629,11 +652,12 @@ description: This slush is barely a liquid! components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 6 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/coldchili.rsi - type: Icon @@ -646,6 +670,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -659,7 +684,7 @@ name: Cookie!!! description: COOKIE!!! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -675,7 +700,7 @@ name: Cracker description: It's a salted cracker. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -692,11 +717,12 @@ description: A slice of yum! components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 6 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/creamcheesebreadslice.rsi - type: Icon @@ -709,11 +735,12 @@ description: A sandwich that burns your tongue and then leaves it numb! components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 6 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/cubancarp.rsi - type: Icon @@ -726,6 +753,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -739,7 +767,7 @@ name: Donk-pocket description: The food of choice for the seasoned traitor. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -755,7 +783,7 @@ name: Donut description: Goes great with Robust Coffee. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -771,7 +799,7 @@ name: Frosted Donut description: Goes great with Robust Coffee. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -787,7 +815,7 @@ name: Egg-blue description: An egg! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -803,7 +831,7 @@ name: Egg-green description: An egg! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -819,7 +847,7 @@ name: Egg-mime description: An egg! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -835,7 +863,7 @@ name: Egg-orange description: An egg! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -851,7 +879,7 @@ name: Egg-purple description: An egg! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -867,7 +895,7 @@ name: Egg-rainbow description: An egg! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -883,7 +911,7 @@ name: Egg-red description: An egg! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -899,7 +927,7 @@ name: Egg-yellow description: An egg! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -915,7 +943,7 @@ name: Egg description: An egg! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -932,11 +960,12 @@ description: The only good recipe for eggplant. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 12 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/eggplantparm.rsi - type: Icon @@ -949,6 +978,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -963,11 +993,12 @@ description: Viva La Mexico! components: - type: Food + trash: TrashTray + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - spawn_on_finish: TrashTray - type: Sprite sprite: Objects/Food/enchiladas.rsi - type: Icon @@ -980,6 +1011,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -994,6 +1026,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -1007,7 +1040,7 @@ name: Fish and chips description: I do say so myself chap. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1023,7 +1056,7 @@ name: Fillet -o- Carp Sandwich description: Almost like a carp is yelling somewhere... Give me back that fillet -o- carp, give me that carp. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1040,6 +1073,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -1053,7 +1087,7 @@ name: Fish fingers description: A finger of fish. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1070,6 +1104,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -1083,7 +1118,7 @@ name: Fortune cookie description: A true prophecy in each cookie! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1099,7 +1134,7 @@ name: Fried egg description: A fried egg, with a touch of salt and pepper. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1116,11 +1151,12 @@ description: "AKA: French Fries, Freedom Fries, etc." components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/fries.rsi - type: Icon @@ -1133,11 +1169,12 @@ description: A tasty dessert that won't make it through a metal detector. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/gappletart.rsi - type: Icon @@ -1150,11 +1187,12 @@ description: Goes great with Tomato soup! components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 6 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/toastedsandwich.rsi - type: Icon @@ -1166,7 +1204,7 @@ name: Human-burger description: A bloody burger. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1183,11 +1221,12 @@ description: A proper salad, basic and simple, with little bits of carrot, tomato and apple intermingled. Vegan! components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/herbsalad.rsi - type: Icon @@ -1200,6 +1239,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -1214,11 +1254,12 @@ description: A five alarm Texan Chili! components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 6 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/hotchili.rsi - type: Icon @@ -1230,7 +1271,7 @@ name: Hotdog description: Unrelated to dogs, maybe. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1247,6 +1288,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -1260,7 +1302,7 @@ name: Huge mushroom (slice) description: A slice from a huge mushroom. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1277,11 +1319,12 @@ description: A human meat, on a stick. components: - type: Food + # trash: TODO + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - # spawn_on_finish: TODO - type: Sprite sprite: Objects/Food/kabob.rsi - type: Icon @@ -1293,7 +1336,7 @@ name: Jelly donut description: You jelly? components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1309,7 +1352,7 @@ name: Frosted Jelly Donut description: You jelly? components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1325,7 +1368,7 @@ name: Jelly burger description: Culinary delight..? components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1342,11 +1385,12 @@ description: You wish you had some peanut butter to go with this... components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 4 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/jellysandwich.rsi - type: Icon @@ -1359,11 +1403,12 @@ description: A slice of bread covered with delicious jam. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 2 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/jellytoast.rsi - type: Icon @@ -1377,11 +1422,12 @@ description: Delicious meat, on a stick. components: - type: Food + # trash: TODO + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - # spawn_on_finish: TODO - type: Sprite sprite: Objects/Food/kabob.rsi - type: Icon @@ -1394,6 +1440,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -1408,6 +1455,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -1422,11 +1470,12 @@ description: Just a slice of cake, it is enough for everyone. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/lemoncake_slice.rsi - type: Icon @@ -1439,11 +1488,12 @@ description: Just a slice of cake, it is enough for everyone. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/limecake_slice.rsi - type: Icon @@ -1455,12 +1505,11 @@ name: LiquidFood ration #\improper? description: A prepackaged grey slurry of all the essential nutrients for a spacefarer on the go. Should this be crunchy? components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 40 - spawn_on_finish: TrashLiquidFood - type: Sprite sprite: Objects/Food/liquidfood.rsi - type: Icon @@ -1472,7 +1521,7 @@ name: Loaded baked potato description: Totally baked. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1488,7 +1537,7 @@ name: Meat description: A slab of meat. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1504,7 +1553,7 @@ name: Meatball description: A great meal all round. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1521,11 +1570,12 @@ description: You've got balls kid, BALLS! components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/meatballsoup.rsi - type: Icon @@ -1538,11 +1588,12 @@ description: Now thats a nic'e meatball! components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/meatballspaghetti.rsi - type: Icon @@ -1555,11 +1606,12 @@ description: A slice of delicious meatbread. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 12 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/meatbreadslice.rsi - type: Icon @@ -1572,11 +1624,12 @@ description: An old barber recipe, very delicious! components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 20 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/meatpie.rsi - type: Icon @@ -1588,7 +1641,7 @@ name: Meat pizza (slice) description: A slice of a meaty pizza. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1605,11 +1658,12 @@ description: A piece of hot spicy meat. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 6 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/meatsteak.rsi - type: Icon @@ -1622,11 +1676,12 @@ description: The universes best soup! Yum!!! components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/milosoup.rsi - type: Icon @@ -1638,7 +1693,7 @@ name: Mime burger description: Its taste defies language. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1654,7 +1709,7 @@ name: Mint description: It is only wafer thin. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1671,6 +1726,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -1684,7 +1740,7 @@ name: Monkey-burger description: The cornerstone of every nutritious breakfast. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1700,7 +1756,7 @@ name: Monkey cube description: Just add water! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1717,11 +1773,12 @@ description: Eeee Eee! components: - type: Food + trash: TrashTray + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 30 - spawn_on_finish: TrashTray - type: Sprite sprite: Objects/Food/monkeysdelight.rsi - type: Icon @@ -1733,7 +1790,7 @@ name: Monkies delight (old) description: '' components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1750,6 +1807,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -1764,6 +1822,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -1777,7 +1836,7 @@ name: Mushroom pizza slice description: Maybe it is the last slice of pizza in your life. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1794,11 +1853,12 @@ description: A delicious and hearty mushroom soup. components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/mushroomsoup.rsi - type: Icon @@ -1812,11 +1872,12 @@ description: The mystery is, why aren't you eating it? components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 1 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/mysterysoup.rsi - type: Icon @@ -1829,11 +1890,12 @@ description: To think, the botanist would've beat you to death with one of these. components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/nettlesoup.rsi - type: Icon @@ -1846,6 +1908,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -1860,11 +1923,12 @@ description: That's all you can say! components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/omelette.rsi - type: Icon @@ -1877,11 +1941,12 @@ description: Just a slice of cake, it is enough for everyone. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/orangecake_slice.rsi - type: Icon @@ -1894,11 +1959,12 @@ description: Spaghetti and crushed tomatoes. Just like your abusive father used to make! components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 12 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/pastatomato.rsi - type: Icon @@ -1911,6 +1977,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -1924,7 +1991,7 @@ name: Plump helm biscuit description: This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1940,7 +2007,7 @@ name: Margherita pizza (slice) description: A slice of the classic pizza. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1957,11 +2024,12 @@ description: Just a slice of cake, it is enough for everyone. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/plaincake_slice.rsi - type: Icon @@ -1973,7 +2041,7 @@ name: Plump Pie description: I bet you love stuff made out of plump helmets! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -1990,12 +2058,13 @@ description: Now let's find some cinema. components: - type: Food + trash: TrashPopcorn + - type: Solution transfer_amount: 1 contents: reagents: - ReagentId: chem.Nutriment Quantity: 4 - spawn_on_finish: TrashPopcorn - type: Sprite sprite: Objects/Food/popcorn.rsi - type: Icon @@ -2007,7 +2076,7 @@ name: Poppy pretzel description: It's all twisted up! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2024,11 +2093,12 @@ description: A slice of pumpkin pie, with whipped cream on top. Perfection. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 6 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/pumpkinpieslice.rsi - type: Icon @@ -2042,6 +2112,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -2055,7 +2126,7 @@ name: Roburger description: The lettuce is the only organic component. Beep. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2072,11 +2143,12 @@ description: Waffles from Roffle. Co. components: - type: Food + trash: TrashWaffles + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - spawn_on_finish: TrashWaffles - type: Sprite sprite: Objects/Food/rofflewaffles.rsi - type: Icon @@ -2089,6 +2161,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -2103,6 +2176,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -2117,11 +2191,12 @@ description: Where's the jam? components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/rpudding.rsi - type: Icon @@ -2134,11 +2209,12 @@ description: A grand creation of meat, cheese, bread, and several leaves of lettuce! Arthur Dent would be proud. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 6 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/sandwich.rsi - type: Icon @@ -2151,6 +2227,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -2165,6 +2242,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -2178,7 +2256,7 @@ name: Sausage # Sanga description: A piece of mixed, long meat. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2195,6 +2273,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -2209,6 +2288,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -2222,7 +2302,7 @@ name: Scaredy's Private Reserve Beef Jerky description: Beef jerky made from the finest space cows. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2240,11 +2320,12 @@ description: Dope from a soy. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 4 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/soydope.rsi - type: Icon @@ -2257,11 +2338,12 @@ description: Not made of people. Honest. components: - type: Food + trash: TrashWaffles + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 4 - spawn_on_finish: TrashWaffles - type: Sprite sprite: Objects/Food/soylent_green.rsi - type: Icon @@ -2275,11 +2357,12 @@ description: Not made of people. Honest. components: - type: Food + trash: TrashWaffles + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 4 - spawn_on_finish: TrashWaffles - type: Sprite sprite: Objects/Food/soylent_yellow.rsi - type: Icon @@ -2292,6 +2375,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -2305,7 +2389,7 @@ name: Space twinkie description: Guaranteed to survive longer then you will. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2322,11 +2406,12 @@ description: Jello gelatin, from Alfred Hubbard's cookbook components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 12 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/spacylibertyduff.rsi - type: Icon @@ -2338,7 +2423,7 @@ name: Spaghetti description: A bundle of raw spaghetti. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2354,7 +2439,7 @@ name: Spell burger description: This is absolutely Ei Nath. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2370,7 +2455,7 @@ name: Spell burger (old) description: This is absolutely Ei Nath. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2386,7 +2471,7 @@ name: Spesslaw description: A lawyers favourite components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2402,7 +2487,7 @@ name: Stew description: A nice and warm stew. Healthy and strong. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2419,11 +2504,12 @@ description: Even non-vegetarians will LOVE this! components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/stewedsoymeat.rsi - type: Icon @@ -2435,7 +2521,7 @@ name: Stuffing description: Moist, peppery breadcrumbs for filling the body cavities of dead birds. Dig in! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2452,6 +2538,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -2466,6 +2553,7 @@ # description: '' # components: # - type: Food +# - type: Solution # uses: 1 # restore_amount: 1 # - type: Sprite @@ -2479,7 +2567,7 @@ name: Super bite burger description: This is a mountain of a burger. FOOD! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2496,11 +2584,12 @@ description: An extremely moist snack cake that tastes just as good after being nuked. components: - type: Food + trash: TrashSyndiCakes + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 8 - spawn_on_finish: TrashSyndiCakes - type: Sprite sprite: Objects/Food/syndi_cakes.rsi - type: Icon @@ -2512,7 +2601,7 @@ name: Taco description: Take a bite! components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2529,11 +2618,12 @@ description: Bread in a tube. Chewy...and surprisingly tasty. components: - type: Food + trash: TrashTastyBread + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 12 - spawn_on_finish: TrashTastyBread - type: Sprite sprite: Objects/Food/tastybread.rsi - type: Icon @@ -2546,11 +2636,12 @@ description: Now if you only had a pepper bar. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 6 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/toastedsandwich.rsi - type: Icon @@ -2562,7 +2653,7 @@ name: Tofu description: We all love tofu. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2579,11 +2670,12 @@ description: A slice of delicious tofubread. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 12 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/tofubreadslice.rsi - type: Icon @@ -2595,7 +2687,7 @@ name: Tofu burger description: What.. is that meat? components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2612,11 +2704,12 @@ description: Vegan meat, on a stick. components: - type: Food + # trash: TODO + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - # spawn_on_finish: TODO - type: Sprite sprite: Objects/Food/kabob.rsi - type: Icon @@ -2628,7 +2721,7 @@ name: Tofurkey description: A fake turkey made from tofu. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2644,7 +2737,7 @@ name: Tomato slice description: A slice from a huge tomato components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2661,11 +2754,12 @@ description: Smells like copper. components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 4 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/tomatosoup.rsi - type: Icon @@ -2677,7 +2771,7 @@ name: Two bread description: It is very bitter and winy. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2694,11 +2788,12 @@ description: It's just a salad of questionable 'herbs' with meatballs and fried potato slices. Nothing suspicious about it. components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 12 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/validsalad.rsi - type: Icon @@ -2710,7 +2805,7 @@ name: Vegetable pizza (slice) description: A slice of the most green pizza of all pizzas not containing green ingredients components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2727,11 +2822,12 @@ description: A true vegan meal components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/vegetablesoup.rsi - type: Icon @@ -2744,11 +2840,12 @@ description: Mmm, waffles components: - type: Food + trash: TrashWaffles + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 16 - spawn_on_finish: TrashWaffles - type: Sprite sprite: Objects/Food/waffles.rsi - type: Icon @@ -2760,7 +2857,7 @@ name: Watermelon (slice) description: A slice of watery goodness. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2777,11 +2874,12 @@ description: A savory dish of alien wing wang in soy. components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 12 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/wingfangchu.rsi - type: Icon @@ -2794,11 +2892,12 @@ description: I wish this was soup. components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 2 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/wishsoup.rsi - type: Icon @@ -2810,7 +2909,7 @@ name: Xenoburger description: Smells caustic. Tastes like heresy. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2827,11 +2926,12 @@ description: A slice of delicious meatbread. Extra Heretical. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 20 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/xenobreadslice.rsi - type: Icon @@ -2843,7 +2943,7 @@ name: Xenomeat description: Yum. components: - - type: Food + - type: Solution contents: reagents: - ReagentId: chem.Nutriment @@ -2860,11 +2960,12 @@ description: A delicious meatpie. Probably heretical. components: - type: Food + trash: TrashPlate + - type: Solution contents: reagents: - ReagentId: chem.Nutriment Quantity: 20 - spawn_on_finish: TrashPlate - type: Sprite sprite: Objects/Food/xenomeatpie.rsi - type: Icon @@ -2877,11 +2978,12 @@ description: Jesus christ. components: - type: Food + trash: TrashSnackBowl + - type: Solution contents: reagents: - ReagentId: chem.Bleach Quantity: 15 - spawn_on_finish: TrashSnackBowl - type: Sprite sprite: Objects/Food/stew.rsi - type: Icon diff --git a/Resources/Prototypes/Entities/Items/Consumables/food_containers.yml b/Resources/Prototypes/Entities/Items/Consumables/food_containers.yml index ffe7dbd729..75337f7035 100644 --- a/Resources/Prototypes/Entities/Items/Consumables/food_containers.yml +++ b/Resources/Prototypes/Entities/Items/Consumables/food_containers.yml @@ -1,10 +1,9 @@ - type: entity parent: BaseItem - id: DrinkFoodContainerBase + id: FoodContainerBase abstract: true components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer - type: Sprite state: icon netsync: false @@ -13,435 +12,414 @@ # Containers - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Apple cake - id: DrinkFoodContainerAppleCake + id: FoodContainerAppleCake components: - - type: DrinkFoodContainer - capacity: 5 - prototypes: + - type: FoodContainer + prototypes: FoodAppleCakeSlice: 100 - spawn_on_finish: TrashTray + trash: TrashTray - type: Sprite - sprite: Objects/DrinkFoodContainers/apple_cake.rsi + sprite: Objects/FoodContainers/apple_cake.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/apple_cake.rsi + sprite: Objects/FoodContainers/apple_cake.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Banana bread - id: DrinkFoodContainerBananaBread + id: FoodContainerBananaBread components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodBananaBreadSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/bananabread.rsi + sprite: Objects/FoodContainers/bananabread.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/bananabread.rsi + sprite: Objects/FoodContainers/bananabread.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Birthday cake - id: DrinkFoodContainerBirthdayCake + id: FoodContainerBirthdayCake components: - - type: DrinkFoodContainer - capacity: 5 - prototypes: + - type: FoodContainer + prototypes: FoodBirthdayCakeSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/birthdaycake.rsi + sprite: Objects/FoodContainers/birthdaycake.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/birthdaycake.rsi + sprite: Objects/FoodContainers/birthdaycake.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Brain cake - id: DrinkFoodContainerBrainCake + id: FoodContainerBrainCake components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodBrainCakeSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/braincake.rsi + sprite: Objects/FoodContainers/braincake.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/braincake.rsi + sprite: Objects/FoodContainers/braincake.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Bread - id: DrinkFoodContainerBread + id: FoodContainerBread components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodBreadSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/bread.rsi + sprite: Objects/FoodContainers/bread.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/bread.rsi + sprite: Objects/FoodContainers/bread.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Carrot cake - id: DrinkFoodContainerCarrotCake + id: FoodContainerCarrotCake components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodCarrotCakeSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/carrotcake.rsi + sprite: Objects/FoodContainers/carrotcake.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/carrotcake.rsi + sprite: Objects/FoodContainers/carrotcake.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Cheesecake - id: DrinkFoodContainerCheeseCake + id: FoodContainerCheeseCake components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodCheeseCakeSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/cheesecake.rsi + sprite: Objects/FoodContainers/cheesecake.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/cheesecake.rsi + sprite: Objects/FoodContainers/cheesecake.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Cheese wheel - id: DrinkFoodContainerCheeseWheel + id: FoodContainerCheeseWheel components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodCheeseWedge: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/apple_cake.rsi + sprite: Objects/FoodContainers/apple_cake.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/apple_cake.rsi + sprite: Objects/FoodContainers/apple_cake.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Chocolate cake - id: DrinkFoodContainerChocolateCake + id: FoodContainerChocolateCake components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodChocolateCakeSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/chocolatecake.rsi + sprite: Objects/FoodContainers/chocolatecake.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/chocolatecake.rsi + sprite: Objects/FoodContainers/chocolatecake.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Cream cheese bread - id: DrinkFoodContainerCreamCheeseBread + id: FoodContainerCreamCheeseBread components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodCreamCheeseBreadSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/creamcheesebread.rsi + sprite: Objects/FoodContainers/creamcheesebread.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/creamcheesebread.rsi + sprite: Objects/FoodContainers/creamcheesebread.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Donut box - id: DrinkFoodContainerDonutBox + id: FoodContainerDonutBox components: - - type: DrinkFoodContainer + - type: FoodContainer capacity: 6 prototypes: FoodDonut: 70 FoodFrostedDonut: 30 - type: Sprite - sprite: Objects/DrinkFoodContainers/donutbox.rsi + sprite: Objects/FoodContainers/donutbox.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/donutbox.rsi + sprite: Objects/FoodContainers/donutbox.rsi - type: Appearance visuals: - - type: DrinkFoodContainerVisualizer2D + - type: FoodContainerVisualizer2D mode: Discrete base_state: donutbox steps: 7 - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Egg box (shut) - id: DrinkFoodContainerEggBoxShut + id: FoodContainerEggBoxShut components: - - type: DrinkFoodContainer + - type: FoodContainer capacity: 1 prototypes: - DrinkFoodContainerEggBox: 100 + FoodContainerEggBox: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/eggbox_shut.rsi + sprite: Objects/FoodContainers/eggbox_shut.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/eggbox_shut.rsi + sprite: Objects/FoodContainers/eggbox_shut.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Egg box - id: DrinkFoodContainerEggBox + id: FoodContainerEggBox components: - - type: DrinkFoodContainer + - type: FoodContainer capacity: 12 prototypes: FoodEgg: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/eggbox.rsi + sprite: Objects/FoodContainers/eggbox.rsi state: eggbox-12 - type: Icon - sprite: Objects/DrinkFoodContainers/eggbox.rsi + sprite: Objects/FoodContainers/eggbox.rsi state: eggbox-12 - type: Appearance visuals: - - type: DrinkFoodContainerVisualizer2D + - type: FoodContainerVisualizer2D mode: Discrete base_state: eggbox steps: 13 - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Lemon cake - id: DrinkFoodContainerLemonCake + id: FoodContainerLemonCake components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodLemonCakeSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/lemoncake.rsi + sprite: Objects/FoodContainers/lemoncake.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/lemoncake.rsi + sprite: Objects/FoodContainers/lemoncake.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Lime cake - id: DrinkFoodContainerLimeCake + id: FoodContainerLimeCake components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodLimeCakeSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/limecake.rsi + sprite: Objects/FoodContainers/limecake.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/limecake.rsi + sprite: Objects/FoodContainers/limecake.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Meat bread - id: DrinkFoodContainerMeatBread + id: FoodContainerMeatBread components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodMeatBreadSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/meatbread.rsi + sprite: Objects/FoodContainers/meatbread.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/meatbread.rsi + sprite: Objects/FoodContainers/meatbread.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Meat pizza - id: DrinkFoodContainerMeatPizza + id: FoodContainerMeatPizza components: - - type: DrinkFoodContainer + - type: FoodContainer capacity: 6 prototypes: FoodMeatPizzaSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/meatpizza.rsi + sprite: Objects/FoodContainers/meatpizza.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/meatpizza.rsi + sprite: Objects/FoodContainers/meatpizza.rsi # These two will probably get moved one day - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Monkey cube box - id: DrinkFoodContainerMonkeyCubeBox + id: FoodContainerMonkeyCubeBox components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: - DrinkFoodContainerMonkeyCubeWrap: 100 + FoodContainerMonkeyCubeWrap: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/monkeycubebox.rsi + sprite: Objects/FoodContainers/monkeycubebox.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/monkeycubebox.rsi + sprite: Objects/FoodContainers/monkeycubebox.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Monkey cube wrap - id: DrinkFoodContainerMonkeyCubeWrap + id: FoodContainerMonkeyCubeWrap components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodMonkeyCube: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/monkeycubewrap.rsi + sprite: Objects/FoodContainers/monkeycubewrap.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/monkeycubewrap.rsi + sprite: Objects/FoodContainers/monkeycubewrap.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Mushroom pizza - id: DrinkFoodContainerMushroomPizza + id: FoodContainerMushroomPizza components: - - type: DrinkFoodContainer + - type: FoodContainer capacity: 6 prototypes: FoodMushroomPizzaSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/mushroompizza.rsi + sprite: Objects/FoodContainers/mushroompizza.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/mushroompizza.rsi + sprite: Objects/FoodContainers/mushroompizza.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Orange cake - id: DrinkFoodContainerOrangeCake + id: FoodContainerOrangeCake components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodOrangeCakeSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/orangecake.rsi + sprite: Objects/FoodContainers/orangecake.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/orangecake.rsi + sprite: Objects/FoodContainers/orangecake.rsi # TODO: Probably replace it with a stacking thing - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Pizza box stack - id: DrinkFoodContainerPizzaBoxStack + id: FoodContainerPizzaBoxStack components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: - DrinkFoodContainerPizzaBox: 100 + FoodContainerPizzaBox: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/pizzaboxstack.rsi + sprite: Objects/FoodContainers/pizzaboxstack.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/pizzaboxstack.rsi + sprite: Objects/FoodContainers/pizzaboxstack.rsi - type: Appearance visuals: - - type: DrinkFoodContainerVisualizer2D + - type: FoodContainerVisualizer2D mode: Discrete base_state: pizzaboxstack steps: 5 - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Pizza box - id: DrinkFoodContainerPizzaBox + id: FoodContainerPizzaBox components: - - type: DrinkFoodContainer + - type: FoodContainer capacity: 1 prototypes: - DrinkFoodContainerMeatPizza: 25 - DrinkFoodContainerMargheritaPizza: 25 - DrinkFoodContainerMushroomPizza: 25 - DrinkFoodContainerVegetablePizza: 25 + FoodContainerMeatPizza: 25 + FoodContainerMargheritaPizza: 25 + FoodContainerMushroomPizza: 25 + FoodContainerVegetablePizza: 25 - type: Sprite - sprite: Objects/DrinkFoodContainers/pizzabox_open.rsi + sprite: Objects/FoodContainers/pizzabox_open.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/pizzabox_open.rsi + sprite: Objects/FoodContainers/pizzabox_open.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Margherita pizza - id: DrinkFoodContainerMargheritaPizza + id: FoodContainerMargheritaPizza components: - - type: DrinkFoodContainer + - type: FoodContainer capacity: 6 prototypes: FoodMargheritaPizzaSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/pizzamargherita.rsi + sprite: Objects/FoodContainers/pizzamargherita.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/pizzamargherita.rsi + sprite: Objects/FoodContainers/pizzamargherita.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Plain cake - id: DrinkFoodContainerPlainCake + id: FoodContainerPlainCake components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodPlainCakeSlice: 100 - spawn_on_finish: TrashTray + trash: TrashTray - type: Sprite - sprite: Objects/DrinkFoodContainers/plaincake.rsi + sprite: Objects/FoodContainers/plaincake.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/plaincake.rsi + sprite: Objects/FoodContainers/plaincake.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Pumpkin pie - id: DrinkFoodContainerPumpkinPie + id: FoodContainerPumpkinPie components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodPumpkinPieSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/pumpkinpie.rsi + sprite: Objects/FoodContainers/pumpkinpie.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/pumpkinpie.rsi + sprite: Objects/FoodContainers/pumpkinpie.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Tofu bread - id: DrinkFoodContainerTofuBread + id: FoodContainerTofuBread components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodTofuBreadSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/tofubread.rsi + sprite: Objects/FoodContainers/tofubread.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/tofubread.rsi + sprite: Objects/FoodContainers/tofubread.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Vegetable pizza - id: DrinkFoodContainerVegetablePizza + id: FoodContainerVegetablePizza components: - - type: DrinkFoodContainer + - type: FoodContainer capacity: 6 prototypes: FoodVegetablePizzaSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/vegetablepizza.rsi + sprite: Objects/FoodContainers/vegetablepizza.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/vegetablepizza.rsi + sprite: Objects/FoodContainers/vegetablepizza.rsi - type: entity - parent: DrinkFoodContainerBase + parent: FoodContainerBase name: Xenomeat bread - id: DrinkFoodContainerXenomeatBread + id: FoodContainerXenomeatBread components: - - type: DrinkFoodContainer - capacity: 5 + - type: FoodContainer prototypes: FoodXenomeatBreadSlice: 100 - type: Sprite - sprite: Objects/DrinkFoodContainers/xenomeatbread.rsi + sprite: Objects/FoodContainers/xenomeatbread.rsi - type: Icon - sprite: Objects/DrinkFoodContainers/xenomeatbread.rsi + sprite: Objects/FoodContainers/xenomeatbread.rsi diff --git a/Resources/Prototypes/Entities/Items/Consumables/kitchen_reagent_containers.yml b/Resources/Prototypes/Entities/Items/Consumables/kitchen_reagent_containers.yml index 2d009d083e..016007aa78 100644 --- a/Resources/Prototypes/Entities/Items/Consumables/kitchen_reagent_containers.yml +++ b/Resources/Prototypes/Entities/Items/Consumables/kitchen_reagent_containers.yml @@ -13,7 +13,6 @@ - type: Pourable transferAmount: 5 - type: Drink - despawn_empty: true - type: Sprite sprite: Objects/Food/flour.rsi state: icon diff --git a/Resources/Prototypes/Entities/Items/Consumables/trash_drinks.yml b/Resources/Prototypes/Entities/Items/Consumables/trash_drinks.yml index cdba3d3ad6..325b180225 100644 --- a/Resources/Prototypes/Entities/Items/Consumables/trash_drinks.yml +++ b/Resources/Prototypes/Entities/Items/Consumables/trash_drinks.yml @@ -3,7 +3,7 @@ name: Base empty bottle parent: BaseItem abstract: true - id: DrinkBottleBase + id: DrinkBottleBaseEmpty components: - type: Sound - type: Sprite @@ -15,12 +15,13 @@ - type: Pourable transferAmount: 5 - type: Drink - despawn_empty: false + isOpen: true + # Containers - type: entity name: Jailbreaker Verte bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleAbsinthe components: - type: Sprite @@ -30,7 +31,7 @@ - type: entity name: Alcohol bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleAlcoClear components: - type: Sprite @@ -40,7 +41,7 @@ - type: entity name: Ale bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleAle components: - type: Sprite @@ -50,7 +51,7 @@ - type: entity name: Beer bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleBeer components: - type: Sprite @@ -60,7 +61,7 @@ - type: entity name: Broken bottle - parent: DrinkBottleBase # Can't hold liquids + parent: DrinkBottleBaseEmpty # Can't hold liquids id: DrinkBrokenBottle components: - type: Sprite @@ -70,7 +71,7 @@ - type: entity name: Cognac bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleCognac components: - type: Sprite @@ -80,7 +81,7 @@ - type: entity name: Griffeater gin bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleGin components: - type: Sprite @@ -90,7 +91,7 @@ - type: entity name: Goldschlager bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleGoldschlager components: - type: Sprite @@ -100,7 +101,7 @@ - type: entity name: Kahlua bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleKahlua components: - type: Sprite @@ -110,7 +111,7 @@ - type: entity name: NT Cahors bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleNTCahors components: - type: Sprite @@ -120,7 +121,7 @@ - type: entity name: Patron bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottlePatron components: - type: Sprite @@ -130,7 +131,7 @@ - type: entity name: Poison wine bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottlePoisonWine components: - type: Sprite @@ -140,7 +141,7 @@ - type: entity name: Rum bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleRum components: - type: Sprite @@ -150,7 +151,7 @@ - type: entity name: Tequila bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleTequila components: - type: Sprite @@ -160,7 +161,7 @@ - type: entity name: Vermouth bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleVermouth components: - type: Sprite @@ -170,7 +171,7 @@ - type: entity name: Vodka bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleVodka components: - type: Sprite @@ -180,7 +181,7 @@ - type: entity name: Whiskey bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleWhiskey components: - type: Sprite @@ -190,7 +191,7 @@ - type: entity name: Wine bottle - parent: DrinkBottleBase + parent: DrinkBottleBaseEmpty id: DrinkBottleWine components: - type: Sprite diff --git a/Resources/Prototypes/Kitchen/meal_recipes.yml b/Resources/Prototypes/Kitchen/meal_recipes.yml index 766e0a89bd..ee16015c50 100644 --- a/Resources/Prototypes/Kitchen/meal_recipes.yml +++ b/Resources/Prototypes/Kitchen/meal_recipes.yml @@ -59,7 +59,7 @@ - type: microwaveMealRecipe id: RecipeBread name: Bread Recipe - result: DrinkFoodContainerBread + result: FoodContainerBread time: 15 reagents: chem.Flour: 15 @@ -104,7 +104,7 @@ - type: microwaveMealRecipe id: RecipeCreamCheeseBread name: Cream Cheese Bread Recipe - result: DrinkFoodContainerCreamCheeseBread + result: FoodContainerCreamCheeseBread time: 20 reagents: chem.Flour: 15 @@ -114,7 +114,7 @@ - type: microwaveMealRecipe id: RecipeBananaBread name: Banana Bread Recipe - result: DrinkFoodContainerBananaBread + result: FoodContainerBananaBread time: 25 reagents: chem.Flour: 15 @@ -129,7 +129,7 @@ - type: microwaveMealRecipe id: RecipeMargheritaPizza name: Margherita Pizza Recipe - result: DrinkFoodContainerMargheritaPizza + result: FoodContainerMargheritaPizza time: 30 reagents: chem.Flour: 10 @@ -140,7 +140,7 @@ - type: microwaveMealRecipe id: RecipeMushroomPizza name: Mushroom Pizza Recipe - result: DrinkFoodContainerMushroomPizza + result: FoodContainerMushroomPizza time: 25 reagents: chem.Flour: 10 @@ -150,7 +150,7 @@ - type: microwaveMealRecipe id: RecipeMeatPizza name: Meat Pizza Recipe - result: DrinkFoodContainerMeatPizza + result: FoodContainerMeatPizza time: 30 reagents: chem.Flour: 10 @@ -162,7 +162,7 @@ - type: microwaveMealRecipe id: RecipeVegetablePizza name: Vegetable Pizza Recipe - result: DrinkFoodContainerVegetablePizza + result: FoodContainerVegetablePizza time: 30 reagents: chem.Flour: 10 diff --git a/Resources/Prototypes/SoundCollections/drink_open_sounds.yml b/Resources/Prototypes/SoundCollections/drink_open_sounds.yml new file mode 100644 index 0000000000..0ed88554ff --- /dev/null +++ b/Resources/Prototypes/SoundCollections/drink_open_sounds.yml @@ -0,0 +1,11 @@ +- type: soundCollection + id: canOpenSounds + files: + - /Audio/items/can_open1.ogg + - /Audio/items/can_open2.ogg + - /Audio/items/can_open3.ogg + +- type: soundCollection + id: bottleOpenSounds + files: + - /Audio/items/bottle_open1.ogg diff --git a/Resources/Prototypes/VendingMachines/cola.yml b/Resources/Prototypes/VendingMachines/cola.yml index d3fd4fcd7b..a541949357 100644 --- a/Resources/Prototypes/VendingMachines/cola.yml +++ b/Resources/Prototypes/VendingMachines/cola.yml @@ -5,11 +5,11 @@ animationDuration: 1.1 spriteName: cola startingInventory: - DrinkFoodContainerColaCanUnopened: 10 - DrinkFoodContainerIceTeaCanUnopened: 10 - DrinkFoodContainerLemonLimeCanUnopened: 10 - DrinkFoodContainerPurpleCanUnopened: 10 - DrinkFoodContainerSpaceMountainWindCanUnopened: 10 - DrinkFoodContainerSpaceUpCanUnopened: 10 - DrinkFoodContaineStarkistCanUnopened: 10 - DrinkFoodContaineThirteenLokoCanUnopened: 10 + DrinkColaCan: 10 + DrinkIceTeaCan: 10 + DrinkLemonLimeCan: 10 + DrinkPurpleCan: 10 + DrinkSpaceMountainWindCan: 10 + DrinkSpaceUpCan: 10 + DrinkDrinkFoodContaineStarkistCan: 10 + DrinkFoodContaineThirteenLokoCan: 10 diff --git a/Resources/Textures/Objects/DrinkFoodContainers/apple_cake.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/apple_cake.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/apple_cake.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/apple_cake.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/apple_cake.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/apple_cake.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/apple_cake.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/apple_cake.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/bananabread.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/bananabread.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/bananabread.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/bananabread.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/bananabread.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/bananabread.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/bananabread.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/bananabread.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/birthdaycake.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/birthdaycake.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/birthdaycake.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/birthdaycake.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/birthdaycake.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/birthdaycake.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/birthdaycake.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/birthdaycake.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/braincake.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/braincake.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/braincake.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/braincake.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/braincake.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/braincake.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/braincake.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/braincake.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/bread.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/bread.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/bread.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/bread.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/bread.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/bread.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/bread.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/bread.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/carrotcake.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/carrotcake.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/carrotcake.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/carrotcake.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/carrotcake.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/carrotcake.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/carrotcake.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/carrotcake.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/cheesecake.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/cheesecake.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/cheesecake.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/cheesecake.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/cheesecake.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/cheesecake.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/cheesecake.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/cheesecake.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/cheesewheel.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/cheesewheel.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/cheesewheel.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/cheesewheel.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/cheesewheel.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/cheesewheel.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/cheesewheel.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/cheesewheel.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/chocolatecake.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/chocolatecake.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/chocolatecake.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/chocolatecake.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/chocolatecake.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/chocolatecake.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/chocolatecake.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/chocolatecake.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/creamcheesebread.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/creamcheesebread.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/creamcheesebread.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/creamcheesebread.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/creamcheesebread.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/creamcheesebread.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/creamcheesebread.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/creamcheesebread.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-0.png b/Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-0.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-0.png rename to Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-0.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-1.png b/Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-1.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-1.png rename to Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-1.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-2.png b/Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-2.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-2.png rename to Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-2.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-3.png b/Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-3.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-3.png rename to Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-3.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-4.png b/Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-4.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-4.png rename to Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-4.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-5.png b/Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-5.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-5.png rename to Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-5.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-6.png b/Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-6.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/donutbox-6.png rename to Resources/Textures/Objects/FoodContainers/donutbox.rsi/donutbox-6.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/donutbox.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/donutbox.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/donutbox.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/donutbox.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/donutbox.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-0.png b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-0.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-0.png rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-0.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-1.png b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-1.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-1.png rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-1.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-10.png b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-10.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-10.png rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-10.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-11.png b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-11.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-11.png rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-11.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-12.png b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-12.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-12.png rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-12.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-2.png b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-2.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-2.png rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-2.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-3.png b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-3.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-3.png rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-3.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-4.png b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-4.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-4.png rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-4.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-5.png b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-5.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-5.png rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-5.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-6.png b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-6.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-6.png rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-6.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-7.png b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-7.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-7.png rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-7.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-8.png b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-8.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-8.png rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-8.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-9.png b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-9.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/eggbox-9.png rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/eggbox-9.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/eggbox.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/eggbox.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox_shut.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/eggbox_shut.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox_shut.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/eggbox_shut.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/eggbox_shut.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/eggbox_shut.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/eggbox_shut.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/eggbox_shut.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/lemoncake.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/lemoncake.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/lemoncake.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/lemoncake.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/lemoncake.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/lemoncake.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/lemoncake.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/lemoncake.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/limecake.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/limecake.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/limecake.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/limecake.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/limecake.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/limecake.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/limecake.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/limecake.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/meatbread.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/meatbread.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/meatbread.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/meatbread.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/meatbread.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/meatbread.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/meatbread.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/meatbread.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/meatpizza.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/meatpizza.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/meatpizza.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/meatpizza.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/meatpizza.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/meatpizza.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/meatpizza.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/meatpizza.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/monkeycubebox.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/monkeycubebox.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/monkeycubebox.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/monkeycubebox.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/monkeycubebox.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/monkeycubebox.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/monkeycubebox.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/monkeycubebox.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/monkeycubewrap.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/monkeycubewrap.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/monkeycubewrap.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/monkeycubewrap.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/monkeycubewrap.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/monkeycubewrap.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/monkeycubewrap.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/monkeycubewrap.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/mushroompizza.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/mushroompizza.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/mushroompizza.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/mushroompizza.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/mushroompizza.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/mushroompizza.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/mushroompizza.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/mushroompizza.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/orangecake.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/orangecake.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/orangecake.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/orangecake.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/orangecake.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/orangecake.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/orangecake.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/orangecake.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pizzabox_open.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/pizzabox_open.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pizzabox_open.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/pizzabox_open.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pizzabox_open.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/pizzabox_open.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pizzabox_open.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/pizzabox_open.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pizzabox_tag.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/pizzabox_tag.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pizzabox_tag.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/pizzabox_tag.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pizzabox_tag.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/pizzabox_tag.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pizzabox_tag.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/pizzabox_tag.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/pizzaboxstack-0.png b/Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/pizzaboxstack-0.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/pizzaboxstack-0.png rename to Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/pizzaboxstack-0.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/pizzaboxstack-1.png b/Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/pizzaboxstack-1.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/pizzaboxstack-1.png rename to Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/pizzaboxstack-1.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/pizzaboxstack-2.png b/Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/pizzaboxstack-2.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/pizzaboxstack-2.png rename to Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/pizzaboxstack-2.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/pizzaboxstack-3.png b/Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/pizzaboxstack-3.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/pizzaboxstack-3.png rename to Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/pizzaboxstack-3.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/pizzaboxstack-4.png b/Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/pizzaboxstack-4.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pizzaboxstack.rsi/pizzaboxstack-4.png rename to Resources/Textures/Objects/FoodContainers/pizzaboxstack.rsi/pizzaboxstack-4.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pizzamargherita.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/pizzamargherita.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pizzamargherita.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/pizzamargherita.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pizzamargherita.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/pizzamargherita.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pizzamargherita.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/pizzamargherita.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/plaincake.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/plaincake.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/plaincake.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/plaincake.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/plaincake.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/plaincake.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/plaincake.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/plaincake.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pumpkinpie.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/pumpkinpie.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pumpkinpie.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/pumpkinpie.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/pumpkinpie.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/pumpkinpie.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/pumpkinpie.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/pumpkinpie.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/tofubread.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/tofubread.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/tofubread.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/tofubread.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/tofubread.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/tofubread.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/tofubread.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/tofubread.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/vegetablepizza.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/vegetablepizza.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/vegetablepizza.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/vegetablepizza.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/vegetablepizza.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/vegetablepizza.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/vegetablepizza.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/vegetablepizza.rsi/meta.json diff --git a/Resources/Textures/Objects/DrinkFoodContainers/xenomeatbread.rsi/icon.png b/Resources/Textures/Objects/FoodContainers/xenomeatbread.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/xenomeatbread.rsi/icon.png rename to Resources/Textures/Objects/FoodContainers/xenomeatbread.rsi/icon.png diff --git a/Resources/Textures/Objects/DrinkFoodContainers/xenomeatbread.rsi/meta.json b/Resources/Textures/Objects/FoodContainers/xenomeatbread.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/DrinkFoodContainers/xenomeatbread.rsi/meta.json rename to Resources/Textures/Objects/FoodContainers/xenomeatbread.rsi/meta.json