From 7977992e5aab505370fd7484a7453a58f4a3cf11 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Wed, 6 Jan 2021 18:48:08 -0700 Subject: [PATCH] Add kitchen knife & sliceable foods (#2891) * sliceable food, kitchen knives * sprite fixes, sounds * add to vendor * address reviews * address reviews * stereo -> mono * fix wrong amount of nutriment being removed * oops im dumb * meta.json * fix merge * probably fix test * remove all instances of [ComponentReference(typeof(IAfterInteract))] Co-authored-by: cyclowns --- Content.Client/IgnoredComponents.cs | 1 + .../Components/Chemistry/PillComponent.cs | 3 +- .../Culinary/SliceableFoodComponent.cs | 92 ++++ .../{Utensil => Culinary}/UtensilComponent.cs | 2 +- .../Components/Nutrition/DrinkComponent.cs | 1 - .../Components/Nutrition/FoodComponent.cs | 3 +- .../Weapon/Melee/MeleeWeaponComponent.cs | 4 +- Resources/Audio/Items/Culinary/chop.ogg | Bin 0 -> 6710 bytes .../Catalog/VendingMachines/dinnerware.yml | 1 + .../Entities/Objects/Consumable/food.yml | 426 ++++++++++++++++++ .../Objects/Consumable/food_containers.yml | 274 ----------- .../Objects/Weapons/Melee/cleaver.yml | 19 - .../Entities/Objects/Weapons/Melee/knife.yml | 49 ++ .../apple_cake.rsi/icon.png | Bin .../apple_cake.rsi/meta.json | 0 .../bananabread.rsi/icon.png | Bin .../bananabread.rsi/meta.json | 0 .../birthdaycake.rsi/icon.png | Bin .../birthdaycake.rsi/meta.json | 0 .../braincake.rsi/icon.png | Bin .../braincake.rsi/meta.json | 0 .../bread.rsi/icon.png | Bin .../bread.rsi/meta.json | 0 .../carrotcake.rsi/icon.png | Bin .../carrotcake.rsi/meta.json | 0 .../cheesecake.rsi/icon.png | Bin .../cheesecake.rsi/meta.json | 0 .../cheesewheel.rsi/icon.png | Bin .../cheesewheel.rsi/meta.json | 0 .../chocolatecake.rsi/icon.png | Bin .../chocolatecake.rsi/meta.json | 0 .../creamcheesebread.rsi/icon.png | Bin .../creamcheesebread.rsi/meta.json | 0 .../lemoncake.rsi/icon.png | Bin .../lemoncake.rsi/meta.json | 0 .../limecake.rsi/icon.png | Bin .../limecake.rsi/meta.json | 0 .../meatbread.rsi/icon.png | Bin .../meatbread.rsi/meta.json | 0 .../meatpizza.rsi/icon.png | Bin .../meatpizza.rsi/meta.json | 0 .../mushroompizza.rsi/icon.png | Bin .../mushroompizza.rsi/meta.json | 0 .../orangecake.rsi/icon.png | Bin .../orangecake.rsi/meta.json | 0 .../pizzamargherita.rsi/icon.png | Bin .../pizzamargherita.rsi/meta.json | 0 .../plaincake.rsi/icon.png | Bin .../plaincake.rsi/meta.json | 0 .../pumpkinpie.rsi/icon.png | Bin .../pumpkinpie.rsi/inhand-left.png | Bin .../pumpkinpie.rsi/inhand-right.png | Bin .../pumpkinpie.rsi/meta.json | 0 .../tofubread.rsi/icon.png | Bin .../tofubread.rsi/meta.json | 0 .../vegetablepizza.rsi/icon.png | Bin .../vegetablepizza.rsi/meta.json | 0 .../xenomeatbread.rsi/icon.png | Bin .../xenomeatbread.rsi/meta.json | 0 .../Weapons/Melee/kitchen_knife.rsi/icon.png | Bin 0 -> 319 bytes .../Melee/kitchen_knife.rsi/inhand-left.png | Bin 0 -> 308 bytes .../Melee/kitchen_knife.rsi/inhand-right.png | Bin 0 -> 306 bytes .../Weapons/Melee/kitchen_knife.rsi/meta.json | 23 + 63 files changed, 597 insertions(+), 301 deletions(-) create mode 100644 Content.Server/GameObjects/Components/Culinary/SliceableFoodComponent.cs rename Content.Server/GameObjects/Components/{Utensil => Culinary}/UtensilComponent.cs (98%) create mode 100644 Resources/Audio/Items/Culinary/chop.ogg delete mode 100644 Resources/Prototypes/Entities/Objects/Weapons/Melee/cleaver.yml create mode 100644 Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/apple_cake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/apple_cake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/bananabread.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/bananabread.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/birthdaycake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/birthdaycake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/braincake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/braincake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/bread.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/bread.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/carrotcake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/carrotcake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/cheesecake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/cheesecake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/cheesewheel.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/cheesewheel.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/chocolatecake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/chocolatecake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/creamcheesebread.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/creamcheesebread.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/lemoncake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/lemoncake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/limecake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/limecake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/meatbread.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/meatbread.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/meatpizza.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/meatpizza.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/mushroompizza.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/mushroompizza.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/orangecake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/orangecake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/pizzamargherita.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/pizzamargherita.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/plaincake.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/plaincake.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/pumpkinpie.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/pumpkinpie.rsi/inhand-left.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/pumpkinpie.rsi/inhand-right.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/pumpkinpie.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/tofubread.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/tofubread.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/vegetablepizza.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/vegetablepizza.rsi/meta.json (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/xenomeatbread.rsi/icon.png (100%) rename Resources/Textures/Objects/Consumable/{FoodContainers => Food}/xenomeatbread.rsi/meta.json (100%) create mode 100644 Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/icon.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/meta.json diff --git a/Content.Client/IgnoredComponents.cs b/Content.Client/IgnoredComponents.cs index 9c2b038dec..616a90eb8a 100644 --- a/Content.Client/IgnoredComponents.cs +++ b/Content.Client/IgnoredComponents.cs @@ -229,6 +229,7 @@ namespace Content.Client "CargoTelepad", "TraitorDeathMatchRedemption", "GlassBeaker", + "SliceableFood", "DamageOtherOnHit", "DamageOnLand" }; diff --git a/Content.Server/GameObjects/Components/Chemistry/PillComponent.cs b/Content.Server/GameObjects/Components/Chemistry/PillComponent.cs index 638257ac8a..9c1bd88881 100644 --- a/Content.Server/GameObjects/Components/Chemistry/PillComponent.cs +++ b/Content.Server/GameObjects/Components/Chemistry/PillComponent.cs @@ -2,7 +2,7 @@ using System.Threading.Tasks; using Content.Server.GameObjects.Components.Body.Behavior; using Content.Server.GameObjects.Components.Nutrition; -using Content.Server.GameObjects.Components.Utensil; +using Content.Server.GameObjects.Components.Culinary; using Content.Shared.Chemistry; using Content.Shared.GameObjects.Components.Body; using Content.Shared.Interfaces; @@ -21,7 +21,6 @@ using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Chemistry { [RegisterComponent] - [ComponentReference(typeof(IAfterInteract))] public class PillComponent : FoodComponent, IUse, IAfterInteract { [Dependency] private readonly IEntitySystemManager _entitySystem = default!; diff --git a/Content.Server/GameObjects/Components/Culinary/SliceableFoodComponent.cs b/Content.Server/GameObjects/Components/Culinary/SliceableFoodComponent.cs new file mode 100644 index 0000000000..24fafff61e --- /dev/null +++ b/Content.Server/GameObjects/Components/Culinary/SliceableFoodComponent.cs @@ -0,0 +1,92 @@ +using System.Threading.Tasks; +using Content.Shared.Chemistry; +using Content.Shared.Interfaces.GameObjects.Components; +using Content.Shared.GameObjects.EntitySystems; +using Content.Server.GameObjects.Components.Nutrition; +using Content.Server.GameObjects.Components.Chemistry; +using Content.Server.GameObjects.Components.GUI; +using Content.Server.GameObjects.Components.Items.Storage; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.GameObjects; +using Robust.Shared.Containers; +using Robust.Shared.Serialization; +using Robust.Shared.Localization; +using Robust.Shared.ViewVariables; +using Robust.Shared.Utility; +using Robust.Shared.Audio; + +namespace Content.Server.GameObjects.Components.Culinary +{ + [RegisterComponent] + class SliceableFoodComponent : Component, IInteractUsing, IExamine + { + public override string Name => "SliceableFood"; + + int IInteractUsing.Priority => 1; // take priority over eating with utensils + + [ViewVariables(VVAccess.ReadWrite)] private string _slice; + private ushort _totalCount; + [ViewVariables(VVAccess.ReadWrite)] private string _sound; + + [ViewVariables(VVAccess.ReadWrite)] public ushort Count; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + serializer.DataField(ref _slice, "slice", string.Empty); + serializer.DataField(ref _sound, "sound", "/Audio/Items/Culinary/chop.ogg"); + serializer.DataField(ref _totalCount, "count", 5); + } + + public override void Initialize() + { + base.Initialize(); + Count = _totalCount; + Owner.EnsureComponent(); + Owner.EnsureComponent(); + } + + async Task IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) + { + if (string.IsNullOrEmpty(_slice)) + { + return false; + } + if (!Owner.TryGetComponent(out SolutionContainerComponent solution)) + { + return false; + } + if (!eventArgs.Using.TryGetComponent(out UtensilComponent utensil) || !utensil.HasType(UtensilType.Knife)) + { + return false; + } + + var itemToSpawn = Owner.EntityManager.SpawnEntity(_slice, Owner.Transform.Coordinates); + if (eventArgs.User.TryGetComponent(out HandsComponent handsComponent)) + { + if (ContainerHelpers.IsInContainer(Owner)) + { + handsComponent.PutInHandOrDrop(itemToSpawn.GetComponent()); + } + } + + EntitySystem.Get().PlayAtCoords(_sound, Owner.Transform.Coordinates, + AudioParams.Default.WithVolume(-2)); + + Count--; + if (Count < 1) + { + Owner.Delete(); + return true; + } + solution.TryRemoveReagent("chem.Nutriment", solution.CurrentVolume / ReagentUnit.New(Count + 1)); + return true; + } + + public void Examine(FormattedMessage message, bool inDetailsRange) + { + message.AddMarkup(Loc.GetString($"There are { Count } slices remaining.")); + } + } +} diff --git a/Content.Server/GameObjects/Components/Utensil/UtensilComponent.cs b/Content.Server/GameObjects/Components/Culinary/UtensilComponent.cs similarity index 98% rename from Content.Server/GameObjects/Components/Utensil/UtensilComponent.cs rename to Content.Server/GameObjects/Components/Culinary/UtensilComponent.cs index b3dfe87c6b..e86a311463 100644 --- a/Content.Server/GameObjects/Components/Utensil/UtensilComponent.cs +++ b/Content.Server/GameObjects/Components/Culinary/UtensilComponent.cs @@ -16,7 +16,7 @@ using Robust.Shared.Random; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; -namespace Content.Server.GameObjects.Components.Utensil +namespace Content.Server.GameObjects.Components.Culinary { [RegisterComponent] public class UtensilComponent : Component, IAfterInteract diff --git a/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs b/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs index 0507646acb..6ea6074a46 100644 --- a/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs +++ b/Content.Server/GameObjects/Components/Nutrition/DrinkComponent.cs @@ -30,7 +30,6 @@ using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Nutrition { [RegisterComponent] - [ComponentReference(typeof(IAfterInteract))] public class DrinkComponent : Component, IUse, IAfterInteract, ISolutionChange, IExamine, ILand { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; diff --git a/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs b/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs index 1b07a6bdce..94fef359b0 100644 --- a/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs +++ b/Content.Server/GameObjects/Components/Nutrition/FoodComponent.cs @@ -7,7 +7,7 @@ using Content.Server.GameObjects.Components.Body.Behavior; using Content.Server.GameObjects.Components.Chemistry; using Content.Server.GameObjects.Components.GUI; using Content.Server.GameObjects.Components.Items.Storage; -using Content.Server.GameObjects.Components.Utensil; +using Content.Server.GameObjects.Components.Culinary; using Content.Shared.Chemistry; using Content.Shared.GameObjects.Components.Body; using Content.Shared.Interfaces; @@ -26,7 +26,6 @@ using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Nutrition { [RegisterComponent] - [ComponentReference(typeof(IAfterInteract))] public class FoodComponent : Component, IUse, IAfterInteract { [Dependency] private readonly IEntitySystemManager _entitySystem = default!; diff --git a/Content.Server/GameObjects/Components/Weapon/Melee/MeleeWeaponComponent.cs b/Content.Server/GameObjects/Components/Weapon/Melee/MeleeWeaponComponent.cs index 7630debec0..6fd87d0236 100644 --- a/Content.Server/GameObjects/Components/Weapon/Melee/MeleeWeaponComponent.cs +++ b/Content.Server/GameObjects/Components/Weapon/Melee/MeleeWeaponComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using Content.Server.GameObjects.EntitySystems; @@ -65,7 +65,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Melee serializer.DataField(this, x => x.Arc, "arc", "default"); serializer.DataField(this, x => x.ClickArc, "clickArc", "punch"); serializer.DataField(this, x => x._hitSound, "hitSound", "/Audio/Weapons/genhit1.ogg"); - serializer.DataField(this, x => x._missSound, "hitSound", "/Audio/Weapons/punchmiss.ogg"); + serializer.DataField(this, x => x._missSound, "missSound", "/Audio/Weapons/punchmiss.ogg"); serializer.DataField(this, x => x.ArcCooldownTime, "arcCooldownTime", 1f); serializer.DataField(this, x => x.CooldownTime, "cooldownTime", 1f); serializer.DataField(this, x => x.DamageType, "damageType", DamageType.Blunt); diff --git a/Resources/Audio/Items/Culinary/chop.ogg b/Resources/Audio/Items/Culinary/chop.ogg new file mode 100644 index 0000000000000000000000000000000000000000..87111639734441a70a91551d96edb7e714868311 GIT binary patch literal 6710 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 N44$rjF6*2UngEKvbBzE1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/inhand-left.png b/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f253c30b7a7bb447137fd5ce3b2a96983cd340 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0L3?#3!&-4XSJOMr-u0Xo3u5QVaB}PU@=ku_z{}NpA@#_;UZ(Xf( zXU+$22sOB9{NRz!c^}P_3`IS?J1mTYj4vB|Da?5^>ByuIgeE9_VDuX%whi!$u#YW;^o%G2?~u20>(<*4MOaTnVa~%_;`Fg xJlnQ1x+tki8XK(ayUmxTk?XKdnVp4!p>h(t_0o;2?f~s#@O1TaS?83{1OVVQVdMY+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..ac3aec224798ca7e6e259498456b238cab53aa38 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0L3?#3!&-4XSJOMr-uK)l4udA!OfB(Lbkx}5K zmpMRj#*!evU)e_1!5cyiE*d|0q;uX!^CUx2Pwx&3;~?Y9#$F0@9!)wjDMTSy(^}tHH?*_cSatIX zi6uaKt%jkw=n=CgL16`7iy5W48O;5pq_^al1Ojc1^K@|xvFJ@ska&22apqyBBaA1Q zlpJhWBNdoBLMQ&{;dE&F%;40popH6P4aYOaHC%27AF%TAOjyFm+@ru4rowoQP2u3n x1_1$PK_3s#muxfUG~ecnV6t?WC(I5E6H@~Y+j^$m@j#mxJYD@<);T3K0RVbSXzl<2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/meta.json new file mode 100644 index 0000000000..686b875dea --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Melee/kitchen_knife.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from cev-eris at commit https://github.com/discordia-space/CEV-Eris/commit/baeadc0388aba2e74106f99b1551a465b825e3b1", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon", + "directions": 1 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +}