]> granicus.if.org Git - nethack/commitdiff
add a master off/on switch for sounds
authornhmall <nhmall@nethack.org>
Mon, 30 Jan 2023 17:07:03 +0000 (12:07 -0500)
committernhmall <nhmall@nethack.org>
Mon, 30 Jan 2023 17:07:03 +0000 (12:07 -0500)
sounds can be set in the config file or on the fly with the Options menu.

This also adds a mechanism for specifying a terminology preference
for a boolean option in the options menu.

The choices are: Term_False, Term_Off, Term_Disabled

Term_False, the default, will use the terms "false" and "true" in the
Options menu.
Term_Off will use the terms "off" and "on" in the Options menu.
Term_Disabled will use the terms "disabled" and "enabled" in the Options
menu.

I didn't review any of the existing options to see if one of the new
alternative terms might be a better fit. They were all left at the default.

doc/Guidebook.mn
doc/Guidebook.tex
include/flag.h
include/optlist.h
include/sndprocs.h
src/options.c

index 37517cb5bb925fafb08e36cadd6f2804dad020b7..a3bbea0bdc809be818bb8329182ebc54fdc0c5bb 100644 (file)
@@ -37,7 +37,7 @@
 .ds f0 "\*(vr
 .ds f1
 .\"DO NOT REMOVE NH_DATESUB .ds f2 "DATE(%B %-d, %Y)
-.ds f2 "December 28, 2022
+.ds f2 "January 30, 2023
 .
 .\" A note on some special characters:
 .\" \(lq = left double quote
