]> granicus.if.org Git - nethack/commitdiff
look_at tweak
authorPatR <rankin@nethack.org>
Wed, 25 Nov 2015 20:16:00 +0000 (12:16 -0800)
committerPatR <rankin@nethack.org>
Wed, 25 Nov 2015 20:16:00 +0000 (12:16 -0800)
When examining a trap with '/' or ';', show
 |a trap (arrow trap)
instead of
 |a trap or a vibrating square (arrow trap)
outside of Gehennom (unless the trap actually is a vibrating square,
which could happen via wizard mode wish).  The extra verbosity is
distracting, and limiting mention of the vibrating square to the region
where it's relevant may give a hint to players getting that far for the
first time.

src/pager.c

index a9245458eb5374a170e540ab1beaa1f5274902e8..0a4fc87a78bab3829c3829625f1027ef4cbb2e8f 100644 (file)
@@ -1,4 +1,4 @@
-/* NetHack 3.6 pager.c $NHDT-Date: 1448241783 2015/11/23 01:23:03 $  $NHDT-Branch: master $:$NHDT-Revision: 1.85 $ */
+/* NetHack 3.6 pager.c $NHDT-Date: 1448482543 2015/11/25 20:15:43 $  $NHDT-Branch: master $:$NHDT-Revision: 1.86 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -563,14 +563,11 @@ const char **firstmatch;
         unsigned os;
 
         glyph = glyph_at(cc.x, cc.y);
-
-        /* Convert the glyph at the selected position to a symbol. */
+        /* Convert glyph at selected position to a symbol for use below. */
         (void) mapglyph(glyph, &sym, &oc, &os, cc.x, cc.y);
-    }
 
-    if (looked)
         Sprintf(prefix, "%s        ", encglyph(glyph));
-    else
+    else
         Sprintf(prefix, "%c        ", sym);
 
     /*
@@ -650,7 +647,7 @@ const char **firstmatch;
 #define is_cmap_drawbridge(i) ((i) >= S_vodbridge && (i) <= S_hcdbridge)
 
     /* Now check for graphics symbols */
-    alt_i = (sym == (looked ? showsyms[0] : defsyms[0].sym)) ? 0 : 2+1;
+    alt_i = (sym == (looked ? showsyms[0] : defsyms[0].sym)) ? 0 : (2 + 1);
     for (hit_trap = FALSE, i = 0; i < MAXPCHARS; i++) {
         /* when sym is the default background character, we process
            i == 0 three times: unexplored, stone, dark part of a room */
@@ -685,10 +682,15 @@ const char **firstmatch;
                 *firstmatch = x_str;
                 found++;
             } else if (!u.uswallow && !(hit_trap && is_cmap_trap(i))
-                       && !(found >= 3 && is_cmap_drawbridge(i))) {
-                found += append_str(out_str,
-                                    article == 2 ? the(x_str)
-                                    : article == 1 ? an(x_str) : x_str);
+                       && !(found >= 3 && is_cmap_drawbridge(i))
+                       /* don't mention vibrating square outside of Gehennom
+                          unless this happens to be one (hallucination?) */
+                       && (i != S_vibrating_square || Inhell
+                           || (looked && glyph_is_trap(glyph)
+                               && glyph_to_trap(glyph) == VIBRATING_SQUARE))) {
+                found += append_str(out_str, (article == 2) ? the(x_str)
+                                             : (article == 1) ? an(x_str)
+                                               : x_str);
                 if (is_cmap_trap(i))
                     hit_trap = TRUE;
             }