v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

Difference between revisions of "40d:Cat cancels Store Item in Stockpile: Too injured"

From Dwarf Fortress Wiki
Jump to navigation Jump to search
(Added link to Bay12 topic explaining the fix)
 
(23 intermediate revisions by 12 users not shown)
Line 1: Line 1:
 +
{{quality|Exceptional|15:53, 29 April 2011 (UTC)}}{{av}}
 
{{D for Dwarf}}
 
{{D for Dwarf}}
 +
:Your cat kills a [[vermin]] and brings it to you.
 +
:You respond "Thank you, now go get rid of that thing right now".
 +
:The cat then complains "I can't do that, I don't have any hands".
  
This error message is actually often caused by a bug in the system, existing in prior versions, and which was reintroduced in 40d. When a [[pet]] [[cat]] kills a [[vermin]], it will attempt to pick up the vermin in its mouth and carry it to their owner. However, the cat's mouth does not possess the [GRASP] tag, so it registers as unable to pick up the item and generates the message. Secondary programming picks up the task and lets the cat carry the vermin afterwards. This bug can be fixed by [[modding]] the cat entity token by adding [GRASP] to the mouth part of the cat.[http://www.bay12games.com/forum/index.php?topic=25198.0]
+
This error [[announcement]] is actually caused by an old bug in the system which was reintroduced in 40d. When a [[pet]] [[cat]] kills a [[vermin]], it picks it up with its mouth and carries it to its owner, to bask in the display of gratitude that every cat owner shows upon being gifted small dead animals.
  
==Alternate explanation==
+
Once it gets to its owner, instead of dropping the vermin remains on the floor (as it should), it attempts to '''drop off''' the vermin remains at an appropriate location (much like [[herbalist]]s do with gathered plants), resulting in it being given a "Store Item in Stockpile" job targeted at one of your refuse stockpiles. However, since cats do not have any body parts capable of grasping, the job cancels with the reason "too injured" and the vermin is dropped on the ground.
Your cat kills a vermin. It reaches down to pick it up with its hands, realizes it has no hands, cries out "My hands! My beautiful hands! Someone has chopped off my beautiful han... wait, I'm a cat. I don't have hands. Right," and then continues on with its business.
+
 
 +
This behavior does not occur with stray cats (since they don't have an owner, they leave vermin remains exactly where they were killed), nor will it occur if you have no accessible refuse stockpiles.
 +
 
 +
== Working around the bug ==
 +
As your cat and vermin population expands this message becomes more and more common, but it is easy enough to fix by [[modding]] (the exact steps are explained below). You don't even have to [[World generation|generate a new world]].
 +
 
 +
'''Step One'''
 +
 
 +
Open <tt>raw/objects/body_default.txt</tt> and add a new entry:
 +
 
 +
[BODY:CAT_MOUTH]
 +
[BP:CAT_MOUTH:mouth][CONTYPE:HEAD][MOUTH][SMALL][EMBEDDED][APERTURE][GRASP]
 +
 
 +
This creates a new body part in your dwarf universe. Specifically, a mouth which can pick things up. Now we need to attach this body part to the cat!
 +
 
 +
'''Step Two'''
 +
 
 +
So open <tt>raw/objects/creature_domestic.txt</tt> and edit the cat to:
 +
 
 +
[CREATURE:CAT]
 +
        [NAME:cat:cats:cat]
 +
        [TILE:'c'][COLOR:0:0:1]
 +
        [VERMINHUNTER]
 +
        [PETVALUE:20]
 +
        [CARNIVORE][NATURAL][PET]
 +
        [LARGE_ROAMING]
 +
        [COMMON_DOMESTIC][BENIGN]
 +
        [PREFSTRING:aloofness]
 +
        [BODY:QUADRUPED:TAIL:2EYES:2EARS:NOSE:2LUNGS:HEART:GUTS:ORGANS:THROAT:NECK:SPINE:BRAIN:'''CAT_MOUTH''']
 +
        [BODYGLOSS:PAW]
 +
        [SIZE:3]
 +
        [MAXAGE:10:20]
 +
        [ATTACK:MAIN:BYTYPE:MOUTH:bite:bites:1:6:GORE][ATTACKFLAG_CANLATCH]
 +
        [CHILD:1][CHILDNAME:kitten:kittens]
 +
        [FAT:1]
 +
        [DIURNAL]
 +
        [STANDARD_FLESH]
 +
        [HOMEOTHERM:10070]
 +
        [LAYERING:100]
 +
        [SWIMS_INNATE][SWIM_SPEED:2500]
 +
        [MUNDANE]
 +
 
 +
And you're done.
 +
 
 +
Note that you don't have to edit the <tt>[ATTACK]</tt> line, even though it contains a <tt>MOUTH</tt> too. This is because the "mouth" in this case is referring to the [MOUTH] body part token, not the body part itself (you'll note that our <tt>CAT_MOUTH</tt> has this mouth tag, too).
 +
 
 +