@@ -4483,6 +4483,8 @@ order by count, low to high; ties broken by internal index.
 .PE
 Can be interactively set via the \(oq\f(CRm O\fP\(cq command or via using
 the \(oq\f(CRm\fP\(cq prefix before the #vanquished command.
+.lp "sounds "
+Allow sounds to be emitted from an integrated sound library (default on).
 .lp "sparkle "
 Display a sparkly effect when a monster (including yourself) is hit by an
 attack to which it is resistant (default on).
index b39f1ca9e9fbd80634b3c9e25308b51d695e74fe..c13e93ea40870b4d12462922421d14ceb0acb915 100644 (file)
@@ -46,7 +46,7 @@
 \author{Original version - Eric S. Raymond\\
 (Edited and expanded for 3.7 by Mike Stephenson and others)}
 %DO NOT REMOVE NH_DATESUB \date{DATE(%B %-d, %Y)}
-\date{December 28, 2022}
+\date{January 30, 2023}
 
 \maketitle
 
@@ -4903,6 +4903,9 @@ order by count, low to high; ties broken by internal index.
 Can be interactively set via the `{\tt m O}' command or via using
 the `{\tt m}' prefix before the \#vanquished command.
 %.lp
+\item[\ib{sounds}]
+Allow sounds to be emitted from an integrated sound library (default on).
+%.lp
 \item[\ib{sparkle}]
 Display a sparkly effect when a monster (including yourself) is hit by an
 attack to which it is resistant (default on).  Persistent.
index cba15ec076492e4ddb9d07fec7227d0276fdddd4..7edec9119d1000ddae9158eb5a3e75216cde344d 100644 (file)
@@ -265,6 +265,7 @@ struct instance_flags {
     boolean perm_invent;      /* keep full inventories up until dismissed */
     boolean renameallowed;    /* can change hero name during role selection */
     boolean renameinprogress; /* we are changing hero name */
+    boolean sounds;           /* master on/off switch for using soundlib */
     boolean status_updates;   /* allow updates to bottom status lines;
                                * disable to avoid excessive noise when using
                                * a screen reader (use ^X to review status) */
index 11cf4a11af05e83f78157b56f0052d2627ff0fcd..b71417d8c47e820563ea2956a0ea031ec92b015c 100644 (file)
@@ -20,6 +20,9 @@ enum Off_On { Off, On };
 enum OptSection {
     OptS_General, OptS_Behavior, OptS_Map, OptS_Status, OptS_Advanced
 };
+enum menu_terminology_preference {
+    Term_False, Term_Off, Term_Disabled, num_terms
+};
 
 struct allopt_t {
     const char *name;
@@ -33,6 +36,7 @@ struct allopt_t {
     enum Y_N valok;
     enum Y_N dupeok;
     enum Y_N pfx;
+    enum menu_terminology_preference termpref;
     boolean opt_in_out, *addr;
     int (*optfn)(int, int, boolean, char *, char *);
     const char *alias;
@@ -50,7 +54,7 @@ struct allopt_t {
 #define NoAlias ((const char *) 0)
 
 #if defined(NHOPT_PROTO)
-#define NHOPTB(a, sec, b, c, s, i, n, v, d, al, bp) /*empty*/
+#define NHOPTB(a, sec, b, c, s, i, n, v, d, al, bp, termp) /*empty*/
 #define NHOPTC(a, sec, b, c, s, n, v, d, h, al, z)               \
 static int optfn_##a(int, int, boolean, char *, char *);
 #define NHOPTP(a, sec, b, c, s, n, v, d, h, al, z)               \
@@ -59,23 +63,23 @@ static int pfxfn_##a(int, int, boolean, char *, char *);
 static int optfn_##a(int, int, boolean, char *, char *);
 
 #elif defined(NHOPT_ENUM)
-#define NHOPTB(a, sec, b, c, s, i, n, v, d, al, bp) opt_##a,
-#define NHOPTC(a, sec, b, c, s, n, v, d, h, al, z)  opt_##a,
-#define NHOPTP(a, sec, b, c, s, n, v, d, h, al, z)  pfx_##a,
-#define NHOPTO(m, sec, a, b, c, s, n, v, d, al, z)  opt_##a,
+#define NHOPTB(a, sec, b, c, s, i, n, v, d, al, bp, termp) opt_##a,
+#define NHOPTC(a, sec, b, c, s, n, v, d, h, al, z)   opt_##a,
+#define NHOPTP(a, sec, b, c, s, n, v, d, h, al, z)   pfx_##a,
+#define NHOPTO(m, sec, a, b, c, s, n, v, d, al, z)   opt_##a,
 
 #elif defined(NHOPT_PARSE)
-#define NHOPTB(a, sec, b, c, s, i, n, v, d, al, bp) \
-    { #a, OptS_##sec, 0, b, opt_##a, s, BoolOpt, n, v, d, No, c,        \
+#define NHOPTB(a, sec, b, c, s, i, n, v, d, al, bp, termp) \
+    { #a, OptS_##sec, 0, b, opt_##a, s, BoolOpt, n, v, d, No, termp, c,  \
       bp, &optfn_boolean, al, (const char *) 0, (const char *) 0, i, 0, 0 },
 #define NHOPTC(a, sec, b, c, s, n, v, d, h, al, z) \
-    { #a, OptS_##sec, 0, b, opt_##a, s, CompOpt, n, v, d, No, c,        \
+    { #a, OptS_##sec, 0, b, opt_##a, s, CompOpt, n, v, d, No, 0, c,  \
       (boolean *) 0, &optfn_##a, al, z, (const char *) 0, Off, h, 0 },
 #define NHOPTP(a, sec, b, c, s, n, v, d, h, al, z) \
-    { #a, OptS_##sec, 0, b, pfx_##a, s, CompOpt, n, v, d, Yes, c,       \
+    { #a, OptS_##sec, 0, b, pfx_##a, s, CompOpt, n, v, d, Yes, 0, c, \
       (boolean *) 0, &pfxfn_##a, al, z, #a, Off, h, 0 },
 #define NHOPTO(m, sec, a, b, c, s, n, v, d, al, z) \
-    { m, OptS_##sec, 0, b, opt_##a, s, OthrOpt, n, v, d, No, c,         \
+    { m, OptS_##sec, 0, b, opt_##a, s, OthrOpt, n, v, d, No, 0, c,   \
       (boolean *) 0, &optfn_##a, al, z, (const char *) 0, On, On, 0 },
 
 /* this is not reliable because TILES_IN_GLYPHMAP might be defined
@@ -89,7 +93,7 @@ static int optfn_##a(int, int, boolean, char *, char *);
 #endif
 #endif
 
-/* B:nm, ln, opt_*, setwhere?, on?, negat?, val?, dup?, hndlr? Alias, bool_p */
+/* B:nm, ln, opt_*, setwhere?, on?, negat?, val?, dup?, hndlr? Alias, bool_p, term */
 /* C:nm, ln, opt_*, setwhere?, negateok?, valok?, dupok?, hndlr? Alias, desc */
 /* P:pfx, ln, opt_*, setwhere?, negateok?, valok?, dupok?, hndlr? Alias, desc*/
 
@@ -129,7 +133,7 @@ static int optfn_##a(int, int, boolean, char *, char *);
     /* end of special ordering; remainder of entries are in alphabetical order
      */
     NHOPTB(acoustics, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.acoustics)
+                On, Yes, No, No, NoAlias, &flags.acoustics, Term_False)
  /* NHOPTC(align) -- moved to top */
     NHOPTC(align_message, Advanced, 20, opt_in, set_gameview,
                 Yes, Yes, No, Yes, NoAlias, "message window alignment")
@@ -144,26 +148,27 @@ static int optfn_##a(int, int, boolean, char *, char *);
 #endif
 #ifdef ALTMETA
     NHOPTB(altmeta, Advanced, 0, opt_out, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.altmeta)
+                Off, Yes, No, No, NoAlias, &iflags.altmeta, Term_False)
 #else
     NHOPTB(altmeta, Advanced, 0, opt_out, set_in_config,
-                Off, Yes, No, No, NoAlias, (boolean *) 0)
+                Off, Yes, No, No, NoAlias, (boolean *) 0, Term_False)
 #endif
     NHOPTB(ascii_map, Advanced, 0, opt_in, set_in_game,
-                ascii_map_Def, Yes, No, No, NoAlias, &iflags.wc_ascii_map)
+                ascii_map_Def, Yes, No, No, NoAlias, &iflags.wc_ascii_map,
+                Term_False)
     NHOPTB(autodescribe, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &iflags.autodescribe)
+                On, Yes, No, No, NoAlias, &iflags.autodescribe, Term_False)
     NHOPTB(autodig, Behavior, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.autodig)
+                Off, Yes, No, No, NoAlias, &flags.autodig, Term_False)
     NHOPTB(autoopen, Behavior, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.autoopen)
+                On, Yes, No, No, NoAlias, &flags.autoopen, Term_False)
     NHOPTB(autopickup, Behavior, 0, opt_out, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.pickup)
+                Off, Yes, No, No, NoAlias, &flags.pickup, Term_False)
     NHOPTO("autopickup exceptions", Behavior, o_autopickup_exceptions, BUFSZ,
                 opt_in, set_in_game,
                 No, Yes, No, NoAlias, "edit autopickup exceptions")
     NHOPTB(autoquiver, Behavior, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.autoquiver)
+                Off, Yes, No, No, NoAlias, &flags.autoquiver, Term_False)
     NHOPTC(autounlock, Behavior, 80, opt_out, set_in_game,
                 Yes, Yes, No, Yes, NoAlias,
                 "action to take when encountering locked door or chest")
@@ -171,15 +176,15 @@ static int optfn_##a(int, int, boolean, char *, char *);
                 No, Yes, No, NoAlias, "edit key binds")
 #if defined(MICRO) && !defined(AMIGA)
     NHOPTB(BIOS, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, NoAlias, &iflags.BIOS)
+                Off, Yes, No, No, NoAlias, &iflags.BIOS, Term_False)
 #else
     NHOPTB(BIOS, Advanced, 0, opt_in, set_in_config,
-                Off, No, No, No, NoAlias, (boolean *) 0)
+                Off, No, No, No, NoAlias, (boolean *) 0, Term_False)
 #endif
     NHOPTB(blind, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, "permablind", &u.uroleplay.blind)
+                Off, Yes, No, No, "permablind", &u.uroleplay.blind, Term_False)
     NHOPTB(bones, Advanced, 0, opt_out, set_in_config,
-                On, Yes, No, No, NoAlias, &flags.bones)
+                On, Yes, No, No, NoAlias, &flags.bones, Term_False)
 #ifdef BACKWARD_COMPAT
     NHOPTC(boulder, Advanced, 1, opt_in, set_in_game,
                 No, Yes, No, No, NoAlias,
@@ -190,35 +195,36 @@ static int optfn_##a(int, int, boolean, char *, char *);
                 "name of your starting pet if it is a kitten")
 #ifdef INSURANCE
     NHOPTB(checkpoint, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.ins_chkpt)
+                On, Yes, No, No, NoAlias, &flags.ins_chkpt, Term_False)
 #else
     NHOPTB(checkpoint, Advanced, 0, opt_out, set_in_config,
-                Off, No, No, No, NoAlias, (boolean *) 0)
+                Off, No, No, No, NoAlias, (boolean *) 0, Term_False)
 #endif
     NHOPTB(cmdassist, Behavior, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &iflags.cmdassist)
+                On, Yes, No, No, NoAlias, &iflags.cmdassist, Term_False)
     NHOPTB(color, Map, 0, opt_in, set_in_game,
-                On, Yes, No, No, "colour", &iflags.wc_color)
+                On, Yes, No, No, "colour", &iflags.wc_color, Term_False)
     NHOPTB(confirm, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.confirm)
