github pull request #113 - shopkeeper placement

Fixes #113

Incorporate the contents of pull request #113 to fix shopkeeper setup
for irregularly shaped shop rooms.  Code intending to adjust the Y
coordinate was erroneously incrementing the X one instead.  (I'm not
sure whether we have any irregular shops at all but if so, they don't
have the necessary orientation to trigger this bug.)

And add a couple of formatting tweaks in the vicinity....
This commit is contained in:
PatR
2018-07-04 19:26:59 -07:00
parent faa85e23b4
commit 2596052c39
2 changed files with 10 additions and 6 deletions

View File

@@ -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

View File

@@ -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. */