Cooking Simulator (#1529)
* frying pan start * fix data saving * Refactor cooking system and add localization support Refactored food data handling in the cooking system to use Visuals instead of FoodData on holders, improved food transfer logic, and added popups and examine messages for user feedback. Added English and Russian localization files for cooking examine and meal descriptions, and updated prototype files to increase plate solution volume and add a whitelist for the cooking furnace. * Refactor cooking system solution handling Removed Solution field from CP14FoodData and updated CP14SharedCookingSystem to use solution containers directly. Improved solution transfer, mixing, and overflow handling during cooking. Increased pan max volume from 30 to 100 in cooking_furnace.yml. * Improve cooking system trash handling and update food sprites Enhanced trash distribution in CP14SharedCookingSystem to randomly assign trash to plates, only adding all trash to the last plate. Updated meat_dish and salad prototypes to use new wooden plate sprites. Added wideAnimationRotation and DrainableSolution to cooking_furnace for improved functionality. * Remove unused usings and redundant comments in cooking components Cleaned up CP14 cooking-related components by removing unused using directives and empty XML comments. This improves code readability and maintainability. * Add tag-based cooking requirements and new meal recipes Introduces tag-based cooking requirement classes (TagRequired, TagBlocked, SolutionRequired) and updates the cooking system to support tag checks. Adds new tags for food items, updates food and meal prototypes to include relevant tags, and implements new meal recipes (Zellasian Breakfast, Monster Egg) with corresponding sprites and localization. Also refactors and renames some tag and structure prototype files for better organization. * Refactor and expand CP14 cooking recipes and tags Reworked meal recipes to use tag-based requirements, added new tags for food categorization (meat, cheese, vegetables, etc.), and removed hardcoded entity recipes for ham in cheese and stuffed potato. Updated and added new meal recipes (bread plate, ham in cheese, stuffed potato), localized their names and descriptions, and migrated/added corresponding sprites. Deprecated SolutionRequired requirement, cleaned up unused tags, and improved TagRequired/TagBlocked logic. Updated prototype files to use new tags and added missing tags to food entities. * Refactor and expand green salad recipes and assets Replaces the old green salad entity and workbench recipe with new cooking recipes for green salad and green salad with meat. Updates English and Russian localization, moves and adds new salad textures, and removes obsolete salad assets and trading request. * mashed potatoes * Add mashed potatoes with herbs meal Introduced a new 'mashed potatoes with herbs' meal, including English and Russian localization, recipe definition, and associated sprite. Updated the texture metadata and added the new image asset. * Update dye.yml * Fix frying pan item size and update plate recipe Moved the 'size: Ginormous' property to the correct component in frying_pen.yml. Renamed the plate recipe and result from 'CP14Plate' to 'CP14PlateWooden' in misc.yml for clarity. * Update meals.yml * Update migration.yml * fixes * fix heating food sounds * Nyranu temperature transmission * Update plate.yml * Cooking DoAfter works * burning logic * cooking more work * auto transform transformable * Update CP14SharedCookingSystem.DoAfter.cs * cool burning visuals! * Add MIT license headers to cooking system files Added sublicensing notice and MIT license header to all files in the CP14 cooking system. Also made minor code cleanups, such as removing unnecessary default initializations and improving XML documentation for clarity. * constant heating required * cooking visuals improve! * sandwiches with processed cheese + reagent burnt fuckuping * inhand pan sprites + FIRE fuckup * crafting & buying pan * fix predicting * random food spawner + chef closet * mapping update * Update frying_pen.yml * move WIP to blacksmith lol
59
Content.Client/_CP14/Cooking/CP14ClientCookingSystem.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using System.Numerics;
|
||||
using Content.Shared._CP14.Cooking;
|
||||
using Content.Shared._CP14.Cooking.Components;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Client._CP14.Cooking;
|
||||
|
||||
public sealed class CP14ClientCookingSystem : CP14SharedCookingSystem
|
||||
{
|
||||
[Dependency] private readonly SpriteSystem _sprite = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CP14FoodHolderComponent, AfterAutoHandleStateEvent>(OnAfterHandleState);
|
||||
}
|
||||
|
||||
private void OnAfterHandleState(Entity<CP14FoodHolderComponent> ent, ref AfterAutoHandleStateEvent args)
|
||||
{
|
||||
if (!TryComp<SpriteComponent>(ent, out var sprite))
|
||||
return;
|
||||
|
||||
if (ent.Comp.Visuals is null)
|
||||
return;
|
||||
|
||||
//Remove old layers
|
||||
foreach (var key in ent.Comp.RevealedLayers)
|
||||
{
|
||||
_sprite.RemoveLayer((ent.Owner, sprite), key);
|
||||
}
|
||||
ent.Comp.RevealedLayers.Clear();
|
||||
|
||||
|
||||
//Add new layers
|
||||
var counter = 0;
|
||||
foreach (var layer in ent.Comp.Visuals)
|
||||
{
|
||||
var keyCode = $"cp14-food-layer-{counter}";
|
||||
ent.Comp.RevealedLayers.Add(keyCode);
|
||||
|
||||
_sprite.LayerMapTryGet((ent.Owner, sprite), ent.Comp.TargetLayerMap, out var index, false);
|
||||
|
||||
_sprite.AddBlankLayer((ent.Owner, sprite), index);
|
||||
_sprite.LayerMapSet((ent.Owner, sprite), keyCode, index);
|
||||
_sprite.LayerSetData((ent.Owner, sprite), index, layer);
|
||||
if (_random.Prob(0.5f)) //50% invert chance
|
||||
_sprite.LayerSetScale((ent.Owner, sprite), index, new Vector2(-1, 1));
|
||||
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
}
|
||||
89
Content.Server/_CP14/Cooking/CP14CookingSystem.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using System.Linq;
|
||||
using Content.Server.Temperature.Systems;
|
||||
using Content.Shared._CP14.Cooking;
|
||||
using Content.Shared._CP14.Cooking.Components;
|
||||
using Content.Shared._CP14.Temperature;
|
||||
using Content.Shared.Random.Helpers;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server._CP14.Cooking;
|
||||
|
||||
public sealed class CP14CookingSystem : CP14SharedCookingSystem
|
||||
{
|
||||
[Dependency] private readonly TemperatureSystem _temperature = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CP14RandomFoodDataComponent, MapInitEvent>(OnRandomFoodMapInit);
|
||||
}
|
||||
|
||||
private void OnRandomFoodMapInit(Entity<CP14RandomFoodDataComponent> ent, ref MapInitEvent args)
|
||||
{
|
||||
if (!TryComp<CP14FoodHolderComponent>(ent, out var holder))
|
||||
return;
|
||||
|
||||
if (!_random.Prob(ent.Comp.Prob))
|
||||
return;
|
||||
|
||||
var randomFood = _random.Pick(OrderedRecipes.Where(r => r.FoodType == holder.FoodType).ToList());
|
||||
|
||||
//Name and Description
|
||||
if (randomFood.FoodData.Name is not null)
|
||||
_metaData.SetEntityName(ent, Loc.GetString(randomFood.FoodData.Name));
|
||||
if (randomFood.FoodData.Desc is not null)
|
||||
_metaData.SetEntityDescription(ent, Loc.GetString(randomFood.FoodData.Desc));
|
||||
|
||||
//Visuals
|
||||
holder.Visuals = randomFood.FoodData.Visuals;
|
||||
Dirty(ent.Owner, holder);
|
||||
}
|
||||
|
||||
protected override void OnCookBurned(Entity<CP14FoodCookerComponent> ent, ref CP14BurningDoAfter args)
|
||||
{
|
||||
base.OnCookBurned(ent, ref args);
|
||||
|
||||
if (_random.Prob(ent.Comp.BurntAdditionalSpawnProb))
|
||||
Spawn(ent.Comp.BurntAdditionalSpawn, Transform(ent).Coordinates);
|
||||
}
|
||||
|
||||
protected override void OnCookFinished(Entity<CP14FoodCookerComponent> ent, ref CP14CookingDoAfter args)
|
||||
{
|
||||
base.OnCookFinished(ent, ref args);
|
||||
|
||||
if (args.Cancelled || args.Handled)
|
||||
return;
|
||||
|
||||
TryTransformAll(ent);
|
||||
}
|
||||
|
||||
private void TryTransformAll(Entity<CP14FoodCookerComponent> ent)
|
||||
{
|
||||
if (!_container.TryGetContainer(ent, ent.Comp.ContainerId, out var container))
|
||||
return;
|
||||
|
||||
var containedEntities = container.ContainedEntities.ToList();
|
||||
|
||||
foreach (var contained in containedEntities)
|
||||
{
|
||||
if (!TryComp<CP14TemperatureTransformationComponent>(contained, out var transformable))
|
||||
continue;
|
||||
|
||||
if (!transformable.AutoTransformOnCooked)
|
||||
continue;
|
||||
|
||||
if (transformable.Entries.Count == 0)
|
||||
continue;
|
||||
|
||||
var entry = transformable.Entries[0];
|
||||
|
||||
_temperature.ForceChangeTemperature(contained, entry.TemperatureRange.X);
|
||||
}
|
||||
}
|
||||
}
|
||||
14
Content.Server/_CP14/Cooking/CP14RandomFoodDataComponent.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
namespace Content.Server._CP14.Cooking;
|
||||
|
||||
/// <summary>
|
||||
/// Attempting to add a random dish to CP14FoodHolderComponent
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14CookingSystem))]
|
||||
public sealed partial class CP14RandomFoodDataComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// Chance of food appearing
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float Prob = 0.75f;
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
using System.Linq;
|
||||
using Content.Server.Atmos.Components;
|
||||
using Content.Server.Temperature.Systems;
|
||||
using Content.Shared._CP14.Temperature;
|
||||
using Content.Shared.Chemistry.Components.SolutionManager;
|
||||
using Content.Shared.Chemistry.EntitySystems;
|
||||
using Content.Shared.FixedPoint;
|
||||
using Content.Shared.Placeable;
|
||||
using Content.Shared.Temperature;
|
||||
using Robust.Server.GameObjects;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Server._CP14.Temperature;
|
||||
@@ -16,6 +19,7 @@ public sealed partial class CP14TemperatureSystem : EntitySystem
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly TemperatureSystem _temperature = default!;
|
||||
[Dependency] private readonly TransformSystem _transform = default!;
|
||||
[Dependency] private readonly SharedContainerSystem _container = default!;
|
||||
|
||||
private readonly TimeSpan _updateTick = TimeSpan.FromSeconds(1f);
|
||||
private TimeSpan _timeToNextUpdate = TimeSpan.Zero;
|
||||
@@ -25,6 +29,29 @@ public sealed partial class CP14TemperatureSystem : EntitySystem
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CP14TemperatureTransformationComponent, OnTemperatureChangeEvent>(OnTemperatureChanged);
|
||||
SubscribeLocalEvent<CP14TemperatureTransmissionComponent, OnTemperatureChangeEvent>(OnTemperatureTransmite);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The main idea is that we do not simulate the interaction between the temperature of the container and its contents.
|
||||
/// We directly change the temperature of the entire contents of the container.
|
||||
/// </summary>
|
||||
private void OnTemperatureTransmite(Entity<CP14TemperatureTransmissionComponent> ent,
|
||||
ref OnTemperatureChangeEvent args)
|
||||
{
|
||||
if (!_container.TryGetContainer(ent, ent.Comp.ContainerId, out var container))
|
||||
return;
|
||||
|
||||
var heatAmount = args.TemperatureDelta * _temperature.GetHeatCapacity(ent);
|
||||
|
||||
// copy the list to avoid modifying it while iterating
|
||||
var containedEntities = container.ContainedEntities.ToList();
|
||||
|
||||
var entityCount = containedEntities.Count;
|
||||
foreach (var contained in containedEntities)
|
||||
{
|
||||
_temperature.ChangeHeat(contained, heatAmount / entityCount);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTemperatureChanged(Entity<CP14TemperatureTransformationComponent> start,
|
||||
@@ -36,29 +63,12 @@ public sealed partial class CP14TemperatureSystem : EntitySystem
|
||||
if (args.CurrentTemperature > entry.TemperatureRange.X &&
|
||||
args.CurrentTemperature < entry.TemperatureRange.Y)
|
||||
{
|
||||
if (entry.TransformTo is not null)
|
||||
{
|
||||
var result = SpawnAtPosition(entry.TransformTo, xform.Coordinates);
|
||||
|
||||
//Try putting in container
|
||||
_transform.DropNextTo(result, (start, xform));
|
||||
|
||||
if (_solutionContainer.TryGetSolution(result,
|
||||
start.Comp.Solution,
|
||||
out var resultSoln,
|
||||
out _)
|
||||
&& _solutionContainer.TryGetSolution(start.Owner,
|
||||
start.Comp.Solution,
|
||||
out var startSoln,
|
||||
out var startSolution))
|
||||
{
|
||||
_solutionContainer.RemoveAllSolution(resultSoln.Value); //Remove all YML reagents
|
||||
resultSoln.Value.Comp.Solution.MaxVolume = startSoln.Value.Comp.Solution.MaxVolume;
|
||||
_solutionContainer.TryAddSolution(resultSoln.Value, startSolution);
|
||||
}
|
||||
}
|
||||
if (entry.TransformTo == null)
|
||||
continue;
|
||||
|
||||
SpawnNextToOrDrop(entry.TransformTo, start);
|
||||
Del(start);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -123,11 +133,11 @@ public sealed partial class CP14TemperatureSystem : EntitySystem
|
||||
EntityQueryEnumerator<CP14FlammableSolutionHeaterComponent, ItemPlacerComponent, FlammableComponent>();
|
||||
while (query.MoveNext(out _, out var heater, out var itemPlacer, out var flammable))
|
||||
{
|
||||
if (!flammable.OnFire)
|
||||
continue;
|
||||
|
||||
foreach (var heatingEntity in itemPlacer.PlacedEntities)
|
||||
{
|
||||
if (!flammable.OnFire)
|
||||
continue;
|
||||
|
||||
if (!TryComp<SolutionContainerManagerComponent>(heatingEntity, out var container))
|
||||
continue;
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace Content.Server._CP14.Temperature;
|
||||
|
||||
/// <summary>
|
||||
/// when it receives the temperature, it distributes it among all objects inside the specified container
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14TemperatureSystem))]
|
||||
public sealed partial class CP14TemperatureTransmissionComponent : Component
|
||||
{
|
||||
[DataField("containerId", required: true)]
|
||||
public string ContainerId = string.Empty;
|
||||
}
|
||||
@@ -69,7 +69,7 @@ namespace Content.Shared.Chemistry.Reaction
|
||||
[DataField("impact", serverOnly: true)] public LogImpact Impact = LogImpact.Low;
|
||||
|
||||
// TODO SERV3: Empty on the client, (de)serialize on the server with module manager is server module
|
||||
[DataField("sound", serverOnly: true)] public SoundSpecifier Sound { get; private set; } = new SoundCollectionSpecifier("CP14Bubbles", AudioParams.Default.WithVariation(0.2f));
|
||||
[DataField("sound", serverOnly: true)] public SoundSpecifier? Sound { get; private set; } = new SoundCollectionSpecifier("CP14Bubbles", AudioParams.Default.WithVariation(0.2f)); //CP14 nullable
|
||||
|
||||
/// <summary>
|
||||
/// If true, this reaction will only consume only integer multiples of the reactant amounts. If there are not
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Content.Shared._CP14.Cooking;
|
||||
using Content.Shared.Body.Components;
|
||||
using Content.Shared.FixedPoint;
|
||||
using Content.Shared.Nutrition.EntitySystems;
|
||||
@@ -6,7 +7,7 @@ using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared.Nutrition.Components;
|
||||
|
||||
[RegisterComponent, Access(typeof(FoodSystem), typeof(FoodSequenceSystem))]
|
||||
[RegisterComponent, Access(typeof(FoodSystem), typeof(FoodSequenceSystem), typeof(CP14SharedCookingSystem))]
|
||||
public sealed partial class FoodComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
|
||||
39
Content.Shared/_CP14/Cooking/CP14CookingRecipePrototype.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Cooking.Components;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Cooking;
|
||||
|
||||
[Prototype("CP14CookingRecipe")]
|
||||
public sealed class CP14CookingRecipePrototype : IPrototype
|
||||
{
|
||||
[IdDataField]
|
||||
public string ID { get; private set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// List of conditions that must be met in the set of ingredients for a dish
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public List<CP14CookingCraftRequirement> Requirements = new();
|
||||
|
||||
/// <summary>
|
||||
/// Reagents cannot store all the necessary information about food, so along with the reagents for all the ingredients,
|
||||
/// in this block we add the appearance of the dish, descriptions, and so on.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public CP14FoodData FoodData = new();
|
||||
|
||||
[DataField]
|
||||
public CP14FoodType FoodType = CP14FoodType.Meal;
|
||||
|
||||
[DataField]
|
||||
public TimeSpan CookingTime = TimeSpan.FromSeconds(20f);
|
||||
|
||||
[DataField]
|
||||
public SoundSpecifier CookingAmbient = new SoundPathSpecifier("/Audio/_CP14/Ambience/pan_frying.ogg");
|
||||
}
|
||||
29
Content.Shared/_CP14/Cooking/CP14CookingRequirement.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared.Chemistry.Components;
|
||||
using Content.Shared.Tag;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Cooking;
|
||||
|
||||
/// <summary>
|
||||
/// An abstract condition that is a key element of the system. The more complex the conditions for a recipe,
|
||||
/// the more difficult it is to “get” that recipe by collecting ingredients at random.
|
||||
/// The system automatically calculates the complexity of a recipe using GetComplexity() for each condition.
|
||||
/// </summary>
|
||||
[ImplicitDataDefinitionForInheritors]
|
||||
[MeansImplicitUse]
|
||||
public abstract partial class CP14CookingCraftRequirement
|
||||
{
|
||||
public abstract bool CheckRequirement(IEntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
IReadOnlyList<EntityUid> placedEntities,
|
||||
List<ProtoId<TagPrototype>> placedTags,
|
||||
Solution? solution = null);
|
||||
|
||||
public abstract float GetComplexity();
|
||||
}
|
||||
170
Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.DoAfter.cs
Normal file
@@ -0,0 +1,170 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Cooking.Components;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Temperature;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Serialization;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Shared._CP14.Cooking;
|
||||
|
||||
public abstract partial class CP14SharedCookingSystem
|
||||
{
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
private void InitDoAfter()
|
||||
{
|
||||
SubscribeLocalEvent<CP14FoodCookerComponent, OnTemperatureChangeEvent>(OnTemperatureChange);
|
||||
SubscribeLocalEvent<CP14FoodCookerComponent, EntParentChangedMessage>(OnParentChanged);
|
||||
|
||||
SubscribeLocalEvent<CP14FoodCookerComponent, CP14CookingDoAfter>(OnCookFinished);
|
||||
SubscribeLocalEvent<CP14FoodCookerComponent, CP14BurningDoAfter>(OnCookBurned);
|
||||
}
|
||||
|
||||
private void UpdateDoAfter(float frameTime)
|
||||
{
|
||||
var query = EntityQueryEnumerator<CP14FoodCookerComponent>();
|
||||
while(query.MoveNext(out var uid, out var cooker))
|
||||
{
|
||||
if (_timing.CurTime > cooker.LastHeatingTime + cooker.HeatingFrequencyRequired && _doAfter.IsRunning(cooker.DoAfterId))
|
||||
_doAfter.Cancel(cooker.DoAfterId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected virtual void OnCookBurned(Entity<CP14FoodCookerComponent> ent, ref CP14BurningDoAfter args)
|
||||
{
|
||||
StopCooking(ent);
|
||||
|
||||
if (args.Cancelled || args.Handled)
|
||||
return;
|
||||
|
||||
BurntFood(ent);
|
||||
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
protected virtual void OnCookFinished(Entity<CP14FoodCookerComponent> ent, ref CP14CookingDoAfter args)
|
||||
{
|
||||
StopCooking(ent);
|
||||
|
||||
if (args.Cancelled || args.Handled)
|
||||
return;
|
||||
|
||||
if (!_proto.TryIndex(args.Recipe, out var indexedRecipe))
|
||||
return;
|
||||
|
||||
CookFood(ent, indexedRecipe);
|
||||
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private void StartCooking(Entity<CP14FoodCookerComponent> ent, CP14CookingRecipePrototype recipe)
|
||||
{
|
||||
if (_doAfter.IsRunning(ent.Comp.DoAfterId))
|
||||
return;
|
||||
|
||||
_appearance.SetData(ent, CP14CookingVisuals.Cooking, true);
|
||||
|
||||
var doAfterArgs = new DoAfterArgs(EntityManager, ent, recipe.CookingTime, new CP14CookingDoAfter(recipe.ID), ent)
|
||||
{
|
||||
NeedHand = false,
|
||||
BreakOnWeightlessMove = false,
|
||||
RequireCanInteract = false,
|
||||
};
|
||||
|
||||
_doAfter.TryStartDoAfter(doAfterArgs, out var doAfterId);
|
||||
ent.Comp.DoAfterId = doAfterId;
|
||||
_ambientSound.SetAmbience(ent, true);
|
||||
_ambientSound.SetSound(ent, recipe.CookingAmbient);
|
||||
}
|
||||
|
||||
private void StartBurning(Entity<CP14FoodCookerComponent> ent)
|
||||
{
|
||||
if (_doAfter.IsRunning(ent.Comp.DoAfterId))
|
||||
return;
|
||||
|
||||
_appearance.SetData(ent, CP14CookingVisuals.Burning, true);
|
||||
|
||||
var doAfterArgs = new DoAfterArgs(EntityManager, ent, 20, new CP14BurningDoAfter(), ent)
|
||||
{
|
||||
NeedHand = false,
|
||||
BreakOnWeightlessMove = false,
|
||||
RequireCanInteract = false,
|
||||
};
|
||||
|
||||
_doAfter.TryStartDoAfter(doAfterArgs, out var doAfterId);
|
||||
ent.Comp.DoAfterId = doAfterId;
|
||||
_ambientSound.SetAmbience(ent, true);
|
||||
}
|
||||
|
||||
protected void StopCooking(Entity<CP14FoodCookerComponent> ent)
|
||||
{
|
||||
if (_doAfter.IsRunning(ent.Comp.DoAfterId))
|
||||
_doAfter.Cancel(ent.Comp.DoAfterId);
|
||||
|
||||
_appearance.SetData(ent, CP14CookingVisuals.Cooking, false);
|
||||
_appearance.SetData(ent, CP14CookingVisuals.Burning, false);
|
||||
|
||||
_ambientSound.SetAmbience(ent, false);
|
||||
}
|
||||
|
||||
private void OnTemperatureChange(Entity<CP14FoodCookerComponent> ent, ref OnTemperatureChangeEvent args)
|
||||
{
|
||||
if (!_container.TryGetContainer(ent, ent.Comp.ContainerId, out var container))
|
||||
return;
|
||||
|
||||
if (container.ContainedEntities.Count <= 0 && ent.Comp.FoodData is null)
|
||||
{
|
||||
StopCooking(ent);
|
||||
return;
|
||||
}
|
||||
|
||||
if (args.TemperatureDelta > 0)
|
||||
{
|
||||
ent.Comp.LastHeatingTime = _timing.CurTime;
|
||||
DirtyField(ent.Owner,ent.Comp, nameof(CP14FoodCookerComponent.LastHeatingTime));
|
||||
|
||||
if (!_doAfter.IsRunning(ent.Comp.DoAfterId) && ent.Comp.FoodData is null)
|
||||
{
|
||||
var recipe = GetRecipe(ent);
|
||||
if (recipe is not null)
|
||||
StartCooking(ent, recipe);
|
||||
}
|
||||
else
|
||||
{
|
||||
StartBurning(ent);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
StopCooking(ent);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnParentChanged(Entity<CP14FoodCookerComponent> ent, ref EntParentChangedMessage args)
|
||||
{
|
||||
StopCooking(ent);
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed partial class CP14CookingDoAfter : DoAfterEvent
|
||||
{
|
||||
[DataField]
|
||||
public ProtoId<CP14CookingRecipePrototype> Recipe;
|
||||
|
||||
public CP14CookingDoAfter(ProtoId<CP14CookingRecipePrototype> recipe)
|
||||
{
|
||||
Recipe = recipe;
|
||||
}
|
||||
|
||||
public override DoAfterEvent Clone() => this;
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed partial class CP14BurningDoAfter : SimpleDoAfterEvent;
|
||||
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared._CP14.Cooking.Components;
|
||||
using Content.Shared.Interaction;
|
||||
using Robust.Shared.Containers;
|
||||
|
||||
namespace Content.Shared._CP14.Cooking;
|
||||
|
||||
public abstract partial class CP14SharedCookingSystem
|
||||
{
|
||||
private void InitTransfer()
|
||||
{
|
||||
SubscribeLocalEvent<CP14FoodHolderComponent, AfterInteractEvent>(OnAfterInteract);
|
||||
SubscribeLocalEvent<CP14FoodCookerComponent, AfterInteractEvent>(OnInteractUsing);
|
||||
|
||||
SubscribeLocalEvent<CP14FoodCookerComponent, ContainerIsInsertingAttemptEvent>(OnInsertAttempt);
|
||||
}
|
||||
|
||||
private void OnAfterInteract(Entity<CP14FoodHolderComponent> ent, ref AfterInteractEvent args)
|
||||
{
|
||||
if (!TryComp<CP14FoodCookerComponent>(args.Target, out var cooker))
|
||||
return;
|
||||
|
||||
if (cooker.FoodData is null)
|
||||
return;
|
||||
|
||||
if (ent.Comp.Visuals is not null)
|
||||
return;
|
||||
|
||||
MoveFoodToHolder(ent, (args.Target.Value, cooker));
|
||||
}
|
||||
|
||||
private void OnInteractUsing(Entity<CP14FoodCookerComponent> ent, ref AfterInteractEvent args)
|
||||
{
|
||||
if (!TryComp<CP14FoodHolderComponent>(args.Target, out var holder))
|
||||
return;
|
||||
|
||||
if (holder.Visuals is not null)
|
||||
return;
|
||||
|
||||
if (ent.Comp.FoodData is null)
|
||||
return;
|
||||
|
||||
MoveFoodToHolder((args.Target.Value, holder), ent);
|
||||
}
|
||||
|
||||
private void OnInsertAttempt(Entity<CP14FoodCookerComponent> ent, ref ContainerIsInsertingAttemptEvent args)
|
||||
{
|
||||
if (args.Cancelled)
|
||||
return;
|
||||
|
||||
if (ent.Comp.FoodData is not null)
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("cp14-cooking-popup-not-empty", ("name", MetaData(ent).EntityName)), ent);
|
||||
args.Cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
314
Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.cs
Normal file
@@ -0,0 +1,314 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using System.Linq;
|
||||
using Content.Shared._CP14.Cooking.Components;
|
||||
using Content.Shared.Audio;
|
||||
using Content.Shared.Chemistry.EntitySystems;
|
||||
using Content.Shared.Chemistry.Reagent;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Fluids;
|
||||
using Content.Shared.Nutrition.Components;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Tag;
|
||||
using Content.Shared.Throwing;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.Network;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Shared._CP14.Cooking;
|
||||
|
||||
public abstract partial class CP14SharedCookingSystem : EntitySystem
|
||||
{
|
||||
[Dependency] protected readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] protected readonly SharedContainerSystem _container = default!;
|
||||
[Dependency] protected readonly IRobustRandom _random = default!;
|
||||
[Dependency] protected readonly MetaDataSystem _metaData = default!;
|
||||
[Dependency] private readonly SharedSolutionContainerSystem _solution = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly SharedPuddleSystem _puddle = default!;
|
||||
[Dependency] private readonly INetManager _net = default!;
|
||||
[Dependency] private readonly SharedDoAfterSystem _doAfter = default!;
|
||||
[Dependency] private readonly SharedAmbientSoundSystem _ambientSound = default!;
|
||||
[Dependency] protected readonly SharedAppearanceSystem _appearance = default!;
|
||||
|
||||
/// <summary>
|
||||
/// When overcooking food, we will replace the reagents inside with this reagent.
|
||||
/// </summary>
|
||||
private readonly ProtoId<ReagentPrototype> _burntFoodReagent = "CP14BurntFood";
|
||||
|
||||
/// <summary>
|
||||
/// Stores a list of all recipes sorted by complexity: the most complex ones at the beginning.
|
||||
/// When attempting to cook, the most complex recipes will be checked first,
|
||||
/// gradually moving down to the easiest ones.
|
||||
/// The easiest recipes are usually the most “abstract,”
|
||||
/// so they will be suitable for the largest number of recipes.
|
||||
/// </summary>
|
||||
protected List<CP14CookingRecipePrototype> OrderedRecipes = [];
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
InitTransfer();
|
||||
InitDoAfter();
|
||||
|
||||
CacheAndOrderRecipes();
|
||||
|
||||
SubscribeLocalEvent<PrototypesReloadedEventArgs>(OnPrototypesReloaded);
|
||||
SubscribeLocalEvent<CP14FoodCookerComponent, ExaminedEvent>(OnExaminedEvent);
|
||||
SubscribeLocalEvent<CP14FoodCookerComponent, LandEvent>(OnLand);
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
UpdateDoAfter(frameTime);
|
||||
}
|
||||
|
||||
private void CacheAndOrderRecipes()
|
||||
{
|
||||
OrderedRecipes = _proto.EnumeratePrototypes<CP14CookingRecipePrototype>()
|
||||
.Where(recipe => recipe.Requirements.Count > 0) // Only include recipes with requirements
|
||||
.OrderByDescending(recipe => recipe.Requirements.Sum(condition => condition.GetComplexity()))
|
||||
.ToList();
|
||||
}
|
||||
|
||||
private void OnPrototypesReloaded(PrototypesReloadedEventArgs ev)
|
||||
{
|
||||
if (!ev.WasModified<EntityPrototype>())
|
||||
return;
|
||||
|
||||
CacheAndOrderRecipes();
|
||||
}
|
||||
|
||||
private void OnExaminedEvent(Entity<CP14FoodCookerComponent> ent, ref ExaminedEvent args)
|
||||
{
|
||||
if (ent.Comp.FoodData?.Name is null)
|
||||
return;
|
||||
|
||||
if (!_solution.TryGetSolution(ent.Owner, ent.Comp.SolutionId, out _, out var solution))
|
||||
return;
|
||||
|
||||
if (solution.Volume == 0)
|
||||
return;
|
||||
|
||||
var remaining = solution.Volume;
|
||||
|
||||
args.PushMarkup(Loc.GetString("cp14-cooking-examine",
|
||||
("name", Loc.GetString(ent.Comp.FoodData.Name)),
|
||||
("count", remaining)));
|
||||
}
|
||||
|
||||
private void OnLand(Entity<CP14FoodCookerComponent> ent, ref LandEvent args)
|
||||
{
|
||||
ent.Comp.FoodData = null;
|
||||
Dirty(ent);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Transfer food data from cooker to holder
|
||||
/// </summary>
|
||||
private void MoveFoodToHolder(Entity<CP14FoodHolderComponent> ent, Entity<CP14FoodCookerComponent> cooker)
|
||||
{
|
||||
if (!TryComp<FoodComponent>(ent, out var foodComp))
|
||||
return;
|
||||
|
||||
if (cooker.Comp.FoodData is null)
|
||||
return;
|
||||
|
||||
if (!_solution.TryGetSolution(cooker.Owner, cooker.Comp.SolutionId, out _, out var cookerSolution))
|
||||
return;
|
||||
|
||||
//Solutions
|
||||
if (_solution.TryGetSolution(ent.Owner, foodComp.Solution, out var soln, out var solution))
|
||||
{
|
||||
if (solution.Volume > 0)
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("cp14-cooking-popup-not-empty", ("name", MetaData(ent).EntityName)),
|
||||
ent);
|
||||
return;
|
||||
}
|
||||
|
||||
_solution.TryTransferSolution(soln.Value, cookerSolution, solution.MaxVolume);
|
||||
}
|
||||
|
||||
//Trash
|
||||
//If we have a lot of trash, we put 1 random trash in each plate. If it's a last plate (out of solution in cooker), we put all the remaining trash in it.
|
||||
if (cooker.Comp.FoodData.Trash.Count > 0)
|
||||
{
|
||||
if (cookerSolution.Volume <= 0)
|
||||
{
|
||||
foodComp.Trash.AddRange(cooker.Comp.FoodData.Trash);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_net.IsServer)
|
||||
{
|
||||
var newTrash = _random.Pick(cooker.Comp.FoodData.Trash);
|
||||
cooker.Comp.FoodData.Trash.Remove(newTrash);
|
||||
foodComp.Trash.Add(newTrash);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Name and Description
|
||||
if (cooker.Comp.FoodData.Name is not null)
|
||||
_metaData.SetEntityName(ent, Loc.GetString(cooker.Comp.FoodData.Name));
|
||||
if (cooker.Comp.FoodData.Desc is not null)
|
||||
_metaData.SetEntityDescription(ent, Loc.GetString(cooker.Comp.FoodData.Desc));
|
||||
|
||||
//Flavors
|
||||
EnsureComp<FlavorProfileComponent>(ent, out var flavorComp);
|
||||
foreach (var flavor in cooker.Comp.FoodData.Flavors)
|
||||
{
|
||||
flavorComp.Flavors.Add(flavor);
|
||||
}
|
||||
|
||||
//Visuals
|
||||
ent.Comp.Visuals = cooker.Comp.FoodData.Visuals;
|
||||
|
||||
//Clear cooker data
|
||||
if (cookerSolution.Volume <= 0)
|
||||
cooker.Comp.FoodData = null;
|
||||
|
||||
Dirty(ent);
|
||||
Dirty(cooker);
|
||||
}
|
||||
|
||||
private CP14CookingRecipePrototype? GetRecipe(Entity<CP14FoodCookerComponent> ent)
|
||||
{
|
||||
if (!_container.TryGetContainer(ent, ent.Comp.ContainerId, out var container))
|
||||
return null;
|
||||
|
||||
_solution.TryGetSolution(ent.Owner, ent.Comp.SolutionId, out _, out var solution);
|
||||
|
||||
//Get all tags
|
||||
var allTags = new List<ProtoId<TagPrototype>>();
|
||||
foreach (var contained in container.ContainedEntities)
|
||||
{
|
||||
if (!TryComp<TagComponent>(contained, out var tags))
|
||||
continue;
|
||||
|
||||
allTags.AddRange(tags.Tags);
|
||||
}
|
||||
|
||||
if (OrderedRecipes.Count == 0)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"No cooking recipes found. Please ensure that the CP14CookingRecipePrototype is defined and loaded.");
|
||||
}
|
||||
|
||||
CP14CookingRecipePrototype? selectedRecipe = null;
|
||||
foreach (var recipe in OrderedRecipes)
|
||||
{
|
||||
if (recipe.FoodType != ent.Comp.FoodType)
|
||||
continue;
|
||||
|
||||
var conditionsMet = true;
|
||||
foreach (var condition in recipe.Requirements)
|
||||
{
|
||||
if (!condition.CheckRequirement(EntityManager, _proto, container.ContainedEntities, allTags, solution))
|
||||
{
|
||||
conditionsMet = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!conditionsMet)
|
||||
continue;
|
||||
|
||||
selectedRecipe = recipe;
|
||||
break;
|
||||
}
|
||||
|
||||
return selectedRecipe;
|
||||
}
|
||||
|
||||
protected void CookFood(Entity<CP14FoodCookerComponent> ent, CP14CookingRecipePrototype recipe)
|
||||
{
|
||||
if (!_solution.TryGetSolution(ent.Owner, ent.Comp.SolutionId, out var soln, out var solution))
|
||||
return;
|
||||
|
||||
if (!_container.TryGetContainer(ent, ent.Comp.ContainerId, out var container))
|
||||
return;
|
||||
|
||||
var newData = new CP14FoodData
|
||||
{
|
||||
Visuals = new List<PrototypeLayerData>(recipe.FoodData.Visuals),
|
||||
Trash = new List<EntProtoId>(recipe.FoodData.Trash),
|
||||
Flavors = new HashSet<LocId>(recipe.FoodData.Flavors),
|
||||
Name = recipe.FoodData.Name,
|
||||
Desc = recipe.FoodData.Desc,
|
||||
CurrentRecipe = recipe
|
||||
};
|
||||
|
||||
newData.Name = recipe.FoodData.Name;
|
||||
newData.Desc = recipe.FoodData.Desc;
|
||||
|
||||
//Process entities
|
||||
foreach (var contained in container.ContainedEntities)
|
||||
{
|
||||
if (TryComp<FoodComponent>(contained, out var food))
|
||||
{
|
||||
//Merge trash
|
||||
newData.Trash.AddRange(food.Trash);
|
||||
|
||||
//Merge solutions
|
||||
if (_solution.TryGetSolution(contained, food.Solution, out _, out var foodSolution))
|
||||
{
|
||||
_solution.TryMixAndOverflow(soln.Value, foodSolution, solution.MaxVolume, out var overflowed);
|
||||
if (overflowed is not null)
|
||||
{
|
||||
_puddle.TrySplashSpillAt(ent, Transform(ent).Coordinates, overflowed, out _);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (TryComp<FlavorProfileComponent>(contained, out var flavorComp))
|
||||
{
|
||||
//Merge flavors
|
||||
foreach (var flavor in flavorComp.Flavors)
|
||||
{
|
||||
newData.Flavors.Add(flavor);
|
||||
}
|
||||
}
|
||||
|
||||
QueueDel(contained);
|
||||
}
|
||||
|
||||
if (solution.Volume <= 0)
|
||||
return;
|
||||
|
||||
ent.Comp.FoodData = newData;
|
||||
Dirty(ent);
|
||||
}
|
||||
|
||||
protected void BurntFood(Entity<CP14FoodCookerComponent> ent)
|
||||
{
|
||||
if (ent.Comp.FoodData is null)
|
||||
return;
|
||||
|
||||
if (!_solution.TryGetSolution(ent.Owner, ent.Comp.SolutionId, out var soln, out var solution))
|
||||
return;
|
||||
|
||||
//Brown visual
|
||||
foreach (var visuals in ent.Comp.FoodData.Visuals)
|
||||
{
|
||||
visuals.Color = Color.FromHex("#212121");
|
||||
}
|
||||
|
||||
ent.Comp.FoodData.Name = Loc.GetString("cp14-meal-recipe-burned-trash-name");
|
||||
ent.Comp.FoodData.Desc = Loc.GetString("cp14-meal-recipe-burned-trash-desc");
|
||||
|
||||
var replacedVolume = solution.Volume / 2;
|
||||
solution.SplitSolution(replacedVolume);
|
||||
solution.AddReagent(_burntFoodReagent, replacedVolume);
|
||||
|
||||
DirtyField(ent.Owner, ent.Comp, nameof(CP14FoodCookerComponent.FoodData));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared.DoAfter;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._CP14.Cooking.Components;
|
||||
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(fieldDeltas: true), Access(typeof(CP14SharedCookingSystem))]
|
||||
public sealed partial class CP14FoodCookerComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// What food is currently stored here?
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public CP14FoodData? FoodData;
|
||||
|
||||
[DataField(required: true)]
|
||||
public CP14FoodType FoodType;
|
||||
|
||||
[DataField]
|
||||
public string ContainerId;
|
||||
|
||||
[DataField]
|
||||
public string? SolutionId;
|
||||
|
||||
public DoAfterId? DoAfterId = null;
|
||||
|
||||
/// <summary>
|
||||
/// The moment in time when this entity was last heated. Used for calculations when DoAfter cooking should be reset.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public TimeSpan LastHeatingTime = TimeSpan.Zero;
|
||||
|
||||
/// <summary>
|
||||
/// How often do you need to heat this entity so that doAfter does not reset?
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Ideally, this system should check that the Cooker temperature is within certain limits,
|
||||
/// but at the moment the entire temperature system is a terrible mess that we don't want to get deeply involved with,
|
||||
/// so we simplify the simulation by simply requiring the heating action to be performed.
|
||||
/// We don't care how much it heats up, we care how long it takes.
|
||||
/// </remarks>
|
||||
[DataField]
|
||||
public TimeSpan HeatingFrequencyRequired = TimeSpan.FromSeconds(2f);
|
||||
|
||||
[DataField]
|
||||
public EntProtoId? BurntAdditionalSpawn = "CP14Fire";
|
||||
|
||||
[DataField]
|
||||
public float BurntAdditionalSpawnProb = 0.2f;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
[DataDefinition]
|
||||
public sealed partial class CP14FoodData
|
||||
{
|
||||
[DataField]
|
||||
public ProtoId<CP14CookingRecipePrototype>? CurrentRecipe;
|
||||
|
||||
[DataField]
|
||||
public LocId? Name;
|
||||
|
||||
[DataField]
|
||||
public LocId? Desc;
|
||||
|
||||
[DataField]
|
||||
public List<PrototypeLayerData> Visuals = new();
|
||||
|
||||
[DataField]
|
||||
public List<EntProtoId> Trash = new();
|
||||
|
||||
[DataField]
|
||||
public HashSet<LocId> Flavors = new();
|
||||
}
|
||||
|
||||
public enum CP14FoodType
|
||||
{
|
||||
Meal,
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum CP14CookingVisuals : byte
|
||||
{
|
||||
Cooking,
|
||||
Burning,
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared._CP14.Cooking.Components;
|
||||
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true), Access(typeof(CP14SharedCookingSystem))]
|
||||
public sealed partial class CP14FoodHolderComponent : Component
|
||||
{
|
||||
[DataField, AutoNetworkedField]
|
||||
public List<PrototypeLayerData>? Visuals;
|
||||
|
||||
[DataField(required: true)]
|
||||
public CP14FoodType FoodType;
|
||||
|
||||
[DataField]
|
||||
public string? SolutionId;
|
||||
|
||||
/// <summary>
|
||||
/// target layer, where new layers will be added. This allows you to control the order of generative layers and static layers.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public string TargetLayerMap = "cp14_foodLayers";
|
||||
|
||||
public HashSet<string> RevealedLayers = new();
|
||||
}
|
||||
27
Content.Shared/_CP14/Cooking/Requirements/AlwaysMet.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared.Chemistry.Components;
|
||||
using Content.Shared.Tag;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Cooking.Requirements;
|
||||
|
||||
public sealed partial class AlwaysMet : CP14CookingCraftRequirement
|
||||
{
|
||||
public override bool CheckRequirement(IEntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
IReadOnlyList<EntityUid> placedEntities,
|
||||
List<ProtoId<TagPrototype>> placedTags,
|
||||
Solution? solution = null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override float GetComplexity()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
36
Content.Shared/_CP14/Cooking/Requirements/TagBlocked.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared.Chemistry.Components;
|
||||
using Content.Shared.Tag;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Cooking.Requirements;
|
||||
|
||||
public sealed partial class TagBlocked : CP14CookingCraftRequirement
|
||||
{
|
||||
[DataField(required: true)]
|
||||
public HashSet<ProtoId<TagPrototype>> Tags = default!;
|
||||
|
||||
public override bool CheckRequirement(IEntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
IReadOnlyList<EntityUid> placedEntities,
|
||||
List<ProtoId<TagPrototype>> placedTags,
|
||||
Solution? solution = null)
|
||||
{
|
||||
foreach (var placedTag in placedTags)
|
||||
{
|
||||
if (Tags.Contains(placedTag))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override float GetComplexity()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
56
Content.Shared/_CP14/Cooking/Requirements/TagRequired.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* This file is sublicensed under MIT License
|
||||
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
||||
*/
|
||||
|
||||
using Content.Shared.Chemistry.Components;
|
||||
using Content.Shared.Tag;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.Cooking.Requirements;
|
||||
|
||||
public sealed partial class TagRequired : CP14CookingCraftRequirement
|
||||
{
|
||||
/// <summary>
|
||||
/// Any of this tags accepted
|
||||
/// </summary>
|
||||
[DataField(required: true)]
|
||||
public List<ProtoId<TagPrototype>> Tags = default!;
|
||||
|
||||
[DataField]
|
||||
public byte Min = 1;
|
||||
|
||||
[DataField]
|
||||
public byte Max = 255;
|
||||
|
||||
[DataField]
|
||||
public bool AllowOtherTags = true;
|
||||
|
||||
public override bool CheckRequirement(IEntityManager entManager,
|
||||
IPrototypeManager protoManager,
|
||||
IReadOnlyList<EntityUid> placedEntities,
|
||||
List<ProtoId<TagPrototype>> placedTags,
|
||||
Solution? solution = null)
|
||||
{
|
||||
var count = 0;
|
||||
foreach (var placedTag in placedTags)
|
||||
{
|
||||
if (Tags.Contains(placedTag))
|
||||
{
|
||||
count++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!AllowOtherTags)
|
||||
return false; // If we don't allow other tags, and we found one that isn't in the required list, fail.
|
||||
}
|
||||
}
|
||||
|
||||
return count >= Min && count <= Max;
|
||||
}
|
||||
|
||||
public override float GetComplexity()
|
||||
{
|
||||
return Min;
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,13 @@
|
||||
using System.Numerics;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._CP14.Temperature;
|
||||
namespace Content.Shared._CP14.Temperature;
|
||||
|
||||
/// <summary>
|
||||
/// passively returns the solution temperature to the standard
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14TemperatureSystem))]
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class CP14TemperatureTransformationComponent : Component
|
||||
{
|
||||
[DataField(required: true)]
|
||||
@@ -17,6 +18,12 @@ public sealed partial class CP14TemperatureTransformationComponent : Component
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public string Solution = "food";
|
||||
|
||||
/// <summary>
|
||||
/// The transformation will occur instantly if the entity was in FoodCookerComponent at the moment cooking ended.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool AutoTransformOnCooked = true;
|
||||
}
|
||||
|
||||
[DataRecord]
|
||||
@@ -23,6 +23,11 @@
|
||||
copyright: 'by be-steele of Freesound.org.'
|
||||
source: "https://freesound.org/people/be-steele/sounds/130753/"
|
||||
|
||||
- files: ["pan_frying.ogg"]
|
||||
license: "CC0-1.0"
|
||||
copyright: 'by NachtmahrTV of Freesound.org.'
|
||||
source: "https://freesound.org/people/NachtmahrTV/sounds/571670/"
|
||||
|
||||
- files: ["blood_moon_raise.ogg"]
|
||||
license: "CC-BY-4.0"
|
||||
copyright: 'by xkeril of Freesound.org.'
|
||||
|
||||
BIN
Resources/Audio/_CP14/Ambience/pan_frying.ogg
Normal file
@@ -111,4 +111,9 @@
|
||||
- files: ["heartbeat.ogg"]
|
||||
license: "CC0-1.0"
|
||||
copyright: 'Created by MickBoere on Freesound.org'
|
||||
source: "https://freesound.org/people/MickBoere/sounds/276578/"
|
||||
source: "https://freesound.org/people/MickBoere/sounds/276578/"
|
||||
|
||||
- files: ["pan_open.ogg", "pan_close.ogg"]
|
||||
license: "CC0-1.0"
|
||||
copyright: 'Created by RossBell on Freesound.org'
|
||||
source: "https://freesound.org/people/RossBell/sounds/389428/"
|
||||
BIN
Resources/Audio/_CP14/Effects/pan_close.ogg
Normal file
BIN
Resources/Audio/_CP14/Effects/pan_open.ogg
Normal file
2
Resources/Locale/en-US/_CP14/cooking/examine.ftl
Normal file
@@ -0,0 +1,2 @@
|
||||
cp14-cooking-examine = Here is [color=gold]{$name}[/color]. Remainig: [color=gold]{$count}u[/color]
|
||||
cp14-cooking-popup-not-empty = First, remove everything from {$name}!
|
||||
41
Resources/Locale/en-US/_CP14/cooking/meals.ftl
Normal file
@@ -0,0 +1,41 @@
|
||||
cp14-meal-recipe-trash-name = inedible slop
|
||||
cp14-meal-recipe-trash-desc = One glance makes you feel nauseous.
|
||||
|
||||
cp14-meal-recipe-burned-trash-name = burnt mass
|
||||
cp14-meal-recipe-burned-trash-desc = This could have been a delicious meal, but the cook overdid it with the heat treatment.
|
||||
|
||||
cp14-meal-recipe-green-salad-name = vegetable salad
|
||||
cp14-meal-recipe-green-salad-desc = Green salad made from various herbs and vegetables.
|
||||
|
||||
cp14-meal-recipe-green-salad-meat-name = vegetable salad with meat
|
||||
cp14-meal-recipe-green-salad-meat-desc = Green salad made from various herbs and vegetables, with added meat for extra nutrition.
|
||||
|
||||
cp14-meal-recipe-zellasian-breakfast-name =zellasian breakfast
|
||||
cp14-meal-recipe-zellasian-breakfast-desc = Scrambled eggs with meat and bread. Delicious, traditional, consistent.
|
||||
|
||||
cp14-meal-recipe-monster-egg-name = monstrous omelet
|
||||
cp14-meal-recipe-monster-egg-desc = A terrifying combination of monster meat and fried eggs. Thankfully, these aren't monster eggs.
|
||||
|
||||
cp14-meal-recipe-bread-plate-name = bread plate
|
||||
cp14-meal-recipe-bread-plate-desc = Bread, bread, and only bread. Nothing but bread.
|
||||
|
||||
cp14-meal-recipe-pig-cheese-name = ham in cheese
|
||||
cp14-meal-recipe-pig-cheese-desc = Juicy and oozy ham, in cheese and lettuce leaves. Just like in the best restaurants.
|
||||
|
||||
cp14-meal-recipe-stuffed-potato-name = stuffed cheese potato
|
||||
cp14-meal-recipe-stuffed-potato-desc = Potatoes stuffed with stringy cheese and slices of meat.
|
||||
|
||||
cp14-meal-recipe-meat-plate-name = meat plate
|
||||
cp14-meal-recipe-meat-plate-desc = For real beasts. For those who need nothing but meat.
|
||||
|
||||
cp14-meal-recipe-mashed-potato-meat-name = mashed potatoes with meat
|
||||
cp14-meal-recipe-mashed-potato-meat-desc = Today we have morally smashed potatoes on plate. The meat next to them, however, looks more optimistic.
|
||||
|
||||
cp14-meal-recipe-mashed-potato-salad-name = mashed potatoes with herbs
|
||||
cp14-meal-recipe-mashed-potato-salad-desc = Today we have morally smashed potatoes on plate. Their sadness is embellished with greens.
|
||||
|
||||
cp14-meal-recipe-mashed-potato-name = mashed potatoes
|
||||
cp14-meal-recipe-mashed-potato-desc = Today we have morally smashed potatoes on plate.
|
||||
|
||||
cp14-meal-recipe-cheese-bread-name = sandwiches with processed cheese
|
||||
cp14-meal-recipe-cheese-bread-desc = Crispy toasted bread with melted, stringy hot cheese on top.
|
||||
@@ -30,10 +30,10 @@ cp14-job-desc-adventurer = A hunter for thrills, riches and fame, constantly ris
|
||||
cp14-job-name-alchemist = Alchemist
|
||||
cp14-job-desc-alchemist = A scientist of sorts, exploring the nature of substances. Create poisons and medicines from numerous natural plants and ingredients and earn money by selling them to people in need.
|
||||
|
||||
cp14-job-name-innkeeper = Innkeeper [Early WIP]
|
||||
cp14-job-name-innkeeper = Innkeeper
|
||||
cp14-job-desc-innkeeper = Anywhere in Sylate there will be people looking to drink and relax. And you can capitalize on that desire! Find a way to provide people with good rest, food and drink.
|
||||
|
||||
cp14-job-name-blacksmith = Blacksmith
|
||||
cp14-job-name-blacksmith = Blacksmith [Early WIP]
|
||||
cp14-job-desc-blacksmith = Create and improve equipment for everyone in need! You have the power of metal and fire in your hands, and only you know how to use them carefully to create masterpieces.
|
||||
|
||||
cp14-job-name-apprentice = Apprentice
|
||||
|
||||
2
Resources/Locale/ru-RU/_CP14/cooking/examine.ftl
Normal file
@@ -0,0 +1,2 @@
|
||||
cp14-cooking-examine = Здесь находится [color=gold]{$name}[/color]. Осталось: [color=gold]{$count}u[/color]
|
||||
cp14-cooking-popup-not-empty = Сначала уберите все из {$name}!
|
||||
41
Resources/Locale/ru-RU/_CP14/cooking/meals.ftl
Normal file
@@ -0,0 +1,41 @@
|
||||
cp14-meal-recipe-trash-name = несьедобная бурда
|
||||
cp14-meal-recipe-trash-desc = Один взгляд вызывает у вас рвотные спазмы.
|
||||
|
||||
cp14-meal-recipe-burned-trash-name = сгоревшая масса
|
||||
cp14-meal-recipe-burned-trash-desc = Это могло быть вкусной едой, но повар перестарался с термической обработкой.
|
||||
|
||||
cp14-meal-recipe-green-salad-name = овощной салат
|
||||
cp14-meal-recipe-green-salad-desc = Зеленый салат из различных трав и овощей.
|
||||
|
||||
cp14-meal-recipe-green-salad-meat-name = овощной салат с мясом
|
||||
cp14-meal-recipe-green-salad-meat-desc = Зеленый салат из различных трав и овощей, с добавлением мяска для дополнительной питательности.
|
||||
|
||||
cp14-meal-recipe-zellasian-breakfast-name = зелласианский завтрак
|
||||
cp14-meal-recipe-zellasian-breakfast-desc = Яишница с мясом и хлебом. Вкусно, традиционно, стабильно.
|
||||
|
||||
cp14-meal-recipe-monster-egg-name = чудовищный омлет
|
||||
cp14-meal-recipe-monster-egg-desc = Ужасающее сочетание мяса монстров и глазуньи. Хорошо, что это все таки не яйца монстров.
|
||||
|
||||
cp14-meal-recipe-bread-plate-name = хлебная тарелка
|
||||
cp14-meal-recipe-bread-plate-desc = Хлеб, хлеб и только хлеб. Ничего кроме хлеба.
|
||||
|
||||
cp14-meal-recipe-pig-cheese-name = сырная свинья
|
||||
cp14-meal-recipe-pig-cheese-desc = Сочный и нежный окорок, в сыре и листьях салата. Как в лучших ресторанах.
|
||||
|
||||
cp14-meal-recipe-stuffed-potato-name = запеченый сырный картофель
|
||||
cp14-meal-recipe-stuffed-potato-desc = Картошка, фаршированная тягучим сыром и мясными ломтиками.
|
||||
|
||||
cp14-meal-recipe-meat-plate-name = мясная тарелка
|
||||
cp14-meal-recipe-meat-plate-desc = Для настоящих зверей. Для тех, кому кроме мяса ничего не нужно.
|
||||
|
||||
cp14-meal-recipe-mashed-potato-meat-name = картофельная пюрешка с мясом
|
||||
cp14-meal-recipe-mashed-potato-meat-desc = Сегодня у нас на столе морально подавленный картофель. Мясо рядом, тем не менее, выглядит более оптимистично.
|
||||
|
||||
cp14-meal-recipe-mashed-potato-salad-name = картофельная пюрешка с зеленью
|
||||
cp14-meal-recipe-mashed-potato-salad-desc = Сегодня у нас на столе морально подавленный картофель. Ее грусть приукрашена зеленью.
|
||||
|
||||
cp14-meal-recipe-mashed-potato-name = картофельная пюрешка
|
||||
cp14-meal-recipe-mashed-potato-desc = Сегодня у нас на столе морально подавленный картофель.
|
||||
|
||||
cp14-meal-recipe-cheese-bread-name = бутерброды с плавленным сыром
|
||||
cp14-meal-recipe-cheese-bread-desc = Хрустящий поджаренный хлеб, с таящим, тянущимся горячим сыром сверху.
|
||||
@@ -30,10 +30,10 @@ cp14-job-desc-adventurer = Охотник за острыми эмоциями,
|
||||
cp14-job-name-alchemist = Алхимик
|
||||
cp14-job-desc-alchemist = В своем роде ученый, исследующий природу веществ. Создавайте яды и лекарства, из многочисленных природных растений и ингредиентов, и зарабатывайте деньги, продавая их нуждающимся.
|
||||
|
||||
cp14-job-name-innkeeper = Трактирщик [Early WIP]
|
||||
cp14-job-name-innkeeper = Трактирщик
|
||||
cp14-job-desc-innkeeper = В любом месте Силейты найдутся желающие выпить и отдохнуть. И вы можете заработать на этом желании! Найдите способ обеспечить людей хорошим отдыхом, едой и выпивкой.
|
||||
|
||||
cp14-job-name-blacksmith = Кузнец
|
||||
cp14-job-name-blacksmith = Кузнец [Early WIP]
|
||||
cp14-job-desc-blacksmith = Создавайте и улучшайте экипировку для всех нуждающихся! В ваших руках мощь металла и огня, и только вы знаете как аккуратно использовать их, чтобы создавать шедевры.
|
||||
|
||||
cp14-job-name-apprentice = Подмастерье
|
||||
|
||||
@@ -4,8 +4,8 @@ meta:
|
||||
engineVersion: 264.0.0
|
||||
forkId: ""
|
||||
forkVersion: ""
|
||||
time: 07/11/2025 11:56:20
|
||||
entityCount: 14817
|
||||
time: 07/16/2025 04:54:40
|
||||
entityCount: 14827
|
||||
maps:
|
||||
- 1
|
||||
grids:
|
||||
@@ -799,11 +799,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: -12.38047,-29.118898
|
||||
parent: 1
|
||||
- uid: 28
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -14.360294,-14.934297
|
||||
parent: 1
|
||||
- uid: 29
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -45644,11 +45639,6 @@ entities:
|
||||
parent: 1
|
||||
- proto: CP14FoodApple
|
||||
entities:
|
||||
- uid: 8722
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -14.461581,-16.665932
|
||||
parent: 1
|
||||
- uid: 8723
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -45659,10 +45649,10 @@ entities:
|
||||
- type: Transform
|
||||
pos: -17.664963,-19.691994
|
||||
parent: 1
|
||||
- uid: 8725
|
||||
- uid: 9676
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -10.379791,-23.153708
|
||||
pos: -14.689453,-16.273108
|
||||
parent: 1
|
||||
- uid: 11643
|
||||
components:
|
||||
@@ -45688,11 +45678,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: -8.455805,-4.242589
|
||||
parent: 1
|
||||
- uid: 8729
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -4.64024,-22.501534
|
||||
parent: 1
|
||||
- uid: 8730
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -45710,11 +45695,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: -14.427665,5.521161
|
||||
parent: 1
|
||||
- uid: 8733
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -7.4199834,-22.816376
|
||||
parent: 1
|
||||
- proto: CP14FoodCabbage
|
||||
entities:
|
||||
- uid: 8734
|
||||
@@ -45802,11 +45782,6 @@ entities:
|
||||
enabled: False
|
||||
- proto: CP14FoodMeatLambCooked
|
||||
entities:
|
||||
- uid: 8751
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -7.3074436,-23.187439
|
||||
parent: 1
|
||||
- uid: 8752
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -45819,11 +45794,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: -17.282326,-21.007586
|
||||
parent: 1
|
||||
- uid: 8754
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -4.572716,-23.311129
|
||||
parent: 1
|
||||
- proto: CP14FoodPieApple
|
||||
entities:
|
||||
- uid: 8758
|
||||
@@ -45831,13 +45801,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: -17.327341,-20.09679
|
||||
parent: 1
|
||||
- proto: CP14FoodPieFish
|
||||
entities:
|
||||
- uid: 8759
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -11.595931,-21.455805
|
||||
parent: 1
|
||||
- proto: CP14FoodPotatoHot
|
||||
entities:
|
||||
- uid: 7230
|
||||
@@ -45855,6 +45818,53 @@ entities:
|
||||
- type: Transform
|
||||
pos: 17.61832,-16.268383
|
||||
parent: 1
|
||||
- proto: CP14Fork
|
||||
entities:
|
||||
- uid: 9668
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -7.782056,-22.78113
|
||||
parent: 1
|
||||
- uid: 9669
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -7.320888,-23.287128
|
||||
parent: 1
|
||||
- uid: 9670
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -4.598874,-22.80362
|
||||
parent: 1
|
||||
- uid: 9671
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -1.4606848,-23.590725
|
||||
parent: 1
|
||||
- uid: 9674
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -14.399505,-16.982975
|
||||
parent: 1
|
||||
- uid: 9675
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -14.389506,-16.803066
|
||||
parent: 1
|
||||
- proto: CP14FryingPan
|
||||
entities:
|
||||
- uid: 8722
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -15.524707,-19.24207
|
||||
parent: 1
|
||||
- type: CollisionWake
|
||||
enabled: False
|
||||
- proto: CP14Furnace
|
||||
entities:
|
||||
- uid: 2
|
||||
@@ -45870,6 +45880,9 @@ entities:
|
||||
- type: Transform
|
||||
pos: -15.5,-19.5
|
||||
parent: 1
|
||||
- type: ItemPlacer
|
||||
placedEntities:
|
||||
- 8722
|
||||
- uid: 4
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -46011,6 +46024,18 @@ entities:
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -5.5,-40.5
|
||||
parent: 1
|
||||
- proto: CP14GoldChest
|
||||
entities:
|
||||
- uid: 9665
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -5.5,18.5
|
||||
parent: 1
|
||||
- uid: 9666
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.5,19.5
|
||||
parent: 1
|
||||
- proto: CP14GreenBottle
|
||||
entities:
|
||||
- uid: 8816
|
||||
@@ -47259,7 +47284,42 @@ entities:
|
||||
- type: Transform
|
||||
pos: -23.5,-20.5
|
||||
parent: 1
|
||||
- proto: CP14Plate
|
||||
- proto: CP14PlateGold
|
||||
entities:
|
||||
- uid: 28
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 16.62023,-16.163067
|
||||
parent: 1
|
||||
- proto: CP14PlateIron
|
||||
entities:
|
||||
- uid: 8751
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -13.513987,-23.309616
|
||||
parent: 1
|
||||
- type: CollisionWake
|
||||
enabled: False
|
||||
- uid: 9667
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -13.817682,-23.42206
|
||||
parent: 1
|
||||
- type: CollisionWake
|
||||
enabled: False
|
||||
- proto: CP14PlatePie
|
||||
entities:
|
||||
- uid: 9054
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -14.687898,-20.121904
|
||||
parent: 1
|
||||
- uid: 9055
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -14.327769,-20.256838
|
||||
parent: 1
|
||||
- proto: CP14PlateWooden
|
||||
entities:
|
||||
- uid: 9050
|
||||
components:
|
||||
@@ -47281,17 +47341,32 @@ entities:
|
||||
- type: Transform
|
||||
pos: -14.597865,-19.278576
|
||||
parent: 1
|
||||
- proto: CP14PlatePie
|
||||
- proto: CP14PlateWoodenRandom
|
||||
entities:
|
||||
- uid: 9054
|
||||
- uid: 8725
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -14.687898,-20.121904
|
||||
pos: -7.6855574,-22.511265
|
||||
parent: 1
|
||||
- uid: 9055
|
||||
- uid: 8729
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -14.327769,-20.256838
|
||||
pos: -4.5473676,-22.488777
|
||||
parent: 1
|
||||
- uid: 8733
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -1.7128735,-23.354593
|
||||
parent: 1
|
||||
- uid: 8754
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -7.2581334,-22.949797
|
||||
parent: 1
|
||||
- uid: 8759
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -10.553796,-23.287128
|
||||
parent: 1
|
||||
- proto: CP14PortalFrameCrystal
|
||||
entities:
|
||||
@@ -63608,11 +63683,6 @@ entities:
|
||||
parent: 1
|
||||
- proto: CP14SackFarmingSeedFull
|
||||
entities:
|
||||
- uid: 15063
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -19.5,-14.5
|
||||
parent: 1
|
||||
- uid: 15064
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -64285,6 +64355,20 @@ entities:
|
||||
pos: 24.655243,14.690253
|
||||
parent: 1
|
||||
- type: DamagedByContact
|
||||
- proto: CP14Spoon
|
||||
entities:
|
||||
- uid: 9672
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -14.449496,-17.202866
|
||||
parent: 1
|
||||
- uid: 9673
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -15.403179,-17.420208
|
||||
parent: 1
|
||||
- proto: CP14SteelBeerMug
|
||||
entities:
|
||||
- uid: 11423
|
||||
@@ -65893,13 +65977,6 @@ entities:
|
||||
parent: 1
|
||||
- type: Fixtures
|
||||
fixtures: {}
|
||||
- uid: 11746
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -13.5,-19.5
|
||||
parent: 1
|
||||
- type: Fixtures
|
||||
fixtures: {}
|
||||
- uid: 11747
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -65917,6 +65994,13 @@ entities:
|
||||
fixtures: {}
|
||||
- proto: CP14WallmountBarShelfB
|
||||
entities:
|
||||
- uid: 9677
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -13.5,-19.5
|
||||
parent: 1
|
||||
- type: Fixtures
|
||||
fixtures: {}
|
||||
- uid: 11683
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -66817,14 +66901,6 @@ entities:
|
||||
parent: 1
|
||||
- type: Fixtures
|
||||
fixtures: {}
|
||||
- uid: 11907
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -17.5,-17.5
|
||||
parent: 1
|
||||
- type: Fixtures
|
||||
fixtures: {}
|
||||
- uid: 11908
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -83544,11 +83620,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: 3.5,18.5
|
||||
parent: 1
|
||||
- uid: 11704
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -5.5,18.5
|
||||
parent: 1
|
||||
- uid: 11717
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -83559,11 +83630,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: -1.5,21.5
|
||||
parent: 1
|
||||
- uid: 15057
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.5,19.5
|
||||
parent: 1
|
||||
- uid: 15058
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -83642,6 +83708,20 @@ entities:
|
||||
- type: Transform
|
||||
pos: 31.5,16.5
|
||||
parent: 1
|
||||
- proto: CP14WoodenClosetChefFilled
|
||||
entities:
|
||||
- uid: 9663
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -14.5,-15.5
|
||||
parent: 1
|
||||
- uid: 9664
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -17.5,-17.5
|
||||
parent: 1
|
||||
- proto: CP14WoodenClosetGuildmasterFilled
|
||||
entities:
|
||||
- uid: 15089
|
||||
@@ -84118,6 +84198,8 @@ entities:
|
||||
- 8748
|
||||
- 8749
|
||||
- 8750
|
||||
- 8751
|
||||
- 9667
|
||||
- proto: CP14WorkbenchFurnace
|
||||
entities:
|
||||
- uid: 15176
|
||||
|
||||
@@ -4,8 +4,8 @@ meta:
|
||||
engineVersion: 264.0.0
|
||||
forkId: ""
|
||||
forkVersion: ""
|
||||
time: 07/11/2025 11:57:25
|
||||
entityCount: 19196
|
||||
time: 07/16/2025 04:57:56
|
||||
entityCount: 19206
|
||||
maps:
|
||||
- 2
|
||||
grids:
|
||||
@@ -59352,7 +59352,7 @@ entities:
|
||||
pos: 14.5,-24.5
|
||||
parent: 2
|
||||
- type: Door
|
||||
secondsUntilStateChange: -13667.896
|
||||
secondsUntilStateChange: -13845.33
|
||||
state: Closing
|
||||
- uid: 1792
|
||||
components:
|
||||
@@ -60893,12 +60893,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: 12.5,-17.5
|
||||
parent: 2
|
||||
- uid: 5722
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: -1.5,-27.5
|
||||
parent: 2
|
||||
- proto: CP14FloorTorch
|
||||
entities:
|
||||
- uid: 6917
|
||||
@@ -76245,39 +76239,13 @@ entities:
|
||||
- type: Transform
|
||||
pos: 41.42377,-34.32005
|
||||
parent: 2
|
||||
- proto: CP14FoodBreadSlice
|
||||
entities:
|
||||
- uid: 2318
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 7.308227,-21.98852
|
||||
parent: 2
|
||||
- proto: CP14FoodCabbageSlice
|
||||
entities:
|
||||
- uid: 2320
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.63027596,-22.27597
|
||||
parent: 2
|
||||
- proto: CP14FoodCheesePart
|
||||
entities:
|
||||
- uid: 2319
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.5515399,-25.286625
|
||||
parent: 2
|
||||
- uid: 2321
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 9.42285,-24.259884
|
||||
parent: 2
|
||||
- proto: CP14FoodCheeseSlice
|
||||
entities:
|
||||
- uid: 2324
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 7.381567,-21.496378
|
||||
parent: 2
|
||||
- proto: CP14FoodMeatDino
|
||||
entities:
|
||||
- uid: 2507
|
||||
@@ -76285,6 +76253,13 @@ entities:
|
||||
- type: Transform
|
||||
pos: 3.0940614,-30.361221
|
||||
parent: 2
|
||||
- proto: CP14FoodMeatFlemHeadCooked
|
||||
entities:
|
||||
- uid: 11886
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 5.138539,-32.355686
|
||||
parent: 2
|
||||
- proto: CP14FoodMeatFrogLeg
|
||||
entities:
|
||||
- uid: 2509
|
||||
@@ -76322,11 +76297,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: 6.912213,-26.203783
|
||||
parent: 2
|
||||
- uid: 2323
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.5989685,-21.309408
|
||||
parent: 2
|
||||
- proto: CP14FoodPieApple
|
||||
entities:
|
||||
- uid: 2282
|
||||
@@ -76343,6 +76313,51 @@ entities:
|
||||
- type: Transform
|
||||
pos: 42.107338,-34.496113
|
||||
parent: 2
|
||||
- proto: CP14Fork
|
||||
entities:
|
||||
- uid: 11879
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 7.322892,-21.417997
|
||||
parent: 2
|
||||
- uid: 11880
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 4.6571183,-21.654129
|
||||
parent: 2
|
||||
- uid: 11881
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -0.62943745,-25.162376
|
||||
parent: 2
|
||||
- uid: 11882
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -1.3824203,-30.361307
|
||||
parent: 2
|
||||
- type: CollisionWake
|
||||
enabled: False
|
||||
- uid: 11883
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -1.5511405,-30.203886
|
||||
parent: 2
|
||||
- type: CollisionWake
|
||||
enabled: False
|
||||
- proto: CP14FryingPan
|
||||
entities:
|
||||
- uid: 11887
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 9.415325,-29.152672
|
||||
parent: 2
|
||||
- type: CollisionWake
|
||||
enabled: False
|
||||
- proto: CP14Furnace
|
||||
entities:
|
||||
- uid: 2505
|
||||
@@ -76351,12 +76366,18 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 9.5,-28.5
|
||||
parent: 2
|
||||
- type: ItemPlacer
|
||||
placedEntities:
|
||||
- 11887
|
||||
- uid: 2506
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 9.5,-29.5
|
||||
parent: 2
|
||||
- type: ItemPlacer
|
||||
placedEntities:
|
||||
- 11887
|
||||
- uid: 2844
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -76385,6 +76406,18 @@ entities:
|
||||
- type: Transform
|
||||
pos: 22.5,-30.5
|
||||
parent: 2
|
||||
- proto: CP14GoldChest
|
||||
entities:
|
||||
- uid: 7865
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -20.5,-23.5
|
||||
parent: 2
|
||||
- uid: 7936
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -18.5,-36.5
|
||||
parent: 2
|
||||
- proto: CP14IronDoor
|
||||
entities:
|
||||
- uid: 12340
|
||||
@@ -77134,32 +77167,58 @@ entities:
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 2.5,-36.5
|
||||
parent: 2
|
||||
- proto: CP14Plate
|
||||
- proto: CP14PlateIron
|
||||
entities:
|
||||
- uid: 2283
|
||||
- uid: 11884
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 7.5331874,-22.337095
|
||||
pos: 0.5972259,-27.179148
|
||||
parent: 2
|
||||
- type: CollisionWake
|
||||
enabled: False
|
||||
- uid: 11885
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 0.68720937,-27.370302
|
||||
parent: 2
|
||||
- type: CollisionWake
|
||||
enabled: False
|
||||
- proto: CP14PlateWoodenRandom
|
||||
entities:
|
||||
- uid: 2284
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 8.433026,-22.269629
|
||||
pos: 3.6833415,-21.535347
|
||||
parent: 2
|
||||
- uid: 2294
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.40167212,-23.337002
|
||||
pos: -0.26470375,-23.18827
|
||||
parent: 2
|
||||
- uid: 2296
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.569388,-21.290525
|
||||
pos: -0.43342304,-25.392168
|
||||
parent: 2
|
||||
- uid: 2406
|
||||
- uid: 2313
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 3.6947498,-22.223633
|
||||
pos: 7.4514184,-22.277475
|
||||
parent: 2
|
||||
- uid: 2319
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 6.1354036,-26.257986
|
||||
parent: 2
|
||||
- uid: 2320
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 8.45249,-21.332949
|
||||
parent: 2
|
||||
- uid: 2323
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.4784155,-22.536097
|
||||
parent: 2
|
||||
- proto: CP14PortalFrameCrystal
|
||||
entities:
|
||||
@@ -101431,12 +101490,12 @@ entities:
|
||||
- type: Transform
|
||||
pos: 32.5,32.5
|
||||
parent: 2
|
||||
- proto: CP14SackFarmingSeedFull
|
||||
- proto: CP14SackFarmingSeed
|
||||
entities:
|
||||
- uid: 2982
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 0.42527747,-27.375025
|
||||
pos: 0.31348777,-27.316204
|
||||
parent: 2
|
||||
- type: CollisionWake
|
||||
enabled: False
|
||||
@@ -101963,6 +102022,31 @@ entities:
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 3.5,-42.5
|
||||
parent: 2
|
||||
- proto: CP14Spoon
|
||||
entities:
|
||||
- uid: 2318
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 1.5414248,-25.409752
|
||||
parent: 2
|
||||
- uid: 2324
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: -0.4832139,-22.160128
|
||||
parent: 2
|
||||
- uid: 2406
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 3.3973436,-21.923996
|
||||
parent: 2
|
||||
- uid: 11878
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 8.683899,-22.227592
|
||||
parent: 2
|
||||
- proto: CP14StatueAngel
|
||||
entities:
|
||||
- uid: 6637
|
||||
@@ -102476,12 +102560,6 @@ entities:
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 3.5,-30.5
|
||||
parent: 2
|
||||
- uid: 2313
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -0.5,-27.5
|
||||
parent: 2
|
||||
- uid: 2315
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -111167,16 +111245,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: -20.5,-24.5
|
||||
parent: 2
|
||||
- uid: 7865
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -20.5,-23.5
|
||||
parent: 2
|
||||
- uid: 7936
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -18.5,-36.5
|
||||
parent: 2
|
||||
- uid: 7942
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -111259,6 +111327,18 @@ entities:
|
||||
rot: 1.5707963267948966 rad
|
||||
pos: 30.5,-27.5
|
||||
parent: 2
|
||||
- proto: CP14WoodenClosetChefFilled
|
||||
entities:
|
||||
- uid: 2283
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.5,-27.5
|
||||
parent: 2
|
||||
- uid: 5722
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -1.5,-27.5
|
||||
parent: 2
|
||||
- proto: CP14WoodenClosetMerchantFilled
|
||||
entities:
|
||||
- uid: 7867
|
||||
@@ -111519,12 +111599,12 @@ entities:
|
||||
- uid: 2512
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.59833705,-27.353706
|
||||
pos: 6.2311254,-32.280533
|
||||
parent: 2
|
||||
- uid: 2513
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -0.3621297,-27.44366
|
||||
pos: 2.448766,-30.314747
|
||||
parent: 2
|
||||
- proto: CP14Workbench
|
||||
entities:
|
||||
@@ -111545,6 +111625,10 @@ entities:
|
||||
- type: Transform
|
||||
pos: -1.5,-30.5
|
||||
parent: 2
|
||||
- type: ItemPlacer
|
||||
placedEntities:
|
||||
- 11882
|
||||
- 11883
|
||||
- uid: 8057
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -111611,6 +111695,8 @@ entities:
|
||||
- type: ItemPlacer
|
||||
placedEntities:
|
||||
- 2982
|
||||
- 11884
|
||||
- 11885
|
||||
- uid: 8056
|
||||
components:
|
||||
- type: Transform
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
id: ProteinCooking
|
||||
impact: Low
|
||||
minTemp: 347
|
||||
sound: null #CP14
|
||||
reactants:
|
||||
UncookedAnimalProteins:
|
||||
amount: 0.5
|
||||
|
||||
@@ -85,7 +85,6 @@
|
||||
- id: CP14IronBar10
|
||||
- id: CP14PaperFolderRed
|
||||
- id: CP14PenFeather
|
||||
amount: 1
|
||||
|
||||
- type: entity
|
||||
parent: CP14WoodenCloset
|
||||
@@ -100,3 +99,21 @@
|
||||
- id: CP14StampApproved
|
||||
- id: CP14PaperFolderBlue
|
||||
- id: CP14ArmorIronChainmailPresets
|
||||
|
||||
- type: entity
|
||||
parent: CP14WoodenCloset
|
||||
id: CP14WoodenClosetChefFilled
|
||||
suffix: Chef, Filled
|
||||
components:
|
||||
- type: StorageFill
|
||||
contents:
|
||||
- id: CP14Fork
|
||||
amount: 4
|
||||
- id: CP14Spoon
|
||||
amount: 4
|
||||
- id: CP14FryingPan
|
||||
amount: 2
|
||||
- id: CP14ModularIronDagger
|
||||
- id: CP14SackFarmingSeed
|
||||
- id: CP14PlateWooden
|
||||
amount: 4
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
spawns:
|
||||
- CP14ImpactEffectHeat
|
||||
- !type:CP14AdjustAllSolutionThermalEnergy
|
||||
delta: 3600 # One full use heats 100u from ~300k to ~650k
|
||||
delta: 2500
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:AdjustTemperature
|
||||
amount: 36000
|
||||
amount: 20000
|
||||
- !type:ExtinguishReaction
|
||||
- type: CP14MagicEffectVerbalAspect
|
||||
startSpeech: "Vos adepto calidum..."
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
- type: entity
|
||||
id: CP14PlateBase
|
||||
parent: BaseItem
|
||||
description: This is your plate for a delicious meal!
|
||||
categories: [ ForkFiltered ]
|
||||
abstract: true
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Consumable/Food/Meals/plates.rsi
|
||||
- type: Item
|
||||
shape:
|
||||
- 0,0,1,0
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Plate
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
maxVol: 20
|
||||
- type: CP14FoodHolder
|
||||
foodType: Meal
|
||||
solutionId: food
|
||||
- type: Food
|
||||
|
||||
- type: entity
|
||||
id: CP14PlateWooden
|
||||
parent: CP14PlateBase
|
||||
name: wooden plate
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: wooden
|
||||
- map: ["cp14_foodLayers"]
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
CP14WoodenPlanks: 20
|
||||
- type: Food
|
||||
trash:
|
||||
- CP14PlateWooden
|
||||
|
||||
- type: entity
|
||||
id: CP14PlateIron
|
||||
parent: CP14PlateBase
|
||||
name: iron plate
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: iron
|
||||
- map: ["cp14_foodLayers"]
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
CP14Iron: 10
|
||||
- type: Food
|
||||
trash:
|
||||
- CP14PlateIron
|
||||
|
||||
- type: entity
|
||||
id: CP14PlateGold
|
||||
parent: CP14PlateBase
|
||||
name: gold plate
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: gold
|
||||
- map: ["cp14_foodLayers"]
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
CP14Gold: 10
|
||||
- type: Food
|
||||
trash:
|
||||
- CP14PlateGold
|
||||
|
||||
- type: entity
|
||||
id: CP14PlateWoodenRandom
|
||||
parent: CP14PlateWooden
|
||||
suffix: Random food
|
||||
components:
|
||||
- type: CP14RandomFoodData
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
maxVol: 20
|
||||
reagents:
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 10
|
||||
- ReagentId: Protein
|
||||
Quantity: 10
|
||||
@@ -27,6 +27,9 @@
|
||||
- type: SliceableFood
|
||||
count: 5
|
||||
slice: CP14FoodCheesePart
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Cheese
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodCheesePart
|
||||
@@ -62,6 +65,9 @@
|
||||
- type: SliceableFood
|
||||
count: 3
|
||||
slice: CP14FoodCheeseSlice
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Cheese
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodCheeseSlice
|
||||
@@ -98,6 +104,9 @@
|
||||
- type: FoodSequenceElement
|
||||
entries:
|
||||
CP14Sandwich: CP14CheeseSandwich
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Cheese
|
||||
|
||||
# Blue Cheese (50% more protein)
|
||||
- type: entity
|
||||
@@ -127,6 +136,9 @@
|
||||
slice: CP14FoodBlueCheesePart
|
||||
- type: StaticPrice
|
||||
price: 20
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Cheese
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodBlueCheesePart
|
||||
@@ -162,6 +174,9 @@
|
||||
slice: CP14FoodBlueCheeseSlice
|
||||
- type: StaticPrice
|
||||
price: 4
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Cheese
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodBlueCheeseSlice
|
||||
@@ -194,6 +209,9 @@
|
||||
Quantity: 1.5 # 4.5/3
|
||||
- type: StaticPrice
|
||||
price: 1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Cheese
|
||||
|
||||
# Aged Cheese (100% more protein)
|
||||
- type: entity
|
||||
@@ -223,6 +241,9 @@
|
||||
slice: CP14FoodAgedCheesePart
|
||||
- type: StaticPrice
|
||||
price: 35
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Cheese
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodAgedCheesePart
|
||||
@@ -258,6 +279,9 @@
|
||||
slice: CP14FoodAgedCheeseSlice
|
||||
- type: StaticPrice
|
||||
price: 7
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Cheese
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodAgedCheeseSlice
|
||||
@@ -289,4 +313,7 @@
|
||||
- ReagentId: Protein
|
||||
Quantity: 2 # 6/3
|
||||
- type: StaticPrice
|
||||
price: 2
|
||||
price: 2
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Cheese
|
||||
@@ -1,23 +1,3 @@
|
||||
- type: entity
|
||||
id: CP14Plate
|
||||
parent: BaseItem
|
||||
name: plate
|
||||
description: This is your plate for a delicious meal!
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Consumable/Food/plates.rsi
|
||||
state: plate
|
||||
- type: Item
|
||||
shape:
|
||||
- 0,0,1,0
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Plate
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
CP14WoodenPlanks: 20 # 2 wooden plank in craft
|
||||
|
||||
- type: entity
|
||||
id: CP14PlatePie
|
||||
parent: BaseItem
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodBread
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dough
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodBread
|
||||
@@ -56,6 +59,9 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dough
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodBreadSlice
|
||||
@@ -78,6 +84,9 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: null
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dough
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodDoughMedium
|
||||
@@ -107,6 +116,9 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodBreadBun
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dough
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodBreadBun
|
||||
@@ -137,6 +149,9 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dough
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodBreadBunBottom
|
||||
@@ -174,6 +189,9 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dough
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodBreadBunTop
|
||||
@@ -200,6 +218,9 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dough
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodDoughMediumFlat
|
||||
@@ -222,4 +243,7 @@
|
||||
- type: CP14TemperatureTransformation
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1 #TODO: лаваш?
|
||||
transformTo: CP14Ash1 #TODO: лаваш?
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dough
|
||||
@@ -26,10 +26,6 @@
|
||||
Quantity: 2
|
||||
- type: DrawableSolution
|
||||
solution: food
|
||||
- type: SolutionSpiker
|
||||
sourceSolution: food
|
||||
ignoreEmpty: true
|
||||
popup: spike-solution-egg
|
||||
# egg fragile
|
||||
- type: DamageOnHighSpeedImpact
|
||||
minimumSpeed: 0.1
|
||||
@@ -65,6 +61,10 @@
|
||||
area: 0.04
|
||||
# conductivity of egg shell based on a paper from Romanoff and Romanoff (1949)
|
||||
conductivity: 0.456
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Egg
|
||||
- CP14FitInFryingPan
|
||||
|
||||
# Splat
|
||||
- type: entity
|
||||
|
||||
@@ -86,6 +86,9 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatLambCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatLambCooked
|
||||
@@ -109,9 +112,13 @@
|
||||
- ReagentId: Fat
|
||||
Quantity: 8
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatLambSlice
|
||||
@@ -147,6 +154,10 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatLambCookedSlice
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatSlice
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatLambCookedSlice
|
||||
@@ -175,9 +186,14 @@
|
||||
- ReagentId: Fat
|
||||
Quantity: 2
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatSlice
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatLambCutlet
|
||||
@@ -210,6 +226,10 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatLambCutletCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatCutlet
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatLambCutletCooked
|
||||
@@ -236,9 +256,14 @@
|
||||
entries:
|
||||
CP14Sandwich: CP14CutletCookedSandwich
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatCutlet
|
||||
|
||||
# Frog Leg
|
||||
- type: entity
|
||||
@@ -265,6 +290,10 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatFrogLegCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatLeg
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatFrogLegCooked
|
||||
@@ -285,9 +314,14 @@
|
||||
- ReagentId: Protein
|
||||
Quantity: 1
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatLeg
|
||||
|
||||
# Human Meat
|
||||
- type: entity
|
||||
@@ -323,6 +357,9 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatHumanCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatHumanCooked
|
||||
@@ -350,9 +387,13 @@
|
||||
human_meat1_cooked: ""
|
||||
human_meat2_cooked: ""
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
# Dino Meat
|
||||
- type: entity
|
||||
@@ -381,6 +422,9 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatDinoCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatDinoCooked
|
||||
@@ -401,9 +445,13 @@
|
||||
- ReagentId: Fat
|
||||
Quantity: 2
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatHydra
|
||||
@@ -429,6 +477,9 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatHydraCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatHydraCooked
|
||||
@@ -447,9 +498,13 @@
|
||||
- ReagentId: Protein
|
||||
Quantity: 3
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
# Rabbit Meat
|
||||
- type: entity
|
||||
@@ -485,6 +540,9 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatRabbitCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatRabbitCooked
|
||||
@@ -513,9 +571,13 @@
|
||||
rabbit_meat1_cooked: ""
|
||||
rabbit_meat2_cooked: ""
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
# Pig and Boar Meat
|
||||
- type: entity
|
||||
@@ -554,6 +616,10 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatPigCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatPig
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatPigCooked
|
||||
@@ -584,9 +650,14 @@
|
||||
pig_meat1_cooked: ""
|
||||
pig_meat4_cooked: ""
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatPig
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatPigLeg
|
||||
@@ -614,6 +685,11 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatPigLegCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatLeg
|
||||
- CP14MeatPig
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatPigLegCooked
|
||||
@@ -634,9 +710,15 @@
|
||||
- ReagentId: Fat
|
||||
Quantity: 10
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatLeg
|
||||
- CP14MeatPig
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatBoar
|
||||
@@ -674,6 +756,10 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatBoarCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatPig
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatBoarCooked
|
||||
@@ -705,9 +791,14 @@
|
||||
pig_meat2_cooked: ""
|
||||
pig_meat3_cooked: ""
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatPig
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatPigSlice
|
||||
@@ -736,6 +827,11 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatPigCookedSlice
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatSlice
|
||||
- CP14MeatPig
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatPigCookedSlice
|
||||
@@ -757,9 +853,15 @@
|
||||
- ReagentId: Fat
|
||||
Quantity: 3
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatSlice
|
||||
- CP14MeatPig
|
||||
|
||||
# Monster Meat
|
||||
- type: entity
|
||||
@@ -802,6 +904,10 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatMonsterCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatMonster
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatMonsterCooked
|
||||
@@ -835,9 +941,14 @@
|
||||
mole_meat3: CP14cookedMeat
|
||||
mole_meat4: CP14cookedMeat
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatMonster
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatMonsterLeg
|
||||
@@ -867,6 +978,11 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatMonsterLegCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatLeg
|
||||
- CP14MeatMonster
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatMonsterLegCooked
|
||||
@@ -888,9 +1004,15 @@
|
||||
- ReagentId: Fat
|
||||
Quantity: 10
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatLeg
|
||||
- CP14MeatMonster
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatMonsterSlice
|
||||
@@ -921,6 +1043,11 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatMonsterCookedSlice
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatSlice
|
||||
- CP14MeatMonster
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatMonsterCookedSlice
|
||||
@@ -943,9 +1070,15 @@
|
||||
- ReagentId: Fat
|
||||
Quantity: 2
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatSlice
|
||||
- CP14MeatMonster
|
||||
|
||||
# Flem meat
|
||||
- type: entity
|
||||
@@ -961,7 +1094,7 @@
|
||||
sprite: _CP14/Objects/Consumable/Food/meat.rsi
|
||||
state: flem_head
|
||||
- type: Item
|
||||
size: Large
|
||||
size: Normal
|
||||
shape:
|
||||
- 0,0,1,1
|
||||
- type: SolutionContainerManager
|
||||
@@ -979,6 +1112,10 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatFlemHeadCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatMonster
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatFlemHeadCooked
|
||||
@@ -999,9 +1136,14 @@
|
||||
- ReagentId: Fat
|
||||
Quantity: 5
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatMonster
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatFlemTorso
|
||||
@@ -1019,7 +1161,7 @@
|
||||
count: 3
|
||||
slice: CP14FoodMeatFlemTorsoCut
|
||||
- type: Item
|
||||
size: Large
|
||||
size: Normal
|
||||
shape:
|
||||
- 0,0,1,1
|
||||
- type: SolutionContainerManager
|
||||
@@ -1037,6 +1179,10 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatFlemTorsoCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatMonster
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatFlemTorsoCooked
|
||||
@@ -1060,9 +1206,14 @@
|
||||
- ReagentId: Fat
|
||||
Quantity: 2
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatMonster
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatFlemTorsoCut
|
||||
@@ -1094,6 +1245,11 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatFlemTorsoCookedCut
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatSlice
|
||||
- CP14MeatMonster
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatFlemTorsoCookedCut
|
||||
@@ -1115,9 +1271,15 @@
|
||||
- ReagentId: Fat
|
||||
Quantity: 0.5
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatSlice
|
||||
- CP14MeatMonster
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatFlemLeg
|
||||
@@ -1150,6 +1312,11 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodMeatFlemLegCooked
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatLeg
|
||||
- CP14MeatMonster
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodMeatFlemLegCooked
|
||||
@@ -1171,6 +1338,12 @@
|
||||
- ReagentId: Fat
|
||||
Quantity: 0.1
|
||||
- type: CP14TemperatureTransformation
|
||||
autoTransformOnCooked: false
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14Ash1
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatLeg
|
||||
- CP14MeatMonster
|
||||
|
||||
@@ -1,43 +1,3 @@
|
||||
- type: entity
|
||||
name: ham in cheese
|
||||
parent:
|
||||
- FoodInjectableBase
|
||||
- CP14BurnsAsh
|
||||
id: CP14FoodHamCheese
|
||||
description: Juicy and oozy ham, in cheese and lettuce leaves. Just like in the best restaurants.
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: FlavorProfile
|
||||
flavors:
|
||||
- meaty
|
||||
- cabbage
|
||||
- cheesy
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
maxVol: 42
|
||||
reagents:
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 16
|
||||
- ReagentId: Protein
|
||||
Quantity: 13
|
||||
- ReagentId: Vitamin
|
||||
Quantity: 0.5
|
||||
- ReagentId: Fat
|
||||
Quantity: 12
|
||||
- type: Sprite
|
||||
layers:
|
||||
- sprite: _CP14/Objects/Consumable/Food/plates.rsi
|
||||
state: plate
|
||||
- sprite: _CP14/Objects/Consumable/Food/pig_cheese.rsi
|
||||
state: pig_cheese
|
||||
- type: Tag
|
||||
tags:
|
||||
- Meat
|
||||
- type: Food
|
||||
trash:
|
||||
- CP14Plate
|
||||
|
||||
- type: entity
|
||||
name: Klanir stuffed pumpkin
|
||||
parent:
|
||||
|
||||
@@ -37,6 +37,9 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
- CP14Salad
|
||||
- CP14Cabbage
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodCabbageSlice
|
||||
@@ -74,6 +77,13 @@
|
||||
- type: FoodSequenceElement
|
||||
entries:
|
||||
CP14Sandwich: CP14CabbageSandwich
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
- CP14Salad
|
||||
- CP14SaladSlice
|
||||
- CP14Cabbage
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodPumpkin
|
||||
@@ -115,6 +125,7 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodPumpkinSlice
|
||||
@@ -152,6 +163,10 @@
|
||||
- type: FoodSequenceElement
|
||||
entries:
|
||||
CP14Sandwich: CP14PumpkinSandwich
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodPotato
|
||||
@@ -188,9 +203,6 @@
|
||||
Quantity: 1.14
|
||||
- type: CP14Seed
|
||||
plantProto: CP14PlantPotato #TODO sliceable potato
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- type: Temperature
|
||||
currentTemperature: 290
|
||||
- type: InternalTemperature
|
||||
@@ -200,6 +212,11 @@
|
||||
entries:
|
||||
- temperatureRange: 400, 500
|
||||
transformTo: CP14FoodPotatoHot
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
- CP14Potato
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodCucumber
|
||||
@@ -244,6 +261,7 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodCucumberSlice
|
||||
@@ -276,6 +294,10 @@
|
||||
- type: FoodSequenceElement
|
||||
entries:
|
||||
CP14Sandwich: CP14CucumberSandwich
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodTomatoes
|
||||
@@ -344,6 +366,7 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodTomatoesSlice
|
||||
@@ -378,6 +401,10 @@
|
||||
- type: FoodSequenceElement
|
||||
entries:
|
||||
CP14Sandwich: CP14TomatoesSandwich
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodApple
|
||||
@@ -416,6 +443,7 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Fruits
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodAppleSlice
|
||||
@@ -445,6 +473,10 @@
|
||||
- type: FoodSequenceElement
|
||||
entries:
|
||||
CP14Sandwich: CP14AppleSandwich
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Fruits
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodPepper
|
||||
@@ -485,6 +517,7 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodPepperSlice
|
||||
@@ -514,6 +547,10 @@
|
||||
- type: FoodSequenceElement
|
||||
entries:
|
||||
CP14Sandwich: CP14PepperSandwich
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodOnion
|
||||
@@ -558,6 +595,7 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodOnionSlice
|
||||
@@ -588,4 +626,8 @@
|
||||
Quantity: 0.8
|
||||
- type: FoodSequenceElement
|
||||
entries:
|
||||
CP14Sandwich: CP14OnionSandwich
|
||||
CP14Sandwich: CP14OnionSandwich
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14FarmFood
|
||||
- CP14Vegetable
|
||||
@@ -1,35 +0,0 @@
|
||||
- type: entity
|
||||
name: green salad
|
||||
parent: FoodInjectableBase
|
||||
id: CP14FoodSaladGreen
|
||||
description: An extremely nutritious green salad, with a pumpkin twist.
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: FlavorProfile
|
||||
flavors:
|
||||
- pumpkin
|
||||
- cabbage
|
||||
- CP14cucumber
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
maxVol: 47
|
||||
reagents:
|
||||
- ReagentId: PumpkinFlesh
|
||||
Quantity: 12
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 16
|
||||
- ReagentId: Vitamin
|
||||
Quantity: 10
|
||||
- type: Sprite
|
||||
layers:
|
||||
- sprite: _CP14/Objects/Consumable/Food/plates.rsi
|
||||
state: plate
|
||||
- sprite: _CP14/Objects/Consumable/Food/salad.rsi
|
||||
state: green_salad
|
||||
- type: Tag
|
||||
tags:
|
||||
- Fruit
|
||||
- type: Food
|
||||
trash:
|
||||
- CP14Plate
|
||||
@@ -34,46 +34,6 @@
|
||||
- ReagentId: Vitamin
|
||||
Quantity: 2
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodStuffedPotato
|
||||
parent:
|
||||
- FoodInjectableBase
|
||||
- CP14BurnsAsh
|
||||
categories: [ ForkFiltered ]
|
||||
name: stuffed potato
|
||||
description: Baked potatoes stuffed with juicy meat.
|
||||
components:
|
||||
- type: Item
|
||||
size: Tiny
|
||||
- type: FlavorProfile
|
||||
flavors:
|
||||
- CP14HotPotato
|
||||
- meaty
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Consumable/Food/hot_potato.rsi
|
||||
layers:
|
||||
- state: stuffed_potato1
|
||||
map: [ "random" ]
|
||||
- type: RandomSprite
|
||||
available:
|
||||
- random:
|
||||
stuffed_potato1: ""
|
||||
stuffed_potato2: ""
|
||||
stuffed_potato3: ""
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
food:
|
||||
maxVol: 14
|
||||
reagents:
|
||||
- ReagentId: Nutriment
|
||||
Quantity: 6
|
||||
- ReagentId: Protein
|
||||
Quantity: 2
|
||||
- ReagentId: Vitamin
|
||||
Quantity: 2
|
||||
- ReagentId: Fat
|
||||
Quantity: 3
|
||||
|
||||
- type: entity
|
||||
id: CP14FoodChromiumJelly
|
||||
parent:
|
||||
|
||||
@@ -10,9 +10,6 @@
|
||||
size: Tiny
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Materials/dye.rsi
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dye
|
||||
- type: StaticPrice
|
||||
price: 6
|
||||
|
||||
@@ -26,10 +23,6 @@
|
||||
- state: base
|
||||
- state: powder
|
||||
color: "#bd2b26"
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dye
|
||||
- CP14DyeRed
|
||||
- type: StaticPrice
|
||||
price: 4
|
||||
|
||||
@@ -43,10 +36,6 @@
|
||||
- state: base
|
||||
- state: powder
|
||||
color: "#ffe269"
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dye
|
||||
- CP14DyeYellow
|
||||
- type: StaticPrice
|
||||
price: 3.5
|
||||
|
||||
@@ -60,10 +49,6 @@
|
||||
- state: base
|
||||
- state: powder
|
||||
color: "#5eabeb"
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dye
|
||||
- CP14DyeBlue
|
||||
- type: StaticPrice
|
||||
price: 8.6
|
||||
|
||||
@@ -77,10 +62,6 @@
|
||||
- state: base
|
||||
- state: powder
|
||||
color: "#85903e"
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dye
|
||||
- CP14DyeGreen
|
||||
|
||||
- type: entity
|
||||
id: CP14DyePurple
|
||||
@@ -92,10 +73,6 @@
|
||||
- state: base
|
||||
- state: powder
|
||||
color: "#8241cc"
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dye
|
||||
- CP14DyePurple
|
||||
- type: StaticPrice
|
||||
price: 4.4
|
||||
|
||||
@@ -109,7 +86,3 @@
|
||||
- state: base
|
||||
- state: powder
|
||||
color: "#242329"
|
||||
- type: Tag
|
||||
tags:
|
||||
- CP14Dye
|
||||
- CP14DyeBlack
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
- type: entity
|
||||
id: CP14FryingPan
|
||||
parent: BaseStorageItem
|
||||
categories: [ ForkFiltered ]
|
||||
name: frying pan
|
||||
description: "You can always watch three things: how fire burns, how water flows, and how delicious meat is cooked."
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _CP14/Objects/Specific/Cooking/frying_pan.rsi
|
||||
noRot: true
|
||||
layers:
|
||||
- state: base
|
||||
map: ["enum.StorageVisualLayers.Base"]
|
||||
- state: closed
|
||||
map: [ base ]
|
||||
- state: cooking
|
||||
visible: false
|
||||
map: [ cook ]
|
||||
- state: cooking
|
||||
visible: false
|
||||
color: "#38312e"
|
||||
map: [ burn ]
|
||||
- type: Appearance
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.StorageVisuals.Open:
|
||||
base:
|
||||
True: { state: opened }
|
||||
False: { state: closed }
|
||||
enum.CP14CookingVisuals.Cooking:
|
||||
cook:
|
||||
True: { visible: true }
|
||||
False: { visible: false }
|
||||
enum.CP14CookingVisuals.Burning:
|
||||
burn:
|
||||
True: { visible: true }
|
||||
False: { visible: false }
|
||||
- type: Item
|
||||
size: Ginormous
|
||||
- type: MultiHandedItem
|
||||
- type: MeleeWeapon
|
||||
wideAnimationRotation: 270
|
||||
damage:
|
||||
types:
|
||||
Blunt: 6
|
||||
soundHit:
|
||||
path: "/Audio/Weapons/smash.ogg"
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
storagebase: !type:Container
|
||||
ents: []
|
||||
- type: Storage
|
||||
maxItemSize: Normal
|
||||
storageOpenSound: /Audio/_CP14/Effects/pan_open.ogg
|
||||
storageCloseSound: /Audio/_CP14/Effects/pan_close.ogg
|
||||
storageInsertSound: /Audio/Items/toolbox_insert.ogg
|
||||
storageRemoveSound: /Audio/Items/toolbox_insert.ogg
|
||||
grid:
|
||||
- 0,0,3,3
|
||||
- 0,0,2,2
|
||||
whitelist:
|
||||
components:
|
||||
- Food
|
||||
tags:
|
||||
- CP14FitInFryingPan
|
||||
cP14Ignorelist:
|
||||
components:
|
||||
- CP14FoodHolder
|
||||
- FoodSequenceStartPoint
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
pan:
|
||||
maxVol: 100
|
||||
- type: CP14FoodCooker
|
||||
foodType: Meal
|
||||
containerId: storagebase
|
||||
solutionId: pan
|
||||
- type: Temperature
|
||||
- type: RefillableSolution
|
||||
solution: pan
|
||||
- type: DrainableSolution
|
||||
solution: pan
|
||||
- type: Spillable
|
||||
solution: pan
|
||||
- type: DoAfter
|
||||
- type: AmbientSound
|
||||
enabled: false
|
||||
volume: 5
|
||||
range: 5
|
||||
sound:
|
||||
path: /Audio/_CP14/Ambience/pan_frying.ogg
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
CP14Iron: 20
|
||||
CP14WoodenPlanks: 10
|
||||
227
Resources/Prototypes/_CP14/Recipes/Cooking/meals.yml
Normal file
@@ -0,0 +1,227 @@
|
||||
- type: CP14CookingRecipe
|
||||
id: InedibleMeal
|
||||
foodType: Meal
|
||||
foodData:
|
||||
name: cp14-meal-recipe-trash-name
|
||||
desc: cp14-meal-recipe-trash-desc
|
||||
visuals:
|
||||
- sprite: _CP14/Objects/Consumable/Food/Meals/misc.rsi
|
||||
state: trash
|
||||
requirements:
|
||||
- !type:AlwaysMet
|
||||
|
||||
# 1 ingredient types
|
||||
|
||||
- type: CP14CookingRecipe
|
||||
id: GreenSalad
|
||||
foodType: Meal
|
||||
foodData:
|
||||
name: cp14-meal-recipe-green-salad-name
|
||||
desc: cp14-meal-recipe-green-salad-desc
|
||||
visuals:
|
||||
- sprite: _CP14/Objects/Consumable/Food/Meals/misc.rsi
|
||||
state: green_salad
|
||||
requirements:
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Salad
|
||||
- CP14Vegetable
|
||||
|
||||
- type: CP14CookingRecipe
|
||||
id: MeatPlate
|
||||
foodType: Meal
|
||||
foodData:
|
||||
name: cp14-meal-recipe-meat-plate-name
|
||||
desc: cp14-meal-recipe-meat-plate-desc
|
||||
visuals:
|
||||
- sprite: _CP14/Objects/Consumable/Food/Meals/misc.rsi
|
||||
state: meat_plate
|
||||
requirements:
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Meat
|
||||
- CP14MeatSlice
|
||||
|
||||
- type: CP14CookingRecipe
|
||||
id: BreadPlate
|
||||
foodType: Meal
|
||||
foodData:
|
||||
name: cp14-meal-recipe-bread-plate-name
|
||||
desc: cp14-meal-recipe-bread-plate-desc
|
||||
visuals:
|
||||
- sprite: _CP14/Objects/Consumable/Food/Meals/misc.rsi
|
||||
state: bread_plate
|
||||
requirements:
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Dough
|
||||
|
||||
- type: CP14CookingRecipe
|
||||
id: MashedPotato
|
||||
foodType: Meal
|
||||
foodData:
|
||||
name: cp14-meal-recipe-mashed-potato-name
|
||||
desc: cp14-meal-recipe-mashed-potato-desc
|
||||
visuals:
|
||||
- sprite: _CP14/Objects/Consumable/Food/Meals/misc.rsi
|
||||
state: mashed_potato
|
||||
requirements:
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Potato
|
||||
|
||||
# 2 ingredient types
|
||||
|
||||
- type: CP14CookingRecipe
|
||||
id: GreenSaladMeat
|
||||
foodType: Meal
|
||||
foodData:
|
||||
name: cp14-meal-recipe-green-salad-meat-name
|
||||
desc: cp14-meal-recipe-green-salad-meat-desc
|
||||
visuals:
|
||||
- sprite: _CP14/Objects/Consumable/Food/Meals/misc.rsi
|
||||
state: green_salad_meat
|
||||
requirements:
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Salad
|
||||
- CP14Vegetable
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
- type: CP14CookingRecipe
|
||||
id: MonsterEgg
|
||||
foodType: Meal
|
||||
foodData:
|
||||
name: cp14-meal-recipe-monster-egg-name
|
||||
desc: cp14-meal-recipe-monster-egg-desc
|
||||
visuals:
|
||||
- sprite: _CP14/Objects/Consumable/Food/Meals/misc.rsi
|
||||
state: monster_egg
|
||||
requirements:
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Egg
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14MeatMonster
|
||||
|
||||
- type: CP14CookingRecipe
|
||||
id: MashedPotatoMeat
|
||||
foodType: Meal
|
||||
foodData:
|
||||
name: cp14-meal-recipe-mashed-potato-meat-name
|
||||
desc: cp14-meal-recipe-mashed-potato-meat-desc
|
||||
visuals:
|
||||
- sprite: _CP14/Objects/Consumable/Food/Meals/misc.rsi
|
||||
state: mashed_potato_meat
|
||||
requirements:
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Potato
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
- type: CP14CookingRecipe
|
||||
id: MashedPotatoSalad
|
||||
foodType: Meal
|
||||
foodData:
|
||||
name: cp14-meal-recipe-mashed-potato-salad-name
|
||||
desc: cp14-meal-recipe-mashed-potato-salad-desc
|
||||
visuals:
|
||||
- sprite: _CP14/Objects/Consumable/Food/Meals/misc.rsi
|
||||
state: mashed_potato_salad
|
||||
requirements:
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Potato
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Salad
|
||||
- CP14Vegetable
|
||||
|
||||
- type: CP14CookingRecipe
|
||||
id: CheeseBread
|
||||
foodType: Meal
|
||||
foodData:
|
||||
name: cp14-meal-recipe-cheese-bread-name
|
||||
desc: cp14-meal-recipe-cheese-bread-desc
|
||||
visuals:
|
||||
- sprite: _CP14/Objects/Consumable/Food/Meals/misc.rsi
|
||||
state: cheese_bread
|
||||
requirements:
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Dough
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Cheese
|
||||
|
||||
# 3 ingredient types
|
||||
|
||||
- type: CP14CookingRecipe
|
||||
id: ZellasianBreakfast
|
||||
foodType: Meal
|
||||
foodData:
|
||||
name: cp14-meal-recipe-zellasian-breakfast-name
|
||||
desc: cp14-meal-recipe-zellasian-breakfast-desc
|
||||
visuals:
|
||||
- sprite: _CP14/Objects/Consumable/Food/Meals/misc.rsi
|
||||
state: zellasian_breakfast
|
||||
requirements:
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Egg
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Dough
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Meat
|
||||
|
||||
- type: CP14CookingRecipe
|
||||
id: StuffedPotato
|
||||
foodType: Meal
|
||||
foodData:
|
||||
name: cp14-meal-recipe-stuffed-potato-name
|
||||
desc: cp14-meal-recipe-stuffed-potato-desc
|
||||
visuals:
|
||||
- sprite: _CP14/Objects/Consumable/Food/Meals/misc.rsi
|
||||
state: stuffed_potato
|
||||
requirements:
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14MeatSlice
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Cheese
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Potato
|
||||
|
||||
# 4 ingredient types
|
||||
|
||||
- type: CP14CookingRecipe
|
||||
id: HamInCheese
|
||||
foodType: Meal
|
||||
foodData:
|
||||
name: cp14-meal-recipe-pig-cheese-name
|
||||
desc: cp14-meal-recipe-pig-cheese-desc
|
||||
visuals:
|
||||
- sprite: _CP14/Objects/Consumable/Food/Meals/misc.rsi
|
||||
state: pig_cheese
|
||||
requirements:
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14MeatPig
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14MeatLeg
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Cheese
|
||||
- !type:TagRequired
|
||||
tags:
|
||||
- CP14Salad
|
||||
@@ -476,3 +476,18 @@
|
||||
stack: CP14GoldBar
|
||||
count: 1
|
||||
result: CP14SteelGobletGold
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14FryingPan
|
||||
tag: CP14RecipeAnvil
|
||||
craftTime: 2
|
||||
requiredSkills:
|
||||
- IronMelting
|
||||
requirements:
|
||||
- !type:StackResource
|
||||
stack: CP14IronBar
|
||||
count: 2
|
||||
- !type:StackResource
|
||||
stack: CP14WoodenPlanks
|
||||
count: 1
|
||||
result: CP14FryingPan
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
- type: CP14Recipe
|
||||
id: CP14FoodHamCheese
|
||||
tag: CP14RecipeCooking
|
||||
craftTime: 5
|
||||
requirements:
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14Plate
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14FoodCabbageSlice
|
||||
count: 3
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14FoodCheeseSlice
|
||||
count: 2
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14FoodMeatPigLegCooked
|
||||
count: 1
|
||||
result: CP14FoodHamCheese
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14FoodStuffedPumpkin
|
||||
tag: CP14RecipeCooking
|
||||
craftTime: 5
|
||||
requirements:
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14FoodPumpkin
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14FoodPotatoHot
|
||||
count: 2
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14FoodMeatPigCookedSlice
|
||||
count: 2
|
||||
result: CP14FoodStuffedPumpkin
|
||||
@@ -39,14 +39,3 @@
|
||||
protoId: CP14FoodDoughMedium
|
||||
count: 1
|
||||
result: CP14FoodDoughMediumFlat
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14FoodStuffedPotato
|
||||
tag: CP14RecipeCooking
|
||||
craftTime: 1
|
||||
requirements:
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14FoodPotatoHot
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14FoodMeatPigCookedSlice
|
||||
result: CP14FoodStuffedPotato
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
- type: CP14Recipe
|
||||
id: CP14FoodSaladGreen
|
||||
tag: CP14RecipeCooking
|
||||
craftTime: 5
|
||||
requirements:
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14Plate
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14FoodCabbageSlice
|
||||
count: 4
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14FoodPumpkinSlice
|
||||
count: 3
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14FoodCucumber
|
||||
count: 2
|
||||
result: CP14FoodSaladGreen
|
||||
@@ -70,14 +70,14 @@
|
||||
result: CP14SmokingPipe
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14Plate
|
||||
id: CP14PlateWooden
|
||||
tag: CP14RecipeWorkbench
|
||||
craftTime: 3
|
||||
requirements:
|
||||
- !type:StackGroupResource
|
||||
group: WoodenPlanks
|
||||
count: 2
|
||||
result: CP14Plate
|
||||
result: CP14PlateWooden
|
||||
|
||||
- type: CP14Recipe
|
||||
id: CP14ModularBladeWoodMop
|
||||
|
||||
63
Resources/Prototypes/_CP14/Tags/food.yml
Normal file
@@ -0,0 +1,63 @@
|
||||
# Util
|
||||
|
||||
- type: Tag
|
||||
id: CP14FitInFryingPan
|
||||
|
||||
# Meat
|
||||
|
||||
- type: Tag
|
||||
id: CP14Meat
|
||||
|
||||
- type: Tag
|
||||
id: CP14MeatLeg
|
||||
|
||||
- type: Tag
|
||||
id: CP14MeatSlice
|
||||
|
||||
- type: Tag
|
||||
id: CP14MeatCutlet
|
||||
|
||||
- type: Tag
|
||||
id: CP14MeatMonster
|
||||
|
||||
- type: Tag
|
||||
id: CP14MeatPig
|
||||
|
||||
# Vegetable
|
||||
|
||||
- type: Tag
|
||||
id: CP14Vegetable
|
||||
|
||||
- type: Tag
|
||||
id: CP14Salad
|
||||
|
||||
- type: Tag
|
||||
id: CP14SaladSlice
|
||||
|
||||
- type: Tag
|
||||
id: CP14Cabbage
|
||||
|
||||
- type: Tag
|
||||
id: CP14Potato
|
||||
|
||||
# Fruits
|
||||
|
||||
- type: Tag
|
||||
id: CP14Fruits
|
||||
|
||||
# Misc
|
||||
|
||||
- type: Tag
|
||||
id: CP14Wheat
|
||||
|
||||
- type: Tag
|
||||
id: CP14Egg
|
||||
|
||||
- type: Tag
|
||||
id: CP14Dough
|
||||
|
||||
- type: Tag
|
||||
id: CP14Cheese
|
||||
|
||||
- type: Tag
|
||||
id: CP14Sandwich
|
||||
@@ -61,39 +61,9 @@
|
||||
- type: Tag
|
||||
id: CP14Boar
|
||||
|
||||
- type: Tag
|
||||
id: CP14Wheat
|
||||
|
||||
- type: Tag
|
||||
id: CP14Mosquito
|
||||
|
||||
- type: Tag
|
||||
id: CP14Dye
|
||||
|
||||
- type: Tag
|
||||
id: CP14DyeRed
|
||||
|
||||
- type: Tag
|
||||
id: CP14DyeYellow
|
||||
|
||||
- type: Tag
|
||||
id: CP14DyeBlue
|
||||
|
||||
- type: Tag
|
||||
id: CP14DyeGreen
|
||||
|
||||
- type: Tag
|
||||
id: CP14DyePurple
|
||||
|
||||
- type: Tag
|
||||
id: CP14DyeBlack
|
||||
|
||||
- type: Tag
|
||||
id: CP14Meat
|
||||
|
||||
- type: Tag
|
||||
id: CP14MeatSlice
|
||||
|
||||
- type: Tag
|
||||
id: CP14Torch
|
||||
|
||||
@@ -150,6 +120,3 @@
|
||||
|
||||
- type: Tag
|
||||
id: CP14BigCrossbowBolt
|
||||
|
||||
- type: Tag
|
||||
id: CP14Sandwich
|
||||
@@ -32,7 +32,8 @@
|
||||
product: CP14FoodCheesePart
|
||||
count: 3
|
||||
|
||||
# Premium Dairy (Requires Reputation)
|
||||
# Rep 1
|
||||
|
||||
- type: cp14TradingPosition
|
||||
id: CP14FoodBlueCheeseWheel
|
||||
faction: Dairy
|
||||
@@ -45,6 +46,19 @@
|
||||
product: CP14FoodBlueCheeseWheel
|
||||
count: 1
|
||||
|
||||
- type: cp14TradingPosition
|
||||
id: CP14FryingPan
|
||||
faction: Dairy
|
||||
reputationLevel: 1
|
||||
uiPosition: 2
|
||||
icon:
|
||||
sprite: _CP14/Objects/Specific/Cooking/frying_pan.rsi
|
||||
state: base
|
||||
service: !type:CP14BuyItemsService
|
||||
product: CP14FryingPan
|
||||
count: 1
|
||||
|
||||
# Rep 2
|
||||
- type: cp14TradingPosition
|
||||
id: CP14FoodAgedCheeseWheel
|
||||
faction: Dairy
|
||||
|
||||
@@ -1,13 +1,3 @@
|
||||
- type: cp14TradingRequest
|
||||
id: VictoriaGardensGreenSalad
|
||||
possibleFactions:
|
||||
- VictoriaGardens
|
||||
- Dairy
|
||||
requirements:
|
||||
- !type:ProtoIdResource
|
||||
protoId: CP14FoodSaladGreen
|
||||
count: 5
|
||||
|
||||
- type: cp14TradingRequest
|
||||
id: VictoriaGardensBreadBuns
|
||||
possibleFactions:
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<GuideEntityEmbed Entity="CP14FoodCabbageSlice"/>
|
||||
<GuideEntityEmbed Entity="CP14FoodCucumber"/>
|
||||
<GuideEntityEmbed Entity="CP14FoodPumpkinSlice"/>
|
||||
<GuideEntityEmbed Entity="CP14Plate"/>
|
||||
<GuideEntityEmbed Entity="CP14PlateWooden"/>
|
||||
</Box>
|
||||
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<GuideEntityEmbed Entity="CP14FoodCabbageSlice"/>
|
||||
<GuideEntityEmbed Entity="CP14FoodCucumber"/>
|
||||
<GuideEntityEmbed Entity="CP14FoodPumpkinSlice"/>
|
||||
<GuideEntityEmbed Entity="CP14Plate"/>
|
||||
<GuideEntityEmbed Entity="CP14PlateWooden"/>
|
||||
</Box>
|
||||
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 494 B |
|
After Width: | Height: | Size: 389 B |
|
After Width: | Height: | Size: 545 B |
|
After Width: | Height: | Size: 548 B |
|
After Width: | Height: | Size: 310 B |
|
After Width: | Height: | Size: 353 B |
|
After Width: | Height: | Size: 372 B |
|
After Width: | Height: | Size: 446 B |
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by prazat911, trash by TheShuEd, green_salad by Aeoli",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "bread_plate"
|
||||
},
|
||||
{
|
||||
"name": "cheese_bread"
|
||||
},
|
||||
{
|
||||
"name": "green_salad"
|
||||
},
|
||||
{
|
||||
"name": "green_salad_meat"
|
||||
},
|
||||
{
|
||||
"name": "mashed_potato"
|
||||
},
|
||||
{
|
||||
"name": "mashed_potato_meat"
|
||||
},
|
||||
{
|
||||
"name": "mashed_potato_salad"
|
||||
},
|
||||
{
|
||||
"name": "meat_plate"
|
||||
},
|
||||
{
|
||||
"name": "monster_egg"
|
||||
},
|
||||
{
|
||||
"name": "pig_cheese"
|
||||
},
|
||||
{
|
||||
"name": "stuffed_potato"
|
||||
},
|
||||
{
|
||||
"name": "trash"
|
||||
},
|
||||
{
|
||||
"name": "zellasian_breakfast"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 436 B |
|
Before Width: | Height: | Size: 542 B After Width: | Height: | Size: 542 B |
|
After Width: | Height: | Size: 532 B |
|
After Width: | Height: | Size: 462 B |
|
After Width: | Height: | Size: 465 B |
|
After Width: | Height: | Size: 384 B |
|
After Width: | Height: | Size: 370 B |
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"copyright": "Created by KREKS, iron by TheShuEd, gold by Prazat",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "wooden"
|
||||
},
|
||||
{
|
||||
"name": "iron"
|
||||
},
|
||||
{
|
||||
"name": "gold"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 349 B |
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Dinazewwr, stuffed_potato by prazat911",
|
||||
"copyright": "Created by Dinazewwr",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
@@ -18,15 +18,6 @@
|
||||
},
|
||||
{
|
||||
"name": "base4"
|
||||
},
|
||||
{
|
||||
"name": "stuffed_potato1"
|
||||
},
|
||||
{
|
||||
"name": "stuffed_potato2"
|
||||
},
|
||||
{
|
||||
"name": "stuffed_potato3"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 353 B |
|
Before Width: | Height: | Size: 425 B |
|
Before Width: | Height: | Size: 330 B |
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by prazat911",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "pig_cheese"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "All right reserved",
|
||||
"copyright": "Created bby KREKS",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "plate"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 408 B |
|
Before Width: | Height: | Size: 470 B |
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by aeoli (discord)",
|
||||
"states": [
|
||||
{
|
||||
"name": "green_salad"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,31 +1,31 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Max Gab",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by Max Gab",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "base"
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "base"
|
||||
},
|
||||
{
|
||||
"name": "syringe1"
|
||||
},
|
||||
{
|
||||
"name": "syringe2"
|
||||
},
|
||||
{
|
||||
"name": "syringe3"
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"name": "syringe1"
|
||||
},
|
||||
{
|
||||
"name": "syringe2"
|
||||
},
|
||||
{
|
||||
"name": "syringe3"
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 483 B |
|
After Width: | Height: | Size: 417 B |
|
After Width: | Height: | Size: 362 B |
|
After Width: | Height: | Size: 913 B |
|
After Width: | Height: | Size: 911 B |
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"version": 1,
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"copyright": "Created by TheShuEd (Github)",
|
||||
"states": [
|
||||
{
|
||||
"name": "base"
|
||||
},
|
||||
{
|
||||
"name": "closed"
|
||||
},
|
||||
{
|
||||
"name": "opened"
|
||||
},
|
||||
{
|
||||
"name": "cooking",
|
||||
"delays": [
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 410 B |
@@ -138,10 +138,10 @@ CP14ClothingCloakCuirassLoincloth: CP14ArmorIronCuirass
|
||||
CP14ClothingCloakCuirassLeg: CP14ArmorIronCuirass
|
||||
|
||||
#2025-21-01
|
||||
CP14PlateWooden: CP14Plate
|
||||
CP14PlateWooden2: CP14Plate
|
||||
CP14PlateCeramic: CP14Plate
|
||||
CP14PlateIron: CP14Plate
|
||||
CP14PlateWooden: CP14PlateWooden
|
||||
CP14PlateWooden2: CP14PlateWooden
|
||||
CP14PlateCeramic: CP14PlateWooden
|
||||
CP14PlateIron: CP14PlateIron
|
||||
|
||||
#2025-22-01
|
||||
CP14BaseLightHammer: CP14ModularIronHammer
|
||||
@@ -369,6 +369,10 @@ CP14AlchemyFurnace: CP14Furnace
|
||||
CP14WoodenClosetGuardFilled: null
|
||||
CP14WoodenClosetGuardCommanderFilled: null
|
||||
|
||||
#2025-13-07
|
||||
CP14Plate: CP14PlateWooden
|
||||
|
||||
|
||||
# <---> CrystallEdge migration zone end
|
||||
|
||||
|
||||
|
||||