+                On, Yes, No, No, NoAlias, &flags.confirm, Term_False)
 #ifdef CURSES_GRAPHICS
     NHOPTC(cursesgraphics, Advanced, 70, opt_in, set_in_config,
                 No, Yes, No, No, NoAlias,
                 "load curses display symbols into symset")
 #endif
     NHOPTB(dark_room, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.dark_room)
+                On, Yes, No, No, NoAlias, &flags.dark_room, Term_False)
 #ifdef BACKWARD_COMPAT
     NHOPTC(DECgraphics, Advanced, 70, opt_in, set_in_config,
                 Yes, Yes, No, No, NoAlias,
                 "load DECGraphics display symbols into symset")
 #endif
     NHOPTB(debug_hunger, Advanced, 0, opt_in, set_wiznofuz,
-                Off, Yes, No, No, NoAlias, &iflags.debug_hunger)
+                Off, Yes, No, No, NoAlias, &iflags.debug_hunger, Term_False)
     NHOPTB(debug_mongen, Advanced, 0, opt_in, set_wiznofuz,
-                Off, Yes, No, No, NoAlias, &iflags.debug_mongen)
+                Off, Yes, No, No, NoAlias, &iflags.debug_mongen, Term_False)
     NHOPTB(debug_overwrite_stairs, Advanced, 0, opt_in, set_wiznofuz,
-                Off, Yes, No, No, NoAlias, &iflags.debug_overwrite_stairs)
+                Off, Yes, No, No, NoAlias, &iflags.debug_overwrite_stairs,
+                Term_False)
     NHOPTC(disclose, Advanced, sizeof flags.end_disclose * 2,
                 opt_in, set_in_game,
                 Yes, Yes, No, Yes, NoAlias,
@@ -233,15 +239,16 @@ static int optfn_##a(int, int, boolean, char *, char *);
                 No, Yes, No, No, NoAlias,
                 "list of symbols to use in drawing special effects")
     NHOPTB(eight_bit_tty, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.wc_eight_bit_input)
+                Off, Yes, No, No, NoAlias, &iflags.wc_eight_bit_input,
+                Term_False)
     NHOPTB(extmenu, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.extmenu)
+                Off, Yes, No, No, NoAlias, &iflags.extmenu, Term_False)
     NHOPTB(female, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, "male", &flags.female)
+                Off, Yes, No, No, "male", &flags.female, Term_False)
     NHOPTB(fireassist, Behavior, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &iflags.fireassist)
+                On, Yes, No, No, NoAlias, &iflags.fireassist, Term_False)
     NHOPTB(fixinv, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.invlet_constant)
+                On, Yes, No, No, NoAlias, &flags.invlet_constant, Term_False)
     NHOPTC(font_map, Advanced, 40, opt_in, set_gameview,
                 Yes, Yes, Yes, No, NoAlias, "font to use in the map window")
     NHOPTC(font_menu, Advanced, 40, opt_in, set_gameview,
@@ -264,32 +271,32 @@ static int optfn_##a(int, int, boolean, char *, char *);
     NHOPTC(font_text, Advanced, 40, opt_in, set_gameview,
                 Yes, Yes, Yes, No, NoAlias, "font to use in text windows")
     NHOPTB(force_invmenu, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.force_invmenu)
+                Off, Yes, No, No, NoAlias, &iflags.force_invmenu, Term_False)
     NHOPTC(fruit, General, PL_FSIZ, opt_in, set_in_game,
                 No, Yes, No, No, NoAlias, "name of a fruit you enjoy eating")
     NHOPTB(fullscreen, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, NoAlias, &iflags.wc2_fullscreen)
