From 230ea9be46d927be19cc146c22f523d0b3f4abca Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sun, 8 Sep 2024 09:22:27 +0300 Subject: [PATCH] Metamorphosis - FoodSequence 3 (#31012) * setup some data * cheeseburger recipe * Update FoodSequenceSystem.cs * finalize cheseburger recipe * remove fun * return old taco sprites * full foodsequence data refactor * return tacos * well done * add cutlets to burger * chickenburger recipe * +2 burger recipes * more fun * Update brain.png * some slice produce added * documentation * watermelon * skewer work * flipping * tomato * skewer watermelon * Update skewer.yml * oopsie, ok, im go to sleep * fix checks * Update produce.yml * screwed * cheeeeeeeese * all cooked meat added * produce added * aaaaand suppermatter * key to Tag * More * proto string remove * raw snail * fix * Update FoodMetamorphableByAddingComponent.cs * fixes * fix3 * fififififx --- .../EntitySystems/ClientFoodSequenceSystem.cs | 2 +- .../EntitySystems/FoodSequenceSystem.cs | 158 ++- .../FoodMetamorphableByAddingComponent.cs | 17 + .../FoodSequenceElementComponent.cs | 44 +- .../FoodSequenceStartPointComponent.cs | 109 +- Content.Shared/Nutrition/Events.cs | 8 + .../FoodMetamorphRules/FoodMetamorphRule.cs | 218 ++++ .../FoodSequenceElementPrototype.cs | 38 + .../Prototypes/MetamorphRecipePrototype.cs | 32 + .../nutrition/components/food-sequence.ftl | 3 +- Resources/Prototypes/Body/Organs/human.yml | 45 +- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 33 +- .../Objects/Consumable/Food/Baked/cake.yml | 9 +- .../Objects/Consumable/Food/burger.yml | 15 +- .../Objects/Consumable/Food/ingredients.yml | 36 +- .../Entities/Objects/Consumable/Food/meat.yml | 661 +--------- .../Objects/Consumable/Food/produce.yml | 460 ++----- .../Objects/Consumable/Food/skewer.yml | 28 +- .../Entities/Objects/Consumable/Food/taco.yml | 159 ++- .../Objects/Specific/Hydroponics/leaves.yml | 18 - .../Recipes/Cooking/food_sequence_element.yml | 1104 +++++++++++++++++ .../Recipes/Cooking/meal_recipes.yml | 78 +- .../Recipes/Cooking/sequence_metamorph.yml | 125 ++ Resources/Prototypes/tags.yml | 18 + .../Mobs/Species/Human/organs.rsi/brain.png | Bin 461 -> 471 bytes .../Consumable/Food/burger.rsi/meta.json | 11 +- .../Consumable/Food/burger.rsi/screwed.png | Bin 0 -> 895 bytes .../bun_bottom.png | Bin .../bun_top.png | Bin .../Food/burger_sequence.rsi/cheese.png | Bin 0 -> 302 bytes .../Food/burger_sequence.rsi/meta.json | 20 + .../Consumable/Food/skewer.rsi/meta.json | 3 + .../Food/skewer.rsi/skewer-tomato.png | Bin 186 -> 233 bytes .../Food/skewer.rsi/skewer-watermelon.png | Bin 0 -> 331 bytes .../Consumable/Food/taco.rsi/beeftaco.png | Bin 0 -> 303 bytes .../Food/taco.rsi/beeftacosupreme.png | Bin 0 -> 307 bytes .../Consumable/Food/taco.rsi/chickentaco.png | Bin 0 -> 308 bytes .../Food/taco.rsi/chickentacosupreme.png | Bin 0 -> 309 bytes .../Consumable/Food/taco.rsi/fishtaco.png | Bin 0 -> 286 bytes .../Consumable/Food/taco.rsi/meta.json | 20 +- .../Consumable/Food/taco.rsi/rattaco.png | Bin 0 -> 329 bytes .../Food/taco.rsi/tacoshell_back.png | Bin 171 -> 0 bytes .../Food/taco.rsi/tacoshell_forward.png | Bin 294 -> 0 bytes .../Food/taco_sequence.rsi/cheese.png | Bin 0 -> 267 bytes .../Food/taco_sequence.rsi/meta.json | 23 + .../Consumable/Food/taco_sequence.rsi/rat.png | Bin 0 -> 364 bytes .../Food/taco_sequence.rsi/tacoshell_back.png | Bin 0 -> 171 bytes .../taco_sequence.rsi/tacoshell_forward.png | Bin 0 -> 293 bytes .../Hydroponics/pineapple.rsi/slice.png | Bin 426 -> 381 bytes 49 files changed, 2261 insertions(+), 1234 deletions(-) create mode 100644 Content.Shared/Nutrition/Components/FoodMetamorphableByAddingComponent.cs create mode 100644 Content.Shared/Nutrition/FoodMetamorphRules/FoodMetamorphRule.cs create mode 100644 Content.Shared/Nutrition/Prototypes/FoodSequenceElementPrototype.cs create mode 100644 Content.Shared/Nutrition/Prototypes/MetamorphRecipePrototype.cs create mode 100644 Resources/Prototypes/Recipes/Cooking/food_sequence_element.yml create mode 100644 Resources/Prototypes/Recipes/Cooking/sequence_metamorph.yml create mode 100644 Resources/Textures/Objects/Consumable/Food/burger.rsi/screwed.png rename Resources/Textures/Objects/Consumable/Food/{burger.rsi => burger_sequence.rsi}/bun_bottom.png (100%) rename Resources/Textures/Objects/Consumable/Food/{burger.rsi => burger_sequence.rsi}/bun_top.png (100%) create mode 100644 Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/cheese.png create mode 100644 Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Food/skewer.rsi/skewer-watermelon.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftaco.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftacosupreme.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentaco.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentacosupreme.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/fishtaco.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/rattaco.png delete mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/tacoshell_back.png delete mode 100644 Resources/Textures/Objects/Consumable/Food/taco.rsi/tacoshell_forward.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/cheese.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/rat.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/tacoshell_back.png create mode 100644 Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/tacoshell_forward.png diff --git a/Content.Client/Nutrition/EntitySystems/ClientFoodSequenceSystem.cs b/Content.Client/Nutrition/EntitySystems/ClientFoodSequenceSystem.cs index e571c5a856..c708c6fe7d 100644 --- a/Content.Client/Nutrition/EntitySystems/ClientFoodSequenceSystem.cs +++ b/Content.Client/Nutrition/EntitySystems/ClientFoodSequenceSystem.cs @@ -1,7 +1,6 @@ using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.EntitySystems; using Robust.Client.GameObjects; -using Robust.Shared.Utility; namespace Content.Client.Nutrition.EntitySystems; @@ -50,6 +49,7 @@ public sealed class ClientFoodSequenceSystem : SharedFoodSequenceSystem sprite.AddBlankLayer(index); sprite.LayerMapSet(keyCode, index); sprite.LayerSetSprite(index, state.Sprite); + sprite.LayerSetScale(index, state.Scale); //Offset the layer var layerPos = start.Comp.StartPosition; diff --git a/Content.Server/Nutrition/EntitySystems/FoodSequenceSystem.cs b/Content.Server/Nutrition/EntitySystems/FoodSequenceSystem.cs index 6e2f6546fb..f7d8588716 100644 --- a/Content.Server/Nutrition/EntitySystems/FoodSequenceSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FoodSequenceSystem.cs @@ -4,10 +4,14 @@ using Content.Server.Nutrition.Components; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Interaction; using Content.Shared.Mobs.Systems; +using Content.Shared.Nutrition; using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.EntitySystems; +using Content.Shared.Nutrition.Prototypes; using Content.Shared.Popups; using Content.Shared.Tag; +using Robust.Server.GameObjects; +using Robust.Shared.Prototypes; using Robust.Shared.Random; namespace Content.Server.Nutrition.EntitySystems; @@ -20,12 +24,16 @@ public sealed class FoodSequenceSystem : SharedFoodSequenceSystem [Dependency] private readonly MobStateSystem _mobState = default!; [Dependency] private readonly TagSystem _tag = default!; [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly TransformSystem _transform = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnInteractUsing); + + SubscribeLocalEvent(OnIngredientAdded); } private void OnInteractUsing(Entity ent, ref InteractUsingEvent args) @@ -34,47 +42,113 @@ public sealed class FoodSequenceSystem : SharedFoodSequenceSystem TryAddFoodElement(ent, (args.Used, sequenceElement), args.User); } - private bool TryAddFoodElement(Entity start, Entity element, EntityUid? user = null) + private void OnIngredientAdded(Entity ent, ref FoodSequenceIngredientAddedEvent args) + { + if (!TryComp(args.Start, out var start)) + return; + + if (!_proto.TryIndex(args.Proto, out var elementProto)) + return; + + if (!ent.Comp.OnlyFinal || elementProto.Final || start.FoodLayers.Count == start.MaxLayers) + { + TryMetamorph((ent, start)); + } + } + + private bool TryMetamorph(Entity start) { - FoodSequenceElementEntry? elementData = null; - foreach (var entry in element.Comp.Entries) + List availableRecipes = new(); + foreach (var recipe in _proto.EnumeratePrototypes()) { - if (entry.Key == start.Comp.Key) + if (recipe.Key != start.Comp.Key) + continue; + + bool allowed = true; + foreach (var rule in recipe.Rules) { - elementData = entry.Value; - break; + if (!rule.Check(_proto, EntityManager, start, start.Comp.FoodLayers)) + { + allowed = false; + break; + } } + if (allowed) + availableRecipes.Add(recipe); } - if (elementData is null) + if (availableRecipes.Count <= 0) + return true; + + Metamorf(start, _random.Pick(availableRecipes)); //In general, if there's more than one recipe, the yml-guys screwed up. Maybe some kind of unit test is needed. + QueueDel(start); + return true; + } + + private void Metamorf(Entity start, MetamorphRecipePrototype recipe) + { + var result = SpawnAtPosition(recipe.Result, Transform(start).Coordinates); + + //Try putting in container + _transform.DropNextTo(result, (start, Transform(start))); + + if (!_solutionContainer.TryGetSolution(result, start.Comp.Solution, out var resultSoln, out var resultSolution)) + return; + + if (!_solutionContainer.TryGetSolution(start.Owner, start.Comp.Solution, out var startSoln, out var startSolution)) + return; + + _solutionContainer.RemoveAllSolution(resultSoln.Value); //Remove all YML reagents + resultSoln.Value.Comp.Solution.MaxVolume = startSoln.Value.Comp.Solution.MaxVolume; + _solutionContainer.TryAddSolution(resultSoln.Value, startSolution); + + MergeFlavorProfiles(start, result); + MergeTrash(start, result); + MergeTags(start, result); + } + + private bool TryAddFoodElement(Entity start, Entity element, EntityUid? user = null) + { + // we can't add a live mouse to a burger. + if (!TryComp(element, out var elementFood)) + return false; + if (elementFood.RequireDead && _mobState.IsAlive(element)) return false; - if (TryComp(element, out var elementFood) && elementFood.RequireDead) + //looking for a suitable FoodSequence prototype + ProtoId elementProto = string.Empty; + foreach (var pair in element.Comp.Entries) { - if (_mobState.IsAlive(element)) - return false; + if (pair.Key == start.Comp.Key) + { + elementProto = pair.Value; + } } + if (!_proto.TryIndex(elementProto, out var elementIndexed)) + 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.Final || start.Comp.Finished) + if (start.Comp.FoodLayers.Count >= start.Comp.MaxLayers && !elementIndexed.Final || start.Comp.Finished) { if (user is not null) _popup.PopupEntity(Loc.GetString("food-sequence-no-space"), start, user.Value); return false; } - //If no specific sprites are specified, standard sprites will be used. - if (elementData.Sprite is null && element.Comp.Sprite is not null) - elementData.Sprite = element.Comp.Sprite; - - elementData.LocalOffset = new Vector2( - _random.NextFloat(start.Comp.MinLayerOffset.X,start.Comp.MaxLayerOffset.X), - _random.NextFloat(start.Comp.MinLayerOffset.Y,start.Comp.MaxLayerOffset.Y)); - - start.Comp.FoodLayers.Add(elementData); + //Generate new visual layer + var flip = start.Comp.AllowHorizontalFlip && _random.Prob(0.5f); + var layer = new FoodSequenceVisualLayer(elementIndexed, + _random.Pick(elementIndexed.Sprites), + new Vector2(flip ? -1 : 1, 1), + new Vector2( + _random.NextFloat(start.Comp.MinLayerOffset.X, start.Comp.MaxLayerOffset.X), + _random.NextFloat(start.Comp.MinLayerOffset.Y, start.Comp.MaxLayerOffset.Y)) + ); + + start.Comp.FoodLayers.Add(layer); Dirty(start); - if (elementData.Final) + if (elementIndexed.Final) start.Comp.Finished = true; UpdateFoodName(start); @@ -82,6 +156,10 @@ public sealed class FoodSequenceSystem : SharedFoodSequenceSystem MergeFlavorProfiles(start, element); MergeTrash(start, element); MergeTags(start, element); + + var ev = new FoodSequenceIngredientAddedEvent(start, element, elementProto, user); + RaiseLocalEvent(start, ev); + QueueDel(element); return true; } @@ -96,17 +174,23 @@ public sealed class FoodSequenceSystem : SharedFoodSequenceSystem if (start.Comp.ContentSeparator is not null) separator = Loc.GetString(start.Comp.ContentSeparator); - HashSet existedContentNames = new(); + HashSet> existedContentNames = new(); foreach (var layer in start.Comp.FoodLayers) { - if (layer.Name is not null && !existedContentNames.Contains(layer.Name.Value)) - existedContentNames.Add(layer.Name.Value); + if (!existedContentNames.Contains(layer.Proto)) + existedContentNames.Add(layer.Proto); } var nameCounter = 1; - foreach (var name in existedContentNames) + foreach (var proto in existedContentNames) { - content.Append(Loc.GetString(name)); + if (!_proto.TryIndex(proto, out var protoIndexed)) + continue; + + if (protoIndexed.Name is null) + continue; + + content.Append(Loc.GetString(protoIndexed.Name.Value)); if (nameCounter < existedContentNames.Count) content.Append(separator); @@ -121,19 +205,25 @@ public sealed class FoodSequenceSystem : SharedFoodSequenceSystem _metaData.SetEntityName(start, newName); } - private void MergeFoodSolutions(Entity start, Entity element) + private void MergeFoodSolutions(EntityUid start, EntityUid element) { - if (!_solutionContainer.TryGetSolution(start.Owner, start.Comp.Solution, out var startSolutionEntity, out var startSolution)) + if (!TryComp(start, out var startFood)) + return; + + if (!TryComp(element, out var elementFood)) + return; + + if (!_solutionContainer.TryGetSolution(start, startFood.Solution, out var startSolutionEntity, out var startSolution)) return; - if (!_solutionContainer.TryGetSolution(element.Owner, element.Comp.Solution, out _, out var elementSolution)) + if (!_solutionContainer.TryGetSolution(element, elementFood.Solution, out _, out var elementSolution)) return; startSolution.MaxVolume += elementSolution.MaxVolume; _solutionContainer.TryAddSolution(startSolutionEntity.Value, elementSolution); } - private void MergeFlavorProfiles(Entity start, Entity element) + private void MergeFlavorProfiles(EntityUid start, EntityUid element) { if (!TryComp(start, out var startProfile)) return; @@ -148,7 +238,7 @@ public sealed class FoodSequenceSystem : SharedFoodSequenceSystem } } - private void MergeTrash(Entity start, Entity element) + private void MergeTrash(EntityUid start, EntityUid element) { if (!TryComp(start, out var startFood)) return; @@ -162,13 +252,13 @@ public sealed class FoodSequenceSystem : SharedFoodSequenceSystem } } - private void MergeTags(Entity start, Entity element) + private void MergeTags(EntityUid start, EntityUid element) { if (!TryComp(element, out var elementTags)) return; - EnsureComp(start.Owner); + EnsureComp(start); - _tag.TryAddTags(start.Owner, elementTags.Tags); + _tag.TryAddTags(start, elementTags.Tags); } } diff --git a/Content.Shared/Nutrition/Components/FoodMetamorphableByAddingComponent.cs b/Content.Shared/Nutrition/Components/FoodMetamorphableByAddingComponent.cs new file mode 100644 index 0000000000..01704041d0 --- /dev/null +++ b/Content.Shared/Nutrition/Components/FoodMetamorphableByAddingComponent.cs @@ -0,0 +1,17 @@ +using Content.Shared.Nutrition.EntitySystems; +using Robust.Shared.GameStates; + +namespace Content.Shared.Nutrition.Components; + +/// +/// Attempts to metamorphose a modular food when a new ingredient is added. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedFoodSequenceSystem))] +public sealed partial class FoodMetamorphableByAddingComponent : Component +{ + /// + /// if true, the metamorphosis will only be attempted when the sequence ends, not when each element is added. + /// + [DataField] + public bool OnlyFinal = true; +} diff --git a/Content.Shared/Nutrition/Components/FoodSequenceElementComponent.cs b/Content.Shared/Nutrition/Components/FoodSequenceElementComponent.cs index 386aa937be..50bc786129 100644 --- a/Content.Shared/Nutrition/Components/FoodSequenceElementComponent.cs +++ b/Content.Shared/Nutrition/Components/FoodSequenceElementComponent.cs @@ -1,55 +1,25 @@ -using System.Numerics; using Content.Shared.Nutrition.EntitySystems; -using Robust.Shared.Serialization; -using Robust.Shared.Utility; +using Content.Shared.Nutrition.Prototypes; +using Content.Shared.Tag; +using Robust.Shared.Prototypes; namespace Content.Shared.Nutrition.Components; /// -/// Tndicates that this entity can be inserted into FoodSequence, which will transfer all reagents to the target. +/// Indicates 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. + /// The same object can be used in different sequences, and it will have a different data in then. /// [DataField(required: true)] - public Dictionary Entries = new(); + public Dictionary, ProtoId> Entries = new(); /// - /// which solution we will add to the main dish + /// Which solution we will add to the main dish /// [DataField] public string Solution = "food"; - - /// - /// state used to generate the appearance of the added layer - /// - [DataField] - public SpriteSpecifier? Sprite; -} - -[DataRecord, Serializable, NetSerializable] -public sealed class FoodSequenceElementEntry -{ - /// - /// A localized name piece to build into the item name generator. - /// - public LocId? Name { get; set; } = null; - - /// - /// overriding default sprite - /// - 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; - - /// - /// the shear of a particular layer. Allows a little "randomization" of each layer. - /// - public Vector2 LocalOffset { get; set; } = Vector2.Zero; } diff --git a/Content.Shared/Nutrition/Components/FoodSequenceStartPointComponent.cs b/Content.Shared/Nutrition/Components/FoodSequenceStartPointComponent.cs index 613ca3cfef..c87110287a 100644 --- a/Content.Shared/Nutrition/Components/FoodSequenceStartPointComponent.cs +++ b/Content.Shared/Nutrition/Components/FoodSequenceStartPointComponent.cs @@ -1,6 +1,11 @@ using System.Numerics; using Content.Shared.Nutrition.EntitySystems; +using Content.Shared.Nutrition.Prototypes; +using Content.Shared.Tag; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; namespace Content.Shared.Nutrition.Components; @@ -14,7 +19,7 @@ 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; + public ProtoId Key = string.Empty; /// /// The maximum number of layers of food that can be placed on this item. @@ -23,30 +28,58 @@ public sealed partial class FoodSequenceStartPointComponent : Component public int MaxLayers = 10; /// - /// Start shift from the center of the sprite where the first layer of food will be placed. + /// Can we put more layers? /// [DataField] - public Vector2 StartPosition = Vector2.Zero; + public bool Finished; /// - /// Shift from the start position applied to each subsequent layer. + /// solution where reagents will be added from newly added ingredients /// [DataField] - public Vector2 Offset = Vector2.Zero; + public string Solution = "food"; + + #region name generation /// - /// Can we put more layers? + /// LocId with a name generation pattern. /// [DataField] - public bool Finished; + public LocId? NameGeneration; + + /// + /// the part of the name generation used in the pattern + /// + [DataField] + public LocId? NamePrefix; + + /// + /// content in the form of all added ingredients will be separated by these symbols + /// + [DataField] + public string? ContentSeparator; + + /// + /// the part of the name generation used in the pattern + /// + [DataField] + public LocId? NameSuffix; + + #endregion + + #region visual /// /// list of sprite states to be displayed on this object. /// [DataField, AutoNetworkedField] - public List FoodLayers = new(); + public List FoodLayers = new(); - public HashSet RevealedLayers = new(); + /// + /// If true, the generative layers will be placed in reverse order. + /// + [DataField] + public bool InverseLayers; /// /// target layer, where new layers will be added. This allows you to control the order of generative layers and static layers. @@ -55,10 +88,16 @@ public sealed partial class FoodSequenceStartPointComponent : Component public string TargetLayerMap = "foodSequenceLayers"; /// - /// If true, the generative layers will be placed in reverse order. + /// Start shift from the center of the sprite where the first layer of food will be placed. /// [DataField] - public bool InverseLayers; + public Vector2 StartPosition = Vector2.Zero; + + /// + /// Shift from the start position applied to each subsequent layer. + /// + [DataField] + public Vector2 Offset = Vector2.Zero; /// /// each layer will get a random offset in the specified range @@ -72,33 +111,49 @@ public sealed partial class FoodSequenceStartPointComponent : Component [DataField] public Vector2 MinLayerOffset = Vector2.Zero; - /// - /// solution where reagents will be added from newly added ingredients - /// [DataField] - public string Solution = "food"; + public bool AllowHorizontalFlip = true; + + public HashSet RevealedLayers = new(); + + #endregion +} +/// +/// class that synchronizes with the client +/// Stores all the necessary information for rendering the FoodSequence element +/// +[DataRecord, Serializable, NetSerializable] +public record struct FoodSequenceVisualLayer +{ /// - /// LocId with a name generation pattern. + /// reference to the original prototype of the layer. Used to edit visual layers. /// - [DataField] - public LocId? NameGeneration; + public ProtoId Proto; /// - /// the part of the name generation used in the pattern + /// Sprite rendered in sequence /// - [DataField] - public LocId? NamePrefix; + public SpriteSpecifier? Sprite { get; set; } = SpriteSpecifier.Invalid; /// - /// content in the form of all added ingredients will be separated by these symbols + /// Relative size of the sprite displayed in FoodSequence /// - [DataField] - public string? ContentSeparator; + public Vector2 Scale { get; set; } = Vector2.One; /// - /// the part of the name generation used in the pattern + /// The offset of a particular layer. Allows a little position randomization of each layer. /// - [DataField] - public LocId? NameSuffix; + public Vector2 LocalOffset { get; set; } = Vector2.Zero; + + public FoodSequenceVisualLayer(ProtoId proto, + SpriteSpecifier? sprite, + Vector2 scale, + Vector2 offset) + { + Proto = proto; + Sprite = sprite; + Scale = scale; + LocalOffset = offset; + } } diff --git a/Content.Shared/Nutrition/Events.cs b/Content.Shared/Nutrition/Events.cs index abba2583ba..d15fcbbf1e 100644 --- a/Content.Shared/Nutrition/Events.cs +++ b/Content.Shared/Nutrition/Events.cs @@ -1,5 +1,8 @@ using Content.Shared.Chemistry.Components; using Content.Shared.DoAfter; +using Content.Shared.Nutrition.Components; +using Content.Shared.Nutrition.Prototypes; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.Nutrition; @@ -67,3 +70,8 @@ public record struct SliceFoodEvent(); public sealed partial class SliceFoodDoAfterEvent : SimpleDoAfterEvent { } + +/// +/// Raised on FoodSequence start element entity when new ingredient is added to FoodSequence +/// +public record struct FoodSequenceIngredientAddedEvent(EntityUid Start, EntityUid Element, ProtoId Proto, EntityUid? User = null); diff --git a/Content.Shared/Nutrition/FoodMetamorphRules/FoodMetamorphRule.cs b/Content.Shared/Nutrition/FoodMetamorphRules/FoodMetamorphRule.cs new file mode 100644 index 0000000000..9e59573ff8 --- /dev/null +++ b/Content.Shared/Nutrition/FoodMetamorphRules/FoodMetamorphRule.cs @@ -0,0 +1,218 @@ +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Chemistry.Reagent; +using Content.Shared.Destructible.Thresholds; +using Content.Shared.Nutrition.Components; +using Content.Shared.Tag; +using JetBrains.Annotations; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared.Nutrition.FoodMetamorphRules; + +/// +/// abstract rules that are used to verify the correct foodSequence for recipe +/// +[ImplicitDataDefinitionForInheritors] +[Serializable, NetSerializable] +public abstract partial class FoodMetamorphRule +{ + public abstract bool Check(IPrototypeManager protoMan, EntityManager entMan, EntityUid food, List ingredients); +} + +/// +/// The requirement that the sequence be within the specified size limit +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class SequenceLength : FoodMetamorphRule +{ + [DataField(required: true)] + public MinMax Range; + + public override bool Check(IPrototypeManager protoMan, EntityManager entMan, EntityUid food, List ingredients) + { + return ingredients.Count <= Range.Max && ingredients.Count >= Range.Min; + } +} + +/// +/// A requirement that the last element of the sequence have one or all of the required tags +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class LastElementHasTags : FoodMetamorphRule +{ + [DataField(required: true)] + public List> Tags = new (); + + [DataField] + public bool NeedAll = true; + + public override bool Check(IPrototypeManager protoMan, EntityManager entMan, EntityUid food, List ingredients) + { + var lastIngredient = ingredients[ingredients.Count - 1]; + + if (!protoMan.TryIndex(lastIngredient.Proto, out var protoIndexed)) + return false; + + foreach (var tag in Tags) + { + var containsTag = protoIndexed.Tags.Contains(tag); + + if (NeedAll && !containsTag) + { + return false; + } + + if (!NeedAll && containsTag) + { + return true; + } + } + + return NeedAll; + } +} + +/// +/// A requirement that the specified sequence element have one or all of the required tags +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class ElementHasTags : FoodMetamorphRule +{ + [DataField(required: true)] + public int ElementNumber = 0; + + [DataField(required: true)] + public List> Tags = new (); + + [DataField] + public bool NeedAll = true; + + public override bool Check(IPrototypeManager protoMan, EntityManager entMan, EntityUid food, List ingredients) + { + if (ingredients.Count < ElementNumber + 1) + return false; + + if (!protoMan.TryIndex(ingredients[ElementNumber].Proto, out var protoIndexed)) + return false; + + foreach (var tag in Tags) + { + var containsTag = protoIndexed.Tags.Contains(tag); + + if (NeedAll && !containsTag) + { + return false; + } + + if (!NeedAll && containsTag) + { + return true; + } + } + + return NeedAll; + } +} + +/// +/// requirement that the food contains certain reagents (e.g. sauces) +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class FoodHasReagent : FoodMetamorphRule +{ + [DataField(required: true)] + public ProtoId Reagent = new(); + + [DataField(required: true)] + public MinMax Count; + + [DataField] + public string Solution = "food"; + + public override bool Check(IPrototypeManager protoMan, EntityManager entMan, EntityUid food, List ingredients) + { + if (!entMan.TryGetComponent(food, out var solMan)) + return false; + + var solutionMan = entMan.System(); + + if (!solutionMan.TryGetSolution(food, Solution, out var foodSoln, out var foodSolution)) + return false; + + foreach (var (id, quantity) in foodSoln.Value.Comp.Solution.Contents) + { + if (id.Prototype != Reagent.Id) + continue; + + if (quantity < Count.Min || quantity > Count.Max) + break; + + return true; + } + + return false; + } +} + +/// +/// A requirement that there be X ingredients in the sequence that have one or all of the specified tags. +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class IngredientsWithTags : FoodMetamorphRule +{ + [DataField(required: true)] + public List> Tags = new (); + + [DataField(required: true)] + public MinMax Count = new(); + + [DataField] + public bool NeedAll = true; + + public override bool Check(IPrototypeManager protoMan, EntityManager entMan, EntityUid food, List ingredients) + { + var count = 0; + foreach (var ingredient in ingredients) + { + if (!protoMan.TryIndex(ingredient.Proto, out var protoIndexed)) + continue; + + var allowed = false; + if (NeedAll) + { + allowed = true; + foreach (var tag in Tags) + { + if (!protoIndexed.Tags.Contains(tag)) + { + allowed = false; + break; + } + } + } + else + { + allowed = false; + foreach (var tag in Tags) + { + if (protoIndexed.Tags.Contains(tag)) + { + allowed = true; + break; + } + } + } + + if (allowed) + count++; + } + + return count >= Count.Min && count <= Count.Max; + } +} diff --git a/Content.Shared/Nutrition/Prototypes/FoodSequenceElementPrototype.cs b/Content.Shared/Nutrition/Prototypes/FoodSequenceElementPrototype.cs new file mode 100644 index 0000000000..a3448715e4 --- /dev/null +++ b/Content.Shared/Nutrition/Prototypes/FoodSequenceElementPrototype.cs @@ -0,0 +1,38 @@ +using Content.Shared.Tag; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.Shared.Nutrition.Prototypes; + +/// +/// Unique data storage block for different FoodSequence layers +/// +[Prototype("foodSequenceElement")] +public sealed partial class FoodSequenceElementPrototype : IPrototype +{ + [IdDataField] public string ID { get; private set; } = default!; + + /// + /// sprite options. A random one will be selected and used to display the layer. + /// + [DataField] + public List Sprites { get; private set; } = new(); + + /// + /// A localized name piece to build into the item name generator. + /// + [DataField] + public LocId? Name { get; private set; } + + /// + /// If the layer is the final one, it can be added over the limit, but no other layers can be added after it. + /// + [DataField] + public bool Final { get; private set; } + + /// + /// Tag list of this layer. Used for recipes for food metamorphosis. + /// + [DataField] + public List> Tags { get; set; } = new(); +} diff --git a/Content.Shared/Nutrition/Prototypes/MetamorphRecipePrototype.cs b/Content.Shared/Nutrition/Prototypes/MetamorphRecipePrototype.cs new file mode 100644 index 0000000000..977cb7a74d --- /dev/null +++ b/Content.Shared/Nutrition/Prototypes/MetamorphRecipePrototype.cs @@ -0,0 +1,32 @@ +using Content.Shared.Nutrition.FoodMetamorphRules; +using Content.Shared.Tag; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Nutrition.Prototypes; + +/// +/// Stores a recipe so that FoodSequence assembled in the right sequence can turn into a special meal. +/// +[Prototype] +public sealed partial class MetamorphRecipePrototype : IPrototype +{ + [IdDataField] public string ID { get; private set; } = default!; + + /// + /// The key of the FoodSequence being collected. For example “burger” “taco” etc. + /// + [DataField(required: true)] + public ProtoId Key = string.Empty; + + /// + /// The entity that will be created as a result of this recipe, and into which all the reagents will be transferred. + /// + [DataField(required: true)] + public EntProtoId Result = default!; + + /// + /// A sequence of rules that must be followed for FoodSequence to metamorphose into a special food. + /// + [DataField] + public List Rules = new(); +} diff --git a/Resources/Locale/en-US/nutrition/components/food-sequence.ftl b/Resources/Locale/en-US/nutrition/components/food-sequence.ftl index 36ce47d5cf..766145093e 100644 --- a/Resources/Locale/en-US/nutrition/components/food-sequence.ftl +++ b/Resources/Locale/en-US/nutrition/components/food-sequence.ftl @@ -4,7 +4,7 @@ food-sequence-no-space = You can't put any more! food-sequence-content-chicken = chicken food-sequence-content-duck = duck -food-sequence-content-crab = crabs +food-sequence-content-crab = crab food-sequence-content-dragon = dragon food-sequence-content-snake = snake food-sequence-content-xeno = xeno @@ -83,6 +83,7 @@ food-sequence-burger-content-raw-meat = raw food-sequence-burger-content-meat = meaty food-sequence-burger-content-carp = carpo food-sequence-burger-content-bear = bear +food-sequence-burger-content-crab = crabs food-sequence-burger-content-penguin = peng food-sequence-burger-content-corgi = corgi food-sequence-burger-content-goliath = goli diff --git a/Resources/Prototypes/Body/Organs/human.yml b/Resources/Prototypes/Body/Organs/human.yml index 6bfee0568a..c67f4f6cd1 100644 --- a/Resources/Prototypes/Body/Organs/human.yml +++ b/Resources/Prototypes/Body/Organs/human.yml @@ -68,14 +68,9 @@ flavors: - people - type: FoodSequenceElement - sprite: - sprite: Mobs/Species/Human/organs.rsi - state: brain entries: - burger: - name: food-sequence-content-brain - taco: - name: food-sequence-content-brain + Burger: Brain + Taco: Brain - type: entity id: OrganHumanEyes @@ -96,15 +91,6 @@ components: - type: Sprite state: tongue - - type: FoodSequenceElement - sprite: - sprite: Mobs/Species/Human/organs.rsi - state: tongue - entries: - burger: - name: food-sequence-content-tongue - taco: - name: food-sequence-content-tongue - type: entity id: OrganHumanAppendix @@ -125,15 +111,6 @@ components: - type: Sprite state: ears - - type: FoodSequenceElement - sprite: - sprite: Mobs/Species/Human/organs.rsi - state: ears - entries: - burger: - name: food-sequence-content-ears - taco: - name: food-sequence-content-ears - type: entity id: OrganHumanLungs @@ -216,15 +193,6 @@ groups: - id: Food - id: Drink - - type: FoodSequenceElement - sprite: - sprite: Mobs/Species/Human/organs.rsi - state: stomach - entries: - burger: - name: food-sequence-content-stomach - taco: - name: food-sequence-content-stomach - type: entity id: OrganHumanLiver @@ -240,15 +208,6 @@ groups: - id: Alcohol rateModifier: 0.1 # removes alcohol very slowly along with the stomach removing it as a drink - - type: FoodSequenceElement - sprite: - sprite: Mobs/Species/Human/organs.rsi - state: liver - entries: - burger: - name: food-sequence-content-liver - taco: - name: food-sequence-content-liver - type: entity id: OrganHumanKidneys diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index aa4152c189..4e37a5ca3f 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -1724,20 +1724,10 @@ sprite: Mobs/Effects/onfire.rsi normalState: Mouse_burning - type: FoodSequenceElement - sprite: - sprite: Mobs/Animals/mouse.rsi - state: dead-0 entries: - burger: - name: food-sequence-burger-content-rat - taco: - name: food-sequence-content-rat - skewer: - name: food-sequence-content-rat - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-rat - + Taco: RatTaco + Burger: RatBurger + Skewer: RatSkewer - type: entity parent: MobMouse @@ -1794,10 +1784,6 @@ - type: Item size: Tiny heldPrefix: 1 - - type: FoodSequenceElement - sprite: - sprite: Mobs/Animals/mouse.rsi - state: dead-1 - type: entity parent: MobMouse @@ -1827,10 +1813,6 @@ - type: Item size: Tiny heldPrefix: 2 - - type: FoodSequenceElement - sprite: - sprite: Mobs/Animals/mouse.rsi - state: dead-2 - type: entity name: cancer mouse @@ -3257,15 +3239,6 @@ - type: FireVisuals sprite: Mobs/Effects/onfire.rsi normalState: Mouse_burning - - type: FoodSequenceElement - sprite: - sprite: Mobs/Animals/hamster.rsi - state: dead-0 - entries: - burger: - name: food-sequence-burger-content-hamster - taco: - name: food-sequence-content-hamster - type: entity name: pig diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml index 06c4d5e871..448ef0868d 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml @@ -785,11 +785,6 @@ tags: - Slice - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/Baked/cake.rsi - state: suppermatter-shard entries: - burger: - name: food-sequence-burger-content-suppermatter - taco: - name: food-sequence-content-suppermatter + Taco: Suppermatter + Burger: SuppermatterBurger diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml index 4d51f20d78..88da21ccbd 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml @@ -39,19 +39,20 @@ - type: Sprite drawdepth: Mobs noRot: true - sprite: Objects/Consumable/Food/burger.rsi + sprite: Objects/Consumable/Food/burger_sequence.rsi layers: - state: bun_bottom - map: ["foodSequenceLayers"] - type: FoodSequenceStartPoint - key: burger + key: Burger maxLayers: 10 startPosition: 0, 0 - offset: 0, 0.1 + offset: 0, 0.07 minLayerOffset: -0.05, 0 maxLayerOffset: 0.05, 0 nameGeneration: food-sequence-burger-gen - type: Appearance + - type: FoodMetamorphableByAdding - type: SolutionContainerManager solutions: food: @@ -69,7 +70,7 @@ components: - type: Food - type: Sprite - sprite: Objects/Consumable/Food/burger.rsi + sprite: Objects/Consumable/Food/burger_sequence.rsi layers: - state: bun_top - type: SolutionContainerManager @@ -80,12 +81,8 @@ - ReagentId: Nutriment Quantity: 3.3 # 1/2 of a bun - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/burger.rsi - state: bun_top entries: - burger: - final: true + Burger: BunTopBurger # Base diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml index 1a80a5fe53..9542bd2204 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml @@ -642,14 +642,9 @@ tags: - Slice - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/ingredients.rsi - state: cheesewedge entries: - burger: - name: food-sequence-content-cheese - taco: - name: food-sequence-content-cheese + Taco: CheeseTaco + Burger: CheeseBurger - type: entity name: chèvre log @@ -700,15 +695,6 @@ - type: Tag tags: - Slice - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/ingredients.rsi - state: chevredisk - entries: - burger: - name: food-sequence-content-chevre - taco: - name: food-sequence-content-chevre - type: entity name: tofu @@ -757,15 +743,6 @@ - type: Tag tags: - Slice - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/ingredients.rsi - state: tofu - entries: - burger: - name: food-sequence-content-tofu - taco: - name: food-sequence-content-tofu - type: entity name: burned mess @@ -822,15 +799,6 @@ - type: Tag tags: - Ingredient - - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/cocoa.rsi - state: produce-beans - entries: - burger: - name: food-sequence-content-cocoa - taco: - name: food-sequence-content-cocoa - type: entity name: raw croissant diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml index 53fbf62399..0ad425c710 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml @@ -109,15 +109,6 @@ - type: Tag tags: - Meat - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: plain - entries: - burger: - name: food-sequence-burger-content-raw-meat - taco: - name: food-sequence-content-raw-meat - type: entity name: raw human meat @@ -159,15 +150,6 @@ reagents: - ReagentId: CarpoToxin Quantity: 5 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: fish - entries: - burger: - name: food-sequence-burger-content-carp - taco: - name: food-sequence-content-carp - type: Extractable juiceSolution: reagents: @@ -203,15 +185,6 @@ graph: Bacon node: start defaultTarget: bacon - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: bacon - entries: - burger: - name: food-sequence-burger-content-meat - taco: - name: food-sequence-content-meat - type: entity name: raw bear meat @@ -236,15 +209,6 @@ graph: BearSteak node: start defaultTarget: filet migrawr - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: bear - entries: - burger: - name: food-sequence-burger-content-bear - taco: - name: food-sequence-content-bear - type: entity name: raw penguin meat @@ -269,15 +233,7 @@ graph: PenguinSteak node: start defaultTarget: cooked penguin - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: bird - entries: - burger: - name: food-sequence-burger-content-penguin - taco: - name: food-sequence-content-penguin + - type: entity name: raw chicken meat parent: FoodMeatRawBase @@ -303,20 +259,6 @@ graph: ChickenSteak node: start defaultTarget: cooked chicken - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: bird - entries: - burger: - name: food-sequence-content-chicken - taco: - name: food-sequence-content-chicken - skewer: - name: food-sequence-content-chicken - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-meat - type: entity name: raw duck meat @@ -341,15 +283,6 @@ graph: DuckSteak node: start defaultTarget: cooked duck - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: bird - entries: - burger: - name: food-sequence-content-duck - taco: - name: food-sequence-content-duck - type: entity name: prime-cut corgi meat @@ -375,15 +308,6 @@ price: 750 - type: StealTarget stealGroup: FoodMeatCorgi - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: corgi - entries: - burger: - name: food-sequence-burger-content-corgi - taco: - name: food-sequence-content-corgi - type: entity name: raw crab meat @@ -408,15 +332,6 @@ graph: CrabSteak node: start defaultTarget: cooked crab - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: crab - entries: - burger: - name: food-sequence-content-crab - taco: - name: food-sequence-content-crab - type: entity name: raw goliath meat @@ -440,15 +355,6 @@ graph: GoliathSteak node: start defaultTarget: goliath steak - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: goliath - entries: - burger: - name: food-sequence-burger-content-goliath - taco: - name: food-sequence-content-goliath - type: entity name: dragon flesh @@ -476,15 +382,6 @@ reagents: - ReagentId: Ichor Quantity: 10 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: dragon - entries: - burger: - name: food-sequence-content-dragon - taco: - name: food-sequence-content-dragon - type: entity name: raw rat meat @@ -505,15 +402,6 @@ - type: SliceableFood count: 3 slice: FoodMeatCutlet - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: plain - entries: - burger: - name: food-sequence-burger-content-rat - taco: - name: food-sequence-content-rat - type: entity name: raw lizard meat @@ -538,20 +426,6 @@ graph: LizardSteak node: start defaultTarget: lizard steak - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: lizard - entries: - burger: - name: food-sequence-burger-content-lizard - taco: - name: food-sequence-content-lizard - skewer: - name: food-sequence-content-lizard - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-tail - type: entity name: raw plant meat @@ -561,15 +435,6 @@ components: - type: Sprite state: plant - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: plant - entries: - burger: - name: food-sequence-burger-content-plant - taco: - name: food-sequence-content-plant - type: entity name: rotten meat @@ -595,15 +460,6 @@ Quantity: 4 - ReagentId: Fat Quantity: 4 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: rotten - entries: - burger: - name: food-sequence-burger-content-rotten - taco: - name: food-sequence-content-rotten - type: entity name: raw spider meat @@ -624,15 +480,6 @@ - type: SliceableFood count: 3 slice: FoodMeatSpiderCutlet - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: spider - entries: - burger: - name: food-sequence-burger-content-spider - taco: - name: food-sequence-content-spider - type: entity name: raw spider leg @@ -650,15 +497,6 @@ Quantity: 10 - ReagentId: Fat Quantity: 3 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: spiderleg - entries: - burger: - name: food-sequence-burger-content-spider - taco: - name: food-sequence-content-spider - type: entity name: meatwheat clump @@ -674,15 +512,6 @@ reagents: - ReagentId: UncookedAnimalProteins Quantity: 1 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: clump - entries: - burger: - name: food-sequence-content-clump - taco: - name: food-sequence-content-clump - type: entity name: raw snake meat @@ -703,20 +532,6 @@ Quantity: 10 - ReagentId: Toxin Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: snake - entries: - burger: - name: food-sequence-content-snake - taco: - name: food-sequence-content-snake - skewer: - name: food-sequence-content-snake - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-snake - type: entity name: raw xeno meat @@ -744,15 +559,6 @@ - type: SliceableFood count: 3 slice: FoodMeatXenoCutlet - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: xeno - entries: - burger: - name: food-sequence-content-xeno - taco: - name: food-sequence-content-xeno - type: entity name: raw rouny meat @@ -782,15 +588,6 @@ graph: RounySteak node: start defaultTarget: rouny steak - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: rouny - entries: - burger: - name: food-sequence-content-rouny - taco: - name: food-sequence-content-rouny - type: entity name: killer tomato meat @@ -805,20 +602,6 @@ slice: FoodMeatTomatoCutlet - type: StaticPrice price: 100 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: tomato - entries: - burger: - name: food-sequence-content-tomato - taco: - name: food-sequence-content-tomato - skewer: - name: food-sequence-content-tomato - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-tomato - type: entity name: salami @@ -845,15 +628,6 @@ damage: types: Blunt: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/salami.rsi - state: salami - entries: - burger: - name: food-sequence-content-salami - taco: - name: food-sequence-content-salami - type: entity name: meat clown @@ -873,15 +647,6 @@ state: clown - type: SliceableFood slice: FoodMeatSalamiSlice - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: clown - entries: - burger: - name: food-sequence-content-clown - taco: - name: food-sequence-content-clown - type: entity name: meatball @@ -895,15 +660,6 @@ - Meat - type: Sprite state: meatball - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: meatball - entries: - burger: - name: food-sequence-burger-content-raw-meat - taco: - name: food-sequence-content-raw-meat - type: entity name: slimeball @@ -920,15 +676,6 @@ - Meat - type: Sprite state: slime - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: slime - entries: - burger: - name: food-sequence-content-slime - taco: - name: food-sequence-content-slime - type: entity name: raw snail meat @@ -938,15 +685,6 @@ components: - type: Sprite state: snail - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: snail - entries: - burger: - name: food-sequence-content-snail - taco: - name: food-sequence-content-snail - type: SolutionContainerManager solutions: food: @@ -1022,19 +760,9 @@ graph: MeatSteak node: meat steak - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: plain-cooked entries: - burger: - name: food-sequence-burger-content-meat - taco: - name: food-sequence-content-meat - skewer: - name: food-sequence-content-meat - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-meat + Burger: MeatSteak + Taco: MeatSteak - type: entity name: bacon @@ -1067,19 +795,9 @@ graph: Bacon node: bacon - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: bacon-cooked entries: - burger: - name: food-sequence-burger-content-meat - taco: - name: food-sequence-content-meat - skewer: - name: food-sequence-content-meat - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-meat + Burger: MeatBecon + Taco: MeatBecon - type: entity name: cooked bear @@ -1110,14 +828,9 @@ graph: BearSteak node: filet migrawr - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: product-cooked entries: - burger: - name: food-sequence-burger-content-bear - taco: - name: food-sequence-content-bear + Burger: MeatBearBurger + Taco: MeatBear - type: entity name: penguin filet @@ -1147,14 +860,9 @@ graph: PenguinSteak node: cooked penguin - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: bird-cooked entries: - burger: - name: food-sequence-burger-content-penguin - taco: - name: food-sequence-content-penguin + Burger: MeatPenguinBurger + Taco: MeatPenguin - type: entity name: cooked chicken @@ -1184,19 +892,9 @@ graph: ChickenSteak node: cooked chicken - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: bird-cooked entries: - burger: - name: food-sequence-content-chicken - taco: - name: food-sequence-content-chicken - skewer: - name: food-sequence-content-chicken - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-meat + Burger: MeatChicken + Taco: MeatChicken - type: entity name: fried chicken @@ -1226,19 +924,9 @@ - ReagentId: Protein Quantity: 5 - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: chicken-fried entries: - burger: - name: food-sequence-content-chicken - taco: - name: food-sequence-content-chicken - skewer: - name: food-sequence-content-chicken - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-meat + Burger: MeatChicken + Taco: MeatChicken - type: entity name: cooked duck @@ -1268,19 +956,9 @@ graph: DuckSteak node: cooked duck - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: bird-cooked entries: - burger: - name: food-sequence-content-duck - taco: - name: food-sequence-content-duck - skewer: - name: food-sequence-content-duck - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-meat + Burger: MeatDuck + Taco: MeatDuck - type: entity name: cooked crab @@ -1310,14 +988,9 @@ graph: CrabSteak node: cooked crab - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: crab-cooked entries: - burger: - name: food-sequence-content-crab - taco: - name: food-sequence-content-crab + Burger: MeatCrabBurger + Taco: MeatCrab - type: entity name: goliath steak @@ -1345,14 +1018,9 @@ graph: GoliathSteak node: goliath steak - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: goliath-cooked entries: - burger: - name: food-sequence-burger-content-goliath - taco: - name: food-sequence-content-goliath + Burger: MeatGoliathBurger + Taco: MeatGoliath - type: entity name: rouny steak @@ -1384,14 +1052,9 @@ graph: RounySteak node: rouny steak - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: rouny-cooked entries: - burger: - name: food-sequence-content-rouny - taco: - name: food-sequence-content-rouny + Burger: MeatXeno + Taco: MeatXeno - type: entity name: lizard steak @@ -1422,19 +1085,9 @@ graph: LizardSteak node: lizard steak - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: lizard-cooked entries: - burger: - name: food-sequence-burger-content-lizard - taco: - name: food-sequence-content-lizard - skewer: - name: food-sequence-content-lizard - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-tail-cooked + Burger: MeatLizardBurger + Taco: MeatLizard - type: entity name: boiled spider leg @@ -1458,14 +1111,9 @@ - ReagentId: Protein Quantity: 5 - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: spiderleg-cooked entries: - burger: - name: food-sequence-burger-content-spider - taco: - name: food-sequence-content-spider + Burger: MeatSpiderBurger + Taco: MeatSpider - type: entity name: meatball @@ -1488,19 +1136,9 @@ - ReagentId: Protein Quantity: 5 - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: meatball-cooked entries: - burger: - name: food-sequence-burger-content-meat - taco: - name: food-sequence-content-meat - skewer: - name: food-sequence-content-meat - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-meat + Burger: MeatBall + Taco: MeatBall - type: entity name: boiled snail @@ -1515,15 +1153,6 @@ - type: Sprite layers: - state: snail-cooked - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: snail-cooked - entries: - burger: - name: food-sequence-content-snail - taco: - name: food-sequence-content-snail - type: SolutionContainerManager solutions: food: @@ -1535,6 +1164,10 @@ Quantity: 3 - ReagentId: Water Quantity: 4 # makes saline if you add salt! + - type: FoodSequenceElement + entries: + Burger: MeatSnail + Taco: MeatSnail # Cutlets @@ -1561,20 +1194,6 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet - entries: - burger: - name: food-sequence-burger-content-meat - taco: - name: food-sequence-content-meat - skewer: - name: food-sequence-content-meat - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-meat - type: Construction graph: Cutlet node: start @@ -1604,16 +1223,6 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet - color: brown - entries: - burger: - name: food-sequence-burger-content-bear - taco: - name: food-sequence-content-bear - type: Construction graph: BearCutlet node: start @@ -1641,16 +1250,6 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet - color: white - entries: - burger: - name: food-sequence-burger-content-penguin - taco: - name: food-sequence-content-penguin - type: Construction graph: PenguinCutlet node: start @@ -1678,21 +1277,6 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet - color: white - entries: - burger: - name: food-sequence-content-chicken - taco: - name: food-sequence-content-chicken - skewer: - name: food-sequence-content-chicken - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-meat - type: Construction graph: ChickenCutlet node: start @@ -1720,21 +1304,6 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet - color: white - entries: - burger: - name: food-sequence-content-duck - taco: - name: food-sequence-content-duck - skewer: - name: food-sequence-content-duck - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-meat - type: Construction graph: DuckCutlet node: start @@ -1765,21 +1334,6 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet - color: pink - entries: - burger: - name: food-sequence-burger-content-lizard - taco: - name: food-sequence-content-lizard - skewer: - name: food-sequence-content-lizard - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-tail - type: Construction graph: LizardCutlet node: start @@ -1806,15 +1360,6 @@ Quantity: 3 - ReagentId: Fat Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: spidercutlet - entries: - burger: - name: food-sequence-burger-content-spider - taco: - name: food-sequence-content-spider - type: Construction graph: SpiderCutlet node: start @@ -1843,15 +1388,6 @@ reagents: - ReagentId: SulfuricAcid Quantity: 20 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: xenocutlet - entries: - burger: - name: food-sequence-content-xeno - taco: - name: food-sequence-content-xeno - type: Construction graph: XenoCutlet node: start @@ -1872,15 +1408,6 @@ color: red - type: StaticPrice price: 30 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: salami-slice - entries: - burger: - name: food-sequence-content-tomato - taco: - name: food-sequence-content-tomato - type: entity name: salami slice @@ -1903,15 +1430,6 @@ Quantity: 1 - ReagentId: Protein Quantity: 1 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: salami-slice - entries: - burger: - name: food-sequence-content-salami - taco: - name: food-sequence-content-salami # Cooked @@ -1936,18 +1454,13 @@ Quantity: 2 - ReagentId: Protein Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet-cooked - entries: - burger: - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet-cooked - type: Construction graph: Cutlet node: cutlet + - type: FoodSequenceElement + entries: + Burger: MeatCutlet + Taco: MeatCutlet - type: entity name: bear cutlet @@ -1973,18 +1486,13 @@ Quantity: 2 - ReagentId: Protein Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet-cooked - entries: - burger: - name: food-sequence-burger-content-bear - taco: - name: food-sequence-content-bear - type: Construction graph: BearCutlet node: bear cutlet + - type: FoodSequenceElement + entries: + Burger: BearCutletBurger + Taco: BearCutlet - type: entity name: penguin cutlet @@ -2008,18 +1516,13 @@ Quantity: 2 - ReagentId: Protein Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet-cooked - entries: - burger: - name: food-sequence-burger-content-penguin - taco: - name: food-sequence-content-penguin - type: Construction graph: PenguinCutlet node: penguin cutlet + - type: FoodSequenceElement + entries: + Burger: PenguinCutletBurger + Taco: PenguinCutlet - type: entity name: chicken cutlet @@ -2043,23 +1546,13 @@ Quantity: 2 - ReagentId: Protein Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet-cooked - entries: - burger: - name: food-sequence-content-chicken - taco: - name: food-sequence-content-chicken - skewer: - name: food-sequence-content-chicken - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-meat - type: Construction graph: ChickenCutlet node: chicken cutlet + - type: FoodSequenceElement + entries: + Burger: ChickenCutlet + Taco: ChickenCutlet - type: entity name: duck cutlet @@ -2083,23 +1576,13 @@ Quantity: 2 - ReagentId: Protein Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet-cooked - entries: - burger: - name: food-sequence-content-duck - taco: - name: food-sequence-content-duck - skewer: - name: food-sequence-content-duck - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-meat - type: Construction graph: DuckCutlet node: duck cutlet + - type: FoodSequenceElement + entries: + Burger: DuckCutlet + Taco: DuckCutlet - type: entity name: lizard cutlet @@ -2124,23 +1607,13 @@ Quantity: 2 - ReagentId: Protein Quantity: 2 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet-cooked - entries: - burger: - name: food-sequence-burger-content-lizard - taco: - name: food-sequence-content-lizard - skewer: - name: food-sequence-content-lizard - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-tail-cooked - type: Construction graph: LizardCutlet node: lizard cutlet + - type: FoodSequenceElement + entries: + Burger: LizardCutletBurger + Taco: LizardCutlet - type: entity name: spider cutlet @@ -2163,16 +1636,13 @@ Quantity: 1 - ReagentId: Protein Quantity: 1 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: cutlet-cooked - entries: - burger: - name: food-sequence-burger-content-spider - type: Construction graph: SpiderCutlet node: spider cutlet + - type: FoodSequenceElement + entries: + Burger: SpiderCutletBurger + Taco: SpiderCutlet - type: entity name: xeno cutlet @@ -2195,13 +1665,10 @@ Quantity: 1 - ReagentId: Protein Quantity: 1 - - type: FoodSequenceElement - sprite: - sprite: Objects/Consumable/Food/meat.rsi - state: xenocutlet-cooked - entries: - burger: - name: food-sequence-content-xeno - type: Construction graph: XenoCutlet - node: xeno cutlet \ No newline at end of file + node: xeno cutlet + - type: FoodSequenceElement + entries: + Burger: XenoCutlet + Taco: XenoCutlet diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml index 7a6f40fab6..15af78e78f 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml @@ -142,15 +142,6 @@ - type: Tag tags: - Vegetable - - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/laughin_pea.rsi - state: produce - entries: - burger: - name: food-sequence-content-pea - taco: - name: food-sequence-content-pea - type: entity name: tower-cap log @@ -213,7 +204,7 @@ - type: Produce seedId: nettle - type: MeleeChemicalInjector - transferAmount: 3 #To OD someone you would need 2 nettles and about 6-7 hits, the DOT is likely to crit them if they are running away with almost no health + transferAmount: 3 #TODO someone you would need 2 nettles and about 6-7 hits, the DOT is likely to crit them if they are running away with almost no health solution: food pierceArmor: false - type: Extractable @@ -288,14 +279,9 @@ - Fruit - Banana - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/banana.rsi - state: produce entries: - burger: - name: food-sequence-content-banana - taco: - name: food-sequence-content-banana + Burger: Banana + Taco: Banana - type: entity name: mimana @@ -334,14 +320,9 @@ tags: - Fruit - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/mimana.rsi - state: produce entries: - burger: - name: food-sequence-content-mimana - taco: - name: food-sequence-content-mimana + Burger: Mimana + Taco: Mimana - type: entity name: banana peel @@ -481,14 +462,9 @@ - ReagentId: Oculine Quantity: 2 - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/carrot.rsi - state: produce entries: - burger: - name: food-sequence-burger-content-carrot - taco: - name: food-sequence-content-carrot + Burger: CarrotBurger + Taco: Carrot - type: entity name: cabbage @@ -516,14 +492,9 @@ tags: - Vegetable - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/cabbage.rsi - state: produce entries: - burger: - name: food-sequence-burger-content-cabbage - taco: - name: food-sequence-content-cabbage + Burger: CabbageBurger + Taco: Cabbage - type: entity name: garlic @@ -553,14 +524,9 @@ tags: - Vegetable - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/garlic.rsi - state: produce entries: - burger: - name: food-sequence-burger-content-garlic - taco: - name: food-sequence-content-garlic + Burger: GarlicBurger + Taco: Garlic - type: entity name: lemon @@ -594,14 +560,9 @@ - Lemon - Fruit - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/lemon.rsi - state: produce entries: - burger: - name: food-sequence-content-lemon - taco: - name: food-sequence-content-lemon + Burger: Lemon + Taco: Lemon - type: entity name: lemoon @@ -634,14 +595,9 @@ tags: - Fruit - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/lemoon.rsi - state: produce entries: - burger: - name: food-sequence-content-lemoon - taco: - name: food-sequence-content-lemoon + Burger: Lemoon + Taco: Lemoon - type: entity name: lime @@ -666,14 +622,9 @@ - Lime - Fruit - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/lime.rsi - state: produce entries: - burger: - name: food-sequence-content-lime - taco: - name: food-sequence-content-lime + Burger: Lime + Taco: Lime - type: entity name: orange @@ -697,14 +648,9 @@ tags: - Fruit - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/orange.rsi - state: produce entries: - burger: - name: food-sequence-content-orange - taco: - name: food-sequence-content-orange + Burger: Orange + Taco: Orange - type: entity name: pineapple @@ -774,14 +720,9 @@ - Potato - Vegetable - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/potato.rsi - state: produce entries: - burger: - name: food-sequence-content-potato - taco: - name: food-sequence-content-potato + Burger: Potato + Taco: Potato - type: entity @@ -839,19 +780,10 @@ - Fruit - Vegetable - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/tomato.rsi - state: produce entries: - burger: - name: food-sequence-content-tomato - taco: - name: food-sequence-content-tomato - skewer: - name: food-sequence-content-tomato - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-tomato + Skewer: TomatoSkewer + Burger: Tomato + Taco: Tomato - type: entity name: blue tomato @@ -898,14 +830,9 @@ - Fruit - Vegetable - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/blue_tomato.rsi - state: produce entries: - burger: - name: food-sequence-content-tomato - taco: - name: food-sequence-content-tomato + Burger: BlueTomato + Taco: BlueTomato - type: entity name: blood tomato @@ -950,19 +877,10 @@ - Fruit # Fuck you they're a fruit - Vegetable - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/blood_tomato.rsi - state: produce entries: - burger: - name: food-sequence-content-tomato - taco: - name: food-sequence-content-tomato - skewer: - name: food-sequence-content-tomato - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-tomato + Skewer: TomatoSkewer + Burger: BloodTomato + Taco: BloodTomato - type: entity name: eggplant @@ -1022,14 +940,9 @@ tags: - Fruit - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/apple.rsi - state: produce entries: - burger: - name: food-sequence-content-apple - taco: - name: food-sequence-content-apple + Burger: Apple + Taco: Apple - type: entity name: golden apple @@ -1067,14 +980,9 @@ tags: - Fruit - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/golden_apple.rsi - state: produce entries: - burger: - name: food-sequence-content-apple - taco: - name: food-sequence-content-apple + Burger: GoldenApple + Taco: GoldenApple - type: entity name: cocoa pod @@ -1108,15 +1016,6 @@ - type: Tag tags: - Fruit - - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/cocoa.rsi - state: produce - entries: - burger: - name: food-sequence-content-cocoa - taco: - name: food-sequence-content-cocoa - type: entity name: ear of corn @@ -1156,19 +1055,10 @@ - ReagentId: Enzyme Quantity: 2 - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/corn.rsi - state: produce entries: - burger: - name: food-sequence-content-corn - taco: - name: food-sequence-content-corn - skewer: - name: food-sequence-content-corn - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-corn + Burger: Corn + Taco: Corn + Skewer: CornSkewer - type: entity name: corn cob @@ -1191,15 +1081,6 @@ reagents: - ReagentId: Cornmeal Quantity: 10 - - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/corn.rsi - state: produce - entries: - burger: - name: food-sequence-content-corn - taco: - name: food-sequence-content-corn - type: entity name: onion @@ -1231,15 +1112,6 @@ - type: Tag tags: - Vegetable - - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/onion.rsi - state: produce - entries: - burger: - name: food-sequence-burger-content-onion - taco: - name: food-sequence-content-onion - type: entity name: red onion @@ -1271,15 +1143,6 @@ - type: Tag tags: - Vegetable - - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/onion_red.rsi - state: produce - entries: - burger: - name: food-sequence-burger-content-onion - taco: - name: food-sequence-content-onion - type: entity name: chanterelle cluster @@ -1300,20 +1163,6 @@ - type: Tag tags: - Vegetable - - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/chanterelle.rsi - state: produce - entries: - burger: - name: food-sequence-content-mushroom - taco: - name: food-sequence-content-mushroom - skewer: - name: food-sequence-content-mushroom - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-mushroom # Slices @@ -1358,14 +1207,9 @@ - Fruit - Slice - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/pineapple.rsi - state: slice entries: - burger: - name: food-sequence-burger-content-pineapple - taco: - name: food-sequence-content-pineapple + Burger: PineappleSliceBurger + Taco: PineappleSlice - type: entity name: onion slice @@ -1394,14 +1238,9 @@ - Vegetable - Slice - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/onion.rsi - state: slice entries: - burger: - name: food-sequence-burger-content-onion - taco: - name: food-sequence-content-onion + Burger: OnionSliceBurger + Taco: OnionSlice - type: entity name: red onion slice @@ -1430,14 +1269,9 @@ - Vegetable - Slice - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/onion_red.rsi - state: slice entries: - burger: - name: food-sequence-burger-content-onion - taco: - name: food-sequence-content-onion + Burger: OnionRedSliceBurger + Taco: OnionRedSlice - type: entity name: chili pepper @@ -1467,19 +1301,10 @@ tags: - Vegetable - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/chili.rsi - state: produce entries: - burger: - name: food-sequence-content-chili - taco: - name: food-sequence-content-chili - skewer: - name: food-sequence-content-chili - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-pepper + Taco: ChiliPepper + Burger: ChiliPepper + Skewer: ChiliPepperSkewer - type: entity name: chilly pepper @@ -1507,19 +1332,10 @@ - type: Produce seedId: chilly - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/chilly.rsi - state: produce entries: - burger: - name: food-sequence-content-chilly - taco: - name: food-sequence-content-chilly - skewer: - name: food-sequence-content-chilly - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-bluepepper + Taco: ChillyPepper + Burger: ChillyPepper + Skewer: ChillyPepperSkewer - type: entity name: aloe @@ -1549,14 +1365,9 @@ tags: - Vegetable - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/aloe.rsi - state: produce entries: - burger: - name: food-sequence-content-aloe - taco: - name: food-sequence-content-aloe + Taco: Aloe + Burger: Aloe - type: entity name: poppy @@ -1590,14 +1401,9 @@ tags: - Flower # TODO add "RedFlower" or "Poppy" tag, when other color flowers will be - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/poppy.rsi - state: produce entries: - burger: - name: food-sequence-content-poppy - taco: - name: food-sequence-content-poppy + Taco: Poppy + Burger: Poppy - type: entity name: lily @@ -1627,14 +1433,9 @@ tags: - Flower - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/lily.rsi - state: produce entries: - burger: - name: food-sequence-content-lily - taco: - name: food-sequence-content-lily + Taco: Lily + Burger: Lily - type: entity name: lingzhi @@ -1662,19 +1463,9 @@ - type: Extractable grindableSolutionName: food - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/lingzhi.rsi - state: produce entries: - burger: - name: food-sequence-content-mushroom - taco: - name: food-sequence-content-mushroom - skewer: - name: food-sequence-content-mushroom - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-mushroom + Taco: Lingzhi + Burger: Lingzhi - type: entity name: ambrosia vulgaris @@ -1716,11 +1507,8 @@ - Ambrosia - type: FoodSequenceElement entries: - burger: - name: food-sequence-burger-content-ambrosia - sprite: - sprite: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi - state: produce + Taco: AmbrosiaVulgaris + Burger: AmbrosiaVulgarisBurger - type: entity name: ambrosia deus @@ -1759,14 +1547,9 @@ tags: - Ambrosia - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/ambrosia_deus.rsi - state: produce entries: - burger: - name: food-sequence-burger-content-ambrosia - taco: - name: food-sequence-content-ambrosia + Taco: AmbrosiaDeus + Burger: AmbrosiaDeusBurger - type: entity name: galaxythistle @@ -1795,14 +1578,9 @@ - Galaxythistle - Fruit # Probably? - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/galaxythistle.rsi - state: produce entries: - burger: - name: food-sequence-burger-content-galaxy - taco: - name: food-sequence-content-galaxy + Taco: Galaxythistle + Burger: GalaxythistleBurger - type: entity name: glasstle @@ -1868,14 +1646,9 @@ tags: - Galaxythistle - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/glasstle.rsi - state: produce entries: - burger: - name: food-sequence-burger-content-glasstle - taco: - name: food-sequence-content-glasstle + Taco: Glasstle + Burger: GlasstleBurger - type: entity name: fly amanita @@ -1903,19 +1676,9 @@ grindableSolutionName: food - type: BadFood - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/fly_amanita.rsi - state: produce entries: - burger: - name: food-sequence-content-mushroom - taco: - name: food-sequence-content-mushroom - skewer: - name: food-sequence-content-mushroom - sprite: - sprite: Objects/Consumable/Food/skewer.rsi - state: skewer-mushroom + Taco: FlyAmanita + Burger: FlyAmanita - type: entity name: gatfruit @@ -1946,14 +1709,9 @@ tags: - Fruit # It's in the name - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/gatfruit.rsi - state: produce entries: - burger: - name: food-sequence-burger-content-gatfruit - taco: - name: food-sequence-content-gatfruit + Taco: Gatfruit + Burger: GatfruitBurger - type: entity name: capfruit @@ -1984,14 +1742,9 @@ tags: - Fruit - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/capfruit.rsi - state: produce entries: - burger: - name: food-sequence-burger-content-capfruit - taco: - name: food-sequence-content-capfruit + Taco: Capfruit + Burger: CapfruitBurger - type: entity name: capfruit @@ -2048,14 +1801,9 @@ tags: - Vegetable - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/soybeans.rsi - state: produce entries: - burger: - name: food-sequence-content-soy - taco: - name: food-sequence-content-soy + Taco: Soybeans + Burger: SoybeansBurger - type: entity name: spaceman's trumpet @@ -2085,14 +1833,9 @@ - type: Instrument #hehe trumpet program: 56 - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/spacemans_trumpet.rsi - state: produce entries: - burger: - name: food-sequence-burger-content-spacemans-trumpet - taco: - name: food-sequence-content-spacemans-trumpet + Taco: SpacemansTrumpet + Burger: SpacemansTrumpetBurger - type: entity name: koibean @@ -2122,14 +1865,9 @@ tags: - Vegetable - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/koibean.rsi - state: produce entries: - burger: - name: food-sequence-burger-content-koibean - taco: - name: food-sequence-content-koibean + Taco: Koibean + Burger: KoibeanBurger - type: entity name: watermelon @@ -2227,14 +1965,10 @@ - Fruit - Slice - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/watermelon.rsi - state: slice entries: - burger: - name: food-sequence-burger-content-watermelon - taco: - name: food-sequence-content-watermelon + Burger: WatermelonSliceBurger + Taco: WatermelonSlice + Skewer: WatermelonSliceSkewer - type: entity name: grapes @@ -2298,14 +2032,9 @@ tags: - Fruit - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/berries.rsi - state: produce entries: - burger: - name: food-sequence-burger-content-berries - taco: - name: food-sequence-content-berries + Taco: Berries + Burger: BerriesBurger - type: entity name: bungo fruit @@ -2341,14 +2070,9 @@ tags: - Fruit - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/bungo.rsi - state: produce entries: - burger: - name: food-sequence-content-bungo - taco: - name: food-sequence-content-bungo + Taco: Bungo + Burger: Bungo - type: entity name: bungo pit @@ -2404,14 +2128,9 @@ tags: - Vegetable - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/pea.rsi - state: produce entries: - burger: - name: food-sequence-content-pea - taco: - name: food-sequence-content-pea + Taco: Pea + Burger: Pea - type: entity name: pumpkin @@ -2608,14 +2327,9 @@ tags: - Fruit - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/cherry.rsi - state: produce entries: - burger: - name: food-sequence-content-cherry - taco: - name: food-sequence-content-cherry + Taco: Cherry + Burger: Cherry - type: entity name: cherry pit diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml index 641f494a9d..7b9db1f41f 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml @@ -13,11 +13,34 @@ layers: - state: skewer - map: ["foodSequenceLayers"] + - type: LandAtCursor + - type: Fixtures + fixtures: + fix1: + shape: !type:PolygonShape + vertices: + - -0.40,-0.20 + - -0.30,-0.30 + - 0.50,0.10 + - 0.40,0.20 + density: 20 + mask: + - ItemMask + restitution: 0.3 + friction: 0.2 + - type: DamageOtherOnHit + damage: + types: + Piercing: 6 + - type: ThrowingAngle + angle: 245 + - type: EmbeddableProjectile + offset: -0.15,0.0 - type: MeleeWeapon wideAnimationRotation: -120 damage: types: - Piercing: 4 + Piercing: 8 angle: 0 animation: WeaponArcThrust soundHit: @@ -35,10 +58,11 @@ canReact: false # Dont want cause reactions inside skewers after merging ingredients maxVol: 0 - type: FoodSequenceStartPoint - key: skewer + key: Skewer maxLayers: 4 startPosition: -0.27, -0.19 inverseLayers: true offset: 0.2, 0.1 nameGeneration: food-sequence-skewer-gen contentSeparator: ", " + allowHorizontalFlip: false \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/taco.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/taco.yml index 6254ad5cc0..2a83b14d03 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/taco.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/taco.yml @@ -11,7 +11,7 @@ - type: Food transferAmount: 3 - type: Sprite - sprite: Objects/Consumable/Food/taco.rsi + sprite: Objects/Consumable/Food/taco_sequence.rsi layers: - state: tacoshell_back - map: ["foodSequenceLayers"] @@ -25,12 +25,161 @@ - ReagentId: Nutriment Quantity: 6.66 - type: FoodSequenceStartPoint - key: taco + key: Taco maxLayers: 3 - startPosition: -0.2, 0 - offset: 0.1, 0 + startPosition: -0.15, 0 + offset: 0.15, 0 minLayerOffset: 0, 0 maxLayerOffset: 0, 0.05 nameGeneration: food-sequence-taco-gen contentSeparator: ", " - - type: Appearance \ No newline at end of file + - type: Appearance + +# Old tacos + +- type: entity + parent: FoodInjectableBase + id: FoodTacoBase + abstract: true + components: + - type: FlavorProfile + flavors: + - meaty + - cheesy + - type: Food + transferAmount: 3 + - type: Sprite + sprite: Objects/Consumable/Food/taco.rsi + - type: SolutionContainerManager + solutions: + food: + maxVol: 15 + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Vitamin + Quantity: 4 + - type: Item + sprite: Objects/Consumable/Food/taco.rsi + storedRotation: -90 + - type: Tag + tags: + - Meat + +- type: entity + name: beef taco + parent: FoodTacoBase + id: FoodTacoBeef + description: A very basic and run of the mill beef taco, now with cheese! + components: + - type: Food + - type: Sprite + state: beeftaco + +- type: entity + name: chicken taco + parent: FoodTacoBase + id: FoodTacoChicken + description: A very basic and run of the mill chicken taco, now with cheese! + components: + - type: Food + - type: Sprite + state: chickentaco + +- type: entity + name: fish taco + parent: FoodTacoBase + id: FoodTacoFish + description: Sounds kinda gross, but it's actually not that bad. + components: + - type: FlavorProfile + flavors: + - onion + - fishy + - type: Food + - type: Sprite + state: fishtaco + - type: SolutionContainerManager + solutions: + food: + maxVol: 20 + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Vitamin + Quantity: 6 + +- type: entity + name: rat taco + parent: FoodTacoBase + id: FoodTacoRat + description: Yeah, that looks about right... + components: + - type: Food + - type: Sprite + state: rattaco + - type: SolutionContainerManager + solutions: + food: + maxVol: 15 + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Vitamin + Quantity: 4 + +- type: entity + name: beef taco supreme + parent: FoodTacoBase + id: FoodTacoBeefSupreme + description: It's like a regular beef taco, but surpeme! + components: + - type: Food + - type: Sprite + state: beeftacosupreme + - type: SolutionContainerManager + solutions: + food: + maxVol: 26 + reagents: + - ReagentId: Nutriment + Quantity: 14 + - ReagentId: Vitamin + Quantity: 6 + +- type: entity + name: chicken taco supreme + parent: FoodTacoBase + id: FoodTacoChickenSupreme + description: It's like a regular chicken taco, but surpeme! + components: + - type: Food + - type: Sprite + state: chickentacosupreme + - type: SolutionContainerManager + solutions: + food: + maxVol: 26 + reagents: + - ReagentId: Nutriment + Quantity: 14 + - ReagentId: Vitamin + Quantity: 6 + +- type: entity + name: soft taco + parent: FoodMealBase + id: FoodMealSoftTaco + description: Take a bite! + components: + - type: FlavorProfile + flavors: + - cheesy + - tomato + - meaty + - onion + - type: Sprite + state: softtaco + - type: Tag + tags: + - Meat \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml index 92ab8d577c..06f2974305 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml @@ -17,15 +17,6 @@ reagents: - ReagentId: THC Quantity: 15 - - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/cannabis.rsi - state: produce - entries: - burger: - name: food-sequence-burger-content-cannabis - taco: - name: food-sequence-content-cannabis - type: entity @@ -106,15 +97,6 @@ # Quantity: 1 - ReagentId: Psicodine Quantity: 0.6 - - type: FoodSequenceElement - sprite: - sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi - state: produce - entries: - burger: - name: food-sequence-burger-content-rainbow-cannabis - taco: - name: food-sequence-content-rainbow-cannabis - type: entity name: dried rainbow cannabis leaves diff --git a/Resources/Prototypes/Recipes/Cooking/food_sequence_element.yml b/Resources/Prototypes/Recipes/Cooking/food_sequence_element.yml new file mode 100644 index 0000000000..d843e7b985 --- /dev/null +++ b/Resources/Prototypes/Recipes/Cooking/food_sequence_element.yml @@ -0,0 +1,1104 @@ +# Bun bottom + +- type: foodSequenceElement + id: BunTopBurger + final: true + sprites: + - sprite: Objects/Consumable/Food/burger_sequence.rsi + state: bun_top + tags: + - Bun + +# Mice + +- type: foodSequenceElement + id: RatBurger + name: food-sequence-burger-content-rat + sprites: + - sprite: Mobs/Animals/mouse.rsi + state: dead-0 + - sprite: Mobs/Animals/mouse.rsi + state: dead-1 + - sprite: Mobs/Animals/mouse.rsi + state: dead-2 + +- type: foodSequenceElement + id: RatTaco + name: food-sequence-content-rat + sprites: + - sprite: Objects/Consumable/Food/taco_sequence.rsi + state: rat + +- type: foodSequenceElement + id: RatSkewer + name: food-sequence-content-rat + sprites: + - sprite: Objects/Consumable/Food/skewer.rsi + state: skewer-rat + +# Cheese + +- type: foodSequenceElement + id: CheeseBurger + name: food-sequence-content-cheese + sprites: + - sprite: Objects/Consumable/Food/burger_sequence.rsi + state: cheese + tags: + - Cheese + +- type: foodSequenceElement + id: CheeseTaco + name: food-sequence-content-cheese + sprites: + - sprite: Objects/Consumable/Food/taco_sequence.rsi + state: cheese + tags: + - Cheese + +# Steak + +- type: foodSequenceElement + id: MeatSteak + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: plain-cooked + tags: + - Cooked + - Meat + +# Becon + +- type: foodSequenceElement + id: MeatBecon + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: bacon-cooked + - sprite: Objects/Consumable/Food/meat.rsi + state: bacon2-cooked + tags: + - Cooked + - Meat + +# Bear meat + +- type: foodSequenceElement + id: MeatBear + name: food-sequence-content-bear + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: product-cooked + tags: + - Cooked + - Meat + +- type: foodSequenceElement + id: MeatBearBurger + name: food-sequence-burger-content-bear + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: product-cooked + tags: + - Cooked + - Meat + +# Penguin meat + +- type: foodSequenceElement + id: MeatPenguin + name: food-sequence-content-penguin + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: bird-cooked + tags: + - Cooked + - Meat + +- type: foodSequenceElement + id: MeatPenguinBurger + name: food-sequence-burger-content-penguin + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: bird-cooked + tags: + - Cooked + - Meat + +# Chicken meat + +- type: foodSequenceElement + id: MeatChicken + name: food-sequence-content-chicken + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: chicken-fried + tags: + - Cooked + - Meat + - Chicken + +# Fried Chicken meat + +- type: foodSequenceElement + id: MeatFriedChicken + name: food-sequence-content-chicken + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: chicken-fried + - sprite: Objects/Consumable/Food/meat.rsi + state: chicken2-fried + tags: + - Cooked + - Meat + - Chicken + +# Duck meat + +- type: foodSequenceElement + id: MeatDuck + name: food-sequence-content-duck + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: bird-cooked + tags: + - Cooked + - Meat + +# Crab meat + +- type: foodSequenceElement + id: MeatCrab + name: food-sequence-content-crab + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: crab-cooked + tags: + - Cooked + - Meat + - Crab + +- type: foodSequenceElement + id: MeatCrabBurger + name: food-sequence-burger-content-crab + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: crab-cooked + tags: + - Cooked + - Meat + - Crab + +# Meat goliath + +- type: foodSequenceElement + id: MeatGoliath + name: food-sequence-content-goliath + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: goliath-cooked + tags: + - Cooked + - Meat + +- type: foodSequenceElement + id: MeatGoliathBurger + name: food-sequence-burger-content-goliath + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: goliath-cooked + tags: + - Cooked + - Meat + +# Xeno meat + +- type: foodSequenceElement + id: MeatXeno + name: food-sequence-content-xeno + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: rouny-cooked + tags: + - Cooked + - Meat + +# Meat lizard + +- type: foodSequenceElement + id: MeatLizard + name: food-sequence-content-lizard + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: lizard-cooked + tags: + - Cooked + - Meat + +- type: foodSequenceElement + id: MeatLizardBurger + name: food-sequence-burger-content-lizard + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: lizard-cooked + tags: + - Cooked + - Meat + +# Meat spider + +- type: foodSequenceElement + id: MeatSpider + name: food-sequence-content-spider + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: spiderleg-cooked + tags: + - Cooked + - Meat + +- type: foodSequenceElement + id: MeatSpiderBurger + name: food-sequence-burger-content-spider + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: spiderleg-cooked + tags: + - Cooked + - Meat + +# Meatball + +- type: foodSequenceElement + id: MeatBall + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: meatball-cooked + tags: + - Cooked + - Meat + +# Snail meat + +- type: foodSequenceElement + id: MeatSnail + name: food-sequence-content-snail + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: snail-cooked + tags: + - Cooked + - Meat + +# Meat cutlet + +- type: foodSequenceElement + id: MeatCutlet + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked + tags: + - Cooked + - Cutlet + - Meat + +# Bear cutlet + +- type: foodSequenceElement + id: BearCutlet + name: food-sequence-content-bear + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked + tags: + - Cooked + - Cutlet + - Meat + +- type: foodSequenceElement + id: BearCutletBurger + name: food-sequence-burger-content-bear + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked + tags: + - Cooked + - Cutlet + - Meat + +# Penguin cutlet + +- type: foodSequenceElement + id: PenguinCutlet + name: food-sequence-content-penguin + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked + tags: + - Cooked + - Cutlet + - Meat + +- type: foodSequenceElement + id: PenguinCutletBurger + name: food-sequence-burger-content-penguin + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked + tags: + - Cooked + - Cutlet + - Meat + +# Chicken cutlet + +- type: foodSequenceElement + id: ChickenCutlet + name: food-sequence-content-chicken + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked + tags: + - Cooked + - Cutlet + - Meat + - Chicken + +# Duck cutlet + +- type: foodSequenceElement + id: DuckCutlet + name: food-sequence-content-duck + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked + tags: + - Cooked + - Cutlet + - Meat + +# Spider cutlet + +- type: foodSequenceElement + id: LizardCutlet + name: food-sequence-content-lizard + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked + tags: + - Cooked + - Cutlet + - Meat + +- type: foodSequenceElement + id: LizardCutletBurger + name: food-sequence-burger-content-lizard + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: cutlet-cooked + tags: + - Cooked + - Cutlet + - Meat + +# Spider cutlet + +- type: foodSequenceElement + id: SpiderCutlet + name: food-sequence-content-spider + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: spidercutlet-cooked + tags: + - Cooked + - Cutlet + - Meat + +- type: foodSequenceElement + id: SpiderCutletBurger + name: food-sequence-burger-content-spider + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: spidercutlet-cooked + tags: + - Cooked + - Cutlet + - Meat + +# Xeno cutlet + +- type: foodSequenceElement + id: XenoCutlet + name: food-sequence-content-xeno + sprites: + - sprite: Objects/Consumable/Food/meat.rsi + state: xenocutlet-cooked + tags: + - Cooked + - Cutlet + - Meat + +# Brain + +- type: foodSequenceElement + id: Brain + name: food-sequence-content-brain + sprites: + - sprite: Mobs/Species/Human/organs.rsi + state: brain + tags: + - Brain + - Raw + +# Banana + +- type: foodSequenceElement + id: Banana + name: food-sequence-content-banana + sprites: + - sprite: Objects/Specific/Hydroponics/banana.rsi + state: produce + tags: + - Fruit + +# Mimana + +- type: foodSequenceElement + id: Mimana + name: food-sequence-content-mimana + sprites: + - sprite: Objects/Specific/Hydroponics/mimana.rsi + state: produce + tags: + - Fruit + +# Carrot + +- type: foodSequenceElement + id: Carrot + name: food-sequence-content-carrot + sprites: + - sprite: Objects/Specific/Hydroponics/carrot.rsi + state: produce + tags: + - Vegetable + +- type: foodSequenceElement + id: CarrotBurger + name: food-sequence-burger-content-carrot + sprites: + - sprite: Objects/Specific/Hydroponics/carrot.rsi + state: produce + tags: + - Vegetable + +# Cabbage + +- type: foodSequenceElement + id: Cabbage + name: food-sequence-content-cabbage + sprites: + - sprite: Objects/Specific/Hydroponics/carrot.rsi + state: produce + tags: + - Vegetable + +- type: foodSequenceElement + id: CabbageBurger + name: food-sequence-burger-content-cabbage + sprites: + - sprite: Objects/Specific/Hydroponics/cabbage.rsi + state: produce + tags: + - Vegetable + +# Garlic + +- type: foodSequenceElement + id: Garlic + name: food-sequence-content-garlic + sprites: + - sprite: Objects/Specific/Hydroponics/garlic.rsi + state: produce + tags: + - Vegetable + +- type: foodSequenceElement + id: GarlicBurger + name: food-sequence-burger-content-garlic + sprites: + - sprite: Objects/Specific/Hydroponics/garlic.rsi + state: produce + tags: + - Vegetable + +# Lemon + +- type: foodSequenceElement + id: Lemon + name: food-sequence-content-lemon + sprites: + - sprite: Objects/Specific/Hydroponics/lemon.rsi + state: produce + tags: + - Fruit + +# Lemoon + +- type: foodSequenceElement + id: Lemoon + name: food-sequence-content-lemoon + sprites: + - sprite: Objects/Specific/Hydroponics/lemoon.rsi + state: produce + tags: + - Fruit + +# Lime + +- type: foodSequenceElement + id: Lime + name: food-sequence-content-lime + sprites: + - sprite: Objects/Specific/Hydroponics/lime.rsi + state: produce + tags: + - Fruit + +# Orange + +- type: foodSequenceElement + id: Orange + name: food-sequence-content-orange + sprites: + - sprite: Objects/Specific/Hydroponics/orange.rsi + state: produce + tags: + - Fruit + +# Potato + +- type: foodSequenceElement + id: Potato + name: food-sequence-content-potato + sprites: + - sprite: Objects/Specific/Hydroponics/potato.rsi + state: produce + tags: + - Vegetable + +# Tomato + +- type: foodSequenceElement + id: Tomato + name: food-sequence-content-tomato + sprites: + - sprite: Objects/Specific/Hydroponics/tomato.rsi + state: produce + tags: + - Fruit + - Vegetable + +- type: foodSequenceElement + id: TomatoSkewer + name: food-sequence-content-tomato + sprites: + - sprite: Objects/Consumable/Food/skewer.rsi + state: skewer-tomato + tags: + - Fruit + - Vegetable + +# Blue Tomato + +- type: foodSequenceElement + id: BlueTomato + name: food-sequence-content-tomato + sprites: + - sprite: Objects/Specific/Hydroponics/blue_tomato.rsi + state: produce + tags: + - Fruit + - Vegetable + +# Blood Tomato + +- type: foodSequenceElement + id: BloodTomato + name: food-sequence-content-tomato + sprites: + - sprite: Objects/Specific/Hydroponics/blood_tomato.rsi + state: produce + tags: + - Fruit + - Vegetable + +# Apple + +- type: foodSequenceElement + id: Apple + name: food-sequence-content-apple + sprites: + - sprite: Objects/Specific/Hydroponics/apple.rsi + state: produce + tags: + - Fruit + +# Golden Apple + +- type: foodSequenceElement + id: GoldenApple + name: food-sequence-content-apple + sprites: + - sprite: Objects/Specific/Hydroponics/golden_apple.rsi + state: produce + tags: + - Fruit + +# Pineapple + +- type: foodSequenceElement + id: PineappleSliceBurger + name: food-sequence-burger-content-pineapple + sprites: + - sprite: Objects/Specific/Hydroponics/pineapple.rsi + state: slice + tags: + - Fruit + - Slice + +- type: foodSequenceElement + id: PineappleSlice + name: food-sequence-content-pineapple + sprites: + - sprite: Objects/Specific/Hydroponics/pineapple.rsi + state: slice + tags: + - Fruit + - Slice + +# Onion + +- type: foodSequenceElement + id: OnionSliceBurger + name: food-sequence-burger-content-onion + sprites: + - sprite: Objects/Specific/Hydroponics/onion.rsi + state: slice + tags: + - Vegetable + - Slice + +- type: foodSequenceElement + id: OnionSlice + name: food-sequence-content-onion + sprites: + - sprite: Objects/Specific/Hydroponics/onion.rsi + state: slice + tags: + - Vegetable + - Slice + +# Onion red + +- type: foodSequenceElement + id: OnionRedSliceBurger + name: food-sequence-burger-content-onion + sprites: + - sprite: Objects/Specific/Hydroponics/onion_red.rsi + state: slice + tags: + - Vegetable + - Slice + +- type: foodSequenceElement + id: OnionRedSlice + name: food-sequence-content-onion + sprites: + - sprite: Objects/Specific/Hydroponics/onion_red.rsi + state: slice + tags: + - Vegetable + - Slice + +# Watermelon + +- type: foodSequenceElement + id: WatermelonSliceBurger + name: food-sequence-burger-content-watermelon + sprites: + - sprite: Objects/Specific/Hydroponics/watermelon.rsi + state: slice + tags: + - Fruit + - Slice + +- type: foodSequenceElement + id: WatermelonSlice + name: food-sequence-content-watermelon + sprites: + - sprite: Objects/Specific/Hydroponics/watermelon.rsi + state: slice + tags: + - Fruit + - Slice + +- type: foodSequenceElement + id: WatermelonSliceSkewer + name: food-sequence-content-watermelon + sprites: + - sprite: Objects/Consumable/Food/skewer.rsi + state: skewer-watermelon + tags: + - Fruit + - Slice + +# Chili pepper + +- type: foodSequenceElement + id: ChiliPepper + name: food-sequence-content-chili + sprites: + - sprite: Objects/Specific/Hydroponics/chili.rsi + state: produce + tags: + - Vegetable + +- type: foodSequenceElement + id: ChiliPepperSkewer + name: food-sequence-content-chili + sprites: + - sprite: Objects/Consumable/Food/skewer.rsi + state: skewer-pepper + tags: + - Vegetable + +# Chilly pepper + +- type: foodSequenceElement + id: ChillyPepper + name: food-sequence-content-chilly + sprites: + - sprite: Objects/Specific/Hydroponics/chilly.rsi + state: produce + tags: + - Vegetable + +- type: foodSequenceElement + id: ChillyPepperSkewer + name: food-sequence-content-chilly + sprites: + - sprite: Objects/Consumable/Food/skewer.rsi + state: skewer-bluepepper + tags: + - Vegetable + +# Corn +- type: foodSequenceElement + id: Corn + name: food-sequence-content-corn + sprites: + - sprite: Objects/Specific/Hydroponics/corn.rsi + state: produce + tags: + - Vegetable + +- type: foodSequenceElement + id: CornSkewer + name: food-sequence-content-corn + sprites: + - sprite: Objects/Consumable/Food/skewer.rsi + state: skewer-corn + tags: + - Vegetable + +# Aloe + +- type: foodSequenceElement + id: Aloe + name: food-sequence-content-aloe + sprites: + - sprite: Objects/Specific/Hydroponics/aloe.rsi + state: produce + tags: + - Vegetable + +# Poppy + +- type: foodSequenceElement + id: Poppy + name: food-sequence-content-poppy + sprites: + - sprite: Objects/Specific/Hydroponics/poppy.rsi + state: produce + tags: + - Flower + +# lily + +- type: foodSequenceElement + id: Lily + name: food-sequence-content-lily + sprites: + - sprite: Objects/Specific/Hydroponics/lily.rsi + state: produce + tags: + - Flower + +# lingzhi + +- type: foodSequenceElement + id: Lingzhi + name: food-sequence-content-mushroom + sprites: + - sprite: Objects/Specific/Hydroponics/lingzhi.rsi + state: produce + +# AmbrosiaVulgaris + +- type: foodSequenceElement + id: AmbrosiaVulgaris + name: food-sequence-content-ambrosia + sprites: + - sprite: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi + state: produce + +- type: foodSequenceElement + id: AmbrosiaVulgarisBurger + name: food-sequence-burger-content-ambrosia + sprites: + - sprite: Objects/Specific/Hydroponics/ambrosia_vulgaris.rsi + state: produce + +# AmbrosiaDeus + +- type: foodSequenceElement + id: AmbrosiaDeus + name: food-sequence-content-ambrosia + sprites: + - sprite: Objects/Specific/Hydroponics/ambrosia_deus.rsi + state: produce + +- type: foodSequenceElement + id: AmbrosiaDeusBurger + name: food-sequence-burger-content-ambrosia + sprites: + - sprite: Objects/Specific/Hydroponics/ambrosia_deus.rsi + state: produce + +# Glasstle + +- type: foodSequenceElement + id: Glasstle + name: food-sequence-content-glasstle + sprites: + - sprite: Objects/Specific/Hydroponics/glasstle.rsi + state: produce + tags: + - Fruit + +- type: foodSequenceElement + id: GlasstleBurger + name: food-sequence-burger-content-glasstle + sprites: + - sprite: Objects/Specific/Hydroponics/glasstle.rsi + state: produce + tags: + - Fruit + +# FlyAmanita + +- type: foodSequenceElement + id: FlyAmanita + name: food-sequence-content-mushroom + sprites: + - sprite: Objects/Specific/Hydroponics/fly_amanita.rsi + state: produce + +# Gatfruit + +- type: foodSequenceElement + id: Gatfruit + name: food-sequence-content-gatfruit + sprites: + - sprite: Objects/Specific/Hydroponics/gatfruit.rsi + state: produce + tags: + - Fruit + +- type: foodSequenceElement + id: GatfruitBurger + name: food-sequence-burger-content-gatfruit + sprites: + - sprite: Objects/Specific/Hydroponics/gatfruit.rsi + state: produce + tags: + - Fruit + +# Capfruit + +- type: foodSequenceElement + id: Capfruit + name: food-sequence-content-capfruit + sprites: + - sprite: Objects/Specific/Hydroponics/capfruit.rsi + state: produce + tags: + - Fruit + +- type: foodSequenceElement + id: CapfruitBurger + name: food-sequence-burger-content-capfruit + sprites: + - sprite: Objects/Specific/Hydroponics/capfruit.rsi + state: produce + tags: + - Fruit + +# Soybeans + +- type: foodSequenceElement + id: Soybeans + name: food-sequence-content-soy + sprites: + - sprite: Objects/Specific/Hydroponics/soybeans.rsi + state: produce + tags: + - Vegetable + +- type: foodSequenceElement + id: SoybeansBurger + name: food-sequence-burger-content-soy + sprites: + - sprite: Objects/Specific/Hydroponics/soybeans.rsi + state: produce + tags: + - Vegetable + +# SpacemansTrumpet + +- type: foodSequenceElement + id: SpacemansTrumpet + name: food-sequence-content-spacemans-trumpet + sprites: + - sprite: Objects/Specific/Hydroponics/spacemans_trumpet.rsi + state: produce + tags: + - Flower + +- type: foodSequenceElement + id: SpacemansTrumpetBurger + name: food-sequence-burger-content-spacemans-trumpet + sprites: + - sprite: Objects/Specific/Hydroponics/spacemans_trumpet.rsi + state: produce + tags: + - Flower + +# Koibean + +- type: foodSequenceElement + id: Koibean + name: food-sequence-content-koibean + sprites: + - sprite: Objects/Specific/Hydroponics/koibean.rsi + state: produce + tags: + - Fruit + +- type: foodSequenceElement + id: KoibeanBurger + name: food-sequence-burger-content-koibean + sprites: + - sprite: Objects/Specific/Hydroponics/koibean.rsi + state: produce + tags: + - Fruit + +# Galaxythistle + +- type: foodSequenceElement + id: Galaxythistle + name: food-sequence-content-galaxy + sprites: + - sprite: Objects/Specific/Hydroponics/galaxythistle.rsi + state: produce + tags: + - Fruit + +- type: foodSequenceElement + id: GalaxythistleBurger + name: food-sequence-burger-content-galaxy + sprites: + - sprite: Objects/Specific/Hydroponics/galaxythistle.rsi + state: produce + tags: + - Fruit + +# bungo + +- type: foodSequenceElement + id: Bungo + name: food-sequence-content-bungo + sprites: + - sprite: Objects/Specific/Hydroponics/bungo.rsi + state: produce + tags: + - Fruit + +# Pea + +- type: foodSequenceElement + id: Pea + name: food-sequence-content-pea + sprites: + - sprite: Objects/Specific/Hydroponics/pea.rsi + state: produce + tags: + - Vegetable + +# Cherry + +- type: foodSequenceElement + id: Cherry + name: food-sequence-content-cherry + sprites: + - sprite: Objects/Specific/Hydroponics/cherry.rsi + state: produce + tags: + - Fruit + +# Berries + +- type: foodSequenceElement + id: Berries + name: food-sequence-content-berries + sprites: + - sprite: Objects/Specific/Hydroponics/berries.rsi + state: produce + tags: + - Fruit + +- type: foodSequenceElement + id: BerriesBurger + name: food-sequence-burger-content-berries + sprites: + - sprite: Objects/Specific/Hydroponics/berries.rsi + state: produce + tags: + - Fruit + +# Suppermatter + +- type: foodSequenceElement + id: Suppermatter + name: food-sequence-content-suppermatter + sprites: + - sprite: Objects/Consumable/Food/Baked/cake.rsi + state: suppermatter-shard + +- type: foodSequenceElement + id: SuppermatterBurger + name: food-sequence-burger-content-suppermatter + sprites: + - sprite: Objects/Consumable/Food/Baked/cake.rsi + state: suppermatter-shard diff --git a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml index fb1280daff..8dc25c1c72 100644 --- a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml +++ b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml @@ -75,7 +75,7 @@ FoodTomato: 1 FoodOnionSlice: 2 -- type: microwaveMealRecipe +- type: microwaveMealRecipe #Added to metamorph recipes id: RecipeBrainBurger name: brain burger recipe result: FoodBurgerBrain @@ -94,7 +94,7 @@ FoodMeat: 1 ClothingHeadHatCatEars: 1 -- type: microwaveMealRecipe +- type: microwaveMealRecipe #Added to metamorph recipes id: RecipeCheeseburger name: cheeseburger recipe result: FoodBurgerCheese @@ -104,7 +104,7 @@ FoodMeat: 1 FoodCheeseSlice: 1 -- type: microwaveMealRecipe +- type: microwaveMealRecipe #Added to metamorph recipes id: RecipeChickenSandwich name: chicken sandwich recipe result: FoodBurgerChicken @@ -133,7 +133,7 @@ FoodBreadBun: 1 FoodMeatCorgi: 1 -- type: microwaveMealRecipe +- type: microwaveMealRecipe #Added to metamorph recipes id: RecipeCrabBurger name: crab burger recipe result: FoodBurgerCrab @@ -158,7 +158,7 @@ CrayonGreen: 1 Flare: 1 -- type: microwaveMealRecipe +- type: microwaveMealRecipe #Added to metamorph recipes id: RecipeDuckBurger name: duck sandwich recipe result: FoodBurgerDuck @@ -1892,6 +1892,74 @@ solids: FoodDoughTortillaFlat: 1 # one third of a standard bread dough recipe +- type: microwaveMealRecipe + id: RecipeTacoBeef + name: beef taco recipe + result: FoodTacoBeef + time: 10 + solids: + FoodTacoShell: 1 + FoodMeatCutlet: 1 + FoodCheeseSlice: 1 + +- type: microwaveMealRecipe + id: RecipeTacoChicken + name: chicken taco recipe + result: FoodTacoChicken + time: 10 + solids: + FoodTacoShell: 1 + FoodMeatChickenCutlet: 1 + FoodCheeseSlice: 1 + +- type: microwaveMealRecipe + id: RecipeTacoFish + name: fish taco recipe + result: FoodTacoFish + time: 10 + solids: + FoodTacoShell: 1 + FoodMeatFish: 1 + FoodOnionSlice: 2 + FoodTomato: 1 + FoodCabbage: 1 + +- type: microwaveMealRecipe + id: RecipeTacoRat + name: rat taco recipe + result: FoodTacoRat + time: 10 + solids: + FoodTacoShell: 1 + FoodCheeseSlice: 1 + FoodMeatRat: 1 + +- type: microwaveMealRecipe + id: RecipeTacoBeefSupreme + name: beef taco supreme recipe + result: FoodTacoBeefSupreme + time: 10 + solids: + FoodTacoShell: 1 + FoodCheeseSlice: 1 + FoodMeatCutlet: 1 + FoodTomato: 1 + FoodCabbage: 1 + FoodOnionSlice: 2 + +- type: microwaveMealRecipe + id: RecipeTacoChickenSupreme + name: beef taco supreme recipe + result: FoodTacoChickenSupreme + time: 10 + solids: + FoodTacoShell: 1 + FoodCheeseSlice: 1 + FoodMeatChickenCutlet: 1 + FoodTomato: 1 + FoodCabbage: 1 + FoodOnionSlice: 2 + - type: microwaveMealRecipe id: RecipeCroissant name: croissant recipe diff --git a/Resources/Prototypes/Recipes/Cooking/sequence_metamorph.yml b/Resources/Prototypes/Recipes/Cooking/sequence_metamorph.yml new file mode 100644 index 0000000000..95f1c97a22 --- /dev/null +++ b/Resources/Prototypes/Recipes/Cooking/sequence_metamorph.yml @@ -0,0 +1,125 @@ +# rules for transferring recipes from microwaveMealRecipe +# 1) leave room for variation. If the original recipe calls for 2 pieces of meat, allow players to put in 2-3 pieces. +# 2) max SequenceLength must be 1 element greater than the minimum ingredient set requires. This will allow you to put 1 poison fly or 1 other ingredient in different recipes and the recipes will still be valid. + +- type: metamorphRecipe + id: FoodBurgerCheese + key: Burger + result: FoodBurgerCheese + rules: + - !type:SequenceLength + range: + min: 3 + max: 4 + - !type:IngredientsWithTags # 1 meat cutlet + tags: + - Cooked + - Cutlet + - Meat + count: + min: 1 + max: 2 + - !type:IngredientsWithTags # 1 cheese + tags: + - Cheese + count: + min: 1 + max: 2 + - !type:LastElementHasTags # last bun + tags: + - Bun + +- type: metamorphRecipe + id: FoodBurgerChicken + key: Burger + result: FoodBurgerChicken + rules: + - !type:SequenceLength + range: + min: 2 + max: 3 + - !type:IngredientsWithTags # 1 chicken meat + tags: + - Cooked + - Cutlet + - Meat + - Chicken + count: + min: 1 + max: 2 + - !type:FoodHasReagent # 5 +- 2 mayo + reagent: Mayo + count: + min: 3 + max: 7 + - !type:LastElementHasTags # last bun + tags: + - Bun + +- type: metamorphRecipe + id: FoodBurgerCrab + key: Burger + result: FoodBurgerCrab + rules: + - !type:SequenceLength + range: + min: 3 + max: 4 + - !type:IngredientsWithTags # 2 crab meat + tags: + - Cooked + - Meat + - Crab + count: + min: 2 + max: 3 + - !type:LastElementHasTags # last bun + tags: + - Bun + +- type: metamorphRecipe + id: FoodBurgerDuck + key: Burger + result: FoodBurgerDuck + rules: + - !type:SequenceLength + range: + min: 3 + max: 4 + - !type:IngredientsWithTags # 1 duck meat + tags: + - Cooked + - Cutlet + - Meat + - Duck + count: + min: 1 + max: 2 + - !type:IngredientsWithTags # 1 cheese + tags: + - Cheese + count: + min: 1 + max: 2 + - !type:LastElementHasTags # last bun + tags: + - Bun + +- type: metamorphRecipe + id: FoodBurgerBrain + key: Burger + result: FoodBurgerBrain + rules: + - !type:SequenceLength + range: + min: 2 + max: 3 + - !type:IngredientsWithTags # 1 brain + tags: + - Brain + count: + min: 1 + max: 2 + - !type:LastElementHasTags # last bun + tags: + - Bun \ No newline at end of file diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 7daf090b46..b8ee4d4efd 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -222,6 +222,9 @@ - type: Tag id: BoxHug +- type: Tag + id: Brain + - type: Tag id: BrassInstrument @@ -243,12 +246,18 @@ - type: Tag id: Bucket +- type: Tag + id: Burger + - type: Tag id: BulletFoam - type: Tag id: Burnt +- type: Tag + id: Bun + - type: Tag id: BypassDropChecks @@ -367,6 +376,9 @@ - type: Tag id: Chicken +- type: Tag + id: Cheese + # Allowed to control someone wearing a Chef's hat if inside their hat. - type: Tag id: ChefPilot @@ -443,6 +455,9 @@ - type: Tag id: Cow +- type: Tag + id: Crab + - type: Tag id: Crayon @@ -1261,6 +1276,9 @@ - type: Tag id: TabletopBoard +- type: Tag + id: Taco + - type: Tag id: TabletopPiece diff --git a/Resources/Textures/Mobs/Species/Human/organs.rsi/brain.png b/Resources/Textures/Mobs/Species/Human/organs.rsi/brain.png index 04d04890f6b4a831e8889c40f264d284b61fca71..c4b6ac6385d2d3eeeb485c475383ca34afa5fcdb 100644 GIT binary patch delta 446 zcmV;v0YU!F1J?tPBYyw^b5ch_0Itp)=>Px$kx4{BR9J=WlRZl#VGw|y6@`PSg_R!( zxEM5g2a0xzD5!-Ws9bkf9QQwLyuyFrRoD0vtgO}ELd}vWi>oAYHM&OK#0_5JSYwWw9?+y+fqP5FJOCi}r5|xF$s~6H7#-~5_vDzoRO?>?O`zgLokDclrjZfy1?YR&gjdz|O* z-&SCG-_VvpDwQh9bP_@EJP)_z($|?FZ=V5hcAXF0IFvw5;+LlRyA=_-;}HxiMfq3dWZdH?_b07*qoM6N<$g6^x)3;+NC delta 436 zcmV;l0ZabZ1I+`FBYy#uNklamXX`z%|4S0FqahNyr zy%`1+3WY+UxM#Gm55By4E0N*uU$OPwz0h^~35wq}`%ySNOR09sqG_01`%GC}?74b)J%W!kBgm zZj+LE0zl%)Q^cuJ${z#pVquEyl_mLKtv?AgfsWVa;@c^SWw<%qvO6rzj?Nh<)V5$Sb@!)p>2Y6 zyFK#7Jc8hP9&X!Z_ECzeeGb6+&uZYtp#=I8pES+it%xw4jAB>?I=?0uiP-1~9jESu z61esK0&Jv`GB@*pEAI+Dp<|UStg{YVMRV|1@GrKCrY&X^E&=@JVY$-;`fQ|<{%XSf eUZGGZ0Dc3ZO{M9W6`O_t0000Px&IY~r8R9J=WmP8MWabaQtZrBJLgAWwNM>H)OMFCL+0g;Ajq4qT{CNr@L?G!O=_*XOM z-h2N4o^$TG7Z$L9c}B`?7uFOZ{%LzKn7qH#*%I%yYbdoC0MKo$z}?gVM8#xd{8JbWn zLX!-6sl|Z5y$gWcolXGKs;grD0UWMs_S!Ym)=AO=PH(?;9-!1>K)10%v5&R1A$SFX z9nTTG0%I+0%9y{sOR0~479gW%XhPY&Xt(0?3S?}kj0wGHx5mt$69Ml=uAN+5xQRwj zRB&0U%hm2!OAKZUB}{ND&FUq_xJO zs49VRBd~V+3iM?e2pZ1+l~o zfUjRVW%~-B0$>WS2H>{OvI*dQL*xDFc;ZIDt#P^n!4Ol?h}sP$jfAJ5Zp)=Tp9gL< z<>y&37wYKwJOn_*9|j;RTiUs0zjP@zxTQN`_dqHi#((nsNmpDBRh@8I@d1|*jPT=| zKkmFK!K-|K82`!lntiTBzLS2CR25suGX&9@t%NeuF-XOaDN~Ev)6e*5kXOT#JnR+b z_CX?Jm(45!tSrb!mmWbYO1I%aB%3#*Q)mJcc(b`nr;J*lvF;|b$1uS6R@e7CS VLl+j{RSy6F002ovPDHLkV1i+?lIH*b literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/burger.rsi/bun_bottom.png b/Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/bun_bottom.png similarity index 100% rename from Resources/Textures/Objects/Consumable/Food/burger.rsi/bun_bottom.png rename to Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/bun_bottom.png diff --git a/Resources/Textures/Objects/Consumable/Food/burger.rsi/bun_top.png b/Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/bun_top.png similarity index 100% rename from Resources/Textures/Objects/Consumable/Food/burger.rsi/bun_top.png rename to Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/bun_top.png diff --git a/Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/cheese.png b/Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/cheese.png new file mode 100644 index 0000000000000000000000000000000000000000..2678c7f7d66e5c00a671293216b3923075c02af1 GIT binary patch literal 302 zcmV+}0nz@6P)Px#=t)FDR9J=Wlg$pnKoo^fwWP|zUu@c?B@)Dv*YFs29>Qa>6eLy>HWC&@LqzId zEu_s~4m#8*we(U;=cIshQ9 z$-x>}=PsVwNh`7&H|_nZ0{~D*q_K1ZnQ7Qli)kGstLN_J!!}q0$Ku^ni)sB>7Gl8~ zctuR>N8oP&cz!Qit9q8x6VJ>A{R=V-!!SR=1JGMVE&R~V1ONa407*qoM6N<$g5CFh AnE(I) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/meta.json new file mode 100644 index 0000000000..2b9671e9b4 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/meta.json @@ -0,0 +1,20 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by TheShuEd. Bun taken from tgstation and modified by Swept and potato1234x at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa, and edited by TheShuEd", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "bun_top" + }, + { + "name": "bun_bottom" + }, + { + "name": "cheese" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Food/skewer.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/skewer.rsi/meta.json index bf65bed84b..f99e5d77d4 100644 --- a/Resources/Textures/Objects/Consumable/Food/skewer.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/skewer.rsi/meta.json @@ -42,6 +42,9 @@ }, { "name": "skewer-snake" + }, + { + "name": "skewer-watermelon" } ] } diff --git a/Resources/Textures/Objects/Consumable/Food/skewer.rsi/skewer-tomato.png b/Resources/Textures/Objects/Consumable/Food/skewer.rsi/skewer-tomato.png index 4cefaada5360a6cf10debebd7b3fa88e7934b13e..46bbdc372dd99b0977ad790927057fe4ca5fa2ee 100644 GIT binary patch delta 192 zcmV;x06+h_0qFsdF@K{;L_t(oh3(QY4uU`sh2bA!NQj9Ws;#^M(d%#rPheqXsTZ)f z;5=rJKtn~SNGMzjvh+@&&HMVd^RhD_A|mos{Sto^ zMf_QT*1K5yoc(S~D&eZqTw?QWU>qg_CH1SzU|EG_aAI0P+Btc;gK?PX=Gj!hbUf$V uljHpqfpz%R_?G#4FR*^Sb-0L#2*3v;2QPNVP9swQ0000A delta 145 zcmaFKxQlUuVSS0Gi(^PcYjT1F>*55Fo~A$pE;mNW2L~FNdBVT2{6GAmk(vF3S$C(5 zuTo{>f7eIF0Y6f9H^>yY`hT!Ds&2KgzsZ-dFVdQ&MBb@01ZVsjsO4v diff --git a/Resources/Textures/Objects/Consumable/Food/skewer.rsi/skewer-watermelon.png b/Resources/Textures/Objects/Consumable/Food/skewer.rsi/skewer-watermelon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e0146459e2978bbcf74d6579fae3f53615b0aad GIT binary patch literal 331 zcmV-R0kr;!P)Px$1xZ9fR9J=Wl(7oJFc60Ss8}d=l;TjQK7Gk*=|{Y7sWT4{ZrikNp%F#mPdxF{)agN7yW+@2T6_~Is_yor5Spg z#o<23MKdrkFeqI5%aCNvM3f_lasYa;W22)|&O!J#CJf2*e=*EWWFyKEL?xQ7OGW={ zseWU)cAJY~$p!(2n1BxqFg`XqCh{wTx&#x$%@_X|j^4#@2T=~#vEKOqhxdON1O!RB!U=)lT008pMpG64@mz4kj002ovPDHLkV1l}8 BfIa{K literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftacosupreme.png b/Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftacosupreme.png new file mode 100644 index 0000000000000000000000000000000000000000..4db06131dce7e2f745568d4a6f0d1c1ccd2ccec3 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJU!E?GArY;~2@#5yEbD3Ao!D>pm0mjg6^3g;Tf$kU??zny85}Sb4q9e0G()r AO#lD@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentaco.png b/Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentaco.png new file mode 100644 index 0000000000000000000000000000000000000000..014e20c0e96aefc2e7f7135cc4fa58815e276643 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ-<~dxArY;~2@=0O;wsjB8kb);J}X?FK$OKm3Y$QEGaiP_Uwae71HZvT`UuhS3UkOfA4>y zfIv#3!nCwqA37VoPt7=}R?8Y`nG5zIm)k)N2}=fstI7)wg!cYh0SpEPPgg&ebxsLQ E0H#5yEbD3Ao!D>pm0mjgT8M?AW-nE5SoRlqq_8 z*T3sQe~%TsH4{HPiI<7TkWpSDp(f|c<3Gg!isRw+z1u94!CvHYJE$S?iGg9qrP&{%{CtIh;lSYO>gTe~DWM4f DruKs) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/fishtaco.png b/Resources/Textures/Objects/Consumable/Food/taco.rsi/fishtaco.png new file mode 100644 index 0000000000000000000000000000000000000000..4a2a6055234cfd987914d15b9d79ec33f83adfec GIT binary patch literal 286 zcmV+(0pb3MP)NkdKx49UWY!G0G3HZPO z<71zZ}<>ckG kQ7{Td!6+C7qhRC!0KPrHzdt#tZ~y=R07*qoM6N<$f+7}!E&u=k literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json index 6f07c71238..71bda2cd42 100644 --- a/Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json @@ -1,17 +1,29 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Original sprite by Phunny, redrawn by TheShuEd", + "copyright": "Added by Phunny", "size": { "x": 32, "y": 32 }, "states": [ { - "name": "tacoshell_back" + "name": "beeftaco" }, { - "name": "tacoshell_forward" + "name": "beeftacosupreme" + }, + { + "name": "chickentaco" + }, + { + "name": "chickentacosupreme" + }, + { + "name": "fishtaco" + }, + { + "name": "rattaco" } ] -} +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/rattaco.png b/Resources/Textures/Objects/Consumable/Food/taco.rsi/rattaco.png new file mode 100644 index 0000000000000000000000000000000000000000..f80673f6a685cd9786f0c9bbf1d7fa7f196a0d04 GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFba6OIEF;DCMQU+E=~~XX$mwr z&@fTP_rHDH|N4J_G@F+!F**GCxxeJO`Fl?;So*8i@!}iplg|tvZe6kbxxLZ$t*0^| zhcqw$S~E$e(fs0prux|_>dn($nYU$c-zhOIM!;7KF4w!W zX36#Sk`mfl25*$LuD*-N|MUOwZ+jl5CLNw5m&Eg17tRQbi}MTXlZN@6tIeK)VY$)< V(S(VT>wrPT;OXk;vd$@?2>|nika++A literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/tacoshell_back.png b/Resources/Textures/Objects/Consumable/Food/taco.rsi/tacoshell_back.png deleted file mode 100644 index 979a8a92d8114e28d279275fdcafa9294c85e8cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}sh%#5ArY;~ z2@=r N@O1TaS?83{1OT<2H^Kk_ diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/tacoshell_forward.png b/Resources/Textures/Objects/Consumable/Food/taco.rsi/tacoshell_forward.png deleted file mode 100644 index 4d01f637fec56b1bb4ef33e003baf45bede70907..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}4?JBQLn2y} z6C_v{Cy4Yk1sZUyfI!MYZ{_BW iCEX(80bt)uWM=sJa#oXj+dGiQ89ZJ6T-G@yGywq6Kymc| diff --git a/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/cheese.png b/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/cheese.png new file mode 100644 index 0000000000000000000000000000000000000000..59c459e0c2958ff5fb0cce6c3f3b645d49f79027 GIT binary patch literal 267 zcmV+m0rdWfP)Px##Ysd#R9J=WkueIwFcd&vv>=q?V8;%25!_2%yojf$;7#-tcJ>%uJ2-afSO+Oi zg*ZjD2sY^?{5K|_{~ielf*=V0OqnNo?2gG8`EoVme%+6Xa0)PT0QD%)x3hDEb%2ov zarQcEtCRCfSOpk)Q+KGvPBnE0KoDonFEKcv%o82>QvjCR1Jz}t!^r!HX{(cU#Gn8p ze;1m&F!Ek8VE-NJ_sI7MBkZI7l==ENc<Px$CP_p=R9J=Wl`%`iFcims2ERg=LIyWC(ItcQbGSHqh>IVkg9uj6S-9CRP$)Na z5zgth8&bM-5JFcuhqIv^3QdB7kl&Vu_x|tyl9xgx5{U$mW!W~%vh7dnDIE9;19V+S zk|Y2qrMOaO%DMjD+_FGXD&iTAMFm?_*_W+m2DcAGG)+!$lugI_IROxv~qG);rn8Yv}@vkRwJ5CV=M zO;amAjNY?H9`6neNGXHjojUO4)ZPQFb&xm&{)|RNMIw>N|K$_^;BkkMP*xoP0000< KMNUMnLSTZc9hnaR literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/tacoshell_back.png b/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/tacoshell_back.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd31d3b691a6ceb57b9c21c9352df72f94b6076 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}sh%#5ArY;~ z2@BPx#-$_J4R9J=Wl(7oJKoCSnv9eLiBaK$}3Vwxs#8UhNYyZSru(CPx$H%UZ6R9J=WlrfINFc3vQ_G%Th1uGg3 zKoe>jZjl4zAS;f*F(_#0xCJ#;8V*1ckpck{&QO>b+esW}w_Lw2_So~s^Cv(c5D5Ht z27M2RA|(J|Uq1kV^0G4a`DoMYPUaItj|0(tOI32IBx{bnZ-0p%2Q&6B0z{D#LT4m`&dl_pG-XjOS-D}7SJZ937@2aKp+s%c>-`slIX-9vD^Rv002ovPDHLkV1kX* BnR@^L delta 401 zcmV;C0dD^N0;&U$BYy#LNkl-@25Jf-2lPKdNCrD44G-+~&6m)5P5T7B( zaFK?NTezX2F^wmkXVNgZ$k ztTi!-sSx>rYJa~;7&y(}gwcRXyvWp}CS<2|*O(wO95xFT(mu}0Ko@K}S0?3csa8qv zsMJ1FVLd>MhppDO+ARMM-yJi}USb}BR*c;R>Xb4YjEAWAG3tE`#(~3T(d-!rs*d%q vxO#uK8pRm#Q3fQtWiV*OR@mWiI3!=P&AK@EF02{=015yANkvXXu0mjf=UTj! -- 2.51.2