]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Pie tins returned from all pies in all situations, add lathe recipes for pie tin...
authorGreyMario <mariomister541@gmail.com>
Fri, 12 Jan 2024 08:42:15 +0000 (00:42 -0800)
committerGitHub <noreply@github.com>
Fri, 12 Jan 2024 08:42:15 +0000 (01:42 -0700)
* move pietin trash to FoodPieBase so all pies return their pie tin when eaten

* spawn trash from a SliceableFood if the Food has a trash

* add a limited selection of additional tablewares to the autolathe

* kitchenware material adjustments

* fix crash when slice pie in hand/inventory

* use system helpers + slices now go in parent container

Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs
Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pie.yml
Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/plate.yml
Resources/Prototypes/Entities/Structures/Machines/lathe.yml
Resources/Prototypes/Recipes/Lathes/cooking.yml

index 064d316beff5b08082ff814a13e57c8f8434c5e3..bb420d246fc5c87dde6aad011947807177cd76ef 100644 (file)
@@ -5,6 +5,7 @@ using Content.Shared.Examine;
 using Content.Shared.FixedPoint;
 using Content.Shared.Hands.EntitySystems;
 using Content.Shared.Interaction;
+using Robust.Server.GameObjects;
 using Robust.Shared.Audio;
 using Robust.Shared.Audio.Systems;
 using Robust.Shared.Containers;
@@ -17,6 +18,7 @@ namespace Content.Server.Nutrition.EntitySystems
         [Dependency] private readonly SharedAudioSystem _audio = default!;
         [Dependency] private readonly SharedContainerSystem _containerSystem = default!;
         [Dependency] private readonly SharedHandsSystem _handsSystem = default!;
+        [Dependency] private readonly TransformSystem _xformSystem = default!;
 
         public override void Initialize()
         {
@@ -76,7 +78,7 @@ namespace Content.Server.Nutrition.EntitySystems
             // If someone makes food proto with 1 slice...
             if (component.Count < 1)
             {
-                DeleteFood(uid, user);
+                DeleteFood(uid, user, food);
                 return true;
             }
 
@@ -89,7 +91,7 @@ namespace Content.Server.Nutrition.EntitySystems
             // Fill last slice with the rest of the solution
             FillSlice(sliceUid, solution);
 
-            DeleteFood(uid, user);
+            DeleteFood(uid, user, food);
             return true;
         }
 
@@ -102,32 +104,54 @@ namespace Content.Server.Nutrition.EntitySystems
             if (!Resolve(uid, ref comp, ref transform))
                 return EntityUid.Invalid;
 
-            var sliceUid = Spawn(comp.Slice, transform.Coordinates);
-            var inCont = _containerSystem.IsEntityInContainer(uid);
-            if (inCont)
+            var sliceUid = Spawn(comp.Slice, _xformSystem.GetMapCoordinates(uid));
+
+            // try putting the slice into the container if the food being sliced is in a container!
+            // this lets you do things like slice a pizza up inside of a hot food cart without making a food-everywhere mess
+            if (_containerSystem.TryGetContainingContainer(uid, out var container) && _containerSystem.CanInsert(sliceUid, container))
             {
-                _handsSystem.PickupOrDrop(user, sliceUid);
+                _containerSystem.Insert(sliceUid, container);
             }
-            else
+            else // puts it down "right-side up"
             {
-                var xform = Transform(sliceUid);
-                _containerSystem.AttachParentToContainerOrGrid((sliceUid, xform));
-                xform.LocalRotation = 0;
+                _xformSystem.AttachToGridOrMap(sliceUid);
+                _xformSystem.SetLocalRotation(sliceUid, 0);
             }
 
             return sliceUid;
         }
 
