Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000449Dwarf FortressDwarf Mode -- Combatpublic2010-04-04 23:042014-07-18 12:50
Assigned ToToady One 
PrioritynormalSeverityminorReproducibilityhave not tried
PlatformOSOS Version
Product Version0.31.01 
Target VersionFixed in Version0.40.04 
Summary0000449: Strangling/strangulation doesn't kill people who are already unconscious for other reasons
Descriptiongoblins show up, the military springs into underequipped inaction, everyone gets nicked and heads off to the hospital. The bedridden dwarves snap. One of the dwarven recruits goes berzerk and starts punching the nearest invalid. After a few months, i check up on the combat log:

Dude has been "strangling the Recruit's throat!" for more than a month and a half, without killing him.
Tagsbinary patch, wrestling
Attached Files

- Relationships
related to 0001403new Unconscious dwarf not drowning 
related to 0003426resolvedToady One Bare-hands strangulation results in bloodfest 
related to 0001775resolvedFootkerchief Miners fail to fall unconscious after cave-in until current job is ended. 
has duplicate 0001490closedFootkerchief strangulation is nerfed heavily. 
has duplicate 0005027resolvedFootkerchief Eternal Strangulation 
has duplicate 0006503resolvedFootkerchief Minotaur strangles dwarf under water during three months and counting 
related to 0001742new Unconscious dwarf won't die from lashing 
related to 0002889new Hydras can be strangled to death by one person 

-  Notes
Footkerchief (manager)
2010-04-04 23:48

I don't think it's dwarf-on-dwarf specifically. It seems to often happen with strangling anyone who's unconscious or maybe severely wounded.
Scaevolus_ (reporter)
2010-04-09 03:54

This makes adventure mode wrestling quite ineffective-- strangling only seems to cause internal bleeding, so you can't use it as a "kill move".
toybasher (reporter)
2010-04-24 10:21

But I can still strangle elves to death while there are knocked out form pain.
fake_robot (reporter)
2010-04-27 03:29

I've noticed some weirdness surrounding unconscious dorfs. Namely, that they seem to stay unconscious forever, they don't need food or water, and they seem to be invisible to friends and foes alike.
derigo (reporter)
2010-05-04 14:50

Its so strange, because in adventure mode when something falls unconscious, you and pinch off its head (or any other body part) without effort.
Proteus (reporter)
2010-05-04 15:27

I remember having the same thing once...

I activated a squad (my first 7)to pursue a goblin thief,
after a short pursuit I deactivated them again,
believing that the goblin had already fled.

What I didn´t know was that my cook already had reached the goblin and was strangling him.
Over a month later I checked my health screen and saw, that my cook was totally dehydrated. Checking his location I saw, that he was still strangling said goblin.
Despite immediately activating my squad again, I couldn´t save my cook.
He died of dehydration while strangling the goblin, while the rst of the squad stood around them, watching (which seems to be another (reported) bug, maybe related to this one, i.e. squadmembers won´t attack unconscious enemies).ö

Only after the cooks death his former squadmembers went active and killed the goblin with a pick
EddyP (reporter)
2010-11-19 10:36

I've had an Ettin strangling a dwarf straight for roughly half a year now. There are about 3000 strangling messages in the combat report.
Shmo (reporter)
2011-06-03 19:06

I can confirm this. I've had a Roc strangling a hapless unconscious, heavily bleeding fisherdwarf for about 6 months now to no avail. I expected he would die of blood loss if not the strangulation, but it's like the two are frozen solid in deadlock. 32 pages of messages now.
d64 (reporter)
2012-02-21 13:05

Strangling still seems to be problematic in 34.02. It takes many many turns for a bronze colossus to strangle a dingo. The messages:

Bronze Colossus 1 strangles Dingo 21's throat, tearing apart the hair!
Bronze Colossus 1 strangles Dingo 21's throat, tearing apart the hair!
Bronze Colossus 1 strangles Dingo 21's throat, tearing apart the hair!
(several pages of these)

I think a colossus should be able to crush a small canine in its hands with relative ease...
Masquerine (reporter)
2012-04-14 20:04
edited on: 2012-04-14 20:07

I had this happen in version 34.07 with two giant gargoyles and a single axedwarf. The gargoyles fought the axedwarf for two days normally, causing various injuries (many broken bones, oozing/gushing blood). The main injury was a broken neck to the dwarf, after which the gargoyles both started strangling the dwarf. As soon as they started strangling, that was the only attack they used. If they were not attacked or interrupted by any means, the strangling would go on for months or even years.

If they were interrupted, the dwarf was immediately pronounced dead as soon as the strangling stopped. She never seemed to receive new injuries during the strangle time, even from other enemies. She never once got a hunger or thirst message. It seems like she was dead the entire time but the gargoyles just got stuck in strangle mode, which prevented her from updating to dead status.

Her hospital screen said heavy bleeding, ability to stand/grasp lost, exhausted and nerve/motor damage. I don't think it changed at all during the strangle time.

Footkerchief (manager)
2014-06-10 08:27

From UristDaVinci at 0006503:0024802: "it looks like the part of the code which increments the air loss counter/data does not run for the dwarf while the dwarf is being strangled. Even removed from the water, the dwarf has a broken upper spine and will eventually suffocate when separated from the wrestling minotaur."
UristDaVinci (reporter)
2014-06-14 01:52

OK, I used WinDbg on dwarf fortress and explored where other dwarves run the "air loss code", and then followed the higher-level function for the eternally-strangled dwarf from the minotaur case until I came to the part where it differs and doesn't run the "air loss/hunger/thirst/etc" code.