+                Off, Yes, No, No, NoAlias, &iflags.wc2_fullscreen, Term_False)
  /* NHOPTC(gender) -- moved to top */
     NHOPTC(glyph, Advanced, 40, opt_in, set_in_game,
                 No, Yes, Yes, No, NoAlias,
                 "set representation of a glyph to a unicode value and color")
     NHOPTB(goldX, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.goldX)
+                Off, Yes, No, No, NoAlias, &flags.goldX, Term_False)
     NHOPTB(guicolor, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &iflags.wc2_guicolor)
+                On, Yes, No, No, NoAlias, &iflags.wc2_guicolor, Term_False)
     NHOPTB(help, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.help)
+                On, Yes, No, No, NoAlias, &flags.help, Term_False)
     NHOPTB(herecmd_menu, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.herecmd_menu)
+                Off, Yes, No, No, NoAlias, &iflags.herecmd_menu, Term_False)
 #if defined(MAC)
     NHOPTC(hicolor, Advanced, 15, opt_in, set_in_config,
                 No, Yes, No, No, NoAlias,
                 "same as palette, only order is reversed")
 #endif
     NHOPTB(hilite_pet, Map, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.wc_hilite_pet)
+                Off, Yes, No, No, NoAlias, &iflags.wc_hilite_pet, Term_False)
     NHOPTB(hilite_pile, Map, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.hilite_pile)
+                Off, Yes, No, No, NoAlias, &iflags.hilite_pile, Term_False)
 #ifdef STATUS_HILITES
     NHOPTC(hilite_status, Advanced, 13, opt_out, set_in_game,
                 Yes, Yes, Yes, No, NoAlias,
@@ -299,7 +306,7 @@ static int optfn_##a(int, int, boolean, char *, char *);
                 Yes, Yes, Yes, No, NoAlias, "(not available)")
 #endif
     NHOPTB(hitpointbar, Status, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.wc2_hitpointbar)
+                Off, Yes, No, No, NoAlias, &iflags.wc2_hitpointbar, Term_False)
     NHOPTC(horsename, Advanced, PL_PSIZ, opt_in, set_gameview,
                 No, Yes, No, No, NoAlias,
                 "name of your starting pet if it is a pony")
@@ -310,36 +317,36 @@ static int optfn_##a(int, int, boolean, char *, char *);
 #endif
 #ifndef MAC
     NHOPTB(ignintr, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.ignintr)
+                Off, Yes, No, No, NoAlias, &flags.ignintr, Term_False)
 #else
     NHOPTB(ignintr, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, NoAlias, (boolean *) 0)
+                Off, Yes, No, No, NoAlias, (boolean *) 0, Term_False)
 #endif
     NHOPTB(implicit_uncursed, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.implicit_uncursed)
+                On, Yes, No, No, NoAlias, &flags.implicit_uncursed, Term_False)
 #if 0   /* obsolete - pre-OSX Mac */
     NHOPTB(large_font, Advanced, 0, opt_in, set_in_config,
                 Off, Yes, No, No, NoAlias, &iflags.obsolete)
 #endif
     NHOPTB(legacy, Advanced, 0, opt_out, set_in_config,
-                On, Yes, No, No, NoAlias, &flags.legacy)
+                On, Yes, No, No, NoAlias, &flags.legacy, Term_False)
     NHOPTB(lit_corridor, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.lit_corridor)
+                Off, Yes, No, No, NoAlias, &flags.lit_corridor, Term_False)
     NHOPTB(lootabc, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.lootabc)
+                Off, Yes, No, No, NoAlias, &flags.lootabc, Term_False)
 #if defined(BACKWARD_COMPAT) && defined(MAC_GRAPHICS_ENV)
     NHOPTC(Macgraphics, Advanced, 70, opt_in, set_in_config,
                 No, Yes, No, No, NoAlias,
                 "load MACGraphics display symbols into symset")
 #endif
     NHOPTB(mail, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.biff)
+                On, Yes, No, No, NoAlias, &flags.biff, Term_False)
     NHOPTC(map_mode, Advanced, 20, opt_in, set_gameview,
                 Yes, Yes, No, No, NoAlias, "map display mode under Windows")
     NHOPTB(mention_decor, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.mention_decor)
+                Off, Yes, No, No, NoAlias, &flags.mention_decor, Term_False)
     NHOPTB(mention_walls, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.mention_walls)
+                Off, Yes, No, No, NoAlias, &flags.mention_walls, Term_False)
     NHOPTC(menu_deselect_all, Advanced, 4, opt_in, set_in_config,
                 No, Yes, No, No, NoAlias, "deselect all items in a menu")
     NHOPTC(menu_deselect_page, Advanced, 4, opt_in, set_in_config,
@@ -359,13 +366,14 @@ static int optfn_##a(int, int, boolean, char *, char *);
     NHOPTC(menu_next_page, Advanced, 4, opt_in, set_in_config,
                 No, Yes, No, No, NoAlias, "go to the next menu page")
     NHOPTB(menu_objsyms, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.menu_head_objsym)
+                Off, Yes, No, No, NoAlias, &iflags.menu_head_objsym,
+                Term_False)
 #ifdef TTY_GRAPHICS
     NHOPTB(menu_overlay, Advanced, 0, opt_in, set_in_game,
-                On, Yes, No, No, NoAlias, &iflags.menu_overlay)
+                On, Yes, No, No, NoAlias, &iflags.menu_overlay, Term_False)
 #else
     NHOPTB(menu_overlay, Advanced, 0, opt_in, set_in_config,
-                Off, No, No, No, NoAlias, (boolean *) 0)
+                Off, No, No, No, NoAlias, (boolean *) 0, Term_False)
 #endif
     NHOPTC(menu_previous_page, Advanced, 4, opt_in, set_in_config,
                 No, Yes, No, No, NoAlias, "go to the previous menu page")