-        private void DeleteFood(EntityUid uid, EntityUid user)
+        private void DeleteFood(EntityUid uid, EntityUid user, FoodComponent foodComp)
         {
             var ev = new BeforeFullySlicedEvent
             {
                 User = user
             };
             RaiseLocalEvent(uid, ev);
+            if (ev.Cancelled)
+                return;
+
+            if (string.IsNullOrEmpty(foodComp.Trash))
+            {
+                QueueDel(uid);
+                return;
+            }
+
+            // Locate the sliced food and spawn its trash
+            var trashUid = Spawn(foodComp.Trash, _xformSystem.GetMapCoordinates(uid));
+
+            // try putting the trash in the food's container too, to be consistent with slice spawning?
+            if (_containerSystem.TryGetContainingContainer(uid, out var container) && _containerSystem.CanInsert(trashUid, container))
+            {
+                _containerSystem.Insert(trashUid, container);
+            }
+            else // puts it down "right-side up"
+            {
+                _xformSystem.AttachToGridOrMap(trashUid);
+                _xformSystem.SetLocalRotation(trashUid, 0);
+            }
 
-            if (!ev.Cancelled)
-                Del(uid);
+            QueueDel(uid);
         }
 
         private void FillSlice(EntityUid sliceUid, Solution solution)
index b03be2fea485012fb4ed12c72ebf44721fffbf2c..fb3d26825255883f25e0de381f9599503024820d 100644 (file)
@@ -20,6 +20,8 @@
           Quantity: 11
         - ReagentId: Vitamin
           Quantity: 5
+  - type: Food #All pies here made with a pie tin; unless you're some kind of savage, you're probably not destroying this when you eat or slice the pie!
+    trash: FoodPlateTin
   - type: SliceableFood
     count: 4
   - type: Tag
       - sweet
       - banana
       - creamy
-  - type: Food
-    trash: FoodPlateTin
   - type: Sprite
     layers:
     - state: tin
index 9e0bd89184f1211db6d991eb0eec46b1032ccbc0..a6ddd725b008612120fc74b237fde131496af2c2 100644 (file)
     - Trash
   - type: PhysicalComposition
     materialComposition:
-      Steel: 100
+      Steel: 60
   - type: SpaceGarbage
index 0d9e3ad767cc868ed38532a77190cc9e6bcac04c..e5a9ccf39042f23533bee209b659572d3ba47680 100644 (file)
       - ExteriorLightTube
       - LightBulb
       - Bucket
+      - DrinkMug
+      - DrinkMugMetal
+      - DrinkGlass
+      - DrinkShotGlass
+      - DrinkGlassCoupeShaped
       - FoodPlate
       - FoodPlateSmall
       - FoodPlatePlastic
       - FoodPlateSmallPlastic
+      - FoodBowlBig
+      - FoodPlateTin
+      - FoodKebabSkewer
       - SprayBottle
       - MopItem
       - Holoprojector
index b87522e9d35cf4d42f499f5a889ead1f91fdbbdf..a8836ff39267e159d05527ad1c9362f3f0767359 100644 (file)
   result: DrinkMug
   completetime: 0.8
   materials:
-    Glass: 50
+    Glass: 100
 
 - type: latheRecipe
   id: DrinkMugMetal
   result: DrinkMugMetal
   completetime: 0.8
   materials:
-    Steel: 50
+    Steel: 100
 
 - type: latheRecipe
   id: DrinkGlass
   result: DrinkGlass
   completetime: 0.8
   materials:
-    Glass: 50
+    Glass: 100
+
+- type: latheRecipe
+  id: DrinkShotGlass
+  result: DrinkShotGlass
+  completetime: 0.4
+  materials:
+    Glass: 100
+
+- type: latheRecipe
+  id: DrinkGlassCoupeShaped
+  result: DrinkGlassCoupeShaped
+  completetime: 0.8
+  materials:
+    Glass: 100
 
 - type: latheRecipe
   id: FoodPlate
   completetime: 0.4
   materials:
     Plastic: 50
+
+- type: latheRecipe
+  id: FoodBowlBig
+  result: FoodBowlBig
+  completetime: 0.8
+  materials:
+    Glass: 100
+
+- type: latheRecipe
+  id: FoodPlateTin
+  result: FoodPlateTin
+  completetime: 0.4
+  materials:
+    Steel: 100
+
+- type: latheRecipe
+  id: FoodKebabSkewer
+  result: FoodKebabSkewer
+  completetime: 0.4
+  materials:
+    Steel: 100