Pie tins returned from all pies in all situations, add lathe recipes for pie tin and some other basic kitchenwares (#23217)
* 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
This commit is contained in:
@@ -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 (!ev.Cancelled)
|
||||
Del(uid);
|
||||
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);
|
||||
}
|
||||
|
||||
QueueDel(uid);
|
||||
}
|
||||
|
||||
private void FillSlice(EntityUid sliceUid, Solution solution)
|
||||
|
||||
@@ -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
|
||||
@@ -132,8 +134,6 @@
|
||||
- sweet
|
||||
- banana
|
||||
- creamy
|
||||
- type: Food
|
||||
trash: FoodPlateTin
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: tin
|
||||
|
||||
@@ -151,5 +151,5 @@
|
||||
- Trash
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
Steel: 100
|
||||
Steel: 60
|
||||
- type: SpaceGarbage
|
||||
|
||||
@@ -111,10 +111,18 @@
|
||||
- ExteriorLightTube
|
||||
- LightBulb
|
||||
- Bucket
|
||||
- DrinkMug
|
||||
- DrinkMugMetal
|
||||
- DrinkGlass
|
||||
- DrinkShotGlass
|
||||
- DrinkGlassCoupeShaped
|
||||
- FoodPlate
|
||||
- FoodPlateSmall
|
||||
- FoodPlatePlastic
|
||||
- FoodPlateSmallPlastic
|
||||
- FoodBowlBig
|
||||
- FoodPlateTin
|
||||
- FoodKebabSkewer
|
||||
- SprayBottle
|
||||
- MopItem
|
||||
- Holoprojector
|
||||
|
||||
@@ -19,21 +19,35 @@
|
||||
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
|
||||
@@ -62,3 +76,24 @@
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user