@@ -381,9 +389,9 @@ static int optfn_##a(int, int, boolean, char *, char *);
     NHOPTC(menu_shift_right, Advanced, 4, opt_in, set_in_config,
                 No, Yes, No, No, NoAlias, "pan current menu page right")
     NHOPTB(menu_tab_sep, Advanced, 0, opt_in, set_wizonly,
-                Off, Yes, No, No, NoAlias, &iflags.menu_tab_sep)
+                Off, Yes, No, No, NoAlias, &iflags.menu_tab_sep, Term_False)
     NHOPTB(menucolors, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, Yes, No, NoAlias, &iflags.use_menu_color)
+                Off, Yes, Yes, No, NoAlias, &iflags.use_menu_color, Term_False)
     NHOPTO("menu colors", Status, o_menu_colors, BUFSZ, opt_in, set_in_game,
                 No, Yes, No, NoAlias, "edit menu colors")
     NHOPTC(menuinvertmode, Advanced, 5, opt_in, set_in_game,
@@ -396,7 +404,7 @@ static int optfn_##a(int, int, boolean, char *, char *);
                 opt_in, set_in_game,
                 No, Yes, No, NoAlias, "edit message types")
     NHOPTB(monpolycontrol, Advanced, 0, opt_in, set_wizonly,
-                Off, Yes, No, No, NoAlias, &iflags.mon_polycontrol)
+                Off, Yes, No, No, NoAlias, &iflags.mon_polycontrol, Term_False)
     NHOPTC(monsters, Advanced, MAXMCLASSES, opt_in, set_in_config,
                 No, Yes, No, No, NoAlias,
                 "list of symbols to use for monsters")
@@ -417,15 +425,15 @@ static int optfn_##a(int, int, boolean, char *, char *);
  /* NHOPTC(name) -- moved to top */
 #ifdef NEWS
     NHOPTB(news, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, NoAlias, &iflags.news)
+                Off, Yes, No, No, NoAlias, &iflags.news, Term_False)
 #else
     NHOPTB(news, Advanced, 0, opt_in, set_in_config,
-                Off, No, No, No, NoAlias, (boolean *) 0)
+                Off, No, No, No, NoAlias, (boolean *) 0, Term_False)
 #endif
     NHOPTB(nudist, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, NoAlias, &u.uroleplay.nudist)
+                Off, Yes, No, No, NoAlias, &u.uroleplay.nudist, Term_False)
     NHOPTB(null, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.null)
+                On, Yes, No, No, NoAlias, &flags.null, Term_False)
     NHOPTC(number_pad, General, 1, opt_in, set_in_game,
                 No, Yes, No, Yes, NoAlias,
                 "use the number pad for movement")
@@ -451,7 +459,7 @@ static int optfn_##a(int, int, boolean, char *, char *);
                 Yes, Yes, Yes, Yes, "prayconfirm",
                 "extra prompting in certain situations")
     NHOPTB(perm_invent, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.perm_invent)
+                Off, Yes, No, No, NoAlias, &iflags.perm_invent, Term_False)
     NHOPTC(petattr, Advanced, 88, opt_in, set_in_game, /* curses only */
                 No, Yes, No, No, NoAlias, "attributes for highlighting pets")
     /* pettype is ignored for some roles */
@@ -461,7 +469,7 @@ static int optfn_##a(int, int, boolean, char *, char *);
                 No, Yes, No, Yes, NoAlias,
                 "maximum burden picked up before prompt")
     NHOPTB(pickup_thrown, Behavior, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.pickup_thrown)
+                On, Yes, No, No, NoAlias, &flags.pickup_thrown, Term_False)
     NHOPTC(pickup_types, Behavior, MAXOCLASSES, opt_in, set_in_game,
                 No, Yes, No, Yes, NoAlias,
                 "types of objects to pick up automatically")
@@ -473,23 +481,23 @@ static int optfn_##a(int, int, boolean, char *, char *);
                 "choose character via dialog or prompts")
  /* NHOPTC(playmode) -- moved to top */
     NHOPTB(popup_dialog, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.wc_popup_dialog)
+                Off, Yes, No, No, NoAlias, &iflags.wc_popup_dialog, Term_False)
     NHOPTB(preload_tiles, Advanced, 0, opt_out, set_in_config, /* MSDOS only */
-                On, Yes, No, No, NoAlias, &iflags.wc_preload_tiles)
+                On, Yes, No, No, NoAlias, &iflags.wc_preload_tiles, Term_False)
     NHOPTB(pushweapon, Behavior, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.pushweapon)
+                Off, Yes, No, No, NoAlias, &flags.pushweapon, Term_False)
     NHOPTB(quick_farsight, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.quick_farsight)
+                Off, Yes, No, No, NoAlias, &flags.quick_farsight, Term_False)
  /* NHOPTC(race) -- moved to top */
 #ifdef MICRO
     NHOPTB(rawio, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, NoAlias, &iflags.rawio)
+                Off, Yes, No, No, NoAlias, &iflags.rawio, Term_False)
 #else
     NHOPTB(rawio, Advanced, 0, opt_in, set_in_config,
-                Off, No, No, No, NoAlias, (boolean *) 0)
+                Off, No, No, No, NoAlias, (boolean *) 0, Term_False)
 #endif
     NHOPTB(rest_on_space, Advanced, 0, opt_in, set_in_game, Off,
-                Yes, No, No, NoAlias, &flags.rest_on_space)
+                Yes, No, No, NoAlias, &flags.rest_on_space, Term_False)
     NHOPTC(roguesymset, Advanced, 70, opt_in, set_in_game,
                 No, Yes, No, Yes, NoAlias,
                 "load a set of rogue display symbols from symbols file")
