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 <cyclowns@protonmail.ch>
This commit is contained in:
mirrorcult
2021-01-06 18:48:08 -07:00
committed by GitHub
parent a7c4571075
commit 7977992e5a
63 changed files with 597 additions and 301 deletions

View File

@@ -229,6 +229,7 @@ namespace Content.Client
"CargoTelepad",
"TraitorDeathMatchRedemption",
"GlassBeaker",
"SliceableFood",
"DamageOtherOnHit",
"DamageOnLand"
};

View File

@@ -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!;

View File

@@ -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<ushort>(ref _totalCount, "count", 5);
}
public override void Initialize()
{
base.Initialize();
Count = _totalCount;
Owner.EnsureComponent<FoodComponent>();
Owner.EnsureComponent<SolutionContainerComponent>();
}
async Task<bool> 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<ItemComponent>());
}
}
EntitySystem.Get<AudioSystem>().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."));
}
}
}

View File

@@ -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

View File

@@ -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!;

View File

@@ -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!;

View File

@@ -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);

Binary file not shown.

View File

@@ -5,6 +5,7 @@
spriteName: dinnerware
startingInventory:
ButchCleaver: 1
KitchenKnife: 5
DrinkGlass: 10
DrinkPitcher: 1
DrinkMug: 5

View File

@@ -2962,6 +2962,7 @@
sprite: Objects/Consumable/Food/milkape.rsi
- type: Grindable
- type: entity
name: memory leek
parent: FoodBase
@@ -2978,3 +2979,428 @@
sprite: Objects/Consumable/Food/memoryleek.rsi
state: memoryLeek
- type: Grindable
- type: entity
parent: FoodBase
name: apple cake
id: FoodAppleCake
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodAppleCakeSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/apple_cake.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: banana bread
id: FoodBananaBread
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodBananaBreadSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/bananabread.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: birthday cake
id: FoodBirthdayCake
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodBirthdayCakeSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/birthdaycake.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: brain cake
id: FoodBrainCake
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodBrainCakeSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/braincake.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: bread
id: FoodBread
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodBreadSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/bread.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: carrot cake
id: FoodCarrotCake
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodCarrotCakeSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/carrotcake.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: cheesecake
id: FoodCheeseCake
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodCheeseCakeSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/cheesecake.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: cheese wheel
id: FoodCheeseWheel
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodCheeseWedge
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/apple_cake.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: chocolate cake
id: FoodChocolateCake
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodChocolateCakeSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/chocolatecake.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: cream cheese bread
id: FoodCreamCheeseBread
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodCreamCheeseBreadSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/creamcheesebread.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: lemon cake
id: FoodLemonCake
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodLemonCakeSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/lemoncake.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: lime cake
id: FoodLimeCake
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodLimeCakeSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/limecake.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: meat bread
id: FoodMeatBread
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodMeatBreadSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/meatbread.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: meat pizza
id: FoodMeatPizza
components:
- type: Food
trash: TrashTray
- type: SliceableFood
count: 6
slice: FoodMeatPizzaSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 48
- type: Sprite
sprite: Objects/Consumable/Food/meatpizza.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: mushroom pizza
id: FoodMushroomPizza
components:
- type: Food
trash: TrashTray
- type: SliceableFood
count: 6
slice: FoodMushroomPizzaSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 48
- type: Sprite
sprite: Objects/Consumable/Food/mushroompizza.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: orange cake
id: FoodOrangeCake
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodOrangeCakeSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/orangecake.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: margherita pizza
id: FoodMargheritaPizza
components:
- type: Food
trash: TrashTray
- type: SliceableFood
count: 6
slice: FoodMargheritaPizzaSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 48
- type: Sprite
sprite: Objects/Consumable/Food/pizzamargherita.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: plain cake
id: FoodPlainCake
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodPlainCakeSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/plaincake.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: pumpkin pie
id: FoodPumpkinPie
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodPumpkinPieSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/pumpkinpie.rsi
- type: Grindable
- type: Item
sprite: Objects/Consumable/Food/pumpkinpie.rsi
- type: entity
parent: FoodBase
name: tofu bread
id: FoodTofuBread
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodTofuBreadSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/tofubread.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: vegetable pizza
id: FoodVegetablePizza
components:
- type: Food
trash: TrashTray
- type: SliceableFood
count: 6
slice: FoodVegetablePizzaSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 48
- type: Sprite
sprite: Objects/Consumable/Food/vegetablepizza.rsi
- type: Grindable
- type: entity
parent: FoodBase
name: xenomeat bread
id: FoodXenomeatBread
components:
- type: Food
trash: TrashTray
- type: SliceableFood
slice: FoodXenomeatBreadSlice
- type: SolutionContainer
contents:
reagents:
- ReagentId: chem.Nutriment
Quantity: 40
- type: Sprite
sprite: Objects/Consumable/Food/xenomeatbread.rsi
- type: Grindable

