Viewing Issue Simple Details Jump to Notes ] Wiki ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0008446 [DCSS] Bug Report minor always 2014-04-26 08:30 2014-05-06 15:09
Reporter PleasingFungus View Status public  
Assigned To MarvinPA
Priority normal Resolution done  
Status resolved   Product Branch 0.15 ancient branch
Summary 0008446: De-hogged enemies can walk around while unable to move
Description If one of kirke's hogs is in a web, paralyzed, petrified/petrifying when Kirke is killed, they keep the enchantment but aren't affected by it; they wander around happy as can be, even though they're described/shown as being entangled/paralyzed/petrified (respectively.)

If they're netted, they will happily wander out of the net, after which they're described as 'entangled in a web'.

The effect seems to last indefinitely, until you save and quit, or leave/re-enter the level; then the effect vanishes after a few turns. (Presumably some short default duration is set...)

The relevant function is dactions.cc:_daction_hog_to_human() (which explicitly preserves all enchantments), but I'm not familiar enough with the relevant code to know what needs to be changed.
Additional Information
Tags No tags attached.
Attached Files ? file icon 8446_dehogged_enchantment_fix [^] (1,392 bytes) 2014-04-30 08:57

- Relationships

-  Notes
(0025980)
qoala (reporter)
2014-04-30 08:27

Looking through the monster enchantment code, it looks like it might be the fact that the enchantment list is copied over, but not the cache of which enchantments the monster had.

I'll test this and submit a patch when I'm done.
(0025983)
qoala (reporter)
2014-04-30 09:07

Patch uploaded.

Since the enchantment cache wasn't copied over, none of the enchantments were being checked during the monster::apply_enchantments() loop for duration updates or available to monster::has_ench(...). (Among other things, the cache allows the update loop to only check pre-existing enchantments when previous steps of the loop can add additional enchantments) On game reload, the cache is generated from the current enchantment list, so that restores behavior.

I checked around the code base, and it appears that everywhere else the enchantments are being copied, the cache is copied as well.
(0026040)
wheals (administrator)
2014-05-04 09:03

Seems fine, committed.
(0026069)
MarvinPA (developer)
2014-05-06 15:09

Resolving since this was committed.

- Issue History
Date Modified Username Field Change
2014-04-26 08:30 PleasingFungus New Issue
2014-04-30 08:27 qoala Note Added: 0025980
2014-04-30 08:57 qoala File Added: 8446_dehogged_enchantment_fix
2014-04-30 09:07 qoala Note Added: 0025983
2014-05-04 09:03 wheals Note Added: 0026040
2014-05-06 15:09 MarvinPA Note Added: 0026069
2014-05-06 15:09 MarvinPA Status new => resolved
2014-05-06 15:09 MarvinPA Fixed in Branch => 0.15 development branch
2014-05-06 15:09 MarvinPA Resolution open => done
2014-05-06 15:09 MarvinPA Assigned To => MarvinPA


Mantis 1.1.8[^]
Copyright © 2000 - 2009 Mantis Group
Powered by Mantis Bugtracker