diff --git a/doc/fixes36.2 b/doc/fixes36.2 index d4fbba9f2..ff9b89d18 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -62,6 +62,9 @@ special level loader didn't support populating several types of special rooms (ant hole, cockatrice nest, leprechaun hall) eating rings while polymorphed didn't handle bonus/penalty for increase damage, increase accuracy, or protection correctly +shopkeeper's position in front of shop door didn't correctly handle bottom + edge of irregularly shaped shop due to typo or copy+paste error + (latent bug; no such shops are present in 3.6.x) Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository diff --git a/src/shknam.c b/src/shknam.c index 43ab8651e..a36b67ec4 100644 --- a/src/shknam.c +++ b/src/shknam.c @@ -602,6 +602,7 @@ struct mkroom *sroom; /* check that the shopkeeper placement is sane */ if (sroom->irregular) { int rmno = (int) ((sroom - rooms) + ROOMOFFSET); + if (isok(sx - 1, sy) && !levl[sx - 1][sy].edge && (int) levl[sx - 1][sy].roomno == rmno) sx--; @@ -613,18 +614,18 @@ struct mkroom *sroom; sy--; else if (isok(sx, sy + 1) && !levl[sx][sy + 1].edge && (int) levl[sx][sy + 1].roomno == rmno) - sx++; + sy++; else goto shk_failed; - } else if (sx == sroom->lx - 1) + } else if (sx == sroom->lx - 1) { sx++; - else if (sx == sroom->hx + 1) + } else if (sx == sroom->hx + 1) { sx--; - else if (sy == sroom->ly - 1) + } else if (sy == sroom->ly - 1) { sy++; - else if (sy == sroom->hy + 1) + } else if (sy == sroom->hy + 1) { sy--; - else { + } else { shk_failed: #ifdef DEBUG /* Said to happen sometimes, but I have never seen it. */