View File

@@ -8,128 +8,7 @@
state: icon
netsync: false
# Containers
- type: entity
parent: FoodContainerBase
name: apple cake
id: FoodContainerAppleCake
components:
- type: FoodContainer
prototypes:
FoodAppleCakeSlice: 100
trash: TrashTray
- type: Sprite
sprite: Objects/Consumable/FoodContainers/apple_cake.rsi
- type: entity
parent: FoodContainerBase
name: banana bread
id: FoodContainerBananaBread
components:
- type: FoodContainer
prototypes:
FoodBananaBreadSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/bananabread.rsi
- type: entity
parent: FoodContainerBase
name: birthday cake
id: FoodContainerBirthdayCake
components:
- type: FoodContainer
prototypes:
FoodBirthdayCakeSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/birthdaycake.rsi
- type: entity
parent: FoodContainerBase
name: brain cake
id: FoodContainerBrainCake
components:
- type: FoodContainer
prototypes:
FoodBrainCakeSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/braincake.rsi
- type: entity
parent: FoodContainerBase
name: bread
id: FoodContainerBread
components:
- type: FoodContainer
prototypes:
FoodBreadSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/bread.rsi
- type: entity
parent: FoodContainerBase
name: carrot cake
id: FoodContainerCarrotCake
components:
- type: FoodContainer
prototypes:
FoodCarrotCakeSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/carrotcake.rsi
- type: entity
parent: FoodContainerBase
name: cheesecake
id: FoodContainerCheeseCake
components:
- type: FoodContainer
prototypes:
FoodCheeseCakeSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/cheesecake.rsi
- type: entity
parent: FoodContainerBase
name: cheese wheel
id: FoodContainerCheeseWheel
components:
- type: FoodContainer
prototypes:
FoodCheeseWedge: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/apple_cake.rsi
- type: entity
parent: FoodContainerBase
name: chocolate cake
id: FoodContainerChocolateCake
components:
- type: FoodContainer
prototypes:
FoodChocolateCakeSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/chocolatecake.rsi
- type: entity
parent: FoodContainerBase
name: cream cheese bread
id: FoodContainerCreamCheeseBread
components:
- type: FoodContainer
prototypes:
FoodCreamCheeseBreadSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/creamcheesebread.rsi
- type: entity
parent: FoodContainerBase
@@ -191,55 +70,6 @@
base_state: eggbox
steps: 13
- type: entity
parent: FoodContainerBase
name: lemon cake
id: FoodContainerLemonCake
components:
- type: FoodContainer
prototypes:
FoodLemonCakeSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/lemoncake.rsi
- type: entity
parent: FoodContainerBase
name: lime cake
id: FoodContainerLimeCake
components:
- type: FoodContainer
prototypes:
FoodLimeCakeSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/limecake.rsi
- type: entity
parent: FoodContainerBase
name: meat bread
id: FoodContainerMeatBread
components:
- type: FoodContainer
prototypes:
FoodMeatBreadSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/meatbread.rsi
- type: entity
parent: FoodContainerBase
name: meat pizza
id: FoodContainerMeatPizza
components:
- type: FoodContainer
capacity: 6
prototypes:
FoodMeatPizzaSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/meatpizza.rsi
# These two will probably get moved one day
- type: entity
parent: FoodContainerBase
@@ -253,7 +83,6 @@
- type: Sprite
sprite: Objects/Consumable/FoodContainers/monkeycubebox.rsi
- type: entity
parent: FoodContainerBase
name: monkey cube wrap
@@ -267,32 +96,6 @@
- type: Sprite
sprite: Objects/Consumable/FoodContainers/monkeycubewrap.rsi
- type: entity
parent: FoodContainerBase
name: mushroom pizza
id: FoodContainerMushroomPizza
components:
- type: FoodContainer
capacity: 6
prototypes:
FoodMushroomPizzaSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/mushroompizza.rsi
- type: entity
parent: FoodContainerBase
name: orange cake
id: FoodContainerOrangeCake
components:
- type: FoodContainer
prototypes:
FoodOrangeCakeSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/orangecake.rsi
# TODO: Probably replace it with a stacking thing
- type: entity
parent: FoodContainerBase
@@ -329,80 +132,3 @@
- type: Item
sprite: Objects/Consumable/FoodContainers/pizzabox.rsi
- type: entity
parent: FoodContainerBase
name: margherita pizza
id: FoodContainerMargheritaPizza
components:
- type: FoodContainer
capacity: 6
prototypes:
FoodMargheritaPizzaSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/pizzamargherita.rsi
- type: entity
parent: FoodContainerBase
name: plain cake
id: FoodContainerPlainCake
components:
- type: FoodContainer
prototypes:
FoodPlainCakeSlice: 100
trash: TrashTray
- type: Sprite
sprite: Objects/Consumable/FoodContainers/plaincake.rsi
- type: entity
parent: FoodContainerBase
name: pumpkin pie
id: FoodContainerPumpkinPie
components:
- type: FoodContainer
prototypes:
FoodPumpkinPieSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/pumpkinpie.rsi
- type: Item
sprite: Objects/Consumable/FoodContainers/pumpkinpie.rsi
- type: entity
parent: FoodContainerBase
name: tofu bread
id: FoodContainerTofuBread
components:
- type: FoodContainer
prototypes:
FoodTofuBreadSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/tofubread.rsi
- type: entity
parent: FoodContainerBase
name: vegetable pizza
id: FoodContainerVegetablePizza
components:
- type: FoodContainer
capacity: 6
prototypes:
FoodVegetablePizzaSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/vegetablepizza.rsi
- type: entity
parent: FoodContainerBase
name: xenomeat bread
id: FoodContainerXenomeatBread
components:
- type: FoodContainer
prototypes:
FoodXenomeatBreadSlice: 100
- type: Sprite
sprite: Objects/Consumable/FoodContainers/xenomeatbread.rsi

