]> granicus.if.org Git - nethack/commitdiff
baalz hack fixup fix...
authorPatR <rankin@nethack.org>
Mon, 25 Apr 2016 07:58:44 +0000 (00:58 -0700)
committerPatR <rankin@nethack.org>
Mon, 25 Apr 2016 07:58:44 +0000 (00:58 -0700)
I saw a lich in solid wall at one of the spots which gehennom.des
marks with a pool (so that baalz_fixup() can find the two spots that
need post-wallification fixup).  I could understand the special level
loader placing a swimming or flying monster there, but don't know
whether it might do that for a lich (which doesn't need to breathe)
so am not sure whether this actually fixes what I observed.

The lich was there for far too long to have been a shapechanger, but
when I went back to the save file it was no longer there, producing
another puzzle.

doc/fixes36.1
src/mkmaze.c

index 9cac7662799cae83acb6a3b78c3e51bb32358261..492c522c82c27dd90d278baae9ce34a7d0b402ed 100644 (file)
@@ -228,6 +228,7 @@ post-3.6.0: more sortloot revisions
 post-3.6.0: fix inventory menu for response of '?' to getobj (more sortloot
        revamp fallout)
 post-3.6.0: rings covered by non-cursed gloves not listed as 'R' candidates
+post-3.6.0: in baalz_fixup, move any monster away from the two fake pool spots
 
 
 Platform- and/or Interface-Specific Fixes
index 3f89f2adbf8705e8840e576b5699137a84673fb9..03d4b07679eaedd4a194243fc53b16ca60ce335a 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 mkmaze.c        $NHDT-Date: 1449269918 2015/12/04 22:58:38 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.42 $ */
+/* NetHack 3.6 mkmaze.c        $NHDT-Date: 1461571093 2016/04/25 07:58:13 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.47 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -372,6 +372,7 @@ d_level *lev;
 STATIC_OVL void
 baalz_fixup()
 {
+    struct monst *mtmp;
     int x, y, lastx, lasty;
 
     /*
@@ -381,8 +382,8 @@ baalz_fixup()
      * 'lastx - 1' and 'lasty - 1' for ending don't-clean column and row)
      * and the interior is protected against that (in wall_cleanup()).
      *
-     * Assumes level.flags.corrmaze, otherwise the bug legs will have
-     * already been "cleaned" away by general wallification.
+     * Assumes level.flags.corrmaze is True, otherwise the bug legs will
+     * have already been "cleaned" away by general wallification.
      */
 
     /* find low and high x for to-be-wallified portion of level */
@@ -432,12 +433,16 @@ baalz_fixup()
         && isok(x, y + 1) && levl[x][y + 1].typ == TUWALL) {
         levl[x][y].typ = BRCORNER;
         levl[x][y + 1].typ = HWALL;
+        if ((mtmp = m_at(x, y)) != 0) /* something at temporary pool... */
+            (void) rloc(mtmp, FALSE);
     }
     x = bughack.delarea.x2, y = bughack.delarea.y2;
     if (isok(x, y) && levl[x][y].typ == TLWALL
         && isok(x, y - 1) && levl[x][y - 1].typ == TDWALL) {
         levl[x][y].typ = TRCORNER;
         levl[x][y - 1].typ = HWALL;
+        if ((mtmp = m_at(x, y)) != 0) /* something at temporary pool... */
+            (void) rloc(mtmp, FALSE);
     }
 
     /* reset bughack region; set low end to <COLNO,ROWNO> so that