diff --git a/Content.Client/Nutrition/EntitySystems/ClientFoodSequenceSystem.cs b/Content.Client/Nutrition/EntitySystems/ClientFoodSequenceSystem.cs new file mode 100644 index 0000000000..452bb552de --- /dev/null +++ b/Content.Client/Nutrition/EntitySystems/ClientFoodSequenceSystem.cs @@ -0,0 +1,57 @@ +using Content.Shared.Nutrition.Components; +using Content.Shared.Nutrition.EntitySystems; +using Robust.Client.GameObjects; + +namespace Content.Client.Nutrition.EntitySystems; + +public sealed class ClientFoodSequenceSystem : SharedFoodSequenceSystem +{ + public override void Initialize() + { + SubscribeLocalEvent(OnHandleState); + } + + private void OnHandleState(Entity start, ref AfterAutoHandleStateEvent args) + { + if (!TryComp(start, out var sprite)) + return; + + UpdateFoodVisuals(start, sprite); + } + + private void UpdateFoodVisuals(Entity start, SpriteComponent? sprite = null) + { + if (!Resolve(start, ref sprite, false)) + return; + + //Remove old layers + foreach (var key in start.Comp.RevealedLayers) + { + sprite.RemoveLayer(key); + } + start.Comp.RevealedLayers.Clear(); + + //Add new layers + var counter = 0; + foreach (var state in start.Comp.FoodLayers) + { + if (state.Sprite is null) + continue; + + counter++; + + var keyCode = $"food-layer-{counter}"; + start.Comp.RevealedLayers.Add(keyCode); + + var index = sprite.LayerMapReserveBlank(keyCode); + + //Set image + sprite.LayerSetSprite(index, state.Sprite); + + //Offset the layer + var layerPos = start.Comp.StartPosition; + layerPos += start.Comp.Offset * counter; + sprite.LayerSetOffset(index, layerPos); + } + } +} diff --git a/Content.Server/Nutrition/Components/FoodComponent.cs b/Content.Server/Nutrition/Components/FoodComponent.cs index 5ead67a12b..cfb69f53f0 100644 --- a/Content.Server/Nutrition/Components/FoodComponent.cs +++ b/Content.Server/Nutrition/Components/FoodComponent.cs @@ -7,7 +7,7 @@ using Robust.Shared.Prototypes; namespace Content.Server.Nutrition.Components; -[RegisterComponent, Access(typeof(FoodSystem))] +[RegisterComponent, Access(typeof(FoodSystem), typeof(FoodSequenceSystem))] public sealed partial class FoodComponent : Component { [DataField] @@ -17,7 +17,7 @@ public sealed partial class FoodComponent : Component public SoundSpecifier UseSound = new SoundCollectionSpecifier("eating"); [DataField] - public EntProtoId? Trash; + public List Trash = new(); [DataField] public FixedPoint2? TransferAmount = FixedPoint2.New(5); diff --git a/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs b/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs index a28679ddbc..50b9297ca7 100644 --- a/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs @@ -48,9 +48,12 @@ namespace Content.Server.Nutrition.EntitySystems { _puddle.TrySpillAt(uid, solution, out _, false); } - if (!string.IsNullOrEmpty(foodComp.Trash)) + if (foodComp.Trash.Count == 0) { - EntityManager.SpawnEntity(foodComp.Trash, Transform(uid).Coordinates); + foreach (var trash in foodComp.Trash) + { + EntityManager.SpawnEntity(trash, Transform(uid).Coordinates); + } } } ActivatePayload(uid); diff --git a/Content.Server/Nutrition/EntitySystems/FoodSequenceSystem.cs b/Content.Server/Nutrition/EntitySystems/FoodSequenceSystem.cs new file mode 100644 index 0000000000..6970f11b6e --- /dev/null +++ b/Content.Server/Nutrition/EntitySystems/FoodSequenceSystem.cs @@ -0,0 +1,140 @@ +using System.Text; +using Content.Server.Nutrition.Components; +using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Interaction; +using Content.Shared.Nutrition.Components; +using Content.Shared.Nutrition.EntitySystems; +using Content.Shared.Popups; + +namespace Content.Server.Nutrition.EntitySystems; + +public sealed class FoodSequenceSystem : SharedFoodSequenceSystem +{ + [Dependency] private readonly SharedSolutionContainerSystem _solutionContainer = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly MetaDataSystem _metaData = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInteractUsing); + } + + private void OnInteractUsing(Entity ent, ref InteractUsingEvent args) + { + if (TryComp(args.Used, out var sequenceElement)) + TryAddFoodElement(ent, (args.Used, sequenceElement), args.User); + } + + private bool TryAddFoodElement(Entity start, Entity element, EntityUid? user = null) + { + FoodSequenceElementEntry? elementData = null; + foreach (var entry in element.Comp.Entries) + { + if (entry.Key == start.Comp.Key) + { + elementData = entry.Value; + break; + } + } + + if (elementData is null) + return false; + + //if we run out of space, we can still put in one last, final finishing element. + if (start.Comp.FoodLayers.Count >= start.Comp.MaxLayers && !elementData.Value.Final || start.Comp.Finished) + { + if (user is not null) + _popup.PopupEntity(Loc.GetString("food-sequence-no-space"), start, user.Value); + return false; + } + + if (elementData.Value.Sprite is not null) + { + start.Comp.FoodLayers.Add(elementData.Value); + Dirty(start); + } + + if (elementData.Value.Final) + start.Comp.Finished = true; + + UpdateFoodName(start); + MergeFoodSolutions(start, element); + MergeFlavorProfiles(start, element); + MergeTrash(start, element); + QueueDel(element); + return true; + } + + private void UpdateFoodName(Entity start) + { + if (start.Comp.NameGeneration is null) + return; + + var content = new StringBuilder(); + var separator = ""; + if (start.Comp.ContentSeparator is not null) + separator = Loc.GetString(start.Comp.ContentSeparator); + + HashSet existedContentNames = new(); + foreach (var layer in start.Comp.FoodLayers) + { + if (layer.Name is not null && !existedContentNames.Contains(layer.Name.Value)) + { + content.Append(Loc.GetString(layer.Name.Value)); + existedContentNames.Add(layer.Name.Value); + } + + content.Append(separator); + } + + var newName = Loc.GetString(start.Comp.NameGeneration.Value, + ("prefix", start.Comp.NamePrefix is not null ? Loc.GetString(start.Comp.NamePrefix) : ""), + ("content", content), + ("suffix", start.Comp.NameSuffix is not null ? Loc.GetString(start.Comp.NameSuffix) : "")); + + _metaData.SetEntityName(start, newName); + } + + private void MergeFoodSolutions(Entity start, Entity element) + { + if (!_solutionContainer.TryGetSolution(start.Owner, start.Comp.Solution, out var startSolutionEntity, out var startSolution)) + return; + + if (!_solutionContainer.TryGetSolution(element.Owner, element.Comp.Solution, out _, out var elementSolution)) + return; + + startSolution.MaxVolume += elementSolution.MaxVolume; + _solutionContainer.TryAddSolution(startSolutionEntity.Value, elementSolution); + } + + private void MergeFlavorProfiles(Entity start, Entity element) + { + if (!TryComp(start, out var startProfile)) + return; + + if (!TryComp(element, out var elementProfile)) + return; + + foreach (var flavor in elementProfile.Flavors) + { + if (startProfile != null && !startProfile.Flavors.Contains(flavor)) + startProfile.Flavors.Add(flavor); + } + } + + private void MergeTrash(Entity start, Entity element) + { + if (!TryComp(start, out var startFood)) + return; + + if (!TryComp(element, out var elementFood)) + return; + + foreach (var trash in elementFood.Trash) + { + startFood.Trash.Add(trash); + } + } +} diff --git a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs index 53c1b39982..3a7c249c2b 100644 --- a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs @@ -335,27 +335,31 @@ public sealed class FoodSystem : EntitySystem if (ev.Cancelled) return; - if (string.IsNullOrEmpty(component.Trash)) + if (component.Trash.Count == 0) { QueueDel(food); return; } //We're empty. Become trash. + //cache some data as we remove food, before spawning trash and passing it to the hand. + var position = _transform.GetMapCoordinates(food); - var finisher = Spawn(component.Trash, position); + var trashes = component.Trash; + var tryPickup = _hands.IsHolding(user, food, out _); - // If the user is holding the item - if (_hands.IsHolding(user, food, out var hand)) + Del(food); + foreach (var trash in trashes) { - Del(food); + var spawnedTrash = Spawn(trash, position); - // Put the trash in the user's hand - _hands.TryPickup(user, finisher, hand); - return; + // If the user is holding the item + if (tryPickup) + { + // Put the trash in the user's hand + _hands.TryPickupAnyHand(user, spawnedTrash); + } } - - QueueDel(food); } private void AddEatVerb(Entity entity, ref GetVerbsEvent ev) diff --git a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs index ac3df5868f..946a789b36 100644 --- a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs @@ -125,18 +125,21 @@ namespace Content.Server.Nutrition.EntitySystems if (ev.Cancelled) return; - if (string.IsNullOrEmpty(foodComp.Trash)) + if (foodComp.Trash.Count == 0) { QueueDel(uid); return; } // Locate the sliced food and spawn its trash - var trashUid = Spawn(foodComp.Trash, _xformSystem.GetMapCoordinates(uid)); + foreach (var trash in foodComp.Trash) + { + var trashUid = Spawn(trash, _xformSystem.GetMapCoordinates(uid)); - // try putting the trash in the food's container too, to be consistent with slice spawning? - _xformSystem.DropNextTo(trashUid, uid); - _xformSystem.SetLocalRotation(trashUid, 0); + // try putting the trash in the food's container too, to be consistent with slice spawning? + _xformSystem.DropNextTo(trashUid, uid); + _xformSystem.SetLocalRotation(trashUid, 0); + } QueueDel(uid); } diff --git a/Content.Shared/Nutrition/Components/FoodSequenceElementComponent.cs b/Content.Shared/Nutrition/Components/FoodSequenceElementComponent.cs new file mode 100644 index 0000000000..1fc8aeec0a --- /dev/null +++ b/Content.Shared/Nutrition/Components/FoodSequenceElementComponent.cs @@ -0,0 +1,43 @@ +using Content.Shared.Nutrition.EntitySystems; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; + +namespace Content.Shared.Nutrition.Components; + +/// +/// Tndicates that this entity can be inserted into FoodSequence, which will transfer all reagents to the target. +/// +[RegisterComponent, Access(typeof(SharedFoodSequenceSystem))] +public sealed partial class FoodSequenceElementComponent : Component +{ + /// + /// the same object can be used in different sequences, and it will have a different sprite in different sequences. + /// + [DataField(required: true)] + public Dictionary Entries = new(); + + /// + /// which solution we will add to the main dish + /// + [DataField] + public string Solution = "food"; +} + +[DataRecord, Serializable, NetSerializable] +public partial record struct FoodSequenceElementEntry() +{ + /// + /// A localized name piece to build into the item name generator. + /// + public LocId? Name { get; set; } = null; + + /// + /// state used to generate the appearance of the added layer + /// + public SpriteSpecifier? Sprite { get; set; } = null; + + /// + /// If the layer is the final one, it can be added over the limit, but no other layers can be added after it. + /// + public bool Final { get; set; } = false; +} diff --git a/Content.Shared/Nutrition/Components/FoodSequenceStartPointComponent.cs b/Content.Shared/Nutrition/Components/FoodSequenceStartPointComponent.cs new file mode 100644 index 0000000000..b8186fdaf0 --- /dev/null +++ b/Content.Shared/Nutrition/Components/FoodSequenceStartPointComponent.cs @@ -0,0 +1,66 @@ +using System.Numerics; +using Content.Shared.Nutrition.EntitySystems; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.Nutrition.Components; + +/// +/// A starting point for the creation of procedural food. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true), Access(typeof(SharedFoodSequenceSystem))] +public sealed partial class FoodSequenceStartPointComponent : Component +{ + /// + /// A key that determines which types of food elements can be attached to a food. + /// + [DataField(required: true)] + public string Key = string.Empty; + + /// + /// The maximum number of layers of food that can be placed on this item. + /// + [DataField] + public int MaxLayers = 10; + + /// + /// Start shift from the center of the sprite where the first layer of food will be placed. + /// + [DataField] + public Vector2 StartPosition = Vector2.Zero; + + /// + /// Shift from the start position applied to each subsequent layer. + /// + [DataField] + public Vector2 Offset = Vector2.Zero; + + /// + /// Can we put more layers? + /// + [DataField] + public bool Finished; + + /// + /// list of sprite states to be displayed on this object. + /// + [DataField, AutoNetworkedField] + public List FoodLayers = new(); + + public HashSet RevealedLayers = new(); + + [DataField] + public string Solution = "food"; + + [DataField] + public LocId? NameGeneration; + + [DataField] + public LocId? NamePrefix; + + [DataField] + public LocId? ContentSeparator; + + [DataField] + public LocId? NameSuffix; +} diff --git a/Content.Shared/Nutrition/EntitySystems/SharedFoodSequenceSystem.cs b/Content.Shared/Nutrition/EntitySystems/SharedFoodSequenceSystem.cs new file mode 100644 index 0000000000..2623e4a716 --- /dev/null +++ b/Content.Shared/Nutrition/EntitySystems/SharedFoodSequenceSystem.cs @@ -0,0 +1,5 @@ +namespace Content.Shared.Nutrition.EntitySystems; + +public abstract class SharedFoodSequenceSystem : EntitySystem +{ +} diff --git a/Resources/Locale/en-US/nutrition/components/food-sequence.ftl b/Resources/Locale/en-US/nutrition/components/food-sequence.ftl new file mode 100644 index 0000000000..5679dd1b52 --- /dev/null +++ b/Resources/Locale/en-US/nutrition/components/food-sequence.ftl @@ -0,0 +1,70 @@ +food-sequence-no-space = You can't put any more! + +food-sequence-standart-gen = {$prefix}{$content}{$suffix} + +#Burger +food-sequence-burger-suffix = burger + +food-sequence-burger-content-raw-meat = raw +food-sequence-burger-content-carp = carpo +food-sequence-burger-content-bear = bear +food-sequence-burger-content-penguin = peng +food-sequence-burger-content-chiken = chiken +food-sequence-burger-content-duck = duck +food-sequence-burger-content-corgi = corgi +food-sequence-burger-content-crab = crabs +food-sequence-burger-content-goliath = goli +food-sequence-burger-content-dragon = dragon +food-sequence-burger-content-rat = rat +food-sequence-burger-content-lizard = lizzy +food-sequence-burger-content-plant = plant +food-sequence-burger-content-rotten = trash +food-sequence-burger-content-spider = web +food-sequence-burger-content-clump = clump +food-sequence-burger-content-snake = snake +food-sequence-burger-content-xeno = xeno +food-sequence-burger-content-tomato = tomato +food-sequence-burger-content-salami = salami +food-sequence-burger-content-clown = clown +food-sequence-burger-content-slime = slime + +food-sequence-burger-content-pea = pea +food-sequence-burger-content-banana = banana +food-sequence-burger-content-mimana = mimana +food-sequence-burger-content-carrot = carro +food-sequence-burger-content-cabbage = cabba +food-sequence-burger-content-garlic = garli +food-sequence-burger-content-lemon = lemon +food-sequence-burger-content-orange = orange +food-sequence-burger-content-pineapple = pine +food-sequence-burger-content-potato = potato +food-sequence-burger-content-apple = apple +food-sequence-burger-content-cocoa = cocoa +food-sequence-burger-content-corn = corn +food-sequence-burger-content-onion = oni +food-sequence-burger-content-mushroom = shroom +food-sequence-burger-content-chili = chili +food-sequence-burger-content-chilly = chilly +food-sequence-burger-content-aloe = aloe +food-sequence-burger-content-poppy = poppy +food-sequence-burger-content-lily = lily +food-sequence-burger-content-ambrosia = ambro +food-sequence-burger-content-galaxy = galaxy +food-sequence-burger-content-glasstle = glass +food-sequence-burger-content-gatfruit = gat +food-sequence-burger-content-rice = rice +food-sequence-burger-content-soy = soy +food-sequence-burger-content-koibean = koi +food-sequence-burger-content-watermelon = water +food-sequence-burger-content-cannabis = funny +food-sequence-burger-content-rainbow-cannabis = FUNNY +food-sequence-burger-content-tobacco = tobaco + +food-sequence-burger-content-cheese = cheese + +food-sequence-burger-content-brain = brain +food-sequence-burger-content-tongue = tongue +food-sequence-burger-content-appendix = appendi +food-sequence-burger-content-ears = ear +food-sequence-burger-content-stomach = stomach +food-sequence-burger-content-liver = liver \ No newline at end of file diff --git a/Resources/Prototypes/Body/Organs/human.yml b/Resources/Prototypes/Body/Organs/human.yml index 69081020ce..962ec18e70 100644 --- a/Resources/Prototypes/Body/Organs/human.yml +++ b/Resources/Prototypes/Body/Organs/human.yml @@ -67,6 +67,13 @@ - type: FlavorProfile flavors: - people + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-brain + sprite: + sprite: Mobs/Species/Human/organs.rsi + state: brain - type: entity id: OrganHumanEyes @@ -87,6 +94,13 @@ components: - type: Sprite state: tongue + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-tongue + sprite: + sprite: Mobs/Species/Human/organs.rsi + state: tongue - type: entity id: OrganHumanAppendix @@ -98,6 +112,13 @@ - state: appendix - state: appendix-inflamed visible: false + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-appendix + sprite: + sprite: Mobs/Species/Human/organs.rsi + state: appendix - type: entity id: OrganHumanEars @@ -107,6 +128,13 @@ components: - type: Sprite state: ears + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-ears + sprite: + sprite: Mobs/Species/Human/organs.rsi + state: ears - type: entity id: OrganHumanLungs @@ -189,6 +217,13 @@ groups: - id: Food - id: Drink + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-stomach + sprite: + sprite: Mobs/Species/Human/organs.rsi + state: stomach - type: entity id: OrganHumanLiver @@ -204,6 +239,13 @@ groups: - id: Alcohol rateModifier: 0.1 # removes alcohol very slowly along with the stomach removing it as a drink + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-liver + sprite: + sprite: Mobs/Species/Human/organs.rsi + state: liver - type: entity id: OrganHumanKidneys diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pie.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pie.yml index 09ec706e1f..c9ac483343 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pie.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pie.yml @@ -23,7 +23,8 @@ - ReagentId: Vitamin Quantity: 5 - type: Food #All pies here made with a pie tin; unless you're some kind of savage, you're probably not destroying this when you eat or slice the pie! - trash: FoodPlateTin + trash: + - FoodPlateTin - type: SliceableFood count: 4 - type: Tag diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/tin.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/tin.yml index dc1a4ec74c..3fbf14a6d6 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/tin.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/tin.yml @@ -88,7 +88,8 @@ - sweet - funny - type: Food - trash: FoodTinPeachesTrash + trash: + - FoodTinPeachesTrash - type: Tag tags: - Fruit @@ -110,7 +111,8 @@ - type: Sprite sprite: Objects/Consumable/Food/Tins/maint_peaches.rsi - type: Food - trash: FoodTinPeachesMaintTrash + trash: + - FoodTinPeachesMaintTrash # only exists for backwards compatibility with a few maps, nothing else uses it - type: entity @@ -147,7 +149,8 @@ - salty - cheap - type: Food - trash: FoodTinBeansTrash + trash: + - FoodTinBeansTrash - type: entity parent: FoodTinBaseTrash @@ -176,7 +179,8 @@ - salty - cheap - type: Food - trash: FoodTinMRETrash + trash: + - FoodTinMRETrash - type: Tag tags: - Meat diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml index 22e6fce8e1..8009779a36 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml @@ -19,7 +19,69 @@ reagents: - ReagentId: Nutriment Quantity: 6.66 # 1/3 of a loaf of bread, technically losing 0.01 nutriment per batch of three buns over making bread loaves/slices + - type: Butcherable + butcherDelay: 1 + spawned: + - id: FoodBreadBunTop + amount: 1 + - id: FoodBreadBunBottom + amount: 1 +- type: entity + id: FoodBreadBunBottom + parent: FoodBreadSliceBase + name: bottom bun + description: It's time to start building the burger tower. + components: + - type: Food + - type: Sprite + drawdepth: Mobs + noRot: true + sprite: Objects/Consumable/Food/burger.rsi + layers: + - state: bun_bottom + - type: FoodSequenceStartPoint + key: burger + maxLayers: 20 + startPosition: 0, 0 + offset: 0, 0.1 + nameGeneration: food-sequence-standart-gen + nameSuffix: food-sequence-burger-suffix + - type: Appearance + - type: SolutionContainerManager + solutions: + food: + maxVol: 5 + reagents: + - ReagentId: Nutriment + Quantity: 3.3 # 1/2 of a bun + +- type: entity + id: FoodBreadBunTop + parent: FoodBreadSliceBase + name: top bun + description: the perfect finish for your burger tower + components: + - type: Food + - type: Sprite + sprite: Objects/Consumable/Food/burger.rsi + layers: + - state: bun_top + - type: SolutionContainerManager + solutions: + food: + maxVol: 5 + reagents: + - ReagentId: Nutriment + Quantity: 3.3 # 1/2 of a bun + - type: FoodSequenceElement + entries: + burger: + final: true + sprite: + sprite: Objects/Consumable/Food/burger.rsi + state: bun_top + # Base - type: entity @@ -620,7 +682,8 @@ description: An elusive rib shaped burger with limited availability across the galaxy. Not as good as you remember it. components: - type: Food - trash: FoodKebabSkewer + trash: + - FoodKebabSkewer - type: FlavorProfile flavors: - bun diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/egg.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/egg.yml index 8cd2fa70ee..a4593d5006 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/egg.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/egg.yml @@ -11,7 +11,8 @@ - Egg - Meat - type: Food - trash: Eggshells + trash: + - Eggshells - type: Sprite sprite: Objects/Consumable/Food/egg.rsi - type: Item diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/frozen.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/frozen.yml index c760e5e3eb..6465b5d06f 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/frozen.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/frozen.yml @@ -88,7 +88,8 @@ - state: popsicle color: orange - type: Food - trash: FoodFrozenPopsicleTrash + trash: + - FoodFrozenPopsicleTrash - type: entity name: berry creamsicle @@ -103,7 +104,8 @@ - state: popsicle color: red - type: Food - trash: FoodFrozenPopsicleTrash + trash: + - FoodFrozenPopsicleTrash - type: Tag tags: - Fruit @@ -119,7 +121,8 @@ - state: stick - state: jumbo - type: Food - trash: FoodFrozenPopsicleTrash + trash: + - FoodFrozenPopsicleTrash - type: SolutionContainerManager solutions: food: @@ -149,7 +152,8 @@ - state: alpha-filling # color: foo - type: Food - trash: FoodFrozenSnowconeTrash + trash: + - FoodFrozenSnowconeTrash - type: SolutionContainerManager solutions: food: @@ -187,7 +191,8 @@ - state: cone - state: berry - type: Food - trash: FoodFrozenSnowconeTrash + trash: + - FoodFrozenSnowconeTrash - type: Tag tags: - Fruit @@ -203,7 +208,8 @@ - state: cone - state: fruitsalad - type: Food - trash: FoodFrozenSnowconeTrash + trash: + - FoodFrozenSnowconeTrash - type: Tag tags: - Fruit @@ -219,7 +225,8 @@ - state: cone - state: clown - type: Food - trash: FoodFrozenSnowconeTrash + trash: + - FoodFrozenSnowconeTrash - type: entity name: mime snowcone @@ -232,7 +239,8 @@ - state: cone - state: mime - type: Food - trash: FoodFrozenSnowconeTrash + trash: + - FoodFrozenSnowconeTrash - type: entity name: rainbow snowcone @@ -245,7 +253,8 @@ - state: cone - state: rainbow - type: Food - trash: FoodFrozenSnowconeTrash + trash: + - FoodFrozenSnowconeTrash # Trash diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml index a81ed55545..5272334511 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml @@ -570,6 +570,13 @@ - type: SliceableFood count: 3 slice: FoodCheeseSlice + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-cheese + sprite: + sprite: Objects/Consumable/Food/ingredients.rsi + state: cheesewheel - type: entity name: cheese wedge @@ -592,6 +599,13 @@ - type: Tag tags: - Slice + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-cheese + sprite: + sprite: Objects/Consumable/Food/ingredients.rsi + state: cheesewedge - type: entity name: chèvre log diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml index 33c2a39d7f..1ded684c77 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meals.yml @@ -330,7 +330,8 @@ description: BBQ ribs, slathered in a healthy coating of BBQ sauce. The least vegan thing to ever exist. components: - type: Food - trash: FoodKebabSkewer + trash: + - FoodKebabSkewer - type: FlavorProfile flavors: - meaty @@ -591,7 +592,8 @@ description: Buttery. components: - type: Food - trash: FoodPlate + trash: + - FoodPlate - type: FlavorProfile flavors: - corn diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml index 59b1db1782..885c483ad0 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml @@ -106,6 +106,13 @@ graph: MeatSteak node: start defaultTarget: meat steak + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-raw-meat + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: plain - type: Tag tags: - Meat @@ -150,6 +157,13 @@ reagents: - ReagentId: CarpoToxin Quantity: 5 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-carp + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: fish - type: Extractable juiceSolution: reagents: @@ -185,6 +199,13 @@ graph: Bacon node: start defaultTarget: bacon + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-carp + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: bacon - type: entity name: raw bear meat @@ -209,6 +230,13 @@ graph: BearSteak node: start defaultTarget: filet migrawr + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-bear + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: bear - type: entity @@ -234,6 +262,13 @@ graph: PenguinSteak node: start defaultTarget: cooked penguin + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-penguin + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: bird - type: entity name: raw chicken meat @@ -260,6 +295,13 @@ graph: ChickenSteak node: start defaultTarget: cooked chicken + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-chiken + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: bird - type: entity name: raw duck meat @@ -284,6 +326,13 @@ graph: DuckSteak node: start defaultTarget: cooked duck + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-penguin + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: bird - type: entity name: prime-cut corgi meat @@ -309,6 +358,13 @@ price: 750 - type: StealTarget stealGroup: FoodMeatCorgi + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-corgi + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: corgi - type: entity name: raw crab meat @@ -333,6 +389,13 @@ graph: CrabSteak node: start defaultTarget: cooked crab + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-crab + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: crab - type: entity name: raw goliath meat @@ -356,6 +419,13 @@ graph: GoliathSteak node: start defaultTarget: goliath steak + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-goliath + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: goliath - type: entity name: dragon flesh @@ -383,6 +453,13 @@ reagents: - ReagentId: Ichor Quantity: 10 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-dragon + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: dragon - type: entity name: raw rat meat @@ -403,6 +480,13 @@ - type: SliceableFood count: 3 slice: FoodMeatCutlet + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-rat + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: plain - type: entity name: raw lizard meat @@ -427,6 +511,13 @@ graph: LizardSteak node: start defaultTarget: lizard steak + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-lizard + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: lizard - type: entity name: raw plant meat @@ -436,6 +527,13 @@ components: - type: Sprite state: plant + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-plant + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: plant - type: entity name: rotten meat @@ -461,6 +559,13 @@ Quantity: 4 - ReagentId: Fat Quantity: 4 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-rotten + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: rotten - type: entity name: raw spider meat @@ -481,6 +586,13 @@ - type: SliceableFood count: 3 slice: FoodMeatSpiderCutlet + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-spider + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: spider - type: entity name: raw spider leg @@ -498,6 +610,13 @@ Quantity: 10 - ReagentId: Fat Quantity: 3 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-spider + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: spiderleg - type: entity name: meatwheat clump @@ -513,6 +632,13 @@ reagents: - ReagentId: UncookedAnimalProteins Quantity: 1 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-clump + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: clump - type: entity name: raw snake meat @@ -533,6 +659,13 @@ Quantity: 10 - ReagentId: Toxin Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-snake + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: snake - type: entity name: raw xeno meat @@ -560,6 +693,13 @@ - type: SliceableFood count: 3 slice: FoodMeatXenoCutlet + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-xeno + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: xeno - type: entity name: raw rouny meat @@ -589,6 +729,13 @@ graph: RounySteak node: start defaultTarget: rouny steak + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-xeno + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: xeno - type: entity name: killer tomato meat @@ -603,6 +750,13 @@ slice: FoodMeatTomatoCutlet - type: StaticPrice price: 100 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-tomato + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: tomato - type: entity name: salami @@ -648,6 +802,13 @@ state: clown - type: SliceableFood slice: FoodMeatSalamiSlice + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-clown + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: clown - type: entity name: meatball @@ -661,6 +822,13 @@ - Meat - type: Sprite state: meatball + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-raw-meat + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: meatball - type: entity name: slimeball @@ -677,6 +845,13 @@ - Meat - type: Sprite state: slime + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-slime + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: slime # Cooked @@ -740,6 +915,12 @@ - type: Construction graph: MeatSteak node: meat steak + - type: FoodSequenceElement + entries: + burger: + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: plain-cooked - type: entity name: bacon @@ -771,6 +952,12 @@ - type: Construction graph: Bacon node: bacon + - type: FoodSequenceElement + entries: + burger: + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: bacon-cooked - type: entity name: cooked bear @@ -800,6 +987,13 @@ - type: Construction graph: BearSteak node: filet migrawr + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-bear + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: product-cooked - type: entity name: penguin filet @@ -828,6 +1022,13 @@ - type: Construction graph: PenguinSteak node: cooked penguin + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-penguin + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: bird-cooked - type: entity name: cooked chicken @@ -856,6 +1057,13 @@ - type: Construction graph: ChickenSteak node: cooked chicken + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-chiken + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: bird-cooked - type: entity name: fried chicken @@ -884,6 +1092,13 @@ Quantity: 5 - ReagentId: Protein Quantity: 5 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-chiken + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: chicken-fried - type: entity name: cooked duck @@ -912,6 +1127,13 @@ - type: Construction graph: DuckSteak node: cooked duck + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-duck + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: bird-cooked - type: entity name: cooked crab @@ -940,6 +1162,13 @@ - type: Construction graph: CrabSteak node: cooked crab + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-crab + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: crab-cooked - type: entity name: goliath steak @@ -966,6 +1195,13 @@ - type: Construction graph: GoliathSteak node: goliath steak + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-goliath + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: goliath-cooked - type: entity name: rouny steak @@ -996,6 +1232,13 @@ - type: Construction graph: RounySteak node: rouny steak + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-xeno + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: rouny-cooked - type: entity name: lizard steak @@ -1025,6 +1268,13 @@ - type: Construction graph: LizardSteak node: lizard steak + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-lizard + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: lizard-cooked - type: entity name: boiled spider leg @@ -1047,6 +1297,13 @@ Quantity: 5 - ReagentId: Protein Quantity: 5 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-spider + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: spiderleg-cooked - type: entity name: meatball @@ -1068,6 +1325,12 @@ Quantity: 5 - ReagentId: Protein Quantity: 5 + - type: FoodSequenceElement + entries: + burger: + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: meatball-cooked # Cutlets @@ -1094,6 +1357,12 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: cutlet - type: entity name: raw bear cutlet @@ -1119,6 +1388,14 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-bear + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: cutlet + color: brown - type: entity name: raw penguin cutlet @@ -1142,6 +1419,14 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-penguin + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: cutlet + color: white - type: entity name: raw chicken cutlet @@ -1165,6 +1450,14 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-chiken + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: cutlet + color: white - type: entity name: raw duck cutlet @@ -1188,6 +1481,14 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-duck + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: cutlet + color: white - type: entity name: raw lizard cutlet @@ -1214,6 +1515,14 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-lizard + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: cutlet + color: pink - type: entity name: raw spider cutlet @@ -1236,6 +1545,13 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-spider + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: spidercutlet - type: entity name: raw xeno cutlet @@ -1260,6 +1576,13 @@ reagents: - ReagentId: SulfuricAcid Quantity: 20 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-xeno + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: xenocutlet - type: entity name: raw killer tomato cutlet @@ -1276,6 +1599,13 @@ color: red - type: StaticPrice price: 30 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-tomato + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: salami-slice - type: entity name: salami slice @@ -1298,6 +1628,13 @@ Quantity: 1 - ReagentId: Protein Quantity: 1 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-salami + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: salami-slice # Cooked @@ -1322,6 +1659,12 @@ Quantity: 2 - ReagentId: Protein Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked - type: entity name: bear cutlet @@ -1347,6 +1690,13 @@ Quantity: 2 - ReagentId: Protein Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-bear + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked - type: entity name: penguin cutlet @@ -1370,6 +1720,13 @@ Quantity: 2 - ReagentId: Protein Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-penguin + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked - type: entity name: chicken cutlet @@ -1393,6 +1750,13 @@ Quantity: 2 - ReagentId: Protein Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-chiken + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked - type: entity name: duck cutlet @@ -1416,6 +1780,13 @@ Quantity: 2 - ReagentId: Protein Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-duck + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked - type: entity name: lizard cutlet @@ -1440,6 +1811,13 @@ Quantity: 2 - ReagentId: Protein Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-lizard + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked - type: entity name: spider cutlet @@ -1462,6 +1840,13 @@ Quantity: 1 - ReagentId: Protein Quantity: 1 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-spider + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked - type: entity name: xeno cutlet @@ -1484,3 +1869,10 @@ Quantity: 1 - ReagentId: Protein Quantity: 1 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-xeno + sprite: + sprite: Objects/Consumable/Food/meat.rsi + state: xenocutlet-cooked diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml index 88a30150d8..d980db0ca1 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml @@ -142,6 +142,13 @@ - type: Tag tags: - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-pea + sprite: + sprite: Objects/Specific/Hydroponics/laughin_pea.rsi + state: produce - type: entity name: tower-cap log @@ -254,7 +261,8 @@ flavors: - banana - type: Food - trash: TrashBananaPeel + trash: + - TrashBananaPeel - type: SolutionContainerManager solutions: food: @@ -277,6 +285,13 @@ tags: - Fruit - Banana + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-banana + sprite: + sprite: Objects/Specific/Hydroponics/banana.rsi + state: produce - type: entity name: mimana @@ -289,7 +304,8 @@ - banana - nothing - type: Food - trash: TrashMimanaPeel + trash: + - TrashMimanaPeel - type: SolutionContainerManager solutions: food: @@ -313,6 +329,13 @@ - type: Tag tags: - Fruit + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-mimana + sprite: + sprite: Objects/Specific/Hydroponics/mimana.rsi + state: produce - type: entity name: banana peel @@ -451,6 +474,13 @@ Quantity: 10 - ReagentId: Oculine Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-carrot + sprite: + sprite: Objects/Specific/Hydroponics/carrot.rsi + state: produce - type: entity name: cabbage @@ -477,6 +507,13 @@ - type: Tag tags: - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-cabbage + sprite: + sprite: Objects/Specific/Hydroponics/cabbage.rsi + state: produce - type: entity name: garlic @@ -505,6 +542,13 @@ - type: Tag tags: - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-garlic + sprite: + sprite: Objects/Specific/Hydroponics/garlic.rsi + state: produce - type: entity name: lemon @@ -537,6 +581,13 @@ tags: - Lemon - Fruit + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-lemon + sprite: + sprite: Objects/Specific/Hydroponics/lemon.rsi + state: produce - type: entity name: lemoon @@ -568,6 +619,13 @@ - type: Tag tags: - Fruit + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-lemon + sprite: + sprite: Objects/Specific/Hydroponics/lemoon.rsi + state: produce - type: entity name: lime @@ -591,6 +649,13 @@ tags: - Lime - Fruit + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-lemon + sprite: + sprite: Objects/Specific/Hydroponics/lime.rsi + state: produce - type: entity name: orange @@ -613,6 +678,13 @@ - type: Tag tags: - Fruit + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-orange + sprite: + sprite: Objects/Specific/Hydroponics/orange.rsi + state: produce - type: entity name: pineapple @@ -649,6 +721,13 @@ - type: Tag tags: - Fruit + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-pineapple + sprite: + sprite: Objects/Specific/Hydroponics/pineapple.rsi + state: produce - type: entity name: potato @@ -681,6 +760,13 @@ tags: - Potato - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-potato + sprite: + sprite: Objects/Specific/Hydroponics/potato.rsi + state: produce - type: entity @@ -737,6 +823,13 @@ tags: - Fruit - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-tomato + sprite: + sprite: Objects/Specific/Hydroponics/tomato.rsi + state: produce - type: entity name: blue tomato @@ -782,6 +875,13 @@ tags: - Fruit - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-tomato + sprite: + sprite: Objects/Specific/Hydroponics/blue_tomato.rsi + state: produce - type: entity name: blood tomato @@ -825,6 +925,13 @@ tags: - Fruit # Fuck you they're a fruit - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-tomato + sprite: + sprite: Objects/Specific/Hydroponics/blood_tomato.rsi + state: produce - type: entity name: eggplant @@ -883,6 +990,13 @@ - type: Tag tags: - Fruit + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-apple + sprite: + sprite: Objects/Specific/Hydroponics/apple.rsi + state: produce - type: entity name: golden apple @@ -919,6 +1033,13 @@ - type: Tag tags: - Fruit + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-apple + sprite: + sprite: Objects/Specific/Hydroponics/golden_apple.rsi + state: produce - type: entity name: cocoa pod @@ -952,6 +1073,13 @@ - type: Tag tags: - Fruit + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-cocoa + sprite: + sprite: Objects/Specific/Hydroponics/cocoa.rsi + state: produce - type: entity name: ear of corn @@ -963,7 +1091,8 @@ flavors: - corn - type: Food - trash: FoodCornTrash + trash: + - FoodCornTrash - type: SolutionContainerManager solutions: food: @@ -989,6 +1118,13 @@ Quantity: 3 - ReagentId: Enzyme Quantity: 2 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-corn + sprite: + sprite: Objects/Specific/Hydroponics/corn.rsi + state: produce - type: entity name: corn cob @@ -1011,6 +1147,13 @@ reagents: - ReagentId: Cornmeal Quantity: 10 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-corn + sprite: + sprite: Objects/Specific/Hydroponics/corn.rsi + state: produce - type: entity name: onion @@ -1042,6 +1185,13 @@ - type: Tag tags: - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-onion + sprite: + sprite: Objects/Specific/Hydroponics/onion.rsi + state: produce - type: entity name: red onion @@ -1073,6 +1223,13 @@ - type: Tag tags: - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-onion + sprite: + sprite: Objects/Specific/Hydroponics/onion_red.rsi + state: produce - type: entity name: chanterelle cluster @@ -1093,6 +1250,13 @@ - type: Tag tags: - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-mushroom + sprite: + sprite: Objects/Specific/Hydroponics/chanterelle.rsi + state: produce # Slices @@ -1136,6 +1300,13 @@ tags: - Fruit - Slice + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-pineapple + sprite: + sprite: Objects/Specific/Hydroponics/pineapple.rsi + state: slice - type: entity name: onion slice @@ -1163,6 +1334,13 @@ tags: - Vegetable - Slice + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-onion + sprite: + sprite: Objects/Specific/Hydroponics/onion.rsi + state: slice - type: entity name: red onion slice @@ -1190,6 +1368,13 @@ tags: - Vegetable - Slice + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-onion + sprite: + sprite: Objects/Specific/Hydroponics/onion_red.rsi + state: slice - type: entity name: chili pepper @@ -1218,6 +1403,13 @@ - type: Tag tags: - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-chili + sprite: + sprite: Objects/Specific/Hydroponics/chili.rsi + state: produce - type: entity name: chilly pepper @@ -1244,6 +1436,13 @@ sprite: Objects/Specific/Hydroponics/chilly.rsi - type: Produce seedId: chilly + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-chilly + sprite: + sprite: Objects/Specific/Hydroponics/chilly.rsi + state: produce - type: entity name: aloe @@ -1272,6 +1471,13 @@ - type: Tag tags: - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-aloe + sprite: + sprite: Objects/Specific/Hydroponics/aloe.rsi + state: produce - type: entity name: poppy @@ -1304,6 +1510,13 @@ - type: Tag tags: - Flower # TODO add "RedFlower" or "Poppy" tag, when other color flowers will be + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-poppy + sprite: + sprite: Objects/Specific/Hydroponics/poppy.rsi + state: produce - type: entity name: lily @@ -1332,6 +1545,13 @@ - type: Tag tags: - Flower + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-lily + sprite: + sprite: Objects/Specific/Hydroponics/lily.rsi + state: produce - type: entity name: lingzhi @@ -1358,6 +1578,13 @@ seedId: lingzhi - type: Extractable grindableSolutionName: food + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-mushroom + sprite: + sprite: Objects/Specific/Hydroponics/lingzhi.rsi + state: produce - type: entity name: ambrosia vulgaris @@ -1397,6 +1624,13 @@ - type: Tag tags: - Ambrosia + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-ambrosia + sprite: + sprite: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi + state: produce - type: entity name: ambrosia deus @@ -1434,6 +1668,13 @@ - type: Tag tags: - Ambrosia + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-ambrosia + sprite: + sprite: Objects/Specific/Hydroponics/ambrosia_deus.rsi + state: produce - type: entity name: galaxythistle @@ -1461,6 +1702,13 @@ tags: - Galaxythistle - Fruit # Probably? + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-galaxy + sprite: + sprite: Objects/Specific/Hydroponics/galaxythistle.rsi + state: produce - type: entity name: glasstle @@ -1525,7 +1773,13 @@ - type: Tag tags: - Galaxythistle - + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-glasstle + sprite: + sprite: Objects/Specific/Hydroponics/glasstle.rsi + state: produce - type: entity name: fly amanita @@ -1552,6 +1806,13 @@ - type: Extractable grindableSolutionName: food - type: BadFood + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-mushroom + sprite: + sprite: Objects/Specific/Hydroponics/fly_amanita.rsi + state: produce - type: entity name: gatfruit @@ -1576,10 +1837,18 @@ - type: Produce seedId: gatfruit - type: Food - trash: WeaponRevolverPython + trash: + - WeaponRevolverPython - type: Tag tags: - Fruit # It's in the name + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-gatfruit + sprite: + sprite: Objects/Specific/Hydroponics/gatfruit.rsi + state: produce - type: entity name: rice bushel @@ -1597,6 +1866,13 @@ Quantity: 10 - type: Produce seedId: rice + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-rice + sprite: + sprite: Objects/Specific/Hydroponics/rice.rsi + state: produce - type: entity name: soybeans @@ -1623,6 +1899,13 @@ - type: Tag tags: - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-soy + sprite: + sprite: Objects/Specific/Hydroponics/soybeans.rsi + state: produce - type: entity name: spaceman's trumpet @@ -1651,6 +1934,13 @@ - Flower - type: Instrument #hehe trumpet program: 56 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-soy + sprite: + sprite: Objects/Specific/Hydroponics/soybeans.rsi + state: produce - type: entity name: koibean @@ -1679,6 +1969,13 @@ - type: Tag tags: - Vegetable + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-koibean + sprite: + sprite: Objects/Specific/Hydroponics/koibean.rsi + state: produce - type: entity name: watermelon @@ -1775,6 +2072,13 @@ tags: - Fruit - Slice + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-watermelon + sprite: + sprite: Objects/Specific/Hydroponics/watermelon.rsi + state: slice - type: entity name: grapes @@ -1848,7 +2152,8 @@ flavors: - bungo - type: Food - trash: FoodBungoPit + trash: + - FoodBungoPit - type: SolutionContainerManager solutions: food: diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml index 6c16a541cd..64b8c288af 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml @@ -7,7 +7,8 @@ abstract: true components: - type: Food - trash: FoodKebabSkewer + trash: + - FoodKebabSkewer - type: Sprite sprite: Objects/Consumable/Food/skewer.rsi - type: SolutionContainerManager diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml index e8a646e8c9..ff0504d39e 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml @@ -41,7 +41,8 @@ state: boritos - type: Item - type: Food - trash: FoodPacketBoritosTrash + trash: + - FoodPacketBoritosTrash - type: entity name: C&Ds @@ -56,7 +57,8 @@ state: cnds - type: Item - type: Food - trash: FoodPacketCnDsTrash + trash: + - FoodPacketCnDsTrash - type: entity name: cheesie honkers @@ -72,7 +74,8 @@ state: cheesiehonkers - type: Item - type: Food - trash: FoodPacketCheesieTrash + trash: + - FoodPacketCheesieTrash - type: entity name: chips @@ -89,7 +92,8 @@ state: chips - type: Item - type: Food - trash: FoodPacketChipsTrash + trash: + - FoodPacketChipsTrash - type: entity name: chocolate bar @@ -183,7 +187,8 @@ state: pistachio - type: Item - type: Food - trash: FoodPacketPistachioTrash + trash: + - FoodPacketPistachioTrash - type: Tag tags: - Fruit # Seed of a fruit, you can yell at me @@ -204,7 +209,8 @@ - type: Item heldPrefix: popcorn - type: Food - trash: FoodPacketPopcornTrash + trash: + - FoodPacketPopcornTrash - type: entity name: 4no raisins @@ -219,7 +225,8 @@ state: raisins - type: Item - type: Food - trash: FoodPacketRaisinsTrash + trash: + - FoodPacketRaisinsTrash - type: Tag tags: - Fruit @@ -237,7 +244,8 @@ state: semki - type: Item - type: Food - trash: FoodPacketSemkiTrash + trash: + - FoodPacketSemkiTrash - type: entity name: sus jerky @@ -252,7 +260,8 @@ state: susjerky - type: Item - type: Food - trash: FoodPacketSusTrash + trash: + - FoodPacketSusTrash - type: Tag tags: - Meat @@ -270,7 +279,8 @@ state: syndicakes - type: Item - type: Food - trash: FoodPacketSyndiTrash + trash: + - FoodPacketSyndiTrash - type: entity parent: FoodSnackBase @@ -294,7 +304,8 @@ - type: Sprite state: ramen - type: Food - trash: FoodPacketCupRamenTrash + trash: + - FoodPacketCupRamenTrash - type: entity parent: DrinkRamen @@ -336,7 +347,8 @@ - ReagentId: Soysauce Quantity: 2 - type: Food - trash: FoodPacketChowMeinTrash + trash: + - FoodPacketChowMeinTrash - type: entity name: dan dan noodles @@ -364,7 +376,8 @@ - ReagentId: Soysauce Quantity: 2 - type: Food - trash: FoodPacketDanDanTrash + trash: + - FoodPacketDanDanTrash - type: entity name: fortune cookie @@ -389,7 +402,8 @@ heldPrefix: packet size: Tiny - type: Food - trash: FoodCookieFortune + trash: + - FoodCookieFortune - type: entity id: FoodSnackNutribrick diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml index 6b96f3bcb3..5c2a87c2b1 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml @@ -8,7 +8,8 @@ - type: Item storedRotation: -90 - type: Food - trash: FoodBowlBig + trash: + - FoodBowlBig utensil: Spoon - type: SolutionContainerManager solutions: @@ -970,7 +971,8 @@ flavors: - miso - type: Food - trash: FoodBowlFancy + trash: + - FoodBowlFancy - type: Sprite layers: - state: bowl2 diff --git a/Resources/Prototypes/Entities/Objects/Materials/materials.yml b/Resources/Prototypes/Entities/Objects/Materials/materials.yml index a3fc4a2774..e8d4094400 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/materials.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/materials.yml @@ -510,7 +510,8 @@ flavors: - banana - type: Food - trash: TrashBananiumPeel + trash: + - TrashBananiumPeel - type: BadFood - type: SolutionContainerManager solutions: diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml index c26ba925e0..6bef30e8c7 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml @@ -17,6 +17,13 @@ reagents: - ReagentId: THC Quantity: 15 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-cannabis + sprite: + sprite: Objects/Specific/Hydroponics/cannabis.rsi + state: produce - type: entity @@ -37,6 +44,13 @@ - type: Sprite sprite: Objects/Specific/Hydroponics/tobacco.rsi state: dried + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-cannabis + sprite: + sprite: Objects/Specific/Hydroponics/tobacco.rsi + state: dried - type: entity name: ground cannabis @@ -65,6 +79,13 @@ - Smokable - type: Item size: Tiny + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-cannabis + sprite: + sprite: Objects/Misc/reagent_fillings.rsi + state: powderpile - type: entity name: rainbow cannabis leaves @@ -97,6 +118,13 @@ # Quantity: 1 - ReagentId: Psicodine Quantity: 0.6 + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-rainbow-cannabis + sprite: + sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi + state: produce - type: entity name: dried rainbow cannabis leaves @@ -127,6 +155,13 @@ - type: Sprite sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi state: dried + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-rainbow-cannabis + sprite: + sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi + state: dried - type: entity name: ground rainbow cannabis @@ -160,6 +195,13 @@ - type: Construction graph: smokeableGroundCannabisRainbow node: groundRainbow + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-rainbow-cannabis + sprite: + sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi + state: powderpile_rainbow - type: entity name: tobacco leaves @@ -218,3 +260,10 @@ - Smokable - type: Item size: Tiny + - type: FoodSequenceElement + entries: + burger: + name: food-sequence-burger-content-tobacco + sprite: + sprite: Objects/Misc/reagent_fillings.rsi + state: powderpile diff --git a/Resources/Textures/Objects/Consumable/Food/burger.rsi/bun_bottom.png b/Resources/Textures/Objects/Consumable/Food/burger.rsi/bun_bottom.png new file mode 100644 index 0000000000..aec759f62a Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/burger.rsi/bun_bottom.png differ diff --git a/Resources/Textures/Objects/Consumable/Food/burger.rsi/bun_top.png b/Resources/Textures/Objects/Consumable/Food/burger.rsi/bun_top.png new file mode 100644 index 0000000000..8eb16ce1ff Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/burger.rsi/bun_top.png differ diff --git a/Resources/Textures/Objects/Consumable/Food/burger.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/burger.rsi/meta.json index 5a7ffa873f..2ad83dfc3c 100644 --- a/Resources/Textures/Objects/Consumable/Food/burger.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/burger.rsi/meta.json @@ -28,6 +28,12 @@ { "name": "bun" }, + { + "name": "bun_top" + }, + { + "name": "bun_bottom" + }, { "name": "c" }, diff --git a/Resources/Textures/Objects/Consumable/Food/meat.rsi/tomato.png b/Resources/Textures/Objects/Consumable/Food/meat.rsi/tomato.png index 72242699f2..0d749888b0 100644 Binary files a/Resources/Textures/Objects/Consumable/Food/meat.rsi/tomato.png and b/Resources/Textures/Objects/Consumable/Food/meat.rsi/tomato.png differ diff --git a/Resources/Textures/Objects/Specific/Hydroponics/aloe.rsi/produce.png b/Resources/Textures/Objects/Specific/Hydroponics/aloe.rsi/produce.png index 68f2133a99..3e0c08cf2d 100644 Binary files a/Resources/Textures/Objects/Specific/Hydroponics/aloe.rsi/produce.png and b/Resources/Textures/Objects/Specific/Hydroponics/aloe.rsi/produce.png differ diff --git a/Resources/Textures/Objects/Specific/Hydroponics/apple.rsi/produce.png b/Resources/Textures/Objects/Specific/Hydroponics/apple.rsi/produce.png index 0bb7ca471b..cc0a026b59 100644 Binary files a/Resources/Textures/Objects/Specific/Hydroponics/apple.rsi/produce.png and b/Resources/Textures/Objects/Specific/Hydroponics/apple.rsi/produce.png differ diff --git a/Resources/Textures/Objects/Specific/Hydroponics/blood_tomato.rsi/produce.png b/Resources/Textures/Objects/Specific/Hydroponics/blood_tomato.rsi/produce.png index bf5f2fee7a..be24a81a60 100644 Binary files a/Resources/Textures/Objects/Specific/Hydroponics/blood_tomato.rsi/produce.png and b/Resources/Textures/Objects/Specific/Hydroponics/blood_tomato.rsi/produce.png differ diff --git a/Resources/Textures/Objects/Specific/Hydroponics/blue_tomato.rsi/produce.png b/Resources/Textures/Objects/Specific/Hydroponics/blue_tomato.rsi/produce.png index 465dd4eefb..b2a6d230a3 100644 Binary files a/Resources/Textures/Objects/Specific/Hydroponics/blue_tomato.rsi/produce.png and b/Resources/Textures/Objects/Specific/Hydroponics/blue_tomato.rsi/produce.png differ diff --git a/Resources/Textures/Objects/Specific/Hydroponics/cannabis.rsi/produce.png b/Resources/Textures/Objects/Specific/Hydroponics/cannabis.rsi/produce.png index a03a31182b..601dc37fbc 100644 Binary files a/Resources/Textures/Objects/Specific/Hydroponics/cannabis.rsi/produce.png and b/Resources/Textures/Objects/Specific/Hydroponics/cannabis.rsi/produce.png differ