@@ -498,11 +506,11 @@ static int optfn_##a(int, int, boolean, char *, char *);
                 Yes, Yes, No, Yes, NoAlias,
                 "display frequency when `running' or `travelling'")
     NHOPTB(safe_pet, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.safe_dog)
+                On, Yes, No, No, NoAlias, &flags.safe_dog, Term_False)
     NHOPTB(safe_wait, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.safe_wait)
+                On, Yes, No, No, NoAlias, &flags.safe_wait, Term_False)
     NHOPTB(sanity_check, Advanced, 0, opt_in, set_wizonly,
-                Off, Yes, No, No, NoAlias, &iflags.sanity_check)
+                Off, Yes, No, No, NoAlias, &iflags.sanity_check, Term_False)
     NHOPTC(scores, Advanced, 32, opt_in, set_in_game,
                 No, Yes, No, No, NoAlias,
                 "the parts of the score list you wish to see")
@@ -513,22 +521,23 @@ static int optfn_##a(int, int, boolean, char *, char *);
                 Yes, Yes, No, No, NoAlias,
                 "scroll map when this far from the edge")
     NHOPTB(selectsaved, Advanced, 0, opt_out, set_in_config,
-                On, Yes, No, No, NoAlias, &iflags.wc2_selectsaved)
+                On, Yes, No, No, NoAlias, &iflags.wc2_selectsaved, Term_False)
     NHOPTB(showexp, Status, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.showexp)
+                Off, Yes, No, No, NoAlias, &flags.showexp, Term_False)
     NHOPTB(showrace, Map, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.showrace)
+                Off, Yes, No, No, NoAlias, &flags.showrace, Term_False)
 #ifdef SCORE_ON_BOTL
     NHOPTB(showscore, Status, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.showscore)
+                Off, Yes, No, No, NoAlias, &flags.showscore, Term_False)
 #else
     NHOPTB(showscore, Status, 0, opt_in, set_in_config,
-                Off, Yes, No, No, NoAlias, (boolean *) 0)
+                Off, Yes, No, No, NoAlias, (boolean *) 0, Term_False)
 #endif
     NHOPTB(silent, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.silent)
+                On, Yes, No, No, NoAlias, &flags.silent, Term_False)
     NHOPTB(softkeyboard, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, NoAlias, &iflags.wc2_softkeyboard)
+                Off, Yes, No, No, NoAlias, &iflags.wc2_softkeyboard,
+                Term_False)
     NHOPTC(sortdiscoveries, Advanced, 0, opt_in, set_in_game,
                 Yes, Yes, No, Yes, NoAlias,
                 "preferred order when displaying discovered objects")
@@ -536,21 +545,28 @@ static int optfn_##a(int, int, boolean, char *, char *);
                 No, Yes, No, Yes, NoAlias,
                 "sort object selection lists by description")
     NHOPTB(sortpack, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.sortpack)
+                On, Yes, No, No, NoAlias, &flags.sortpack, Term_False)
     NHOPTC(sortvanquished, Advanced, 0, opt_in, set_in_game,
                 Yes, Yes, No, Yes, NoAlias,
                 "preferred order when displaying vanquished monsters")
     NHOPTC(soundlib, Advanced, WINTYPELEN, opt_in, set_gameview,
                 No, Yes, No, No, NoAlias,
                 "soundlib interface to use (if any)")
+#ifdef SND_LIB_INTEGRATED
+    NHOPTB(sounds, Advanced, 0, opt_out, set_in_game,
+                On, Yes, No, No, NoAlias, &iflags.sounds, Term_Off)
+#else
+    NHOPTB(sounds, Advanced, 0, opt_in, set_in_game,
+                Off, Yes, No, No, NoAlias, &iflags.sounds, Term_Off)
+#endif
     NHOPTB(sparkle, Map, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.sparkle)
+                On, Yes, No, No, NoAlias, &flags.sparkle, Term_False)
     NHOPTB(splash_screen, Advanced, 0, opt_out, set_in_config,
-                On, Yes, No, No, NoAlias, &iflags.wc_splash_screen)
+                On, Yes, No, No, NoAlias, &iflags.wc_splash_screen, Term_False)
     NHOPTB(standout, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.standout)
+                Off, Yes, No, No, NoAlias, &flags.standout, Term_False)
     NHOPTB(status_updates, Advanced, 0, opt_out, set_in_config,
-                On, Yes, No, No, NoAlias, &iflags.status_updates)
+                On, Yes, No, No, NoAlias, &iflags.status_updates, Term_False)
     NHOPTO("status condition fields", Status, o_status_cond, BUFSZ,
                 opt_in, set_in_game,
                 No, Yes, No, NoAlias, "edit status condition fields")
@@ -588,43 +604,45 @@ static int optfn_##a(int, int, boolean, char *, char *);
     NHOPTC(tile_width, Advanced, 20, opt_in, set_gameview,
                 Yes, Yes, No, No, NoAlias, "width of tiles")
     NHOPTB(tiled_map, Advanced, 0, opt_in, set_in_game,
-                tiled_map_Def, Yes, No, No, NoAlias, &iflags.wc_tiled_map)
+                tiled_map_Def, Yes, No, No, NoAlias, &iflags.wc_tiled_map,
+                Term_False)
     NHOPTB(time, Status, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.time)
