]> granicus.if.org Git - nethack/commitdiff
Fix invisible gold symbol in status lines
authorPasi Kallinen <paxed@alt.org>
Sat, 16 Sep 2017 20:49:28 +0000 (23:49 +0300)
committerPasi Kallinen <paxed@alt.org>
Sat, 16 Sep 2017 20:49:28 +0000 (23:49 +0300)
doc/fixes36.1
include/extern.h
include/flag.h
src/botl.c
src/do.c
src/options.c

index e060fc053ecdd5d029a677a7f0a32ebc4ab16320..7379669abbd0542ffdbcab266471e5595d1c14dd 100644 (file)
@@ -438,6 +438,7 @@ if was possible to leash an adjacent pet while engulfed
 if leash or unleash attempt was directed at "remembered, unseen monster" glyph
        and yielded "there's no creature there", the glyph wasn't removed
 wizmode level teleport menu indicates on what level you currently are
+fix invisible gold symbol in status line when S_coin was set to space
 
 
 Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository
index 11ac0e4c18e42e8b98494408b41a24648e1bad64..f5e6ec9de952c66238e79cf656c50b3addb67c2d 100644 (file)
@@ -142,6 +142,7 @@ E int NDECL(getbones);
 /* ### botl.c ### */
 
 E char *NDECL(do_statusline1);
+E void NDECL(check_gold_symbol);
 E char *NDECL(do_statusline2);
 E int FDECL(xlev_to_rank, (int));
 E int FDECL(title_to_mon, (const char *, int *, int *));
index 4cd9e1641d660077de61c1e20b8cb476dafa4c28..1a3ef3577946288d99bdd693b122898ab78ec9e9 100644 (file)
@@ -191,6 +191,7 @@ struct instance_flags {
      * behaviour of various NetHack functions and probably warrant
      * a structure of their own elsewhere some day.
      */
+    boolean invis_goldsym; /* gold symbol is ' '? */
     int parse_config_file_src;  /* hack for parse_config_line() */
     int in_lava_effects;   /* hack for Boots_off() */
     int last_msg;          /* indicator of last message player saw */
index e28e8cc8bd035411c989a8ef63bb54f1cb3dbfc7..d1d0a53e8d730daefe753f9a9c7ff5af0b8857ef 100644 (file)
@@ -83,6 +83,16 @@ do_statusline1()
     return newbot1;
 }
 
+void
+check_gold_symbol()
+{
+    int goldch, goldoc;
+    unsigned int goldos;
+    int goldglyph = objnum_to_glyph(GOLD_PIECE);
+    (void) mapglyph(goldglyph, &goldch, &goldoc, &goldos, 0, 0);
+    iflags.invis_goldsym = ((char)goldch <= ' ');
+}
+
 char *
 do_statusline2()
 {
@@ -110,7 +120,8 @@ do_statusline2()
     if ((money = money_cnt(invent)) < 0L)
         money = 0L; /* ought to issue impossible() and then discard gold */
     Sprintf(eos(dloc), "%s:%-2ld", /* strongest hero can lift ~300000 gold */
-            iflags.in_dumplog ? "$" : encglyph(objnum_to_glyph(GOLD_PIECE)),
+            (iflags.in_dumplog || iflags.invis_goldsym) ? "$"
+            : encglyph(objnum_to_glyph(GOLD_PIECE)),
             min(money, 999999L));
     dln = strlen(dloc);
     /* '$' encoded as \GXXXXNNNN is 9 chars longer than display will need */
index 9fdece91f7d19275b1c0d0c97a0705817928accc..fe27e7973bca0035eda62d4aebe75355ccf7a780 100644 (file)
--- a/src/do.c
+++ b/src/do.c
@@ -1254,6 +1254,7 @@ boolean at_stairs, falling, portal;
 #ifdef USE_TILES
     substitute_tiles(newlevel);
 #endif
+    check_gold_symbol();
     /* record this level transition as a potential seen branch unless using
      * some non-standard means of transportation (level teleport).
      */
index 2c83c4af357e8a58bc81d2e8a9029b8a995d74b3..827e885ca608fbc6e085694eacb7a59ec41f52bf 100644 (file)
@@ -3651,6 +3651,7 @@ boolean tinitial, tfrom_file;
     /* Is it a symbol? */
     if (strstr(opts, "S_") == opts && parsesymbols(opts)) {
         switch_symbols(TRUE);
+        check_gold_symbol();
         return retval;
     }
 
@@ -4152,6 +4153,7 @@ doset() /* changing options via menu by Per Liboriussen */
 
     destroy_nhwindow(tmpwin);
     if (need_redraw) {
+        check_gold_symbol();
         reglyph_darkroom();
         (void) doredraw();
     }