From 477cbdf8cd44f3ccc12afd62f7ccb65a2b897afc Mon Sep 17 00:00:00 2001
From: portfiend <109661617+portfiend@users.noreply.github.com>
Date: Mon, 28 Sep 2026 11:42:29 +0000
Subject: [PATCH] Add examine text for tool refinable entities (#46191)
* the owl
* add butchering verb / text
* make mobs use butchering verb
* comment
* awa
* change these to use the subscription attributes while we're at it
* Update Content.Shared/Tools/Systems/ToolRefinableSystem.cs
Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com>
* Apply suggestion from @Pok27
Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com>
---------
Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com>
---
.../Components/ToolRefinableComponent.cs | 8 +++
.../Tools/Systems/ToolRefinableSystem.cs | 42 +++++++++---
.../en-US/tool-refinable/tool-refinable.ftl | 6 ++
.../Entities/Mobs/NPCs/Spiders/base.yml | 2 +-
.../Prototypes/Entities/Mobs/NPCs/animals.yml | 64 +++++++++----------
.../Entities/Mobs/NPCs/argocyte.yml | 20 +++---
.../Entities/Mobs/NPCs/asteroid.yml | 6 +-
.../Entities/Mobs/NPCs/behonker.yml | 2 +-
.../Prototypes/Entities/Mobs/NPCs/carp.yml | 4 +-
.../Prototypes/Entities/Mobs/NPCs/flesh.yml | 4 +-
.../Entities/Mobs/NPCs/hellspawn.yml | 2 +-
.../Entities/Mobs/NPCs/lavaland.yml | 2 +-
.../Prototypes/Entities/Mobs/NPCs/mimic.yml | 2 +-
.../Entities/Mobs/NPCs/miscellaneous.yml | 2 +-
.../Prototypes/Entities/Mobs/NPCs/pets.yml | 20 +++---
.../Entities/Mobs/NPCs/regalrat.yml | 4 +-
.../Prototypes/Entities/Mobs/NPCs/slimes.yml | 2 +-
.../Prototypes/Entities/Mobs/NPCs/space.yml | 8 +--
.../Entities/Mobs/NPCs/spacetick.yml | 2 +-
.../Prototypes/Entities/Mobs/NPCs/xeno.yml | 4 +-
.../Entities/Mobs/Player/dragon.yml | 2 +-
.../Prototypes/Entities/Objects/base_item.yml | 10 +++
22 files changed, 132 insertions(+), 86 deletions(-)
diff --git a/Content.Shared/Tools/Components/ToolRefinableComponent.cs b/Content.Shared/Tools/Components/ToolRefinableComponent.cs
index 6a4958f224..8cd490e5b4 100644
--- a/Content.Shared/Tools/Components/ToolRefinableComponent.cs
+++ b/Content.Shared/Tools/Components/ToolRefinableComponent.cs
@@ -89,4 +89,12 @@ public sealed partial class ToolRefinableComponent : Component
///
[DataField]
public PopupType PopupType = PopupType.Small;
+
+ ///
+ /// Text to display on the examine tooltip for a refinable entity.
+ /// This has a `$target` parameter, representing the refinable entity,
+ /// and a `$quality` parameter, representing the name of the tool quality to use.
+ ///
+ [DataField]
+ public LocId? TooltipQualityHint = "tool-refinable-component-hint";
}
diff --git a/Content.Shared/Tools/Systems/ToolRefinableSystem.cs b/Content.Shared/Tools/Systems/ToolRefinableSystem.cs
index dc4ec3712a..ea5b52bed4 100644
--- a/Content.Shared/Tools/Systems/ToolRefinableSystem.cs
+++ b/Content.Shared/Tools/Systems/ToolRefinableSystem.cs
@@ -5,6 +5,7 @@ using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Construction;
using Content.Shared.Containers.ItemSlots;
using Content.Shared.Destructible;
+using Content.Shared.Examine;
using Content.Shared.FixedPoint;
using Content.Shared.Gibbing;
using Content.Shared.Interaction;
@@ -19,6 +20,7 @@ using Robust.Shared.Containers;
using Robust.Shared.Physics.Systems;
using Robust.Shared.Random;
using Robust.Shared.Timing;
+using Robust.Shared.Utility;
namespace Content.Shared.Tools.Systems;
@@ -34,18 +36,36 @@ public sealed partial class ToolRefinableSystem : EntitySystem
[Dependency] private SharedDestructibleSystem _destructible = default!;
[Dependency] private IGameTiming _gameTiming = default!;
- public override void Initialize()
- {
- base.Initialize();
-
- SubscribeLocalEvent>(AddVerb);
- SubscribeLocalEvent(OnInteractUsing, after: [typeof(ItemSlotsSystem)]);
- SubscribeLocalEvent(OnDoAfter);
- }
-
#region Subscriptions
+ ///
+ /// Adds an examine tooltip to a refinable entity if one is specified, hinting at what
+ /// tool quality is needed to refine this entity.
+ ///
+ /// The refinable entity.
+ [SubscribeLocalEvent]
+ private void OnExamined(Entity ent, ref ExaminedEvent args)
+ {
+ if (ent.Comp.TooltipQualityHint == null
+ || !ProtoMan.Resolve(ent.Comp.QualityNeeded, out var quality))
+ return;
+
+ // Check to make sure we *can* refine the entity, first.
+ var attemptEvent = new AttemptToolRefineEvent();
+ RaiseLocalEvent(ent, ref attemptEvent);
+ if (attemptEvent.IsCancelled)
+ return;
+
+ // Add examine text.
+ var qualityName = Loc.GetString(quality.Name);
+ var hint = Loc.GetString(ent.Comp.TooltipQualityHint,
+ ("target", ent),
+ ("quality", qualityName));
+ args.PushMarkup(hint);
+ }
+
/// Normal interactions.
+ [SubscribeLocalEvent]
private void OnInteractUsing(Entity ent, ref InteractUsingEvent args)
{
if (args.Handled || !_toolSystem.HasQuality(args.Used, ent.Comp.QualityNeeded))
@@ -65,6 +85,7 @@ public sealed partial class ToolRefinableSystem : EntitySystem
}
/// Verb interactions.
+ [SubscribeLocalEvent(after: [typeof(ItemSlotsSystem)])]
private void AddVerb(Entity ent, ref GetVerbsEvent args)
{
var used = args.Using;
@@ -120,6 +141,7 @@ public sealed partial class ToolRefinableSystem : EntitySystem
}
/// DoAfter for refining.
+ [SubscribeLocalEvent]
private void OnDoAfter(Entity ent, ref ToolRefineDoAfterEvent args)
{
if (args.Cancelled || args.Used == null || !args.Target.HasValue)
@@ -285,7 +307,7 @@ public sealed partial class ToolRefinableSystem : EntitySystem
///
[ByRefEvent]
public record struct AttemptToolRefineEvent(
- EntityUid Using,
+ EntityUid? Using = null,
bool IsCancelled = false,
string? BlockCause = null
);
diff --git a/Resources/Locale/en-US/tool-refinable/tool-refinable.ftl b/Resources/Locale/en-US/tool-refinable/tool-refinable.ftl
index e428f5ff54..318a623fef 100644
--- a/Resources/Locale/en-US/tool-refinable/tool-refinable.ftl
+++ b/Resources/Locale/en-US/tool-refinable/tool-refinable.ftl
@@ -3,4 +3,10 @@ refined-butchered-success-others = The {$user} sliced {$target} with {$tool}.
refined-slice-verb-message-default = Slice entity with sharp item.
refined-slice-verb-target-isnt-dead = Needs to be dead.
refined-slice-verb-message-tool = You are going to need a different tool to slice {$target}.
+
refined-slice-verb-name = Slice
+refined-butchered-verb-name = Butcher
+
+tool-refinable-component-hint = {CAPITALIZE(SUBJECT($target))} can be refined by [color=cyan]{$quality}[/color].
+tool-refinable-component-hint-slicing = {CAPITALIZE(SUBJECT($target))} can be cut with a [color=cyan]{$quality}[/color] tool.
+tool-refinable-component-hint-butchering = {CAPITALIZE(SUBJECT($target))} can be butchered with a [color=cyan]{$quality}[/color] tool.
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/Spiders/base.yml b/Resources/Prototypes/Entities/Mobs/NPCs/Spiders/base.yml
index aa9c986f17..b0fca66a4c 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/Spiders/base.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/Spiders/base.yml
@@ -2,7 +2,7 @@
# random sprite state when you spawn it.
- type: entity
abstract: true
- parent: [ SimpleMobBase, BaseMobHemocyanin, MobCombat, BaseSlicingRefinable, MobNightVision, BaseMobDestructible ]
+ parent: [ SimpleMobBase, BaseMobHemocyanin, MobCombat, BaseSlicingRefinableButchering, MobNightVision, BaseMobDestructible ]
id: MobSpiderBase
components:
- type: Physics
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
index 25dcc823ca..b5c777fcb6 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
@@ -1,6 +1,6 @@
- type: entity
name: bat
- parent: [ SimpleMobBase, FlyingMobBase, MobCombat, BaseSlicingRefinable, MobNightVision ]
+ parent: [ SimpleMobBase, FlyingMobBase, MobCombat, BaseSlicingRefinableButchering, MobNightVision ]
id: MobBat
description: Some cultures find them terrifying, others crunchy on the teeth.
components:
@@ -84,7 +84,7 @@
- type: entity
name: bee
- parent: [ SolutionFood, SolutionTiny, SimpleMobBase, FlyingMobBase, BaseSlicingRefinable ]
+ parent: [ SolutionFood, SolutionTiny, SimpleMobBase, FlyingMobBase, BaseSlicingRefinableButchering ]
id: MobBee
description: Nice to have, but you can't build a civilization on a foundation of honey alone.
components:
@@ -199,7 +199,7 @@
- type: entity
name: chicken
- parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible, BaseExaminableHunger]
+ parent: [SimpleMobBase, BaseSlicingRefinableButchering, BaseMobDestructible, BaseExaminableHunger]
id: MobChicken
description: Comes before an egg, and IS a dinosaur!
components:
@@ -362,7 +362,7 @@
- type: entity
abstract: true
- parent: [SolutionFood, SolutionTiny, SimpleMobBase, BaseSlicingRefinable, MobNightVision]
+ parent: [SolutionFood, SolutionTiny, SimpleMobBase, BaseSlicingRefinableButchering, MobNightVision]
id: BaseCockroach
components:
- type: Sprite
@@ -501,7 +501,7 @@
- type: entity
name: mothroach
- parent: [ BaseMobMothroach, BaseCockroach, BaseSlicingRefinable ]
+ parent: [ BaseMobMothroach, BaseCockroach, BaseSlicingRefinableButchering ]
id: MobMothroach
description: This is the adorable by-product of multiple attempts at genetically mixing mothpeople with cockroaches.
components:
@@ -677,7 +677,7 @@
- type: entity
name: mallard duck #Quack
- parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible, BaseExaminableHunger]
+ parent: [SimpleMobBase, BaseSlicingRefinableButchering, BaseMobDestructible, BaseExaminableHunger]
id: MobDuckMallard
description: An adorable mallard duck, it's fluffy and soft!
components:
@@ -818,7 +818,7 @@
- type: entity
name: butterfly
- parent: [ SolutionFood, SolutionTiny, SimpleMobBase, FlyingMobBase, BaseSlicingRefinable ]
+ parent: [ SolutionFood, SolutionTiny, SimpleMobBase, FlyingMobBase, BaseSlicingRefinableButchering ]
id: MobButterfly
description: Despite popular misconceptions, it's not actually made of butter.
components:
@@ -893,7 +893,7 @@
- type: entity
name: cow
- parent: [ BaseMobRuminant, SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible, BaseExaminableHunger ]
+ parent: [ BaseMobRuminant, SimpleMobBase, BaseSlicingRefinableButchering, BaseMobDestructible, BaseExaminableHunger ]
id: MobCow
description: Moo.
components:
@@ -995,7 +995,7 @@
- type: entity
name: crab
- parent: [ SimpleMobBase, BaseMobHemocyanin, BaseSlicingRefinable, BaseMobDestructible ]
+ parent: [ SimpleMobBase, BaseMobHemocyanin, BaseSlicingRefinableButchering, BaseMobDestructible ]
id: MobCrab
description: A folk legend goes around that his claw snaps spacemen out of existence over distasteful remarks. Be polite and tolerant for your own safety.
components:
@@ -1063,7 +1063,7 @@
- type: entity
name: goat
- parent: [ BaseMobRuminant, SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible, BaseExaminableHunger ]
+ parent: [ BaseMobRuminant, SimpleMobBase, BaseSlicingRefinableButchering, BaseMobDestructible, BaseExaminableHunger ]
id: MobGoat
description: Her spine consists of long sharp segments, no wonder she is so grumpy.
components:
@@ -1190,7 +1190,7 @@
- type: entity
abstract: true
- parent: [BaseMobRuminant, BaseSlicingRefinable, BaseExaminableHunger]
+ parent: [BaseMobRuminant, BaseSlicingRefinableButchering, BaseExaminableHunger]
id: MobSheepBase
name: sheepBase
description: A sheep.
@@ -1392,7 +1392,7 @@
# Note that we gotta make this bitch vomit someday when you feed it anthrax or sumthin. Needs to be a small item thief too and aggressive if attacked.
- type: entity
name: goose
- parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleMobBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobGoose
description: Its stomach and mind are an enigma beyond human comprehension.
components:
@@ -1527,7 +1527,7 @@
- SimpleMobBase
- MobCombat
- StripableInventoryBase
- - BaseSlicingRefinable
+ - BaseSlicingRefinableButchering
- BaseMobDestructible
id: MobKangaroo
description: A large marsupial herbivore. It has powerful hind legs, with nails that resemble long claws.
@@ -1964,7 +1964,7 @@
- type: entity
name: mouse
- parent: [SimpleMobBase, BaseMobAnimal, SolutionVermin, BaseSlicingRefinable, MobNightVision]
+ parent: [SimpleMobBase, BaseMobAnimal, SolutionVermin, BaseSlicingRefinableButchering, MobNightVision]
id: MobMouse
description: Squeak!
components:
@@ -2256,7 +2256,7 @@
- type: entity
name: lizard #Weh
- parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleMobBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobLizard
description: A harmless dragon.
components:
@@ -2313,7 +2313,7 @@
- type: entity
name: slug
- parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleMobBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobSlug
description: And they called this a lizard?
components:
@@ -2363,7 +2363,7 @@
- type: entity
name: frog
- parent: [SimpleMobBase, BaseSlicingRefinable]
+ parent: [SimpleMobBase, BaseSlicingRefinableButchering]
id: MobFrog
description: Hop hop hop. Lookin' moist.
components:
@@ -2434,7 +2434,7 @@
# Would be cool to have some functionality for the parrot to be able to sit on stuff
- type: entity
- parent: [ SimpleMobBase, FlyingMobBase, BaseSlicingRefinable, BaseMobDestructible ]
+ parent: [ SimpleMobBase, FlyingMobBase, BaseSlicingRefinableButchering, BaseMobDestructible ]
id: MobParrotBase
name: parrot
abstract: true
@@ -2521,7 +2521,7 @@
- type: entity
name: penguin
- parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleMobBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobPenguin
description: Their lives are constant pain due to their inner-body knees.
components:
@@ -2657,7 +2657,7 @@
# I have included a snake_hiss.ogg sound file so if you want to use that be my guest
- type: entity
name: snake
- parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleMobBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobSnake
description: Hissss! Bites aren't poisonous.
components:
@@ -2706,7 +2706,7 @@
- type: entity
name: possum
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobPossum
description: '"O Possum! My Possum!" -- Walt Whitman, 1865'
components:
@@ -2779,7 +2779,7 @@
- type: entity
name: raccoon
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobRaccoon
description: Trash panda!
components:
@@ -2832,7 +2832,7 @@
- type: entity
name: fox
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobFox
description: They're a fox.
components:
@@ -2983,7 +2983,7 @@
# state: creampie_corgi
- type: entity
- parent: [MobCorgiBase, BaseSlicingRefinable]
+ parent: [MobCorgiBase, BaseSlicingRefinableButchering]
id: MobCorgi
components:
- type: DamageStateVisuals
@@ -3096,7 +3096,7 @@
- type: entity
name: cat
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobCat
description: Feline pet, very funny.
components:
@@ -3241,7 +3241,7 @@
- type: entity
name: space cat
id: MobCatSpace
- parent: [MobCat, BaseSlicingRefinable]
+ parent: [MobCat, BaseSlicingRefinableButchering]
description: Feline pet, prepared for the worst.
components:
- type: Sprite
@@ -3334,7 +3334,7 @@
- type: entity
name: sloth
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobSloth
description: Very slow animal. For people with low energy.
components:
@@ -3391,7 +3391,7 @@
- type: entity
name: ferret
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobFerret
description: Just a silly little guy!
components:
@@ -3445,7 +3445,7 @@
- type: entity
name: hamster
- parent: [ SimpleMobBase, MobCombat, StripableInventoryBase, BaseSlicingRefinable, MobNightVision]
+ parent: [ SimpleMobBase, MobCombat, StripableInventoryBase, BaseSlicingRefinableButchering, MobNightVision]
id: MobHamster
description: A cute, fluffy, robust hamster.
components:
@@ -3602,7 +3602,7 @@
- type: entity
name: pig
- parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleMobBase, StripableInventoryBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobPig
description: Oink.
components:
@@ -3674,7 +3674,7 @@
- type: entity
name: diona nymph
- parent: [BaseMobAnimal, SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [BaseMobAnimal, SimpleMobBase, StripableInventoryBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobDionaNymph
description: It's like a cat, only.... branch-ier.
components:
@@ -3762,7 +3762,7 @@
- type: entity
name: reindeer buck
- parent: [ SimpleMobBase, MobCombat, BaseSlicingRefinable, BaseMobDestructible ]
+ parent: [ SimpleMobBase, MobCombat, BaseSlicingRefinableButchering, BaseMobDestructible ]
id: MobReindeerBuck
description: You think it can pull a sleigh?
components:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml b/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml
index ab8cca5e9f..2d89f03937 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml
@@ -51,7 +51,7 @@
group: GenericNumber
- type: entity
- parent: [BaseMobArgocyte, BaseSlicingRefinable]
+ parent: [BaseMobArgocyte, BaseSlicingRefinableButchering]
id: MobArgocyteSlurva
name: slurva
description: A pathetic creature, incapable of doing much.
@@ -86,7 +86,7 @@
Blunt: 3
- type: entity
- parent: [BaseMobArgocyte, BaseSlicingRefinable]
+ parent: [BaseMobArgocyte, BaseSlicingRefinableButchering]
id: MobArgocyteBarrier
name: barrier
components:
@@ -128,7 +128,7 @@
Blunt: 3
- type: entity
- parent: [BaseMobArgocyte, BaseSlicingRefinable]
+ parent: [BaseMobArgocyte, BaseSlicingRefinableButchering]
id: MobArgocyteSkitter
name: skitter
description: A devious little alien... Make sure they don't run off with your rations!
@@ -168,7 +168,7 @@
Slash: 3
- type: entity
- parent: [BaseMobArgocyte, BaseSlicingRefinable]
+ parent: [BaseMobArgocyte, BaseSlicingRefinableButchering]
id: MobArgocyteSwiper
name: swiper
description: Where did that stack of steel go?
@@ -195,7 +195,7 @@
baseSprintSpeed : 5
- type: entity
- parent: [BaseMobArgocyte, BaseSlicingRefinable]
+ parent: [BaseMobArgocyte, BaseSlicingRefinableButchering]
id: MobArgocyteMolder
name: molder
components:
@@ -222,7 +222,7 @@
baseWalkSpeed : 3.5
- type: entity
- parent: [BaseMobArgocyte, BaseSlicingRefinable]
+ parent: [BaseMobArgocyte, BaseSlicingRefinableButchering]
id: MobArgocytePouncer
name: pouncer
components:
@@ -251,7 +251,7 @@
Slash: 7.5
- type: entity
- parent: [BaseMobArgocyte, BaseSlicingRefinable]
+ parent: [BaseMobArgocyte, BaseSlicingRefinableButchering]
id: MobArgocyteGlider
name: glider
components:
@@ -283,7 +283,7 @@
baseWalkSpeed: 4.5
- type: entity
- parent: [BaseMobArgocyte, BaseSlicingRefinable]
+ parent: [BaseMobArgocyte, BaseSlicingRefinableButchering]
id: MobArgocyteHarvester
name: harvester
components:
@@ -312,7 +312,7 @@
Slash: 10
- type: entity
- parent: [BaseMobArgocyte, BaseSlicingRefinable]
+ parent: [BaseMobArgocyte, BaseSlicingRefinableButchering]
id: MobArgocyteCrawler
name: crawler
description: Deadly, pack-animals that maul unsuspecting travelers.
@@ -345,7 +345,7 @@
baseWalkSpeed: 5
- type: entity
- parent: [BaseMobArgocyte, BaseSlicingRefinable]
+ parent: [BaseMobArgocyte, BaseSlicingRefinableButchering]
id: MobArgocyteEnforcer
name: enforcer
components:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml
index ed3bbdd657..980cbd01c0 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml
@@ -27,7 +27,7 @@
- type: entity
id: MobGoliath
- parent: [ BaseMobAsteroid, MobBloodstream, BaseSlicingRefinable, BaseMobDestructible ]
+ parent: [ BaseMobAsteroid, MobBloodstream, BaseSlicingRefinableButchering, BaseMobDestructible ]
name: goliath
description: A massive beast that uses long tentacles to ensnare its prey, threatening them is not advised under any conditions.
components:
@@ -194,7 +194,7 @@
- type: entity
id: MobHivelord
- parent: [ BaseMobAsteroid, FlyingMobBase, BaseSlicingRefinable, BaseMobDestructible ]
+ parent: [ BaseMobAsteroid, FlyingMobBase, BaseSlicingRefinableButchering, BaseMobDestructible ]
name: hivelord
description: A truly alien creature, it is a mass of unknown organic material, constantly fluctuating. When attacking, pieces of it split off and attack in tandem with the original.
components:
@@ -359,7 +359,7 @@
- type: entity
id: MobBasilisk
- parent: [ BaseMobAsteroid, MobBloodstream, BaseSlicingRefinable, BaseMobDestructible ]
+ parent: [ BaseMobAsteroid, MobBloodstream, BaseSlicingRefinableButchering, BaseMobDestructible ]
name: basilisk
description: A territorial beast, covered in a thick shell that absorbs energy. Its stare causes victims to freeze from the inside.
components:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml b/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml
index 05f4c973aa..3a0abfb652 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/behonker.yml
@@ -1,6 +1,6 @@
- type: entity
abstract: true
- parent: [ SimpleSpaceMobBase, FlyingMobBase, MobCombat, BaseSlicingRefinable, BaseMobIrradiated ]
+ parent: [ SimpleSpaceMobBase, FlyingMobBase, MobCombat, BaseSlicingRefinableButchering, BaseMobIrradiated ]
id: BaseMobBehonker
name: behonker
description: A floating demon aspect of the honkmother.
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml
index 8815e7adf7..669db0dc47 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml
@@ -1,6 +1,6 @@
- type: entity
abstract: true
- parent: [ SimpleSpaceMobBase, FlyingMobBase, MobCombat, BaseSlicingRefinable, MobNightVision, BaseMobDestructible ]
+ parent: [ SimpleSpaceMobBase, FlyingMobBase, MobCombat, BaseSlicingRefinableButchering, MobNightVision, BaseMobDestructible ]
id: BaseMobCarp
name: space carp
description: It's a space carp.
@@ -191,7 +191,7 @@
Slash: 6
- type: entity
- parent: [ BaseMobBloodsucker, BaseMobCarp, BaseSlicingRefinable ]
+ parent: [ BaseMobBloodsucker, BaseMobCarp, BaseSlicingRefinableButchering ]
id: MobShark
name: sharkminnow
description: A dangerous shark from the blackness of endless space, who loves to drink blood.
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml b/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml
index dbcebebdcc..3b514e425e 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/flesh.yml
@@ -1,5 +1,5 @@
- type: entity
- parent: [ SimpleMobBase, MobCombat, BaseSlicingRefinable, BaseMobDestructible ]
+ parent: [ SimpleMobBase, MobCombat, BaseSlicingRefinableButchering, BaseMobDestructible ]
id: BaseMobFlesh
name: aberrant flesh
description: A shambling mass of flesh, animated through anomalous energy.
@@ -204,7 +204,7 @@
Blunt: 10
- type: entity
- parent: [ SimpleSpaceMobBase, MobCombat, BaseSlicingRefinable, BaseMobDestructible ]
+ parent: [ SimpleSpaceMobBase, MobCombat, BaseSlicingRefinableButchering, BaseMobDestructible ]
id: BaseMobFleshSalvage #This one is immune to space!
name: aberrant flesh
suffix: "Salvage Ruleset"
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/hellspawn.yml b/Resources/Prototypes/Entities/Mobs/NPCs/hellspawn.yml
index 8ac7106b10..5d15738be4 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/hellspawn.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/hellspawn.yml
@@ -5,7 +5,7 @@
- MobCombat
- MobBloodstream
- BaseMobAnimal
- - BaseSlicingRefinable
+ - BaseSlicingRefinableButchering
- BaseMobDestructible
id: MobHellspawn
description: An unstoppable force of carnage.
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/lavaland.yml b/Resources/Prototypes/Entities/Mobs/NPCs/lavaland.yml
index ec4f21dff7..b57b97d16e 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/lavaland.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/lavaland.yml
@@ -1,7 +1,7 @@
- type: entity
name: watcher
id: MobWatcherBase
- parent: [ SimpleSpaceMobBase, FlyingMobBase, BaseSlicingRefinable, BaseMobDestructible ]
+ parent: [ SimpleSpaceMobBase, FlyingMobBase, BaseSlicingRefinableButchering, BaseMobDestructible ]
abstract: true
description: It's like it's staring right through you.
components:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/mimic.yml b/Resources/Prototypes/Entities/Mobs/NPCs/mimic.yml
index 12955eae57..f5cb43b36a 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/mimic.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/mimic.yml
@@ -1,7 +1,7 @@
- type: entity
name: mimic
id: MobMimic
- parent: [ SimpleMobBase, MobCombat, BaseSlicingRefinable, BaseMobDestructible ]
+ parent: [ SimpleMobBase, MobCombat, BaseSlicingRefinableButchering, BaseMobDestructible ]
description: Surprise. # When this gets a proper write this should use the object's actual description >:)
components:
- type: Tag
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml
index 1cf31b17b8..449e148227 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml
@@ -1,7 +1,7 @@
- type: entity
name: laser raptor
id: MobLaserRaptor
- parent: [SimpleMobBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleMobBase, BaseSlicingRefinableButchering, BaseMobDestructible]
description: From the Viking age.
components:
- type: NpcFactionMember
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml
index db7a9c00b8..8e3f6ae3c2 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml
@@ -13,7 +13,7 @@
group: null # Strips the numeric identifier from the pet's ingame name
- type: entity
- parent: [ BaseUniquePet, MobCorgi, BaseSlicingRefinable ]
+ parent: [ BaseUniquePet, MobCorgi, BaseSlicingRefinableButchering ]
id: MobCorgiIan
name: Ian
description: Favorite pet corgi.
@@ -68,7 +68,7 @@
stealGroup: AnimalIan
- type: entity
- parent: [ MobCorgiIan, BaseSlicingRefinable ]
+ parent: [ MobCorgiIan, BaseSlicingRefinableButchering ]
id: MobCorgiIanOld
name: Old Ian
description: Still the favorite pet corgi. Love his wheels.
@@ -159,7 +159,7 @@
- type: SpeakOnException
- type: entity
- parent: [ MobCorgiPuppy, BaseSlicingRefinable ]
+ parent: [ MobCorgiPuppy, BaseSlicingRefinableButchering ]
id: MobCorgiIanPup
name: Puppy Ian
description: Favourite puppy corgi. Awww.
@@ -268,7 +268,7 @@
- VimPilot
- type: entity
- parent: [ BaseUniquePet, SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable , BaseMobDestructible ]
+ parent: [ BaseUniquePet, SimpleMobBase, StripableInventoryBase, BaseSlicingRefinableButchering , BaseMobDestructible ]
id: MobBingus
name: Bingus
description: Bingus my beloved...
@@ -325,7 +325,7 @@
stealGroup: AnimalNamedCat
- type: entity
- parent: [ BaseUniquePet, SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable , BaseMobDestructible ]
+ parent: [ BaseUniquePet, SimpleMobBase, StripableInventoryBase, BaseSlicingRefinableButchering , BaseMobDestructible ]
id: MobMcGriff
name: McGriff
description: This dog can tell something smells around here, and that something is CRIME!
@@ -401,7 +401,7 @@
- type: MessyDrinker
- type: entity
- parent: [ BaseUniquePet, MobSloth, BaseSlicingRefinable ]
+ parent: [ BaseUniquePet, MobSloth, BaseSlicingRefinableButchering ]
id: MobPaperwork
name: Paperwork
description: Took up a new job sorting books in the library after he got transferred from Space Station 13. He seems to be just as slow at this.
@@ -435,7 +435,7 @@
gender: male
- type: entity
- parent: [ BaseUniquePet, SimpleMobBase, StripableInventoryBase, BaseSlicingRefinable , BaseMobDestructible ]
+ parent: [ BaseUniquePet, SimpleMobBase, StripableInventoryBase, BaseSlicingRefinableButchering , BaseMobDestructible ]
id: MobWalter
name: Walter
description: He likes chems and treats. Walter.
@@ -608,7 +608,7 @@
- VimPilot
- type: entity
- parent: [ BaseUniquePet, MobFox, BaseSlicingRefinable ]
+ parent: [ BaseUniquePet, MobFox, BaseSlicingRefinableButchering ]
id: MobFoxRenault
name: Renault
description: The captain's trustworthy fox.
@@ -638,7 +638,7 @@
stealGroup: AnimalRenault
- type: entity
- parent: [ BaseUniquePet, MobHamster, BaseSlicingRefinable ]
+ parent: [ BaseUniquePet, MobHamster, BaseSlicingRefinableButchering ]
id: MobHamsterHamlet
name: Hamlet
description: A grumpy, cute and fluffy hamster.
@@ -806,7 +806,7 @@
prototypes: [ BoxingKangarooGear ]
- type: entity
- parent: [ BaseUniquePet, MobAdultSlimes, StripableInventoryBase, BaseSlicingRefinable ]
+ parent: [ BaseUniquePet, MobAdultSlimes, StripableInventoryBase, BaseSlicingRefinableButchering ]
id: MobSlimesPet
name: Smile
description: This masterpiece has gone through thousands of experiments. But it is the sweetest creature in the world. Smile Slime!
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml
index e0356eb338..cbc7a71ebf 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml
@@ -1,7 +1,7 @@
- type: entity
name: rat king
id: MobRatKing
- parent: [ BaseMobRat, SimpleMobBase, MobCombat, BaseSlicingRefinable, MobNightVision, BaseMobDestructible, BaseThirstSlowdown ]
+ parent: [ BaseMobRat, SimpleMobBase, MobCombat, BaseSlicingRefinableButchering, MobNightVision, BaseMobDestructible, BaseThirstSlowdown ]
description: He's da rat. He make da roolz.
components:
- type: CombatMode
@@ -163,7 +163,7 @@
- type: entity
name: rat servant
id: MobRatServant
- parent: [ BaseMobRat, SimpleMobBase, MobCombat, BaseSlicingRefinable, BaseThirstSlowdown ]
+ parent: [ BaseMobRat, SimpleMobBase, MobCombat, BaseSlicingRefinableButchering, BaseThirstSlowdown ]
description: He's da mini rat. He don't make da roolz.
categories: [ HideSpawnMenu ] #Must be configured to a King or the AI breaks.
components:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml
index ad002492a6..d396969dc5 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml
@@ -1,7 +1,7 @@
- type: entity
name: basic slime
id: BaseMobAdultSlimes
- parent: [ BaseMobSlimes, SimpleMobBase, MobCombat, BaseSlicingRefinable, MobNightVision, BaseMobDestructible ]
+ parent: [ BaseMobSlimes, SimpleMobBase, MobCombat, BaseSlicingRefinableButchering, MobNightVision, BaseMobDestructible ]
abstract: true
description: It looks so much like jelly. I wonder what it tastes like?
components:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml
index 6dac7d5e44..01d66c3a93 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml
@@ -74,7 +74,7 @@
- type: entity
name: space bear
id: MobBearSpace
- parent: [MobSpaceBasic, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [MobSpaceBasic, BaseSlicingRefinableButchering, BaseMobDestructible]
description: It looks friendly. Why don't you give it a hug?
components:
- type: Sprite
@@ -123,7 +123,7 @@
- type: entity
name: space kangaroo
id: MobKangarooSpace
- parent: [MobSpaceBasic, StripableInventoryBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [MobSpaceBasic, StripableInventoryBase, BaseSlicingRefinableButchering, BaseMobDestructible]
description: It looks friendly. Why don't you give it a hug?
components:
- type: Sprite
@@ -184,7 +184,7 @@
- type: entity
name: space spider
id: MobSpiderSpace
- parent: [MobSpaceBasic, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [MobSpaceBasic, BaseSlicingRefinableButchering, BaseMobDestructible]
description: It's so glowing, it looks dangerous.
components:
- type: Sprite
@@ -289,7 +289,7 @@
- type: entity
name: space cobra
id: MobCobraSpace
- parent: [MobSpaceBasic, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [MobSpaceBasic, BaseSlicingRefinableButchering, BaseMobDestructible]
description: Long fangs and a glowing hood, and the alluring look begs to come closer.
components:
- type: Sprite
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml b/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml
index e0df80dcf3..4763f4769c 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml
@@ -1,7 +1,7 @@
- type: entity
name: space tick
id: MobTick
- parent: [SimpleSpaceMobBase, BaseSlicingRefinable]
+ parent: [SimpleSpaceMobBase, BaseSlicingRefinableButchering]
description: It's a space tick, watch out for its nasty bite. CentComm reports that 90 percent of cargo leg amputations are due to space tick bites.
components:
- type: InputMover
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml
index 547886f76a..06a18119e6 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml
@@ -358,7 +358,7 @@
- type: entity
name: space adder
- parent: [SimpleSpaceMobBase, BaseSlicingRefinable, BaseMobDestructible]
+ parent: [SimpleSpaceMobBase, BaseSlicingRefinableButchering, BaseMobDestructible]
id: MobPurpleSnake
description: A menacing purple snake from Kepler-283c.
components:
@@ -436,7 +436,7 @@
- type: entity
name: space adder
- parent: [MobPurpleSnake, BaseSlicingRefinable]
+ parent: [MobPurpleSnake, BaseSlicingRefinableButchering]
id: MobSmallPurpleSnake
suffix: small
description: A smaller version of the menacing purple snake from Kepler-283c.
diff --git a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
index c1c811716b..ee884cce86 100644
--- a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
+++ b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
@@ -1,5 +1,5 @@
- type: entity
- parent: [ SimpleSpaceMobBase, FlyingMobBase, BaseSlicingRefinable, MobNightVision, BaseMobIrradiated ]
+ parent: [ SimpleSpaceMobBase, FlyingMobBase, BaseSlicingRefinableButchering, MobNightVision, BaseMobIrradiated ]
id: BaseMobDragon
suffix: ""
name: space dragon
diff --git a/Resources/Prototypes/Entities/Objects/base_item.yml b/Resources/Prototypes/Entities/Objects/base_item.yml
index c4ad726d25..292efe4041 100644
--- a/Resources/Prototypes/Entities/Objects/base_item.yml
+++ b/Resources/Prototypes/Entities/Objects/base_item.yml
@@ -201,6 +201,7 @@
startRefinePopupType: small
popupForUser: refined-butchered-success
popupForOther: refined-butchered-success-others
+ tooltipQualityHint: tool-refinable-component-hint-slicing
verbIcon: Interface/VerbIcons/cutlery.svg.192dpi.png
sound: !type:SoundPathSpecifier
path: /Audio/Items/Culinary/chop.ogg
@@ -212,6 +213,15 @@
components:
- type: ToolRefinableSolution
+- type: entity
+ abstract: true
+ parent: BaseSlicingRefinable
+ id: BaseSlicingRefinableButchering
+ components:
+ - type: ToolRefinable
+ verbText: refined-butchered-verb-name
+ tooltipQualityHint: tool-refinable-component-hint-butchering
+
# For entities with a hidden container slot that can be opened with a tool
- type: entity
abstract: true