It should be noted that this fix does not actually correct the underlying behavior - instead, it ''allows'' cats to successfully complete their "store item in stockpile" jobs and haul the vermin remains to your refuse stockpiles.
  
 
{{Errors FAQ}}
 
{{Errors FAQ}}

Latest revision as of 17:42, 11 August 2024

This article is about an older version of DF.
D4Dwarf.png This article or section has been rated D for Dwarf. It may include witty humour, not-so-witty humour, bad humour, in-jokes, pop culture references, and references to the Bay12 forums. Don't believe everything you read, and if you miss some of the references, don't worry. It was inevitable.


Your cat kills a vermin and brings it to you.
You respond "Thank you, now go get rid of that thing right now".
The cat then complains "I can't do that, I don't have any hands".

This error announcement is actually caused by an old bug in the system which was reintroduced in 40d. When a pet cat kills a vermin, it picks it up with its mouth and carries it to its owner, to bask in the display of gratitude that every cat owner shows upon being gifted small dead animals.

Once it gets to its owner, instead of dropping the vermin remains on the floor (as it should), it attempts to drop off the vermin remains at an appropriate location (much like herbalists do with gathered plants), resulting in it being given a "Store Item in Stockpile" job targeted at one of your refuse stockpiles. However, since cats do not have any body parts capable of grasping, the job cancels with the reason "too injured" and the vermin is dropped on the ground.

This behavior does not occur with stray cats (since they don't have an owner, they leave vermin remains exactly where they were killed), nor will it occur if you have no accessible refuse stockpiles.

Working around the bug[edit]

As your cat and vermin population expands this message becomes more and more common, but it is easy enough to fix by modding (the exact steps are explained below). You don't even have to generate a new world.

Step One

Open raw/objects/body_default.txt and add a new entry:

[BODY:CAT_MOUTH]
[BP:CAT_MOUTH:mouth][CONTYPE:HEAD][MOUTH][SMALL][EMBEDDED][APERTURE][GRASP]

This creates a new body part in your dwarf universe. Specifically, a mouth which can pick things up. Now we need to attach this body part to the cat!

Step Two

So open raw/objects/creature_domestic.txt and edit the cat to:

[CREATURE:CAT]
       [NAME:cat:cats:cat]
       [TILE:'c'][COLOR:0:0:1]
       [VERMINHUNTER]
       [PETVALUE:20]
       [CARNIVORE][NATURAL][PET]
       [LARGE_ROAMING]
       [COMMON_DOMESTIC][BENIGN]
       [PREFSTRING:aloofness]
       [BODY:QUADRUPED:TAIL:2EYES:2EARS:NOSE:2LUNGS:HEART:GUTS:ORGANS:THROAT:NECK:SPINE:BRAIN:CAT_MOUTH]
       [BODYGLOSS:PAW]
       [SIZE:3]
       [MAXAGE:10:20]
       [ATTACK:MAIN:BYTYPE:MOUTH:bite:bites:1:6:GORE][ATTACKFLAG_CANLATCH]
       [CHILD:1][CHILDNAME:kitten:kittens]
       [FAT:1]
       [DIURNAL]
       [STANDARD_FLESH]
       [HOMEOTHERM:10070]
       [LAYERING:100]
       [SWIMS_INNATE][SWIM_SPEED:2500]
       [MUNDANE]

And you're done.

Note that you don't have to edit the [ATTACK] line, even though it contains a MOUTH too. This is because the "mouth" in this case is referring to the [MOUTH] body part token, not the body part itself (you'll note that our CAT_MOUTH has this mouth tag, too).

It should be noted that this fix does not actually correct the underlying behavior - instead, it allows cats to successfully complete their "store item in stockpile" jobs and haul the vermin remains to your refuse stockpiles.