View File

@@ -1,19 +0,0 @@
- type: entity
name: butcher's cleaver
parent: BaseItem
id: ButchCleaver
description: A huge blade used for chopping and chopping up meat. This includes clowns and clown-by-products.
components:
- type: Sprite
sprite: Objects/Weapons/Melee/cleaver.rsi
size: 4
state: butch
- type: ItemCooldown
- type: MeleeWeapon
- type: Item
size: 10
sprite: Objects/Weapons/Melee/cleaver.rsi
prefix: inhand

View File

@@ -0,0 +1,49 @@
- type: entity
parent: BaseItem
id: BaseKnife
abstract: true
components:
- type: Utensil
types:
- Knife
- type: MeleeWeapon
hitSound: /Audio/Weapons/bladeslice.ogg
damage: 12
- type: Sprite
netsync: false
- type: Item
- type: entity
name: kitchen knife
parent: BaseKnife
id: KitchenKnife
description: A general purpose Chef's Knife made by Asters Merchant Guild. Guaranteed to stay sharp for years to come..
components:
- type: Sprite
sprite: Objects/Weapons/Melee/kitchen_knife.rsi
size: 2
state: icon
- type: Item
size: 10
sprite: Objects/Weapons/Melee/kitchen_knife.rsi
prefix: inhand
- type: entity
name: butcher's cleaver
parent: BaseKnife
id: ButchCleaver
description: A huge blade used for chopping and chopping up meat. This includes clowns and clown-by-products.
components:
- type: Sprite
sprite: Objects/Weapons/Melee/cleaver.rsi
size: 4
state: butch
- type: MeleeWeapon
damage: 20
- type: Item
size: 10
sprite: Objects/Weapons/Melee/cleaver.rsi
prefix: inhand

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 736 B

After

Width:  |  Height:  |  Size: 736 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

View File

@@ -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
}
]
}