more door/chest trap detection
Make the '^' command catch up with far-look as far as identifying trapped doors and trapped chests revealed by confused gold detect. You need to be blinded when approaching the '^', otherwise as soon as you can see a door or chest or whatever else is there the fake bear trap will be removed from the map.
This commit is contained in:
14
src/pager.c
14
src/pager.c
@@ -1227,12 +1227,24 @@ int
|
|||||||
doidtrap()
|
doidtrap()
|
||||||
{
|
{
|
||||||
register struct trap *trap;
|
register struct trap *trap;
|
||||||
int x, y, tt;
|
int x, y, tt, glyph;
|
||||||
|
|
||||||
if (!getdir("^"))
|
if (!getdir("^"))
|
||||||
return 0;
|
return 0;
|
||||||
x = u.ux + u.dx;
|
x = u.ux + u.dx;
|
||||||
y = u.uy + u.dy;
|
y = u.uy + u.dy;
|
||||||
|
|
||||||
|
/* check fake bear trap from confused gold detection */
|
||||||
|
glyph = glyph_at(x, y);
|
||||||
|
if (glyph_is_trap(glyph) && (tt = glyph_to_trap(glyph)) == BEAR_TRAP) {
|
||||||
|
boolean chesttrap = trapped_chest_at(tt, x, y);
|
||||||
|
|
||||||
|
if (chesttrap || trapped_door_at(tt, x, y)) {
|
||||||
|
pline("That is a trapped %s.", chesttrap ? "chest" : "door");
|
||||||
|
return 0; /* trap ID'd, but no time elapses */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (trap = ftrap; trap; trap = trap->ntrap)
|
for (trap = ftrap; trap; trap = trap->ntrap)
|
||||||
if (trap->tx == x && trap->ty == y) {
|
if (trap->tx == x && trap->ty == y) {
|
||||||
if (!trap->tseen)
|
if (!trap->tseen)
|
||||||
|
|||||||
Reference in New Issue
Block a user