It looks like a pathfinding or path-cost related code section gets upset when a wrestling victim hasn't generated some kind of pathing-related data. I guess this might have something to do with being unconscious or invalid. At any rate, if this happens the code skips to the very end of the higher function. Other parts of the pathing-related code, if conditions are not met, merely skip forwards to what appears to be "the next step" in the AI logic. The problem might be a misplaced "Break" statement in the C code?

The following binary edit is for Win32 v0.34.11 SDL:
   0x0045da72 : e9 77 1b 00 00 => e9 65 03 00 00

Re-targeting the jump statement to the same destination as the other nearby jumps appears to solve the problem for the minotaur-strangle-dwarf-in-river bug 6503. The dwarf resumes drowning/running out of air and dies. The minotaur then leaves the river and wanders around. No known side-effects of this change.
Trif (reporter)
2014-07-11 09:35

This has been... kind of fixed as of 0.40.02.
I tested strangling a kobold as a bronze colossus in the arena.
First I pulped his leg, causing him to fall unconscious. I then strangled him. He suffocated after 389 chokes. That seemed seemed a bit excessive (any other strangler would have fallen unconscious from over-exertion multiple times), so I was pretty sure that the bug was still around.
Still, for completeness, I tried a control kobold. This one I didn't knock out before strangling him. Amount of chokes until death: 389.

It seems like - strictly speaking - this bug has been fixed. Unconsciousness has no effect on strangulation anymore. But it's pretty clear that strangling has massive problems.
So yeah, not sure what to do with this bug. If you guys want to close it, I'll make a new report about the bugged strangling in general. If not, Toady can go by this note here.
Toady One (administrator)
2014-07-18 12:30

I think this is worked out. In 0.40.03-, if you put someone in a chokehold, they will be on the road to suffocation, and strangling just makes them pass out so you don't get attacked. So once they are unconscious, you can just press period and wait... for like 40-70 presses. Strangling is a much faster action (2 ticks), so it actually takes about 5 times as long.

For next time, I've made strangulation push them much further up the air loss count, so if you tap the movement toward them for an auto-strangle a handful of times, that should be enough. You can still also wait with period and a chokehold, but that takes also still takes a while.

I couldn't find any indication that the weird logic mentioned for the WinDbg analysis still exists, but it's possible there's still some problem out there.

- Issue History
Date Modified Username Field Change
2010-04-04 23:04 seigenblues New Issue
2010-04-04 23:48 Footkerchief Note Added: 0001013
2010-04-05 00:27 Qloos Tag Attached: wrestling
2010-04-09 03:54 Scaevolus_ Note Added: 0002288
2010-04-13 09:24 Footkerchief Summary dwarf-on-dwarf strangulation doesn't kill => Strangling/strangulation doesn't kill people who are already unconscious for other reasons
2010-04-21 13:19 Footkerchief Relationship added parent of 0001403
2010-04-24 10:21 toybasher Note Added: 0004889
2010-04-24 11:08 Footkerchief Relationship added has duplicate 0001490
2010-04-27 03:29 fake_robot Note Added: 0005323
2010-05-04 14:00 Footkerchief Relationship added parent of 0001742
2010-05-04 14:50 derigo Note Added: 0006122
2010-05-04 15:27 Proteus Note Added: 0006123
2010-06-22 18:14 Footkerchief Relationship replaced related to 0001742
2010-11-18 18:13 Footkerchief Relationship added related to 0003426
2010-11-18 18:14 Footkerchief Relationship deleted related to 0003426
2010-11-19 10:36 EddyP Note Added: 0014022
2011-06-03 19:06 Shmo Note Added: 0017928
2011-06-04 14:47 Put Issue Monitored: Put
2012-01-20 15:21 Knight Otu Relationship added has duplicate 0005027
2012-02-21 13:05 d64 Note Added: 0020408
2012-02-21 23:22 d64 Issue Monitored: d64
2012-03-05 08:57 Footkerchief Relationship replaced related to 0001403
2012-04-14 20:04 Masquerine Note Added: 0022267
2012-04-14 20:07 Masquerine Note Edited: 0022267 View Revisions
2014-01-22 10:31 Footkerchief Relationship added related to 0003426
2014-01-22 12:19 Footkerchief Relationship added related to 0001775
2014-01-26 09:20 Footkerchief Tag Attached: Fixed in 0.34.12?
2014-06-10 08:27 Footkerchief Relationship added has duplicate 0006503
2014-06-10 08:27 Footkerchief Issue Monitored: Urist McMontesOca
2014-06-10 08:27 Footkerchief Note Added: 0024806
2014-06-14 01:52 UristDaVinci Note Added: 0024811
2014-06-15 01:00 Footkerchief Tag Attached: binary patch
2014-07-07 22:23 Footkerchief Tag Renamed Fixed in 0.34.12? => Fixed in 0.40.01?
2014-07-11 09:31 Footkerchief Relationship added related to 0002889
2014-07-11 09:35 Trif Note Added: 0025774
2014-07-18 12:30 Toady One Note Added: 0026892
2014-07-18 12:30 Toady One Status new => resolved
2014-07-18 12:30 Toady One Fixed in Version => Next Version
2014-07-18 12:30 Toady One Resolution open => fixed
2014-07-18 12:30 Toady One Assigned To => Toady One
2014-07-18 12:50 Dwarfu Tag Detached: Fixed in 0.40.01?

Copyright © 2000 - 2010 MantisBT Group
Powered by Mantis Bugtracker