Fix mention_walls distinguishing unseen walls from solid stone

Bumping into an unseen wall reported "a wall" instead of "solid stone",
even though you could not know it was a wall when looking at it.

Use the same method when looking at glyphs on the map instead of
the map location type.

Fixes #318
This commit is contained in:
Pasi Kallinen
2022-02-04 14:02:15 +02:00
parent 5204eef9c0
commit 8f7f598050
2 changed files with 15 additions and 5 deletions

View File

@@ -765,6 +765,7 @@ falling down a hole or trapdoor will cause damage proportional to fall height
stinking gas clouds block line-of-sight
covetous monsters will teleport to downstairs or upstairs to heal
have fake player monsters use verbalize instead of pline when reacting to chat
fix mention_walls distinguishing unseen walls from solid stone
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository

View File

@@ -876,11 +876,20 @@ test_move(int ux, int uy, int dx, int dy, int mode)
else if (Passes_walls && !may_passwall(x, y)
&& In_sokoban(&u.uz))
pline_The("Sokoban walls resist your ability.");
else if (flags.mention_walls)
pline("It's %s.",
(IS_WALL(tmpr->typ) || tmpr->typ == SDOOR) ? "a wall"
: IS_TREE(tmpr->typ) ? "a tree"
: "solid stone");
else if (flags.mention_walls) {
char buf[BUFSZ];
coord cc;
int sym = 0;
const char *firstmatch = 0;
cc.x = x, cc.y = y;
do_screen_description(cc, TRUE, sym, buf, &firstmatch, NULL);
if (!strcmp(firstmatch, "stone"))
Sprintf(buf, "solid stone");
else
Sprintf(buf, "%s", an(firstmatch));
pline("It's %s.", buf);
}
}
return FALSE;
}