using Content.Shared.Nutrition.Components;
using Content.Shared.Nutrition.EntitySystems;
using Robust.Client.GameObjects;
-using Robust.Shared.Utility;
namespace Content.Client.Nutrition.EntitySystems;
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;
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;
[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)
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);
MergeFlavorProfiles(start, element);
MergeTrash(start, element);
MergeTags(start, element);
+
+ var ev = new FoodSequenceIngredientAddedEvent(start, element, elementProto, user);
+ RaiseLocalEvent(start, ev);
+
QueueDel(element);
return true;
}
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);
_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;
}
}
- private void MergeTrash(Entity<FoodSequenceStartPointComponent> start, Entity<FoodSequenceElementComponent> element)
+ private void MergeTrash(EntityUid start, EntityUid element)
{
if (!TryComp<FoodComponent>(start, out var startFood))
return;
}
}
- 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);
}
}
--- /dev/null
+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;
+}
-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;
}
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;
/// 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.
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.
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
[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;
+ }
}
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;
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);
--- /dev/null
+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;
+ }
+}
--- /dev/null
+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();
+}
--- /dev/null
+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();
+}
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
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
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
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
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
- 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:
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
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
- 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
- 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
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
- 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
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
--- /dev/null
+# 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
FoodTomato: 1
FoodOnionSlice: 2
-- type: microwaveMealRecipe
+- type: microwaveMealRecipe #Added to metamorph recipes
id: RecipeBrainBurger
name: brain burger recipe
result: FoodBurgerBrain
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
--- /dev/null
+# 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
- 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
{
"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"
},
--- /dev/null
+{
+ "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"
+ }
+ ]
+}
},
{
"name": "skewer-snake"
+ },
+ {
+ "name": "skewer-watermelon"
}
]
}
{
"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
--- /dev/null
+{
+ "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"
+ }
+ ]
+}