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