+                Off, Yes, No, No, NoAlias, &flags.time, Term_False)
 #ifdef TIMED_DELAY
     NHOPTB(timed_delay, Map, 0, opt_out, set_in_game,
-                Off, Yes, No, No, NoAlias, &flags.nap)
+                Off, Yes, No, No, NoAlias, &flags.nap, Term_False)
 #else
     NHOPTB(timed_delay, Map, 0, opt_in, set_in_config,
-                Off, No, No, No, NoAlias, (boolean *) 0)
+                Off, No, No, No, NoAlias, (boolean *) 0, Term_False)
 #endif
     NHOPTB(tombstone, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.tombstone)
+                On, Yes, No, No, NoAlias, &flags.tombstone, Term_False)
     NHOPTB(toptenwin, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.toptenwin)
+                Off, Yes, No, No, NoAlias, &iflags.toptenwin, Term_False)
     NHOPTC(traps, Advanced, MAXTCHARS + 1, opt_in, set_in_config,
                 No, Yes, No, No, NoAlias,
                 "list of symbols to use in drawing traps")
     NHOPTB(travel, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.travelcmd)
+                On, Yes, No, No, NoAlias, &flags.travelcmd, Term_False)
 #ifdef DEBUG
     NHOPTB(travel_debug, Advanced, 0, opt_out, set_wizonly,
-                Off, Yes, No, No, NoAlias, &iflags.trav_debug)
+                Off, Yes, No, No, NoAlias, &iflags.trav_debug, Term_False)
 #else
     NHOPTB(travel_debug, Advanced, 0, opt_out, set_wizonly,
-                Off, No, No, No, NoAlias, (boolean *) 0)
+                Off, No, No, No, NoAlias, (boolean *) 0, Term_False)
 #endif
     NHOPTB(use_darkgray, Advanced, 0, opt_out, set_in_config,
-                On, Yes, No, No, NoAlias, &iflags.wc2_darkgray)
+                On, Yes, No, No, NoAlias, &iflags.wc2_darkgray, Term_False)
     NHOPTB(use_inverse, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &iflags.wc_inverse)
+                On, Yes, No, No, NoAlias, &iflags.wc_inverse, Term_False)
     NHOPTB(use_truecolor, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, "use_truecolour", &iflags.use_truecolor)
+                Off, Yes, No, No, "use_truecolour",
+                &iflags.use_truecolor, Term_False)
     NHOPTC(vary_msgcount, Advanced, 20, opt_in, set_gameview,
                 No, Yes, No, No, NoAlias, "show more old messages at a time")
 #if defined(NO_VERBOSE_GRANULARITY)
     NHOPTB(verbose, Advanced, 0, opt_out, set_in_game,
-                On, Yes, No, No, NoAlias, &flags.verbose)
+                On, Yes, No, No, NoAlias, &flags.verbose, Term_False)
 #endif
 #ifdef MSDOS
     NHOPTC(video, Advanced, 20, opt_in, set_in_config,
@@ -646,17 +664,17 @@ static int optfn_##a(int, int, boolean, char *, char *);
 #endif
 #ifdef TTY_TILES_ESCCODES
     NHOPTB(vt_tiledata, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, NoAlias, &iflags.vt_tiledata)
+                Off, Yes, No, No, NoAlias, &iflags.vt_tiledata, Term_False)
 #else
     NHOPTB(vt_tiledata, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, NoAlias, (boolean *) 0)
+                Off, Yes, No, No, NoAlias, (boolean *) 0, Term_False)
 #endif
 #ifdef TTY_SOUND_ESCCODES
     NHOPTB(vt_sounddata, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, NoAlias, &iflags.vt_sounddata)
+                Off, Yes, No, No, NoAlias, &iflags.vt_sounddata, Term_False)
 #else
     NHOPTB(vt_sounddata, Advanced, 0, opt_in, set_in_config,
-                Off, Yes, No, No, NoAlias, (boolean *) 0)
+                Off, Yes, No, No, NoAlias, (boolean *) 0, Term_False)
 #endif
     NHOPTC(warnings, Advanced, 10, opt_in, set_in_config,
                 No, Yes, No, No, NoAlias, "display characters for warnings")
@@ -667,9 +685,9 @@ static int optfn_##a(int, int, boolean, char *, char *);
                 Yes, Yes, No, Yes, NoAlias,
                 "filter coordinate locations when targeting next or previous")
     NHOPTB(whatis_menu, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.getloc_usemenu)
+                Off, Yes, No, No, NoAlias, &iflags.getloc_usemenu, Term_False)
     NHOPTB(whatis_moveskip, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.getloc_moveskip)
+                Off, Yes, No, No, NoAlias, &iflags.getloc_moveskip, Term_False)
     NHOPTC(windowborders, Advanced, 9, opt_in, set_in_game,
                 Yes, Yes, No, Yes, NoAlias, "0 (off), 1 (on), 2 (auto)")
 #ifdef WINCHAIN
