From 7bb7ea2183dab5bb55d916dc50ab1e379df490b9 Mon Sep 17 00:00:00 2001 From: Red <96445749+TheShuEd@users.noreply.github.com> Date: Wed, 16 Jul 2025 08:15:08 +0300 Subject: [PATCH] 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 --- .../_CP14/Cooking/CP14ClientCookingSystem.cs | 59 ++++ .../_CP14/Cooking/CP14CookingSystem.cs | 89 +++++ .../Cooking/CP14RandomFoodDataComponent.cs | 14 + .../Temperature/CP14TemperatureSystem.cs | 58 ++-- .../CP14TemperatureTransmissionComponent.cs | 11 + .../Chemistry/Reaction/ReactionPrototype.cs | 2 +- .../Nutrition/Components/FoodComponent.cs | 3 +- .../Cooking/CP14CookingRecipePrototype.cs | 39 +++ .../_CP14/Cooking/CP14CookingRequirement.cs | 29 ++ .../CP14SharedCookingSystem.DoAfter.cs | 170 ++++++++++ .../CP14SharedCookingSystem.Transfer.cs | 61 ++++ .../_CP14/Cooking/CP14SharedCookingSystem.cs | 314 ++++++++++++++++++ .../Components/CP14FoodCookerComponent.cs | 91 +++++ .../Components/CP14FoodHolderComponent.cs | 29 ++ .../_CP14/Cooking/Requirements/AlwaysMet.cs | 27 ++ .../_CP14/Cooking/Requirements/TagBlocked.cs | 36 ++ .../_CP14/Cooking/Requirements/TagRequired.cs | 56 ++++ .../CP14TemperatureTransformationComponent.cs | 11 +- .../Audio/_CP14/Ambience/attributions.yml | 5 + Resources/Audio/_CP14/Ambience/pan_frying.ogg | Bin 0 -> 95346 bytes .../Audio/_CP14/Effects/attributions.yml | 7 +- Resources/Audio/_CP14/Effects/pan_close.ogg | Bin 0 -> 8255 bytes Resources/Audio/_CP14/Effects/pan_open.ogg | Bin 0 -> 9282 bytes .../Locale/en-US/_CP14/cooking/examine.ftl | 2 + .../Locale/en-US/_CP14/cooking/meals.ftl | 41 +++ Resources/Locale/en-US/_CP14/job/job.ftl | 4 +- .../Locale/ru-RU/_CP14/cooking/examine.ftl | 2 + .../Locale/ru-RU/_CP14/cooking/meals.ftl | 41 +++ Resources/Locale/ru-RU/_CP14/job/job.ftl | 4 +- Resources/Maps/_CP14/comoss.yml | 236 ++++++++----- Resources/Maps/_CP14/venicialis.yml | 222 +++++++++---- .../Recipes/Reactions/single_reagent.yml | 1 + .../_CP14/Catalog/Fills/closets.yml | 19 +- .../Entities/Actions/Spells/Fire/heat.yml | 4 +- .../Objects/Consumable/Food/Meals/plate.yml | 87 +++++ .../Objects/Consumable/Food/cheese.yml | 29 +- .../Objects/Consumable/Food/cutlery.yml | 20 -- .../Objects/Consumable/Food/dough.yml | 26 +- .../Entities/Objects/Consumable/Food/egg.yml | 8 +- .../Entities/Objects/Consumable/Food/meat.yml | 177 +++++++++- .../Objects/Consumable/Food/meat_dish.yml | 40 --- .../Objects/Consumable/Food/produce.yml | 50 ++- .../Objects/Consumable/Food/salad.yml | 35 -- .../Objects/Consumable/Food/simple_dish.yml | 40 --- .../_CP14/Entities/Objects/Materials/dye.yml | 27 -- .../Specific/Cooking/frying_pen.yml | 95 ++++++ .../_CP14/Recipes/Cooking/meals.yml | 227 +++++++++++++ .../_CP14/Recipes/Workbench/Anvil/misc.yml | 15 + .../Workbench/CookingTable/meat_dish.yml | 32 -- .../Recipes/Workbench/CookingTable/misc.yml | 11 - .../Recipes/Workbench/CookingTable/salad.yml | 17 - .../Recipes/Workbench/Workbench/misc.yml | 4 +- .../Demiplane/tags.yml => Tags/demiplane.yml} | 0 Resources/Prototypes/_CP14/Tags/food.yml | 63 ++++ .../_CP14/{tags.yml => Tags/misc.yml} | 33 -- .../Trading/BuyPositions/dairy_products.yml | 16 +- .../_CP14/Trading/SellRequests/gardens.yml | 10 - .../Guidebook_EN/JobsTabs/Innkeepers.xml | 2 +- .../Guidebook_RU/JobsTabs/Innkeepers.xml | 2 +- .../Food/Meals/misc.rsi/bread_plate.png | Bin 0 -> 494 bytes .../Food/Meals/misc.rsi/cheese_bread.png | Bin 0 -> 389 bytes .../Food/Meals/misc.rsi/green_salad.png | Bin 0 -> 545 bytes .../Food/Meals/misc.rsi/green_salad_meat.png | Bin 0 -> 548 bytes .../Food/Meals/misc.rsi/mashed_potato.png | Bin 0 -> 310 bytes .../Meals/misc.rsi/mashed_potato_meat.png | Bin 0 -> 353 bytes .../Meals/misc.rsi/mashed_potato_salad.png | Bin 0 -> 372 bytes .../Food/Meals/misc.rsi/meat_plate.png | Bin 0 -> 446 bytes .../Consumable/Food/Meals/misc.rsi/meta.json | 50 +++ .../Food/Meals/misc.rsi/monster_egg.png | Bin 0 -> 436 bytes .../misc.rsi}/pig_cheese.png | Bin .../Food/Meals/misc.rsi/stuffed_potato.png | Bin 0 -> 532 bytes .../Consumable/Food/Meals/misc.rsi/trash.png | Bin 0 -> 462 bytes .../Meals/misc.rsi/zellasian_breakfast.png | Bin 0 -> 465 bytes .../Consumable/Food/Meals/plates.rsi/gold.png | Bin 0 -> 384 bytes .../Consumable/Food/Meals/plates.rsi/iron.png | Bin 0 -> 370 bytes .../Food/Meals/plates.rsi/meta.json | 20 ++ .../Food/Meals/plates.rsi/wooden.png | Bin 0 -> 349 bytes .../Consumable/Food/hot_potato.rsi/meta.json | 11 +- .../Food/hot_potato.rsi/stuffed_potato1.png | Bin 353 -> 0 bytes .../Food/hot_potato.rsi/stuffed_potato2.png | Bin 425 -> 0 bytes .../Food/hot_potato.rsi/stuffed_potato3.png | Bin 330 -> 0 bytes .../Consumable/Food/pig_cheese.rsi/meta.json | 14 - .../Consumable/Food/plates.rsi/meta.json | 14 - .../Consumable/Food/plates.rsi/plate.png | Bin 408 -> 0 bytes .../Consumable/Food/salad.rsi/green_salad.png | Bin 470 -> 0 bytes .../Consumable/Food/salad.rsi/meta.json | 14 - .../Specific/Alchemy/syringe.rsi/meta.json | 58 ++-- .../Specific/Cooking/frying_pan.rsi/base.png | Bin 0 -> 483 bytes .../Cooking/frying_pan.rsi/closed.png | Bin 0 -> 417 bytes .../Cooking/frying_pan.rsi/cooking.png | Bin 0 -> 362 bytes .../Cooking/frying_pan.rsi/inhand-left.png | Bin 0 -> 913 bytes .../Cooking/frying_pan.rsi/inhand-right.png | Bin 0 -> 911 bytes .../Specific/Cooking/frying_pan.rsi/meta.json | 39 +++ .../Cooking/frying_pan.rsi/opened.png | Bin 0 -> 410 bytes Resources/migration.yml | 12 +- 95 files changed, 2437 insertions(+), 548 deletions(-) create mode 100644 Content.Client/_CP14/Cooking/CP14ClientCookingSystem.cs create mode 100644 Content.Server/_CP14/Cooking/CP14CookingSystem.cs create mode 100644 Content.Server/_CP14/Cooking/CP14RandomFoodDataComponent.cs create mode 100644 Content.Server/_CP14/Temperature/CP14TemperatureTransmissionComponent.cs create mode 100644 Content.Shared/_CP14/Cooking/CP14CookingRecipePrototype.cs create mode 100644 Content.Shared/_CP14/Cooking/CP14CookingRequirement.cs create mode 100644 Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.DoAfter.cs create mode 100644 Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.Transfer.cs create mode 100644 Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.cs create mode 100644 Content.Shared/_CP14/Cooking/Components/CP14FoodCookerComponent.cs create mode 100644 Content.Shared/_CP14/Cooking/Components/CP14FoodHolderComponent.cs create mode 100644 Content.Shared/_CP14/Cooking/Requirements/AlwaysMet.cs create mode 100644 Content.Shared/_CP14/Cooking/Requirements/TagBlocked.cs create mode 100644 Content.Shared/_CP14/Cooking/Requirements/TagRequired.cs rename {Content.Server => Content.Shared}/_CP14/Temperature/CP14TemperatureTransformationComponent.cs (67%) create mode 100644 Resources/Audio/_CP14/Ambience/pan_frying.ogg create mode 100644 Resources/Audio/_CP14/Effects/pan_close.ogg create mode 100644 Resources/Audio/_CP14/Effects/pan_open.ogg create mode 100644 Resources/Locale/en-US/_CP14/cooking/examine.ftl create mode 100644 Resources/Locale/en-US/_CP14/cooking/meals.ftl create mode 100644 Resources/Locale/ru-RU/_CP14/cooking/examine.ftl create mode 100644 Resources/Locale/ru-RU/_CP14/cooking/meals.ftl create mode 100644 Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/Meals/plate.yml delete mode 100644 Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/salad.yml create mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Specific/Cooking/frying_pen.yml create mode 100644 Resources/Prototypes/_CP14/Recipes/Cooking/meals.yml delete mode 100644 Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/meat_dish.yml delete mode 100644 Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/salad.yml rename Resources/Prototypes/_CP14/{Procedural/Demiplane/tags.yml => Tags/demiplane.yml} (100%) create mode 100644 Resources/Prototypes/_CP14/Tags/food.yml rename Resources/Prototypes/_CP14/{tags.yml => Tags/misc.yml} (80%) create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/bread_plate.png create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/cheese_bread.png create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/green_salad.png create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/green_salad_meat.png create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/mashed_potato.png create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/mashed_potato_meat.png create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/mashed_potato_salad.png create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/meat_plate.png create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/monster_egg.png rename Resources/Textures/_CP14/Objects/Consumable/Food/{pig_cheese.rsi => Meals/misc.rsi}/pig_cheese.png (100%) create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/stuffed_potato.png create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/trash.png create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/zellasian_breakfast.png create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/plates.rsi/gold.png create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/plates.rsi/iron.png create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/plates.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/Meals/plates.rsi/wooden.png delete mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/hot_potato.rsi/stuffed_potato1.png delete mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/hot_potato.rsi/stuffed_potato2.png delete mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/hot_potato.rsi/stuffed_potato3.png delete mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/pig_cheese.rsi/meta.json delete mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/plates.rsi/meta.json delete mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/plates.rsi/plate.png delete mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/salad.rsi/green_salad.png delete mode 100644 Resources/Textures/_CP14/Objects/Consumable/Food/salad.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/base.png create mode 100644 Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/closed.png create mode 100644 Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/cooking.png create mode 100644 Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/inhand-left.png create mode 100644 Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/inhand-right.png create mode 100644 Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/opened.png diff --git a/Content.Client/_CP14/Cooking/CP14ClientCookingSystem.cs b/Content.Client/_CP14/Cooking/CP14ClientCookingSystem.cs new file mode 100644 index 0000000000..aa6ed2f828 --- /dev/null +++ b/Content.Client/_CP14/Cooking/CP14ClientCookingSystem.cs @@ -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(OnAfterHandleState); + } + + private void OnAfterHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + if (!TryComp(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++; + } + } +} diff --git a/Content.Server/_CP14/Cooking/CP14CookingSystem.cs b/Content.Server/_CP14/Cooking/CP14CookingSystem.cs new file mode 100644 index 0000000000..81c6c3a50f --- /dev/null +++ b/Content.Server/_CP14/Cooking/CP14CookingSystem.cs @@ -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(OnRandomFoodMapInit); + } + + private void OnRandomFoodMapInit(Entity ent, ref MapInitEvent args) + { + if (!TryComp(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 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 ent, ref CP14CookingDoAfter args) + { + base.OnCookFinished(ent, ref args); + + if (args.Cancelled || args.Handled) + return; + + TryTransformAll(ent); + } + + private void TryTransformAll(Entity ent) + { + if (!_container.TryGetContainer(ent, ent.Comp.ContainerId, out var container)) + return; + + var containedEntities = container.ContainedEntities.ToList(); + + foreach (var contained in containedEntities) + { + if (!TryComp(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); + } + } +} diff --git a/Content.Server/_CP14/Cooking/CP14RandomFoodDataComponent.cs b/Content.Server/_CP14/Cooking/CP14RandomFoodDataComponent.cs new file mode 100644 index 0000000000..0ef9be84f1 --- /dev/null +++ b/Content.Server/_CP14/Cooking/CP14RandomFoodDataComponent.cs @@ -0,0 +1,14 @@ +namespace Content.Server._CP14.Cooking; + +/// +/// Attempting to add a random dish to CP14FoodHolderComponent +/// +[RegisterComponent, Access(typeof(CP14CookingSystem))] +public sealed partial class CP14RandomFoodDataComponent : Component +{ + /// + /// Chance of food appearing + /// + [DataField] + public float Prob = 0.75f; +} diff --git a/Content.Server/_CP14/Temperature/CP14TemperatureSystem.cs b/Content.Server/_CP14/Temperature/CP14TemperatureSystem.cs index 9078106028..34476a3db6 100644 --- a/Content.Server/_CP14/Temperature/CP14TemperatureSystem.cs +++ b/Content.Server/_CP14/Temperature/CP14TemperatureSystem.cs @@ -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(OnTemperatureChanged); + SubscribeLocalEvent(OnTemperatureTransmite); + } + + /// + /// 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. + /// + private void OnTemperatureTransmite(Entity 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 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(); 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(heatingEntity, out var container)) continue; diff --git a/Content.Server/_CP14/Temperature/CP14TemperatureTransmissionComponent.cs b/Content.Server/_CP14/Temperature/CP14TemperatureTransmissionComponent.cs new file mode 100644 index 0000000000..3faf8a2199 --- /dev/null +++ b/Content.Server/_CP14/Temperature/CP14TemperatureTransmissionComponent.cs @@ -0,0 +1,11 @@ +namespace Content.Server._CP14.Temperature; + +/// +/// when it receives the temperature, it distributes it among all objects inside the specified container +/// +[RegisterComponent, Access(typeof(CP14TemperatureSystem))] +public sealed partial class CP14TemperatureTransmissionComponent : Component +{ + [DataField("containerId", required: true)] + public string ContainerId = string.Empty; +} diff --git a/Content.Shared/Chemistry/Reaction/ReactionPrototype.cs b/Content.Shared/Chemistry/Reaction/ReactionPrototype.cs index 9e63a88238..a6b50d3d86 100644 --- a/Content.Shared/Chemistry/Reaction/ReactionPrototype.cs +++ b/Content.Shared/Chemistry/Reaction/ReactionPrototype.cs @@ -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 /// /// If true, this reaction will only consume only integer multiples of the reactant amounts. If there are not diff --git a/Content.Shared/Nutrition/Components/FoodComponent.cs b/Content.Shared/Nutrition/Components/FoodComponent.cs index ce04569fcb..41399be50d 100644 --- a/Content.Shared/Nutrition/Components/FoodComponent.cs +++ b/Content.Shared/Nutrition/Components/FoodComponent.cs @@ -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] diff --git a/Content.Shared/_CP14/Cooking/CP14CookingRecipePrototype.cs b/Content.Shared/_CP14/Cooking/CP14CookingRecipePrototype.cs new file mode 100644 index 0000000000..95e3ef48a6 --- /dev/null +++ b/Content.Shared/_CP14/Cooking/CP14CookingRecipePrototype.cs @@ -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!; + + /// + /// List of conditions that must be met in the set of ingredients for a dish + /// + [DataField] + public List Requirements = new(); + + /// + /// 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. + /// + [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"); +} diff --git a/Content.Shared/_CP14/Cooking/CP14CookingRequirement.cs b/Content.Shared/_CP14/Cooking/CP14CookingRequirement.cs new file mode 100644 index 0000000000..af648d86f2 --- /dev/null +++ b/Content.Shared/_CP14/Cooking/CP14CookingRequirement.cs @@ -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; + +/// +/// 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. +/// +[ImplicitDataDefinitionForInheritors] +[MeansImplicitUse] +public abstract partial class CP14CookingCraftRequirement +{ + public abstract bool CheckRequirement(IEntityManager entManager, + IPrototypeManager protoManager, + IReadOnlyList placedEntities, + List> placedTags, + Solution? solution = null); + + public abstract float GetComplexity(); +} diff --git a/Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.DoAfter.cs b/Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.DoAfter.cs new file mode 100644 index 0000000000..01ef53d1c8 --- /dev/null +++ b/Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.DoAfter.cs @@ -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(OnTemperatureChange); + SubscribeLocalEvent(OnParentChanged); + + SubscribeLocalEvent(OnCookFinished); + SubscribeLocalEvent(OnCookBurned); + } + + private void UpdateDoAfter(float frameTime) + { + var query = EntityQueryEnumerator(); + 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 ent, ref CP14BurningDoAfter args) + { + StopCooking(ent); + + if (args.Cancelled || args.Handled) + return; + + BurntFood(ent); + + args.Handled = true; + } + + protected virtual void OnCookFinished(Entity 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 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 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 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 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 ent, ref EntParentChangedMessage args) + { + StopCooking(ent); + } +} + +[Serializable, NetSerializable] +public sealed partial class CP14CookingDoAfter : DoAfterEvent +{ + [DataField] + public ProtoId Recipe; + + public CP14CookingDoAfter(ProtoId recipe) + { + Recipe = recipe; + } + + public override DoAfterEvent Clone() => this; +} + +[Serializable, NetSerializable] +public sealed partial class CP14BurningDoAfter : SimpleDoAfterEvent; diff --git a/Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.Transfer.cs b/Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.Transfer.cs new file mode 100644 index 0000000000..20db3630d3 --- /dev/null +++ b/Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.Transfer.cs @@ -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(OnAfterInteract); + SubscribeLocalEvent(OnInteractUsing); + + SubscribeLocalEvent(OnInsertAttempt); + } + + private void OnAfterInteract(Entity ent, ref AfterInteractEvent args) + { + if (!TryComp(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 ent, ref AfterInteractEvent args) + { + if (!TryComp(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 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(); + } + } +} diff --git a/Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.cs b/Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.cs new file mode 100644 index 0000000000..6fa4f94c98 --- /dev/null +++ b/Content.Shared/_CP14/Cooking/CP14SharedCookingSystem.cs @@ -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!; + + /// + /// When overcooking food, we will replace the reagents inside with this reagent. + /// + private readonly ProtoId _burntFoodReagent = "CP14BurntFood"; + + /// + /// 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. + /// + protected List OrderedRecipes = []; + + public override void Initialize() + { + base.Initialize(); + InitTransfer(); + InitDoAfter(); + + CacheAndOrderRecipes(); + + SubscribeLocalEvent(OnPrototypesReloaded); + SubscribeLocalEvent(OnExaminedEvent); + SubscribeLocalEvent(OnLand); + } + + public override void Update(float frameTime) + { + UpdateDoAfter(frameTime); + } + + private void CacheAndOrderRecipes() + { + OrderedRecipes = _proto.EnumeratePrototypes() + .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()) + return; + + CacheAndOrderRecipes(); + } + + private void OnExaminedEvent(Entity 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 ent, ref LandEvent args) + { + ent.Comp.FoodData = null; + Dirty(ent); + } + + + + /// + /// Transfer food data from cooker to holder + /// + private void MoveFoodToHolder(Entity ent, Entity cooker) + { + if (!TryComp(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(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 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>(); + foreach (var contained in container.ContainedEntities) + { + if (!TryComp(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 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(recipe.FoodData.Visuals), + Trash = new List(recipe.FoodData.Trash), + Flavors = new HashSet(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(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(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 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)); + } +} diff --git a/Content.Shared/_CP14/Cooking/Components/CP14FoodCookerComponent.cs b/Content.Shared/_CP14/Cooking/Components/CP14FoodCookerComponent.cs new file mode 100644 index 0000000000..64b3d90bde --- /dev/null +++ b/Content.Shared/_CP14/Cooking/Components/CP14FoodCookerComponent.cs @@ -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 +{ + /// + /// What food is currently stored here? + /// + [DataField, AutoNetworkedField] + public CP14FoodData? FoodData; + + [DataField(required: true)] + public CP14FoodType FoodType; + + [DataField] + public string ContainerId; + + [DataField] + public string? SolutionId; + + public DoAfterId? DoAfterId = null; + + /// + /// The moment in time when this entity was last heated. Used for calculations when DoAfter cooking should be reset. + /// + [DataField, AutoNetworkedField] + public TimeSpan LastHeatingTime = TimeSpan.Zero; + + /// + /// How often do you need to heat this entity so that doAfter does not reset? + /// + /// + /// 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. + /// + [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? CurrentRecipe; + + [DataField] + public LocId? Name; + + [DataField] + public LocId? Desc; + + [DataField] + public List Visuals = new(); + + [DataField] + public List Trash = new(); + + [DataField] + public HashSet Flavors = new(); +} + +public enum CP14FoodType +{ + Meal, +} + +[Serializable, NetSerializable] +public enum CP14CookingVisuals : byte +{ + Cooking, + Burning, +} diff --git a/Content.Shared/_CP14/Cooking/Components/CP14FoodHolderComponent.cs b/Content.Shared/_CP14/Cooking/Components/CP14FoodHolderComponent.cs new file mode 100644 index 0000000000..24ba713d00 --- /dev/null +++ b/Content.Shared/_CP14/Cooking/Components/CP14FoodHolderComponent.cs @@ -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? Visuals; + + [DataField(required: true)] + public CP14FoodType FoodType; + + [DataField] + public string? SolutionId; + + /// + /// target layer, where new layers will be added. This allows you to control the order of generative layers and static layers. + /// + [DataField] + public string TargetLayerMap = "cp14_foodLayers"; + + public HashSet RevealedLayers = new(); +} diff --git a/Content.Shared/_CP14/Cooking/Requirements/AlwaysMet.cs b/Content.Shared/_CP14/Cooking/Requirements/AlwaysMet.cs new file mode 100644 index 0000000000..f247ca6f9c --- /dev/null +++ b/Content.Shared/_CP14/Cooking/Requirements/AlwaysMet.cs @@ -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 placedEntities, + List> placedTags, + Solution? solution = null) + { + return true; + } + + public override float GetComplexity() + { + return 0; + } +} diff --git a/Content.Shared/_CP14/Cooking/Requirements/TagBlocked.cs b/Content.Shared/_CP14/Cooking/Requirements/TagBlocked.cs new file mode 100644 index 0000000000..7bede7e352 --- /dev/null +++ b/Content.Shared/_CP14/Cooking/Requirements/TagBlocked.cs @@ -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> Tags = default!; + + public override bool CheckRequirement(IEntityManager entManager, + IPrototypeManager protoManager, + IReadOnlyList placedEntities, + List> placedTags, + Solution? solution = null) + { + foreach (var placedTag in placedTags) + { + if (Tags.Contains(placedTag)) + return false; + } + + return true; + } + + public override float GetComplexity() + { + return 1; + } +} diff --git a/Content.Shared/_CP14/Cooking/Requirements/TagRequired.cs b/Content.Shared/_CP14/Cooking/Requirements/TagRequired.cs new file mode 100644 index 0000000000..dee433482e --- /dev/null +++ b/Content.Shared/_CP14/Cooking/Requirements/TagRequired.cs @@ -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 +{ + /// + /// Any of this tags accepted + /// + [DataField(required: true)] + public List> 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 placedEntities, + List> 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; + } +} diff --git a/Content.Server/_CP14/Temperature/CP14TemperatureTransformationComponent.cs b/Content.Shared/_CP14/Temperature/CP14TemperatureTransformationComponent.cs similarity index 67% rename from Content.Server/_CP14/Temperature/CP14TemperatureTransformationComponent.cs rename to Content.Shared/_CP14/Temperature/CP14TemperatureTransformationComponent.cs index 27134eceb6..1567b308ab 100644 --- a/Content.Server/_CP14/Temperature/CP14TemperatureTransformationComponent.cs +++ b/Content.Shared/_CP14/Temperature/CP14TemperatureTransformationComponent.cs @@ -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; /// /// passively returns the solution temperature to the standard /// -[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 /// [DataField] public string Solution = "food"; + + /// + /// The transformation will occur instantly if the entity was in FoodCookerComponent at the moment cooking ended. + /// + [DataField] + public bool AutoTransformOnCooked = true; } [DataRecord] diff --git a/Resources/Audio/_CP14/Ambience/attributions.yml b/Resources/Audio/_CP14/Ambience/attributions.yml index 9ac94c838c..146ce5c26d 100644 --- a/Resources/Audio/_CP14/Ambience/attributions.yml +++ b/Resources/Audio/_CP14/Ambience/attributions.yml @@ -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.' diff --git a/Resources/Audio/_CP14/Ambience/pan_frying.ogg b/Resources/Audio/_CP14/Ambience/pan_frying.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6b6225984ba657c6cb99d9260f7717ded12edb9b GIT binary patch literal 95346 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⪻r!1QwPK+m){XNjK7OLW`m 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/_CP14/Effects/attributions.yml b/Resources/Audio/_CP14/Effects/attributions.yml index b6f7203990..180ed916fb 100644 --- a/Resources/Audio/_CP14/Effects/attributions.yml +++ b/Resources/Audio/_CP14/Effects/attributions.yml @@ -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/" \ No newline at end of file + 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/" \ No newline at end of file diff --git a/Resources/Audio/_CP14/Effects/pan_close.ogg b/Resources/Audio/_CP14/Effects/pan_close.ogg new file mode 100644 index 0000000000000000000000000000000000000000..540175d927aa78027dff2534ecb977b81698fa25 GIT binary patch literal 8255 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 Y81X@6Rk<~-zW(PEs#n!fZL;9M0FjM1`Tzg` literal 0 HcmV?d00001 diff --git a/Resources/Audio/_CP14/Effects/pan_open.ogg b/Resources/Audio/_CP14/Effects/pan_open.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f81a38ff2878c97400ca17debc5a0555aca47b2d GIT binary patch literal 9282 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 - + diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/Innkeepers.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/Innkeepers.xml index 7f09e4ae43..92f79faed5 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/Innkeepers.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/Innkeepers.xml @@ -37,7 +37,7 @@ - + diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/bread_plate.png b/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/bread_plate.png new file mode 100644 index 0000000000000000000000000000000000000000..4eb1f03294c2e624a869f8cf6295da67d1156350 GIT binary patch literal 494 zcmVPx$s7XXYR9J=Wl+7zdQ5eR5BWi3&$4pA3X2aC5HBC*!N|wrI_z&#Zvaz!m8#^gB zEG!fYDVZi4c0O)lAx)#nHQW)4W6I)K94;fdcNnGIXLrx3=i@!keZhkV5C0v$Y7?fX zhg9jN1i;|jrXzoCwS@QQN0l@sZT$lPJltm41m$F+A_J*JRK5S6$n5z*rxxKjBCOA? zlU?e9?VK8Sj-0Lyq!LjTONPqNK*f?FL^uxU)D6uY)CJplD&)vp>NBb`)VL8JkMt@L z@Y_NF(v*mRpVhf@TO8mry~Xv;Aw{D|t8lJZMNhCXxkxM-LYk7s?oKfF06p?oQ|~(f zhmiT2)71n3teX-d;OA^R55V$N8tbL)(v*mB+!lW|$)R)YR>r4Do!P$sw>h&!PJQ>NnRBLpmzkk k71eEW4<0;t@bG8w3^!J{fTbMqa{vGU07*qoM6N<$f`)Px$KS@MER9J=Wls!wsP#A@uiVht_+Q9~eP7YNFQWp(6=-{GpsX9sjfs;SM$we1e z2Q|2<;0G=Rar6TWF=(Bn1PW=P0TBtJcpXBrnuLz`SugK7=jEPzK_ZbzBwgZqvm(;W zWx8Shaus)?{5HTcH-9|(G^&RE()bwv}wz^ zi_RLR;ODIcKz@24b`N3)unb)QnCG9UYZ?F(+7JK->n8v_z4}xZ`=gnet=hl(iA%V@ zIwwl=!}JXn0r+k^c(%vhSrdR$$4aD`>J@CyYGPE)(RO_x*c@QTzD=x``XAU(rvyOb jJupwYxkMt7NF*VDFN0Px$+et)0R9J=Wlrd-%VHk#=SZz&dI0}M;ga~R6L5rc3c-pEYMNw~Pf(E*D3kYpM zu)DQTVkZU3T2Lv046TDW^@7E%8CvRaWKcXp3FmgpZ#^i#L%16p;y)-V+%x|F$NPP} z-^&LP5fKspBkLPe@^8=3bBNjUq|6n^m4-Z`QuMQ6vr&;rEl1|o1^KRWRX&?JCYz0l z1W;`p5K}42702bNlgHV24=@uhhz_aZb*eRwxfu-rr@qBRX^FOHQLTAc^`?@xk^@$~ z8QXUcc$DrBo4;v%5C6yX5)-8*=2zALSY2FDkp&bTm@QAra{dl&&jP@9e2jDVSbq7M z?3FmJPm;87Ky(lpgY>sUhDRS_+`a!xedQIH373>PLbc`rU?yDjvq_%3_ZZUR-M7A7 zM8;t7;};Mec1~R8)r${3dnl~{0MWszZvkD4cLr0m_O{VShI#s+!0O@xZx1hVbM!Xi z;%P+2KtB^>`T4b;p;U4Jx-JBP14wE)=2zAj(&AwdgIr8!2Pot>e_sfJFx9r>V>>== z&*Je74YO~T;C(tf06-zX8B;x0M^y(1IG^grc6`S45?{5?wDz{K9Y1Uw)Tuh4#QMgR j{3p(DL_|bH#Gl{?;y15jeTmI{00000NkvXXu0mjf6n5}p literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/green_salad_meat.png b/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/green_salad_meat.png new file mode 100644 index 0000000000000000000000000000000000000000..2a6297071476f32813445eaf940195997270d65d GIT binary patch literal 548 zcmV+<0^9wGP)Px$-bqA3R9J=WlTS#KVI0RluWw)*!X_0HDQzx#q2}l%iGM%hj$qJ>$%e(=kfI` zyeS{zbmSa%>t5_=3?rm*>p}abOIcM105%4h*yX3r=i$;t9{{g2s{nL&)DrJWOKD4= z;n>2GHny;&2}dVo

7@9RIdVmp%o+bYYF|j#>cXJ!$Rbt5Z_vxJ@>|#vq9n|1aXx mg|&+D`kQPA6bgkxq4)_=e69qxRuQ-W0000Px#@JU2LR9J=WldTE@K@fmH#UMr>KoFBZm<$GsU9k8B3O1wo48DTk8(4e-n_Mu- z{iNgIn#FirJA>}BVA(yBFke|%n3->w84v_P5dInOFfM-0Q7IGjxGsyt4`~m2nD2P) zIp=c~hw1{`0u$8FV3Ygt0+JhebPJ?c%PL$?E zX-?vY033HitNpMR2;%JB=|{$tn9WBlrcJu7I;YE1i`n3`1IOL4=yw`l%NN8M>R$=k zj=*_ql?0$i5~VrY%|y$r_IK;NrOr^zSB*p!FLQ>1AP9o+0tdBrJw`grJOBUy07*qo IM6N<$g6`^pQ~&?~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/mashed_potato_meat.png b/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/mashed_potato_meat.png new file mode 100644 index 0000000000000000000000000000000000000000..7c3c891d11a807a4f325b9dc396f4ed69fe3c1cf GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^T<(w;7kArY;~ z2@)ZLnX!XRen|49cA2h2Pe z(KK06Jx#WGQJotm)cn@(~?8;|G010G%3&!@fqdp+z~6408Y23K~Sl(IE-M;;`u zI8*TSpLg58V*d`a=}TN@+^OvR`08%{2Z0-#KJpyCy8FI_m|mS%m!U?(5`l)solmPi wJc!-#L$lf9c>JasdoH(w8sKm+00IUEsnWuG1=n~^0>g~K)78&qol`;+0HBtg7ytkO literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/mashed_potato_salad.png b/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/misc.rsi/mashed_potato_salad.png new file mode 100644 index 0000000000000000000000000000000000000000..9515ddc0066e8aff71f52202dbf0f21b907ecd42 GIT binary patch literal 372 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 Hu0mjf8B)wZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/plates.rsi/gold.png b/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/plates.rsi/gold.png new file mode 100644 index 0000000000000000000000000000000000000000..1a362ffb615f0a16c00115f2ea88e11ead8c5a34 GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^TEDn4#?y*WRVR3T?5+}GC#beX{JF-eF-=pDWc}#xa)RfO2ml!thNPp|SwCyHhqEo#b1@P68IQ?l>Q&od2Y*gJo3zb*8ZW04HQ zW|_N56H+$_IFxf}m~?asHSsxY|8wzoyuf|#O$%EXG)x>GT)aL1!-b6(o+nMvux`E1 zw@8+uJ0n8l!7A58KE{*5R~ZeuU&=8_FDm`lT(c?be)W#!iJko6QVgB#mYhZnLb>Np zwoh?oJYg_F*`YJ*|FZTE7RRP>CnPDb3nyE8*d8=t_-uAY@V@*$HfcWQ6HggVBnc>7 zE1D$3z|9%)=+HEdL_TGaHz%q(`504t7hGug==f8f&10j)vUVNz2dA2zbo9dmhs}nC ZLH%Nj;>4vN)PO_v3md*eG literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/plates.rsi/iron.png b/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/plates.rsi/iron.png new file mode 100644 index 0000000000000000000000000000000000000000..15acaf3282f459d95327fb8f853ea2555a685081 GIT binary patch literal 370 zcmV-&0ge8NP)Px$EJ;K`R9J=WlRrztP!vZ`-I^9MsaO;o{RfgILvWO?g5aWqAf@0`^qaVfAH`8J zM5GF>meQq5r8)(Y*D+2nSSjs&&FDL0a^L+O?z;~x7K`P-Q(ERwquI)4eSf&WGwx?} zKnJ&@5P-7d0x(fA0G=PPw|mI#&6T*XxUkV|Wxs=~ZUv`O1wf?qAn1nAQu_EdS;&5H7_hS)a0hK0V0hK2CJ`@({b-H+d zAP(1fevrSGLIO|WW2x8aQm>yd9Q5Z-LZu1AL7&a7ZQ4=D%jR{Qex}lahuT31|s`orC?E|MkeF;l=`gMS!VgGYPg>EEbFA2f}=QFK(x< Q*Z=?k07*qoM6N<$f=T70QUCw| literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/plates.rsi/meta.json b/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/plates.rsi/meta.json new file mode 100644 index 0000000000..fc6596ca10 --- /dev/null +++ b/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/plates.rsi/meta.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/plates.rsi/wooden.png b/Resources/Textures/_CP14/Objects/Consumable/Food/Meals/plates.rsi/wooden.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b8e207d24fd613d6a06301b5ea516d683f66a4 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^T<;+`&!ArY;~ z2@*Rc5$q(bk*)dhZMNcxpqUx&0!um4cJ7nWZx+xOkK6j*u0FZq$20ck zg^L6N1DygG&lJ_{JH}>L^ZV?B6}o;G1a*!`Y3Ltvyzt%N!@JMsY;ER8W_oX7mfQF9 z;D--q`IDv^gG{#Kv#9?s+q`(2#gT9x9+#zzY(U@~r#R(K6Su%r4%=Rn|JE;08?Ldg zo1PHWaP;rL)%ucs_jfo~D!G&&`RyP7V4n;7h6{?gTe~DWM4fm|2Xc literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/hot_potato.rsi/meta.json b/Resources/Textures/_CP14/Objects/Consumable/Food/hot_potato.rsi/meta.json index cfd5670ee6..979b2dc151 100644 --- a/Resources/Textures/_CP14/Objects/Consumable/Food/hot_potato.rsi/meta.json +++ b/Resources/Textures/_CP14/Objects/Consumable/Food/hot_potato.rsi/meta.json @@ -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" } ] } diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/hot_potato.rsi/stuffed_potato1.png b/Resources/Textures/_CP14/Objects/Consumable/Food/hot_potato.rsi/stuffed_potato1.png deleted file mode 100644 index f18e773d24741fd209fe186e1fa8f4c649a35b7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^T<(w;7kArbD$ zDG~_>EDn4#?y*WRVR3T?5^Z@Lb7rJ|{NJ=!&Uumt-{If0g(Z%xeKzr_DpiWyKUhoM|EfQev=vgtDHT`7)}&v{}*aIr|&I!s&bJei%W`x-JZ%r2HMNJ z6m6W_90T3ERoo}MY3Qn0{eP8E{DFO}mP_>1`X6R?TQ!%Q^=;d{e!sEIeM#SHc9w|$ z%+?QH-OW#^I{wN%;q>awS0uMg-6^4S$xq;|;UdvPtKO=J-~FF-X%CNqyMi@K%Fi{S z@siKp?)2HR(?#1Q&%8kPx$V@X6oR9Hu2WEfz;IKcKZj5=U61V%$(Gz5lj2)sO&^#A^qYv6)Z-l2`*!<#1z z3un$?=va7+Bu|l~7*=e9EC;a#)e9Kry_v$`<fFe5R5i`Qmqm+b?)XasHF{}pw#7%bhFGRW}qF#PFJVUVu5$si-Z!=U3T z1hyOmHXLPQc=hx%(V;-J11jRJ{s&n91N*Rb+D!&yQBH=JKbRTfW2NDilj?hrgNb%P zl8f&Dv@mY4FF_W;04&%+iH{VY!}OEn0Bd7LxNl(wfP!3A;tNUfj@$?$+5sR!(uFd71*Aut*OqagqQF4v18 T+?=e$00000NkvXXu0mjfE>pGD diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/hot_potato.rsi/stuffed_potato3.png b/Resources/Textures/_CP14/Objects/Consumable/Food/hot_potato.rsi/stuffed_potato3.png deleted file mode 100644 index 6581714a37a984a2f7834040beb8eb4dfaca5dd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^TEDn4#?y*WRVR3VY5E<0-m(KIZa`#V6QSLv!lvI6;>1s;*b3=DjSL74G){)!Z!24PPZ$B+p3WC_;A2_ijBg8UK-O*|J|IsD0f zN+;8TYJ{CpkX<{w|z?A$ysN@D=#*aYIwBD-YXB)oTY`tQkbs_{aZK;A+0ofb>4Mulws*8V&FI+^YO*s`W^Zg8FflJ zwgSb<7&sba7#BGPHt{y-urVg-vNKMSVPH0BZ(t}&Qa<`9(16SBpoRpiz<~n{49-hC o_~%@(Uj+;^zSIcMG+$o^Eg+i%h(X{|@MI9>>FVdQ&MBb@0OpW|BLDyZ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/salad.rsi/green_salad.png b/Resources/Textures/_CP14/Objects/Consumable/Food/salad.rsi/green_salad.png deleted file mode 100644 index 541b1d11f56c11e81e3a323319923a3522a16028..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 470 zcmV;{0V)28P)Iy`~|p%mWoY$M@z2+8V=n{a>Qy_a(i-*+x36bgmnIg-yMMLw4l zzBhy7dvZi^hu&Hbz2z3z`P8ci^_ma2xiJdmD-RMJneF%b*CqiAITxH8N5dq1$UyU*mX zlfsQaw@t81*gik{eT5FsJpT7HkLtgW32=M&my^^sZljN_v;{!>uXPsmZkB)i!KFF5 zr3<6E1VG`s2p1n^q~%wDUBb*90kE?a=d9gL;o_A3z7AGrL+mWY`BoWX%JUZcRS&k$ zFC{BomO$7mYJ~&n)&k6}rEqD^dJ${A(0~8rOZq`dTY3W7Ox^+2{a=}7idL4z2@Rw9 zoZ9*HWE+6Ac|!pJLcv4FfV&l_Howzn)Xi)6dz;4%eQkw8p-?FP16B2orr7BPx$ok>JNR9J=WlsikqP#A`vLO~j9qXjD#+|?E|h#i8X_yYtN9Rw*wr=tJFNe~wY z7k`J^qDU>++QC7*R8+9Erjbr@kQ34*y}OxbN%+p?eZo0kz{A7CTIv}(OcL`kTQBk5Vd8Xk~jBGHMCYu?LmO-Evt@B?hGC@nA1XRTqr zpJt2Z!fwL>BGC!n%g$pl1wLyH!l5D8#n$?gx@?Me8*Z0y6$poh2#-jNg@ROS8e^fL zV`8PIf!0%ISNH+)k6%oUHsGc5TNO_mXW4TfU?>Td=ck9JOV z%k*Gfx-GD}w$91%0ppX=wjz36<-5v6l11SG$D|Bp@W9`44Et+IDW?0}BY2)Mdl1$J+&aczAdS ZegFe_qph2jUR(eG002ovPDHLkV1h4B*~b6? literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/closed.png b/Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..948a64ca96caf5114e6e253d9e3bded365efa285 GIT binary patch literal 417 zcmV;S0bc%zP)Px$TS-JgR9J=Wl(9?0KpcfXMJVlH(dN90E+UAaL#4Wuj@?TKr~Z9T4&v@8E>*Ok zC=CqtR&on7Q9rq*|*x0I8R2mKRgJ ze~uZi?g4Oma`dA{A_LW0-4Vh7Kp2vb%VRdzR(O1VV`={o%QgY9EIZQ3d{S{?$nQtw zX?6xQ?w@FO1_+V&d^6mXg2YOoT&g(RyE_O&x_v_Ar^Z><>*U=wdAPmf{Nl`~IdcN# zQpL$hIo0nK3u^=9q@-M`_>x$d)qq#rvQ1wKVWMhW*nEhQK+l{MmRj5^5ES+nqIbSx z<^)E=J`l165hlXtPl#27#lnHJzOm)D)lm#X{W(Cl-Qwz|;nR$L4@4DX6g|_NIsu6c zC=;V$A8#5#y6qO}Og2nP~aNq!>Gg-G!?R7A6jYgx<{5!q?*$s!_g$uwW00000 LNkvXXu0mjfa0k2T literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/cooking.png b/Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/cooking.png new file mode 100644 index 0000000000000000000000000000000000000000..c582ed65046332bc04ddbf3bd6b816c8815ae41c GIT binary patch literal 362 zcmV-w0hRuVP)Px$BuPX;RCt{2+QE^+FbsuZvmL6CPz)5}62ryb;j+s}dEq7Se-}6e+p=YmiPIVY z;4}5!Z+kSl${Wq~p9<>L^*@Ei?#cn2P9~t<`|Ypm-IMW=fL6>EIy0@Z4;qPocUEx$yt^C|ht(l5oH4tGDoZHDW0TFRMz&=jh z(8)ZfpQ5c||G&T6oB@SFEKM}~_WOb(+#Lb{00000910Ih0H|dismp7SyQo>;4;Y;< zFE8B5Sb0hR&smf?7+J=TH?M;Gls6(S^Lu6j=4sC6Rfvd7b`r**@1g~$9q1^}^xRos zt!H0o&W#< literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/inhand-left.png b/Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..b92c7f5e579a7e800c07340eb92fff21f98e18c6 GIT binary patch literal 913 zcmV;C18)3@P)Px&OG!jQRCt{2n!isIVHn51HU6TuB`x>nNW?^f0cC=aCZuT`OhaNEnhvtm&8D)L z?*12U#<;q$7zY>QXb6E2a6usu5}^sl6;93yq9(7y@wV@kyY@^^dg$|+%H7-dzR$z^ zUWfMs5ClOG1VIo4K@k5RAuodp#S$O-`3dXg9sIg}8!w(e_4K{7z`15Ov$;Gk6ib{b zD%Q(8`0)8Fn4+RkEb(kE&rd64JG9E_+JJN_!x>Y+6cvp1V({)`+<){00FJLINT)J^ zZ$hh_=bbL5QyJc)sDlFuZW%de z<2}a)93Jcguo|FOG%!WA6|Yw`+t{&@Bu_*yA|8tX01UH=cq{_Ltom9=J6JWH#IXTg z;cjegtOBr>kX*1p*DKiCSVdR38;1w`SSuSq*{BaV{=E6+N4weoh(fW%#Y?(SEO9xf z6OK!BY$VA=VF1wAKWMuznj^+6EX@bzS3!R1dCBP-Tr{CaRcjLo`uYd4t7(BN9*$(fQ=~Fn2qBZkMJ9BY%nrnTUq{oEC}LB_yKZ+WgPnF8X%h;Y$M=3ty8@ ziG5(tJi?xNgd11mw&(fL2+s{D6iXbij>UI14YF*Ih=vi5MKJ$y699Y{BE)=RTP1H@ zJK-J(se>^E06cq4Ee8of$}p?oL-%T~fH-#tfPu^3Y(f7vq7m!guK=(PZ$;ruQ4v~s zgLo{0l?yjpHlnE{B?KwMtk#w_Q|juBkPfD2mqVwi!N|{(#RrjXt!%(Bt2Lpk*<7w$ zAe+l`AxMEe1V2_}8uge?88CtCgr z$b|!S0U-#>AF$_WRC&DMNs^Kgy3E$bYG4eEv5_Q~b2ZYIBn4Qap&+P!kdx1}t68hJ nZAnTdXoWX&7BdqB(K&tt1W33>&k?C+00000NkvXXu0mjfQ1zJ$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/inhand-right.png b/Resources/Textures/_CP14/Objects/Specific/Cooking/frying_pan.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..44b5ac2ea4d4917252278eb1626604eabb4e2bd9 GIT binary patch literal 911 zcmV;A191F_P)Px&Nl8RORCt{2n!igMVHn51DHfZkNfYnw3F;sgZJi<^AmUWSr9;S2mvn1L-Lm(; z=q9CW7njnZi*zbQM3LxXt0)$$V0zJ`XZk}ryd94Bd@sF=7w=9}`h1pz_uhQ(d7eCP z4)S~ff*=TjAP9mW2;%=E5|mJ}ROTI@-($G{4z_OI!^;=X1Je$Z8-4|H`2sJN%A6@G zHug`kd-xShQBf?Fc`jezesulD=7kPFAD)_==8P#|iV6UD^z@nIo)1g!TIvR&dlk4A zV0L1Rr{bNC*X9>1k*UdP-m9v%bxk`0V|~!HBWtZ!Ra+{8lWv%}79bVxM5-r-WV{=? zQAaY~4FJ%MIx^`j|M}w^05ednR<*i7B(K$~mX^8K8?x?I;97u<{ZkCyJ_8PQb3wcU z0J;#3C2+8}4FF(Fu_Y|fv>Fcfwh@gbJO?D}7E5I=eoW=}L2_xqOghV>v4r*Q4h)Uh zu8SnZp0)K=Pxor3`{wnl_9*~x9&E3wS_umVhDLB)t+tf>MY^r(c)_<|CY|Mgdk0)L zXeZq;I>6Us5U?f4UDgBDB?y8b2!bF8f*=TjAP9mW2%^21n;GY`6Jvq>pFcY>#^+|n zLzxfw9*oF{AX7cDAZ4vdwa}kmtOPb83ZwvyiSO7Z$^JPp&TwL!;ckD@cE2DB;kf|C zQketh$osfjg=}~bK7!ScUjP6L%bS7D@PwW?R@wW5(2crnk1$pUXNlKQ`h}Z{r7|D= z{Rz5J2OoWC`2fW19{`4LeYXV~Hlh%_zq$aJ15}YXQ&dE@-XaC*7!9 zZ7rN204(Ff!t!S1s*-QKpKQJmvF#k{(2crf)@r8ZdIWO$0%wW}#`*yE1l*_fB`ln* zI>QehLt%Z^o?O1b-A3z<9U!~3H0{XI_am$?VVD-YvbMe&ku5aCZ`=c z!Sx7eTFsWQeD*6VOD*|+!X_F^pt7Px$R7pfZR9J=WlR--YK^TS~BM?0#IeMF8% zyHEY`g+{xN5IOCe6{Mtylt9TY`+Eob2ulVvA#yYGT=#wa?m0Z&KX7?JmfBnwm=@L>QD47s0>eQM z2swf|Cc@W8Y{Ejm=x=TB24i&`6!SL_+0g* CrystallEdge migration zone end