]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Metamorphosis - FoodSequence 3 (#31012)
authorEd <96445749+TheShuEd@users.noreply.github.com>
Sun, 8 Sep 2024 06:22:27 +0000 (09:22 +0300)
committerGitHub <noreply@github.com>
Sun, 8 Sep 2024 06:22:27 +0000 (02:22 -0400)
* 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

49 files changed:
Content.Client/Nutrition/EntitySystems/ClientFoodSequenceSystem.cs
Content.Server/Nutrition/EntitySystems/FoodSequenceSystem.cs
Content.Shared/Nutrition/Components/FoodMetamorphableByAddingComponent.cs [new file with mode: 0644]
Content.Shared/Nutrition/Components/FoodSequenceElementComponent.cs
Content.Shared/Nutrition/Components/FoodSequenceStartPointComponent.cs
Content.Shared/Nutrition/Events.cs
Content.Shared/Nutrition/FoodMetamorphRules/FoodMetamorphRule.cs [new file with mode: 0644]
Content.Shared/Nutrition/Prototypes/FoodSequenceElementPrototype.cs [new file with mode: 0644]
Content.Shared/Nutrition/Prototypes/MetamorphRecipePrototype.cs [new file with mode: 0644]
Resources/Locale/en-US/nutrition/components/food-sequence.ftl
Resources/Prototypes/Body/Organs/human.yml
Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/burger.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/skewer.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/taco.yml
Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml
Resources/Prototypes/Recipes/Cooking/food_sequence_element.yml [new file with mode: 0644]
Resources/Prototypes/Recipes/Cooking/meal_recipes.yml
Resources/Prototypes/Recipes/Cooking/sequence_metamorph.yml [new file with mode: 0644]
Resources/Prototypes/tags.yml
Resources/Textures/Mobs/Species/Human/organs.rsi/brain.png
Resources/Textures/Objects/Consumable/Food/burger.rsi/meta.json
Resources/Textures/Objects/Consumable/Food/burger.rsi/screwed.png [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/bun_bottom.png [moved from Resources/Textures/Objects/Consumable/Food/burger.rsi/bun_bottom.png with 100% similarity]
Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/bun_top.png [moved from Resources/Textures/Objects/Consumable/Food/burger.rsi/bun_top.png with 100% similarity]
Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/cheese.png [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/skewer.rsi/meta.json
Resources/Textures/Objects/Consumable/Food/skewer.rsi/skewer-tomato.png
Resources/Textures/Objects/Consumable/Food/skewer.rsi/skewer-watermelon.png [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftaco.png [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftacosupreme.png [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentaco.png [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentacosupreme.png [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/taco.rsi/fishtaco.png [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/taco.rsi/meta.json
Resources/Textures/Objects/Consumable/Food/taco.rsi/rattaco.png [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/taco.rsi/tacoshell_back.png [deleted file]
Resources/Textures/Objects/Consumable/Food/taco.rsi/tacoshell_forward.png [deleted file]
Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/cheese.png [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/rat.png [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/tacoshell_back.png [new file with mode: 0644]
Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/tacoshell_forward.png [new file with mode: 0644]
Resources/Textures/Objects/Specific/Hydroponics/pineapple.rsi/slice.png

index e571c5a856c8662cbb0743f1e190f34f765dacbf..c708c6fe7d2ef60264d25bf6728da217e14e1156 100644 (file)
@@ -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;
index 6e2f6546fb521fc76459f96f8755bf8ce8ea0aff..f7d8588716fc34355f23f36c216ed7a0ea230f57 100644 (file)
@@ -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<FoodSequenceStartPointComponent, InteractUsingEvent>(OnInteractUsing);
+
+        SubscribeLocalEvent<FoodMetamorphableByAddingComponent, FoodSequenceIngredientAddedEvent>(OnIngredientAdded);
     }
 
     private void OnInteractUsing(Entity<FoodSequenceStartPointComponent> ent, ref InteractUsingEvent args)
@@ -34,47 +42,113 @@ public sealed class FoodSequenceSystem : SharedFoodSequenceSystem
             TryAddFoodElement(ent, (args.Used, sequenceElement), args.User);
     }
 
-    private bool TryAddFoodElement(Entity<FoodSequenceStartPointComponent> start, Entity<FoodSequenceElementComponent> element, EntityUid? user = null)
+    private void OnIngredientAdded(Entity<FoodMetamorphableByAddingComponent> ent, ref FoodSequenceIngredientAddedEvent args)
+    {
+        if (!TryComp<FoodSequenceStartPointComponent>(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<FoodSequenceStartPointComponent> start)
     {
-        FoodSequenceElementEntry? elementData = null;
-        foreach (var entry in element.Comp.Entries)
+        List<MetamorphRecipePrototype> availableRecipes = new();
+        foreach (var recipe in _proto.EnumeratePrototypes<MetamorphRecipePrototype>())
         {
-            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<FoodSequenceStartPointComponent> 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<FoodSequenceStartPointComponent> start, Entity<FoodSequenceElementComponent> element, EntityUid? user = null)
+    {
+        // we can't add a live mouse to a burger.
+        if (!TryComp<FoodComponent>(element, out var elementFood))
+            return false;
+        if (elementFood.RequireDead && _mobState.IsAlive(element))
             return false;
 
-        if (TryComp<FoodComponent>(element, out var elementFood) && elementFood.RequireDead)
+        //looking for a suitable FoodSequence prototype
+        ProtoId<FoodSequenceElementPrototype> 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<LocId> existedContentNames = new();
+        HashSet<ProtoId<FoodSequenceElementPrototype>> 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<FoodSequenceStartPointComponent> start, Entity<FoodSequenceElementComponent> element)
+    private void MergeFoodSolutions(EntityUid start, EntityUid element)
     {
-        if (!_solutionContainer.TryGetSolution(start.Owner, start.Comp.Solution, out var startSolutionEntity, out var startSolution))
+        if (!TryComp<FoodComponent>(start, out var startFood))
+            return;
+
+        if (!TryComp<FoodComponent>(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<FoodSequenceStartPointComponent> start, Entity<FoodSequenceElementComponent> element)
+    private void MergeFlavorProfiles(EntityUid start, EntityUid element)
     {
         if (!TryComp<FlavorProfileComponent>(start, out var startProfile))
             return;
@@ -148,7 +238,7 @@ public sealed class FoodSequenceSystem : SharedFoodSequenceSystem
         }
     }
 
-    private void MergeTrash(Entity<FoodSequenceStartPointComponent> start, Entity<FoodSequenceElementComponent> element)
+    private void MergeTrash(EntityUid start, EntityUid element)
     {
         if (!TryComp<FoodComponent>(start, out var startFood))
             return;
@@ -162,13 +252,13 @@ public sealed class FoodSequenceSystem : SharedFoodSequenceSystem
         }
     }
 
-    private void MergeTags(Entity<FoodSequenceStartPointComponent> start, Entity<FoodSequenceElementComponent> element)
+    private void MergeTags(EntityUid start, EntityUid element)
     {
         if (!TryComp<TagComponent>(element, out var elementTags))
             return;
 
-        EnsureComp<TagComponent>(start.Owner);
+        EnsureComp<TagComponent>(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 (file)
index 0000000..0170404
--- /dev/null
@@ -0,0 +1,17 @@
+using Content.Shared.Nutrition.EntitySystems;
+using Robust.Shared.GameStates;
+
+namespace Content.Shared.Nutrition.Components;
+
+/// <summary>
+/// Attempts to metamorphose a modular food when a new ingredient is added.
+/// </summary>
+[RegisterComponent, NetworkedComponent, Access(typeof(SharedFoodSequenceSystem))]
+public sealed partial class FoodMetamorphableByAddingComponent : Component
+{
+    /// <summary>
+    /// if true, the metamorphosis will only be attempted when the sequence ends, not when each element is added.
+    /// </summary>
+    [DataField]
+    public bool OnlyFinal = true;
+}
index 386aa937be0605756ba4c7217b75540a2c5a6752..50bc786129c7bd4f76ddb6f7be8317d1202f1db8 100644 (file)
@@ -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;
 
 /// <summary>
-/// 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.
 /// </summary>
 [RegisterComponent, Access(typeof(SharedFoodSequenceSystem))]
 public sealed partial class FoodSequenceElementComponent : Component
 {
     /// <summary>
-    /// 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.
     /// </summary>
     [DataField(required: true)]
-    public Dictionary<string, FoodSequenceElementEntry> Entries = new();
+    public Dictionary<ProtoId<TagPrototype>, ProtoId<FoodSequenceElementPrototype>> Entries = new();
 
     /// <summary>
-    /// which solution we will add to the main dish
+    /// Which solution we will add to the main dish
     /// </summary>
     [DataField]
     public string Solution = "food";
-
-    /// <summary>
-    /// state used to generate the appearance of the added layer
-    /// </summary>
-    [DataField]
-    public SpriteSpecifier? Sprite;
-}
-
-[DataRecord, Serializable, NetSerializable]
-public sealed class FoodSequenceElementEntry
-{
-    /// <summary>
-    /// A localized name piece to build into the item name generator.
-    /// </summary>
-    public LocId? Name { get; set; } = null;
-
-    /// <summary>
-    /// overriding default sprite
-    /// </summary>
-    public SpriteSpecifier? Sprite { get; set; } = null;
-
-    /// <summary>
-    /// If the layer is the final one, it can be added over the limit, but no other layers can be added after it.
-    /// </summary>
-    public bool Final { get; set; } = false;
-
-    /// <summary>
-    /// the shear of a particular layer. Allows a little "randomization" of each layer.
-    /// </summary>
-    public Vector2 LocalOffset { get; set; } = Vector2.Zero;
 }
index 613ca3cfef39d06801b8df46737b1f0afdbc3e54..c87110287adb5a1332361971411e7adfd4d3d676 100644 (file)
@@ -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.
     /// </summary>
     [DataField(required: true)]
-    public string Key = string.Empty;
+    public ProtoId<TagPrototype> Key = string.Empty;
 
     /// <summary>
     /// 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;
 
     /// <summary>
-    /// Start shift from the center of the sprite where the first layer of food will be placed.
+    /// Can we put more layers?
     /// </summary>
     [DataField]
-    public Vector2 StartPosition = Vector2.Zero;
+    public bool Finished;
 
     /// <summary>
-    /// Shift from the start position applied to each subsequent layer.
+    /// solution where reagents will be added from newly added ingredients
     /// </summary>
     [DataField]
-    public Vector2 Offset = Vector2.Zero;
+    public string Solution = "food";
+
+    #region name generation
 
     /// <summary>
-    /// Can we put more layers?
+    /// LocId with a name generation pattern.
     /// </summary>
     [DataField]
-    public bool Finished;
+    public LocId? NameGeneration;
+
+    /// <summary>
+    /// the part of the name generation used in the pattern
+    /// </summary>
+    [DataField]
+    public LocId? NamePrefix;
+
+    /// <summary>
+    /// content in the form of all added ingredients will be separated by these symbols
+    /// </summary>
+    [DataField]
+    public string? ContentSeparator;
+
+    /// <summary>
+    /// the part of the name generation used in the pattern
+    /// </summary>
+    [DataField]
+    public LocId? NameSuffix;
+
+    #endregion
+
+    #region visual
 
     /// <summary>
     /// list of sprite states to be displayed on this object.
     /// </summary>
     [DataField, AutoNetworkedField]
-    public List<FoodSequenceElementEntry> FoodLayers = new();
+    public List<FoodSequenceVisualLayer> FoodLayers = new();
 
-    public HashSet<string> RevealedLayers = new();
+    /// <summary>
+    /// If true, the generative layers will be placed in reverse order.
+    /// </summary>
+    [DataField]
+    public bool InverseLayers;
 
     /// <summary>
     /// 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";
 
     /// <summary>
-    /// 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.
     /// </summary>
     [DataField]
-    public bool InverseLayers;
+    public Vector2 StartPosition = Vector2.Zero;
+
+    /// <summary>
+    /// Shift from the start position applied to each subsequent layer.
+    /// </summary>
+    [DataField]
+    public Vector2 Offset = Vector2.Zero;
 
     /// <summary>
     /// 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;
 
-    /// <summary>
-    /// solution where reagents will be added from newly added ingredients
-    /// </summary>
     [DataField]
-    public string Solution = "food";
+    public bool AllowHorizontalFlip = true;
+
+    public HashSet<string> RevealedLayers = new();
+
+    #endregion
+}
 
+/// <summary>
+/// class that synchronizes with the client
+/// Stores all the necessary information for rendering the FoodSequence element
+/// </summary>
+[DataRecord, Serializable, NetSerializable]
+public record struct FoodSequenceVisualLayer
+{
     /// <summary>
-    /// LocId with a name generation pattern.
+    /// reference to the original prototype of the layer. Used to edit visual layers.
     /// </summary>
-    [DataField]
-    public LocId? NameGeneration;
+    public ProtoId<FoodSequenceElementPrototype> Proto;
 
     /// <summary>
-    /// the part of the name generation used in the pattern
+    /// Sprite rendered in sequence
     /// </summary>
-    [DataField]
-    public LocId? NamePrefix;
+    public SpriteSpecifier? Sprite { get; set; } = SpriteSpecifier.Invalid;
 
     /// <summary>
-    /// content in the form of all added ingredients will be separated by these symbols
+    /// Relative size of the sprite displayed in FoodSequence
     /// </summary>
-    [DataField]
-    public string? ContentSeparator;
+    public Vector2 Scale { get; set; } = Vector2.One;
 
     /// <summary>
-    /// the part of the name generation used in the pattern
+    /// The offset of a particular layer. Allows a little position randomization of each layer.
     /// </summary>
-    [DataField]
-    public LocId? NameSuffix;
+    public Vector2 LocalOffset { get; set; } = Vector2.Zero;
+
+    public FoodSequenceVisualLayer(ProtoId<FoodSequenceElementPrototype> proto,
+        SpriteSpecifier? sprite,
+        Vector2 scale,
+        Vector2 offset)
+    {
+        Proto = proto;
+        Sprite = sprite;
+        Scale = scale;
+        LocalOffset = offset;
+    }
 }
index abba2583ba46a4c5c35cffce9f5693f0b1565d0e..d15fcbbf1e3bc9c6a0205c3c4d8b7d25bc4acacc 100644 (file)
@@ -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
 {
 }
+
+/// <summary>
+///    Raised on FoodSequence start element entity when new ingredient is added to FoodSequence
+/// </summary>
+public record struct FoodSequenceIngredientAddedEvent(EntityUid Start, EntityUid Element, ProtoId<FoodSequenceElementPrototype> Proto, EntityUid? User = null);
diff --git a/Content.Shared/Nutrition/FoodMetamorphRules/FoodMetamorphRule.cs b/Content.Shared/Nutrition/FoodMetamorphRules/FoodMetamorphRule.cs
new file mode 100644 (file)
index 0000000..9e59573
--- /dev/null
@@ -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;
+
+/// <summary>
+/// abstract rules that are used to verify the correct foodSequence for recipe
+/// </summary>
+[ImplicitDataDefinitionForInheritors]
+[Serializable, NetSerializable]
+public abstract partial class FoodMetamorphRule
+{
+    public abstract bool Check(IPrototypeManager protoMan, EntityManager entMan, EntityUid food, List<FoodSequenceVisualLayer> ingredients);
+}
+
+/// <summary>
+/// The requirement that the sequence be within the specified size limit
+/// </summary>
+[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<FoodSequenceVisualLayer> ingredients)
+    {
+        return ingredients.Count <= Range.Max && ingredients.Count >= Range.Min;
+    }
+}
+
+/// <summary>
+/// A requirement that the last element of the sequence have one or all of the required tags
+/// </summary>
+[UsedImplicitly]
+[Serializable, NetSerializable]
+public sealed partial class LastElementHasTags : FoodMetamorphRule
+{
+    [DataField(required: true)]
+    public List<ProtoId<TagPrototype>> Tags = new ();
+
+    [DataField]
+    public bool NeedAll = true;
+
+    public override bool Check(IPrototypeManager protoMan, EntityManager entMan, EntityUid food, List<FoodSequenceVisualLayer> 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;
+    }
+}
+
+/// <summary>
+/// A requirement that the specified sequence element have one or all of the required tags
+/// </summary>
+[UsedImplicitly]
+[Serializable, NetSerializable]
+public sealed partial class ElementHasTags : FoodMetamorphRule
+{
+    [DataField(required: true)]
+    public int ElementNumber = 0;
+
+    [DataField(required: true)]
+    public List<ProtoId<TagPrototype>> Tags = new ();
+
+    [DataField]
+    public bool NeedAll = true;
+
+    public override bool Check(IPrototypeManager protoMan, EntityManager entMan, EntityUid food, List<FoodSequenceVisualLayer> 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;
+    }
+}
+
+/// <summary>
+/// requirement that the food contains certain reagents (e.g. sauces)
+/// </summary>
+[UsedImplicitly]
+[Serializable, NetSerializable]
+public sealed partial class FoodHasReagent : FoodMetamorphRule
+{
+    [DataField(required: true)]
+    public ProtoId<ReagentPrototype> Reagent = new();
+
+    [DataField(required: true)]
+    public MinMax Count;
+
+    [DataField]
+    public string Solution = "food";
+
+    public override bool Check(IPrototypeManager protoMan, EntityManager entMan, EntityUid food, List<FoodSequenceVisualLayer> ingredients)
+    {
+        if (!entMan.TryGetComponent<SolutionContainerManagerComponent>(food, out var solMan))
+            return false;
+
+        var solutionMan = entMan.System<SharedSolutionContainerSystem>();
+
+        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;
+    }
+}
+
+/// <summary>
+/// A requirement that there be X ingredients in the sequence that have one or all of the specified tags.
+/// </summary>
+[UsedImplicitly]
+[Serializable, NetSerializable]
+public sealed partial class IngredientsWithTags : FoodMetamorphRule
+{
+    [DataField(required: true)]
+    public List<ProtoId<TagPrototype>> 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<FoodSequenceVisualLayer> 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 (file)
index 0000000..a344871
--- /dev/null
@@ -0,0 +1,38 @@
+using Content.Shared.Tag;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Utility;
+
+namespace Content.Shared.Nutrition.Prototypes;
+
+/// <summary>
+/// Unique data storage block for different FoodSequence layers
+/// </summary>
+[Prototype("foodSequenceElement")]
+public sealed partial class FoodSequenceElementPrototype : IPrototype
+{
+    [IdDataField] public string ID { get; private set; } = default!;
+
+    /// <summary>
+    /// sprite options. A random one will be selected and used to display the layer.
+    /// </summary>
+    [DataField]
+    public List<SpriteSpecifier> Sprites { get; private set; } = new();
+
+    /// <summary>
+    /// A localized name piece to build into the item name generator.
+    /// </summary>
+    [DataField]
+    public LocId? Name { get; private set; }
+
+    /// <summary>
+    /// If the layer is the final one, it can be added over the limit, but no other layers can be added after it.
+    /// </summary>
+    [DataField]
+    public bool Final { get; private set; }
+
+    /// <summary>
+    /// Tag list of this layer. Used for recipes for food metamorphosis.
+    /// </summary>
+    [DataField]
+    public List<ProtoId<TagPrototype>> Tags { get; set; }  = new();
+}
diff --git a/Content.Shared/Nutrition/Prototypes/MetamorphRecipePrototype.cs b/Content.Shared/Nutrition/Prototypes/MetamorphRecipePrototype.cs
new file mode 100644 (file)
index 0000000..977cb7a
--- /dev/null
@@ -0,0 +1,32 @@
+using Content.Shared.Nutrition.FoodMetamorphRules;
+using Content.Shared.Tag;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared.Nutrition.Prototypes;
+
+/// <summary>
+/// Stores a recipe so that FoodSequence assembled in the right sequence can turn into a special meal.
+/// </summary>
+[Prototype]
+public sealed partial class MetamorphRecipePrototype : IPrototype
+{
+    [IdDataField] public string ID { get; private set; } = default!;
+
+    /// <summary>
+    /// The key of the FoodSequence being collected. For example “burger” “taco” etc.
+    /// </summary>
+    [DataField(required: true)]
+    public ProtoId<TagPrototype> Key = string.Empty;
+
+    /// <summary>
+    /// The entity that will be created as a result of this recipe, and into which all the reagents will be transferred.
+    /// </summary>
+    [DataField(required: true)]
+    public EntProtoId Result = default!;
+
+    /// <summary>
+    /// A sequence of rules that must be followed for FoodSequence to metamorphose into a special food.
+    /// </summary>
+    [DataField]
+    public List<FoodMetamorphRule> Rules = new();
+}
index 36ce47d5cf5c03078ad24b313c0224fc6ce9292a..766145093e244b67c028accac980f84d0f089757 100644 (file)
@@ -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
index 6bfee0568a52bbd102740d3aaa2bf40afd13321c..c67f4f6cd16bcd7b9bfb12209fd16cd082080602 100644 (file)
     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
   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
   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
     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
     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
index aa4152c1896a0aca461992d2a70ad6ed6c6f1900..4e37a5ca3fa8a6274acaa85fa8794b715b516175 100644 (file)
     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
   - type: Item
     size: Tiny
     heldPrefix: 1
-  - type: FoodSequenceElement
-    sprite:
-      sprite: Mobs/Animals/mouse.rsi
-      state: dead-1
 
 - type: entity
   parent: MobMouse
   - type: Item
     size: Tiny
     heldPrefix: 2
-  - type: FoodSequenceElement
-    sprite:
-      sprite: Mobs/Animals/mouse.rsi
-      state: dead-2
 
 - type: entity
   name: cancer mouse
   - 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
index 06c4d5e871b26f3f6164ac881f16bc4d20387837..448ef0868d6326cf529f844d0bfcdb325a077253 100644 (file)
     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
index 4d51f20d78ed90a81f3f7adbce85278e213c11a6..88da21ccbd3cf466f67a44202d191d9f8258e8aa 100644 (file)
   - 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
         - 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
 
index 1a80a5fe53249b00d890274db1a418105fbb4f84..9542bd220453e4be3f6af7306895775a74672079 100644 (file)
     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
   - 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
   - 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
   - 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
index 53fbf62399f4e1dccab7140fde388d96d7b0f32d..0ad425c7102ea19526232ac96bd02d32e11ae710 100644 (file)
   - 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
         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:
     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
     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
     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
     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
     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
     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
     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
     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
       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
   - 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
     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
   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
           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
   - 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
           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
         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
           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
   - 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
     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
     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
     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
     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
     - 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
     - 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
   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:
     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
     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
     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
     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
     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
         - 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
     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
     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
     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
     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
     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
         - 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
         - 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
   - 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:
           Quantity: 3
         - ReagentId: Water
           Quantity: 4 # makes saline if you add salt!
+  - type: FoodSequenceElement
+    entries:
+      Burger: MeatSnail
+      Taco: MeatSnail
 
 # Cutlets
 
           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
           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
           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
           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
           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
           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
           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
         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
     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
           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
 
           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
           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
           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
           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
           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
           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
           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
           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
index 7a6f40fab67373bb8f6d33e175b67026cc029dce..15af78e78fd577386679eece3e6255418dd81357 100644 (file)
   - 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
   - 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
     - 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
     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
       - 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
     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
     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
     - 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
     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
     - 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
     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
     - 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
     - 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
     - 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
     - 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
     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
     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
   - 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
       - 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
         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
   - 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
   - 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
   - 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
 
     - 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
     - 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
     - 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
     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
   - 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
     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
     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
     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
   - 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
     - 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
     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
     - 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
     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
     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
     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
     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
     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
   - 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
     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
     - 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
     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
     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
     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
     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
index 641f494a9d031da2fbe167e9281a957f198adbb8..7b9db1f41febd8771cdbf1f08d65beb0400a3057 100644 (file)
     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:
         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
index 6254ad5cc0e82534942c634e8c85a88826e97320..2a83b14d037b50c379359d9102d63f3f78e00b37 100644 (file)
@@ -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"]
         - 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
index 92ab8d577cb997bdc00280456e0eb875cffe5030..06f297430592e3aeb7507fd91eab119a74469905 100644 (file)
         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
 #         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 (file)
index 0000000..d843e7b
--- /dev/null
@@ -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
index fb1280daffab1ebbede4fab68113f1dfdc1a583e..8dc25c1c7251ddd5734079d32d59014c0b917f31 100644 (file)
@@ -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
     FoodMeat: 1
     FoodCheeseSlice: 1
 
-- type: microwaveMealRecipe
+- type: microwaveMealRecipe #Added to metamorph recipes
   id: RecipeChickenSandwich
   name: chicken sandwich recipe
   result: FoodBurgerChicken
     FoodBreadBun: 1
     FoodMeatCorgi: 1
 
-- type: microwaveMealRecipe
+- type: microwaveMealRecipe #Added to metamorph recipes
   id: RecipeCrabBurger
   name: crab burger recipe
   result: FoodBurgerCrab
     CrayonGreen: 1
     Flare: 1
 
-- type: microwaveMealRecipe
+- type: microwaveMealRecipe #Added to metamorph recipes
   id: RecipeDuckBurger
   name: duck sandwich recipe
   result: FoodBurgerDuck
   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 (file)
index 0000000..95f1c97
--- /dev/null
@@ -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
index 7daf090b46adc1418564cf47cb5a1c2b343da5c8..b8ee4d4efde980a1b48d4bdbe8633fbfd3f2e805 100644 (file)
 - type: Tag
   id: BoxHug
 
+- type: Tag
+  id: Brain
+
 - type: Tag
   id: BrassInstrument
 
 - type: Tag
   id: Bucket
 
+- type: Tag
+  id: Burger
+
 - type: Tag
   id: BulletFoam
 
 - type: Tag
   id: Burnt
 
+- type: Tag
+  id: Bun
+
 - type: Tag
   id: BypassDropChecks
 
 - 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
 - type: Tag
   id: Cow
 
+- type: Tag
+  id: Crab
+
 - type: Tag
   id: Crayon
 
 - type: Tag
   id: TabletopBoard
 
+- type: Tag
+  id: Taco
+
 - type: Tag
   id: TabletopPiece
 
index 04d04890f6b4a831e8889c40f264d284b61fca71..c4b6ac6385d2d3eeeb485c475383ca34afa5fcdb 100644 (file)
Binary files a/Resources/Textures/Mobs/Species/Human/organs.rsi/brain.png and b/Resources/Textures/Mobs/Species/Human/organs.rsi/brain.png differ
index 2ad83dfc3c65bac2495e9249c86800f0d55e2e94..42c8c461e9837dfe038f34e38ee13aa300bf9536 100644 (file)
@@ -1,7 +1,7 @@
 {
   "version": 1,
   "license": "CC-BY-SA-3.0",
-  "copyright": "Taken from tgstation and modified by Swept and potato1234x at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa, ian.png created by EmoGarbage, mothroach.png created by TurboTracker",
+  "copyright": "Taken from tgstation and modified by Swept and potato1234x at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa, ian.png created by EmoGarbage, mothroach.png created by TurboTracker, screwed by TheShuEd",
   "size": {
     "x": 32,
     "y": 32
     {
       "name": "bun"
     },
-    {
-      "name": "bun_top"
-    },
-    {
-      "name": "bun_bottom"
-    },
     {
       "name": "c"
     },
         ]
       ]
     },
+    {
+      "name": "screwed"
+    },
     {
       "name": "spell"
     },
diff --git a/Resources/Textures/Objects/Consumable/Food/burger.rsi/screwed.png b/Resources/Textures/Objects/Consumable/Food/burger.rsi/screwed.png
new file mode 100644 (file)
index 0000000..d9a3373
Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/burger.rsi/screwed.png differ
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 (file)
index 0000000..2678c7f
Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/burger_sequence.rsi/cheese.png differ
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 (file)
index 0000000..2b9671e
--- /dev/null
@@ -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"
+    }
+  ]
+}
index bf65bed84bbb52e2bf76468a9bade8a9ca93783c..f99e5d77d45c2b2375c8c268587634ec4469bec6 100644 (file)
@@ -42,6 +42,9 @@
     },
     {
       "name": "skewer-snake"
+    },
+    {
+      "name": "skewer-watermelon"
     }
   ]
 }
index 4cefaada5360a6cf10debebd7b3fa88e7934b13e..46bbdc372dd99b0977ad790927057fe4ca5fa2ee 100644 (file)
Binary files a/Resources/Textures/Objects/Consumable/Food/skewer.rsi/skewer-tomato.png and b/Resources/Textures/Objects/Consumable/Food/skewer.rsi/skewer-tomato.png differ
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 (file)
index 0000000..1e01464
Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/skewer.rsi/skewer-watermelon.png differ
diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftaco.png b/Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftaco.png
new file mode 100644 (file)
index 0000000..36e6052
Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftaco.png differ
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 (file)
index 0000000..4db0613
Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/taco.rsi/beeftacosupreme.png differ
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 (file)
index 0000000..014e20c
Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentaco.png differ
diff --git a/Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentacosupreme.png b/Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentacosupreme.png
new file mode 100644 (file)
index 0000000..ac07ed6
Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/taco.rsi/chickentacosupreme.png differ
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 (file)
index 0000000..4a2a605
Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/taco.rsi/fishtaco.png differ
index 6f07c712389b123ad8a95390aa7638e5c31370ac..71bda2cd4223d509c32f1d61a828dc67541cfd01 100644 (file)
@@ -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 (file)
index 0000000..f80673f
Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/taco.rsi/rattaco.png differ
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 (file)
index 979a8a9..0000000
Binary files a/Resources/Textures/Objects/Consumable/Food/taco.rsi/tacoshell_back.png and /dev/null differ
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 (file)
index 4d01f63..0000000
Binary files a/Resources/Textures/Objects/Consumable/Food/taco.rsi/tacoshell_forward.png and /dev/null differ
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 (file)
index 0000000..59c459e
Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/cheese.png differ
diff --git a/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/meta.json
new file mode 100644 (file)
index 0000000..7704812
--- /dev/null
@@ -0,0 +1,23 @@
+{
+  "version": 1,
+  "license": "CC-BY-SA-3.0",
+  "copyright": "Created by TheShuEd, rat Taken from https://github.com/tgstation/tgstation/commit/e15c63d100db65eaaa5231133b8a2662ff439131#diff-8dd94e19fdb2ff341b57e31bce101298 and edited by TheShuEd",
+  "size": {
+    "x": 32,
+    "y": 32
+  },
+  "states": [
+    {
+      "name": "tacoshell_back"
+    },
+    {
+      "name": "tacoshell_forward"
+    },
+    {
+      "name": "cheese"
+    },
+    {
+      "name": "rat"
+    }
+  ]
+}
diff --git a/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/rat.png b/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/rat.png
new file mode 100644 (file)
index 0000000..6dde4d7
Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/rat.png differ
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 (file)
index 0000000..7cd31d3
Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/tacoshell_back.png differ
diff --git a/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/tacoshell_forward.png b/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/tacoshell_forward.png
new file mode 100644 (file)
index 0000000..6c517b8
Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/taco_sequence.rsi/tacoshell_forward.png differ
index 1c4d96d8e15220bde23385b76203d23ffc3d1d70..50882ec82034aaf2cb1f386cdf7453f86fb141c6 100644 (file)
Binary files a/Resources/Textures/Objects/Specific/Hydroponics/pineapple.rsi/slice.png and b/Resources/Textures/Objects/Specific/Hydroponics/pineapple.rsi/slice.png differ