From: Pasi Kallinen Date: Sat, 7 Mar 2020 15:05:39 +0000 (+0200) Subject: Fix flipping non-existent stairs X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8b6ae1642da8b5bf7e8c56e04f6103d3aa8524c2;p=nethack Fix flipping non-existent stairs If the stair or ladder x coord is 0, it doesn't exist. Flipping it, caused "u_on_newpos: trying to place hero off map <80,0>" when coming back up from the valley into the castle, and the castle was flipped. Fixes #331 --- diff --git a/src/sp_lev.c b/src/sp_lev.c index 2c282caf7..b4dedd146 100755 --- a/src/sp_lev.c +++ b/src/sp_lev.c @@ -461,18 +461,28 @@ boolean extras; /* stairs and ladders */ if (flp & 1) { - yupstair = FlipY(yupstair); - ydnstair = FlipY(ydnstair); - yupladder = FlipY(yupladder); - ydnladder = FlipY(ydnladder); - g.sstairs.sy = FlipY(g.sstairs.sy); + if (xupstair) + yupstair = FlipY(yupstair); + if (xdnstair) + ydnstair = FlipY(ydnstair); + if (xupladder) + yupladder = FlipY(yupladder); + if (xdnladder) + ydnladder = FlipY(ydnladder); + if (g.sstairs.sx) + g.sstairs.sy = FlipY(g.sstairs.sy); } if (flp & 2) { - xupstair = FlipX(xupstair); - xdnstair = FlipX(xdnstair); - xupladder = FlipX(xupladder); - xdnladder = FlipX(xdnladder); - g.sstairs.sx = FlipX(g.sstairs.sx); + if (xupstair) + xupstair = FlipX(xupstair); + if (xdnstair) + xdnstair = FlipX(xdnstair); + if (xupladder) + xupladder = FlipX(xupladder); + if (xdnladder) + xdnladder = FlipX(xdnladder); + if (g.sstairs.sx) + g.sstairs.sx = FlipX(g.sstairs.sx); } /* traps */