@@ -681,11 +699,11 @@ static int optfn_##a(int, int, boolean, char *, char *);
                 "the foreground/background colors of windows")
  /* NHOPTC(windowtype) -- moved to top */
     NHOPTB(wizmgender, Advanced, 0, opt_in, set_wizonly,
-                Off, Yes, No, No, NoAlias, &iflags.wizmgender)
+                Off, Yes, No, No, NoAlias, &iflags.wizmgender, Term_False)
     NHOPTB(wizweight, Advanced, 0, opt_in, set_wizonly,
-                Off, Yes, No, No, NoAlias, &iflags.wizweight)
+                Off, Yes, No, No, NoAlias, &iflags.wizweight, Term_False)
     NHOPTB(wraptext, Advanced, 0, opt_in, set_in_game,
-                Off, Yes, No, No, NoAlias, &iflags.wc2_wraptext)
+                Off, Yes, No, No, NoAlias, &iflags.wc2_wraptext, Term_False)
 
     /*
      * Prefix-based Options
index 625d3ee4436d2ab4449d55d8251d1d2b62d283e3..ce644f88ad200abcbf4d513feb311d2cdb8ce2ae 100755 (executable)
@@ -357,14 +357,14 @@ SoundAchievement(0, sa2_xpleveldown, level);
 
 #define Play_usersound(filename, vol, idx) \
     do {                                                                      \
-        if (!Deaf && soundprocs.sound_play_usersound                          \
+        if (iflags.sounds && !Deaf && soundprocs.sound_play_usersound         \
             && ((soundprocs.sound_triggers & SOUND_TRIGGER_USERSOUNDS) != 0)) \
             (*soundprocs.sound_play_usersound)((filename), (vol), (idx));     \
     } while(0)
 
 #define Soundeffect(seid, vol) \
     do {                                                                      \
-        if (!Deaf && soundprocs.sound_soundeffect                             \
+        if (iflags.sounds && !Deaf && soundprocs.sound_soundeffect            \
           && ((soundprocs.sound_triggers & SOUND_TRIGGER_SOUNDEFFECTS) != 0)) \
             (*soundprocs.sound_soundeffect)(emptystr, (seid), (vol));         \
     } while(0)
@@ -372,14 +372,14 @@ SoundAchievement(0, sa2_xpleveldown, level);
 /* Player's perspective, not the hero's; no Deaf suppression */
 #define SoundeffectEvenIfDeaf(seid, vol) \
     do {                                                                      \
-        if (!soundprocs.sound_soundeffect                                     \
+        if (iflags.sounds && !soundprocs.sound_soundeffect                    \
           && ((soundprocs.sound_triggers & SOUND_TRIGGER_SOUNDEFFECTS) != 0)) \
             (*soundprocs.sound_soundeffect)(emptystr, (seid), (vol));         \
     } while(0)
 
 #define Hero_playnotes(instrument, str, vol) \
     do {                                                                     \
-        if (!Deaf && soundprocs.sound_hero_playnotes                         \
+        if (iflags.sounds && !Deaf && soundprocs.sound_hero_playnotes        \
             && ((soundprocs.sound_triggers & SOUND_TRIGGER_HEROMUSIC) != 0)) \
             (*soundprocs.sound_hero_playnotes)((instrument), (str), (vol));  \
     } while(0)
@@ -389,7 +389,7 @@ SoundAchievement(0, sa2_xpleveldown, level);
 /* Player's perspective, not the hero's; no Deaf suppression */
 #define SoundAchievement(arg1, arg2, avals) \
     do {                                                                      \
-        if (soundprocs.sound_achievement                                      \
+        if (iflags.sounds && soundprocs.sound_achievement                     \
           && ((soundprocs.sound_triggers & SOUND_TRIGGER_ACHIEVEMENTS) != 0)) \
             (*soundprocs.sound_achievement)((arg1), (arg2), (avals));         \
     } while(0)
index 3080086a95500b1ca0d9a6766468a61239c3563f..471a0443ccfe7aa9bbb2a9d361e886e42ff64a23 100644 (file)
@@ -65,9 +65,9 @@ enum opt {
 static struct allopt_t allopt_init[] = {
 #include "optlist.h"
     {(const char *) 0, OptS_Advanced, 0, 0, 0, set_in_sysconf, BoolOpt,
-     No, No, No, No, 0, (boolean *) 0,
+     No, No, No, No, Term_False, 0, (boolean *) 0,
      (int (*)(int, int, boolean, char *, char *)) 0,
-     (char *) 0, (const char *) 0, (const char *) 0, 0, 0, 0}
+     (char *) 0, (const char *) 0, (const char *) 0, 0, 0, 0 }
 };
 #undef NHOPT_PARSE
 
@@ -362,6 +362,7 @@ static boolean wc2_supported(const char *);
 static void wc_set_font_name(int, char *);
 static int wc_set_window_colors(char *);
 static boolean illegal_menu_cmd_key(uchar);
+static const char *term_for_boolean(int, boolean *);
 #ifdef CURSES_GRAPHICS
 extern int curses_read_attrs(const char *attrs);
 extern char *curses_fmt_attrs(char *);
@@ -8565,6 +8566,23 @@ doset_simple(void)
     return ECMD_OK;
 }
 
+static const char *
+term_for_boolean(int idx, boolean *b)
+{
+    int i, f_t = (*b) ? 1: 0;
+    const char *boolean_term;
+    static const char *const booleanterms[2][num_terms] = {
+        { "false", "off", "disabled", },
+        { "true", "on", "enabled", },
+    };
+
+    boolean_term = booleanterms[f_t][0];
+    i = (int) allopt[idx].termpref;
+    if (i > Term_False && i < num_terms)
+        boolean_term = booleanterms[f_t][i];
+    return boolean_term;
+}
+
 /* the #optionsfull command */
 int
 doset(void) /* changing options via menu by Per Liboriussen */
@@ -8666,7 +8684,7 @@ doset(void) /* changing options via menu by Per Liboriussen */
                 any.a_int = (pass == 0) ? 0 : i + 1 + indexoffset;
                 indent = (pass == 0 && !iflags.menu_tab_sep) ? "    " : "";
                 Sprintf(buf, fmtstr_doset, indent,
-                        name, *bool_p ? "true" : "false");
+                        name, term_for_boolean(i, bool_p));
                 if (pass == 0)
                     enhance_menu_text(buf, sizeof buf, pass, bool_p,
                                       &allopt[i]);