]> granicus.if.org Git - nethack/commitdiff
more door/chest trap detection
authorPatR <rankin@nethack.org>
Tue, 31 May 2016 13:37:14 +0000 (06:37 -0700)
committerPatR <rankin@nethack.org>
Tue, 31 May 2016 13:37:14 +0000 (06:37 -0700)
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.

src/pager.c

index 0dfbbf5a2ab6e6239887d314b46168e5aae66777..8ffe31409f1d51b320750a5a950a5d4821b6621f 100644 (file)
@@ -1227,12 +1227,24 @@ int
 doidtrap()
 {
     register struct trap *trap;
-    int x, y, tt;
+    int x, y, tt, glyph;
 
     if (!getdir("^"))
         return 0;
     x = u.ux + u.dx;
     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)
         if (trap->tx == x && trap->ty == y) {
             if (!trap->tseen)