impossible "ceiling hider hiding without ceiling"
Reported by a hardfought user, a ceiling_hider monster hid on the Astral level, triggering a sanity check warning that gets repeated each move until the hider comes out of hiding. Normally sanity_check can only be set in wizard mode, but hardfought must force it on for to-be-3.7. I was able to reproduce it before this fix and unable to do so afterward, but there is a random factor involved hence no guarantees. I think that lack of ceiling for Astral is recent, but this could have happened on other levels which lack a ceiling. I didn't try to figure out whether it might happen with 3.6.x, just put the fixes entry in the "exposed by git" (found in code not yet released, that is) section.
This commit is contained in:
@@ -1684,6 +1684,8 @@ paranoid_confirm:Autoall for menustyle:full has the test handling backward and
|
||||
applying a wielded lump of royal jelly but not picking something to rub it on
|
||||
while other lumps of jelly were quivered would trigger a panic,
|
||||
"addinv: null obj after quiver merge" (like applying lit potion of oil)
|
||||
ceiling hider could become hidden when there was no ceiling, triggering a
|
||||
warning if sanity_check was On
|
||||
|
||||
|
||||
Fixes to 3.7.0-x Platform and/or Interface Problems Exposed Via git Repository
|
||||
|
||||
@@ -4214,6 +4214,9 @@ restrap(struct monst *mtmp)
|
||||
/* can't hide while trapped except in pits */
|
||||
|| (mtmp->mtrapped && (t = t_at(mtmp->mx, mtmp->my)) != 0
|
||||
&& !is_pit(t->ttyp))
|
||||
/* can't hide on ceiling if there isn't one */
|
||||
|| (ceiling_hider(mtmp->data) && !has_ceiling(&u.uz))
|
||||
/* won't hide when adjacent to hero */
|
||||
|| (sensemon(mtmp) && next2u(mtmp->mx, mtmp->my)))
|
||||
return FALSE;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user