fix github issue #606 - shop wall repair

triggering an impossible warning about "wall_angle: unknown" due
to the known conflict between door state and wall info which both
overlay the flags field for map locations.

Reported and diagnosed by vultur-cadens:  if a shop's wall was dug
open, followed by use of locking magic to plug the gap with a door,
and then unlocking that door, the D_CLOSED door flag was left as
invalid wall_info when shop damage was repaired.  Map re-display
complained.  Leaving the door locked or opening it after unlocking
did not result in any complaint because the values for those door
states do not conflict with wall angle values.

The problem was reproducible and is now fixed by adding an extra
field to the shop damage structure.  A similar change has been
made to the vault guard's 'fake corridor' structure but I have no
test case for that so don't know whether it makes any difference.
At least it doesn't seem to have broken anything.

Existing save and bones files are invalidated by the fixes.

Fixes #606
This commit is contained in:
PatR
2021-10-15 15:43:23 -07:00
parent 53bb04d9ad
commit d9bbad8e6e
7 changed files with 107 additions and 46 deletions

View File

@@ -642,6 +642,10 @@ blessed scroll of remove curse read while confused blesses or curses any
can now use m<dir> to try to move to an adjacent boulder's spot without
pushing it; hero poly'd into a giant or a tiny creature or carrying so
little as to be able to squeeze there will succeed, others will fail
breaching a shop wall, using locking magic to put a door there, then unlocking
that door yielded a situation where subsequent shop damage repair
produced invalid map data which resulted in an impossible() warning
about "wall_angle: unknown" during map display
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository