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>
This commit is contained in:
portfiend 2026-09-28 11:42:29 +00:00 • committed by GitHub
parent 42164bd1bb
commit 477cbdf8cd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
22 changed files with 132 additions and 86 deletions

View file

@ -89,4 +89,12 @@ public sealed partial class ToolRefinableComponent : Component
/// </summary>
[DataField]
public PopupType PopupType = PopupType.Small;
/// <summary>
/// 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.
/// </summary>
[DataField]
public LocId? TooltipQualityHint = "tool-refinable-component-hint";
}

View file

@ -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<ToolRefinableComponent, GetVerbsEvent<InteractionVerb>>(AddVerb);
SubscribeLocalEvent<ToolRefinableComponent, InteractUsingEvent>(OnInteractUsing, after: [typeof(ItemSlotsSystem)]);
SubscribeLocalEvent<ToolRefinableComponent, ToolRefineDoAfterEvent>(OnDoAfter);
}
#region Subscriptions
/// <summary>
/// Adds an examine tooltip to a refinable entity if one is specified, hinting at what
/// tool quality is needed to refine this entity.
/// </summary>
/// <param name="ent">The refinable entity.</param>
[SubscribeLocalEvent]
private void OnExamined(Entity<ToolRefinableComponent> 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);
}
/// <summary> Normal interactions. </summary>
[SubscribeLocalEvent]
private void OnInteractUsing(Entity<ToolRefinableComponent> ent, ref InteractUsingEvent args)
{
if (args.Handled || !_toolSystem.HasQuality(args.Used, ent.Comp.QualityNeeded))
@ -65,6 +85,7 @@ public sealed partial class ToolRefinableSystem : EntitySystem
}
/// <summary> Verb interactions. </summary>
[SubscribeLocalEvent(after: [typeof(ItemSlotsSystem)])]
private void AddVerb(Entity<ToolRefinableComponent> ent, ref GetVerbsEvent<InteractionVerb> args)
{
var used = args.Using;
@ -120,6 +141,7 @@ public sealed partial class ToolRefinableSystem : EntitySystem
}
/// <summary> DoAfter for refining. </summary>
[SubscribeLocalEvent]
private void OnDoAfter(Entity<ToolRefinableComponent> ent, ref ToolRefineDoAfterEvent args)
{
if (args.Cancelled || args.Used == null || !args.Target.HasValue)
@ -285,7 +307,7 @@ public sealed partial class ToolRefinableSystem : EntitySystem
/// </summary>
[ByRefEvent]
public record struct AttemptToolRefineEvent(
EntityUid Using,
EntityUid? Using = null,
bool IsCancelled = false,
string? BlockCause = null
);

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -5,7 +5,7 @@
- MobCombat
- MobBloodstream
- BaseMobAnimal
- BaseSlicingRefinable
- BaseSlicingRefinableButchering
- BaseMobDestructible
id: MobHellspawn
description: An unstoppable force of carnage.

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,5 +1,5 @@
- type: entity
parent: [ SimpleSpaceMobBase, FlyingMobBase, BaseSlicingRefinable, MobNightVision, BaseMobIrradiated ]
parent: [ SimpleSpaceMobBase, FlyingMobBase, BaseSlicingRefinableButchering, MobNightVision, BaseMobIrradiated ]
id: BaseMobDragon
suffix: ""
name: space dragon

View file

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