add a master off/on switch for sounds

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.
This commit is contained in:
nhmall
2023-01-30 12:07:03 -05:00
parent fe99bcd591
commit 9bbb2e17cf
6 changed files with 164 additions and 122 deletions

View File

@@ -37,7 +37,7 @@
.ds f0 "\*(vr .ds f0 "\*(vr
.ds f1 .ds f1
.\"DO NOT REMOVE NH_DATESUB .ds f2 "DATE(%B %-d, %Y) .\"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: .\" A note on some special characters:
.\" \(lq = left double quote .\" \(lq = left double quote
@@ -4483,6 +4483,8 @@ order by count, low to high; ties broken by internal index.
.PE .PE
Can be interactively set via the \(oq\f(CRm O\fP\(cq command or via using 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. 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 " .lp "sparkle "
Display a sparkly effect when a monster (including yourself) is hit by an Display a sparkly effect when a monster (including yourself) is hit by an
attack to which it is resistant (default on). attack to which it is resistant (default on).

View File

@@ -46,7 +46,7 @@
\author{Original version - Eric S. Raymond\\ \author{Original version - Eric S. Raymond\\
(Edited and expanded for 3.7 by Mike Stephenson and others)} (Edited and expanded for 3.7 by Mike Stephenson and others)}
%DO NOT REMOVE NH_DATESUB \date{DATE(%B %-d, %Y)} %DO NOT REMOVE NH_DATESUB \date{DATE(%B %-d, %Y)}
\date{December 28, 2022} \date{January 30, 2023}
\maketitle \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 Can be interactively set via the `{\tt m O}' command or via using
the `{\tt m}' prefix before the \#vanquished command. the `{\tt m}' prefix before the \#vanquished command.
%.lp %.lp
\item[\ib{sounds}]
Allow sounds to be emitted from an integrated sound library (default on).
%.lp
\item[\ib{sparkle}] \item[\ib{sparkle}]
Display a sparkly effect when a monster (including yourself) is hit by an Display a sparkly effect when a monster (including yourself) is hit by an
attack to which it is resistant (default on). Persistent. attack to which it is resistant (default on). Persistent.

View File

@@ -265,6 +265,7 @@ struct instance_flags {
boolean perm_invent; /* keep full inventories up until dismissed */ boolean perm_invent; /* keep full inventories up until dismissed */
boolean renameallowed; /* can change hero name during role selection */ boolean renameallowed; /* can change hero name during role selection */
boolean renameinprogress; /* we are changing hero name */ 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; boolean status_updates; /* allow updates to bottom status lines;
* disable to avoid excessive noise when using * disable to avoid excessive noise when using
* a screen reader (use ^X to review status) */ * a screen reader (use ^X to review status) */

View File

@@ -20,6 +20,9 @@ enum Off_On { Off, On };
enum OptSection { enum OptSection {
OptS_General, OptS_Behavior, OptS_Map, OptS_Status, OptS_Advanced 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 { struct allopt_t {
const char *name; const char *name;
@@ -33,6 +36,7 @@ struct allopt_t {
enum Y_N valok; enum Y_N valok;
enum Y_N dupeok; enum Y_N dupeok;
enum Y_N pfx; enum Y_N pfx;
enum menu_terminology_preference termpref;
boolean opt_in_out, *addr; boolean opt_in_out, *addr;
int (*optfn)(int, int, boolean, char *, char *); int (*optfn)(int, int, boolean, char *, char *);
const char *alias; const char *alias;
@@ -50,7 +54,7 @@ struct allopt_t {
#define NoAlias ((const char *) 0) #define NoAlias ((const char *) 0)
#if defined(NHOPT_PROTO) #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) \ #define NHOPTC(a, sec, b, c, s, n, v, d, h, al, z) \
static int optfn_##a(int, int, boolean, char *, char *); static int optfn_##a(int, int, boolean, char *, char *);
#define NHOPTP(a, sec, b, c, s, n, v, d, h, al, z) \ #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 *); static int optfn_##a(int, int, boolean, char *, char *);
#elif defined(NHOPT_ENUM) #elif defined(NHOPT_ENUM)
#define NHOPTB(a, sec, b, c, s, i, n, v, d, al, bp) 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 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 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 NHOPTO(m, sec, a, b, c, s, n, v, d, al, z) opt_##a,
#elif defined(NHOPT_PARSE) #elif defined(NHOPT_PARSE)
#define NHOPTB(a, sec, b, c, s, i, n, v, d, al, bp) \ #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, c, \ { #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 }, 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) \ #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 }, (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) \ #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 }, (boolean *) 0, &pfxfn_##a, al, z, #a, Off, h, 0 },
#define NHOPTO(m, sec, a, b, c, s, n, v, d, al, z) \ #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 }, (boolean *) 0, &optfn_##a, al, z, (const char *) 0, On, On, 0 },
/* this is not reliable because TILES_IN_GLYPHMAP might be defined /* 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
#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 */ /* C:nm, ln, opt_*, setwhere?, negateok?, valok?, dupok?, hndlr? Alias, desc */
/* P:pfx, 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 /* end of special ordering; remainder of entries are in alphabetical order
*/ */
NHOPTB(acoustics, Advanced, 0, opt_out, set_in_game, 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) -- moved to top */
NHOPTC(align_message, Advanced, 20, opt_in, set_gameview, NHOPTC(align_message, Advanced, 20, opt_in, set_gameview,
Yes, Yes, No, Yes, NoAlias, "message window alignment") Yes, Yes, No, Yes, NoAlias, "message window alignment")
@@ -144,26 +148,27 @@ static int optfn_##a(int, int, boolean, char *, char *);
#endif #endif
#ifdef ALTMETA #ifdef ALTMETA
NHOPTB(altmeta, Advanced, 0, opt_out, set_in_game, 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 #else
NHOPTB(altmeta, Advanced, 0, opt_out, set_in_config, 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 #endif
NHOPTB(ascii_map, Advanced, 0, opt_in, set_in_game, 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, 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, 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, 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, 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, NHOPTO("autopickup exceptions", Behavior, o_autopickup_exceptions, BUFSZ,
opt_in, set_in_game, opt_in, set_in_game,
No, Yes, No, NoAlias, "edit autopickup exceptions") No, Yes, No, NoAlias, "edit autopickup exceptions")
NHOPTB(autoquiver, Behavior, 0, opt_in, set_in_game, 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, NHOPTC(autounlock, Behavior, 80, opt_out, set_in_game,
Yes, Yes, No, Yes, NoAlias, Yes, Yes, No, Yes, NoAlias,
"action to take when encountering locked door or chest") "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") No, Yes, No, NoAlias, "edit key binds")
#if defined(MICRO) && !defined(AMIGA) #if defined(MICRO) && !defined(AMIGA)
NHOPTB(BIOS, Advanced, 0, opt_in, set_in_config, 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 #else
NHOPTB(BIOS, Advanced, 0, opt_in, set_in_config, 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 #endif
NHOPTB(blind, Advanced, 0, opt_in, set_in_config, 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, 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 #ifdef BACKWARD_COMPAT
NHOPTC(boulder, Advanced, 1, opt_in, set_in_game, NHOPTC(boulder, Advanced, 1, opt_in, set_in_game,
No, Yes, No, No, NoAlias, 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") "name of your starting pet if it is a kitten")
#ifdef INSURANCE #ifdef INSURANCE
NHOPTB(checkpoint, Advanced, 0, opt_out, set_in_game, 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 #else
NHOPTB(checkpoint, Advanced, 0, opt_out, set_in_config, 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 #endif
NHOPTB(cmdassist, Behavior, 0, opt_out, set_in_game, 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, 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, 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 #ifdef CURSES_GRAPHICS
NHOPTC(cursesgraphics, Advanced, 70, opt_in, set_in_config, NHOPTC(cursesgraphics, Advanced, 70, opt_in, set_in_config,
No, Yes, No, No, NoAlias, No, Yes, No, No, NoAlias,
"load curses display symbols into symset") "load curses display symbols into symset")
#endif #endif
NHOPTB(dark_room, Advanced, 0, opt_out, set_in_game, 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 #ifdef BACKWARD_COMPAT
NHOPTC(DECgraphics, Advanced, 70, opt_in, set_in_config, NHOPTC(DECgraphics, Advanced, 70, opt_in, set_in_config,
Yes, Yes, No, No, NoAlias, Yes, Yes, No, No, NoAlias,
"load DECGraphics display symbols into symset") "load DECGraphics display symbols into symset")
#endif #endif
NHOPTB(debug_hunger, Advanced, 0, opt_in, set_wiznofuz, 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, 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, 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, NHOPTC(disclose, Advanced, sizeof flags.end_disclose * 2,
opt_in, set_in_game, opt_in, set_in_game,
Yes, Yes, No, Yes, NoAlias, Yes, Yes, No, Yes, NoAlias,
@@ -233,15 +239,16 @@ static int optfn_##a(int, int, boolean, char *, char *);
No, Yes, No, No, NoAlias, No, Yes, No, No, NoAlias,
"list of symbols to use in drawing special effects") "list of symbols to use in drawing special effects")
NHOPTB(eight_bit_tty, Advanced, 0, opt_in, set_in_game, 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, 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, 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, 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, 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, NHOPTC(font_map, Advanced, 40, opt_in, set_gameview,
Yes, Yes, Yes, No, NoAlias, "font to use in the map window") Yes, Yes, Yes, No, NoAlias, "font to use in the map window")
NHOPTC(font_menu, Advanced, 40, opt_in, set_gameview, 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, NHOPTC(font_text, Advanced, 40, opt_in, set_gameview,
Yes, Yes, Yes, No, NoAlias, "font to use in text windows") Yes, Yes, Yes, No, NoAlias, "font to use in text windows")
NHOPTB(force_invmenu, Advanced, 0, opt_in, set_in_game, 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, NHOPTC(fruit, General, PL_FSIZ, opt_in, set_in_game,
No, Yes, No, No, NoAlias, "name of a fruit you enjoy eating") No, Yes, No, No, NoAlias, "name of a fruit you enjoy eating")
NHOPTB(fullscreen, Advanced, 0, opt_in, set_in_config, 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(gender) -- moved to top */
NHOPTC(glyph, Advanced, 40, opt_in, set_in_game, NHOPTC(glyph, Advanced, 40, opt_in, set_in_game,
No, Yes, Yes, No, NoAlias, No, Yes, Yes, No, NoAlias,
"set representation of a glyph to a unicode value and color") "set representation of a glyph to a unicode value and color")
NHOPTB(goldX, Advanced, 0, opt_in, set_in_game, 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, 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, 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, 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) #if defined(MAC)
NHOPTC(hicolor, Advanced, 15, opt_in, set_in_config, NHOPTC(hicolor, Advanced, 15, opt_in, set_in_config,
No, Yes, No, No, NoAlias, No, Yes, No, No, NoAlias,
"same as palette, only order is reversed") "same as palette, only order is reversed")
#endif #endif
NHOPTB(hilite_pet, Map, 0, opt_in, set_in_game, 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, 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 #ifdef STATUS_HILITES
NHOPTC(hilite_status, Advanced, 13, opt_out, set_in_game, NHOPTC(hilite_status, Advanced, 13, opt_out, set_in_game,
Yes, Yes, Yes, No, NoAlias, 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)") Yes, Yes, Yes, No, NoAlias, "(not available)")
#endif #endif
NHOPTB(hitpointbar, Status, 0, opt_in, set_in_game, 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, NHOPTC(horsename, Advanced, PL_PSIZ, opt_in, set_gameview,
No, Yes, No, No, NoAlias, No, Yes, No, No, NoAlias,
"name of your starting pet if it is a pony") "name of your starting pet if it is a pony")
@@ -310,36 +317,36 @@ static int optfn_##a(int, int, boolean, char *, char *);
#endif #endif
#ifndef MAC #ifndef MAC
NHOPTB(ignintr, Advanced, 0, opt_in, set_in_game, 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 #else
NHOPTB(ignintr, Advanced, 0, opt_in, set_in_config, 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 #endif
NHOPTB(implicit_uncursed, Advanced, 0, opt_out, set_in_game, 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 */ #if 0 /* obsolete - pre-OSX Mac */
NHOPTB(large_font, Advanced, 0, opt_in, set_in_config, NHOPTB(large_font, Advanced, 0, opt_in, set_in_config,
Off, Yes, No, No, NoAlias, &iflags.obsolete) Off, Yes, No, No, NoAlias, &iflags.obsolete)
#endif #endif
NHOPTB(legacy, Advanced, 0, opt_out, set_in_config, 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, 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, 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) #if defined(BACKWARD_COMPAT) && defined(MAC_GRAPHICS_ENV)
NHOPTC(Macgraphics, Advanced, 70, opt_in, set_in_config, NHOPTC(Macgraphics, Advanced, 70, opt_in, set_in_config,
No, Yes, No, No, NoAlias, No, Yes, No, No, NoAlias,
"load MACGraphics display symbols into symset") "load MACGraphics display symbols into symset")
#endif #endif
NHOPTB(mail, Advanced, 0, opt_out, set_in_game, 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, NHOPTC(map_mode, Advanced, 20, opt_in, set_gameview,
Yes, Yes, No, No, NoAlias, "map display mode under Windows") Yes, Yes, No, No, NoAlias, "map display mode under Windows")
NHOPTB(mention_decor, Advanced, 0, opt_in, set_in_game, 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, 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, NHOPTC(menu_deselect_all, Advanced, 4, opt_in, set_in_config,
No, Yes, No, No, NoAlias, "deselect all items in a menu") No, Yes, No, No, NoAlias, "deselect all items in a menu")
NHOPTC(menu_deselect_page, Advanced, 4, opt_in, set_in_config, 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, NHOPTC(menu_next_page, Advanced, 4, opt_in, set_in_config,
No, Yes, No, No, NoAlias, "go to the next menu page") No, Yes, No, No, NoAlias, "go to the next menu page")
NHOPTB(menu_objsyms, Advanced, 0, opt_in, set_in_game, 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 #ifdef TTY_GRAPHICS
NHOPTB(menu_overlay, Advanced, 0, opt_in, set_in_game, 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 #else
NHOPTB(menu_overlay, Advanced, 0, opt_in, set_in_config, 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 #endif
NHOPTC(menu_previous_page, Advanced, 4, opt_in, set_in_config, NHOPTC(menu_previous_page, Advanced, 4, opt_in, set_in_config,
No, Yes, No, No, NoAlias, "go to the previous menu page") 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, NHOPTC(menu_shift_right, Advanced, 4, opt_in, set_in_config,
No, Yes, No, No, NoAlias, "pan current menu page right") No, Yes, No, No, NoAlias, "pan current menu page right")
NHOPTB(menu_tab_sep, Advanced, 0, opt_in, set_wizonly, 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, 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, NHOPTO("menu colors", Status, o_menu_colors, BUFSZ, opt_in, set_in_game,
No, Yes, No, NoAlias, "edit menu colors") No, Yes, No, NoAlias, "edit menu colors")
NHOPTC(menuinvertmode, Advanced, 5, opt_in, set_in_game, 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, opt_in, set_in_game,
No, Yes, No, NoAlias, "edit message types") No, Yes, No, NoAlias, "edit message types")
NHOPTB(monpolycontrol, Advanced, 0, opt_in, set_wizonly, 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, NHOPTC(monsters, Advanced, MAXMCLASSES, opt_in, set_in_config,
No, Yes, No, No, NoAlias, No, Yes, No, No, NoAlias,
"list of symbols to use for monsters") "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 */ /* NHOPTC(name) -- moved to top */
#ifdef NEWS #ifdef NEWS
NHOPTB(news, Advanced, 0, opt_in, set_in_config, 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 #else
NHOPTB(news, Advanced, 0, opt_in, set_in_config, 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 #endif
NHOPTB(nudist, Advanced, 0, opt_in, set_in_config, 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, 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, NHOPTC(number_pad, General, 1, opt_in, set_in_game,
No, Yes, No, Yes, NoAlias, No, Yes, No, Yes, NoAlias,
"use the number pad for movement") "use the number pad for movement")
@@ -451,7 +459,7 @@ static int optfn_##a(int, int, boolean, char *, char *);
Yes, Yes, Yes, Yes, "prayconfirm", Yes, Yes, Yes, Yes, "prayconfirm",
"extra prompting in certain situations") "extra prompting in certain situations")
NHOPTB(perm_invent, Advanced, 0, opt_in, set_in_game, 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 */ NHOPTC(petattr, Advanced, 88, opt_in, set_in_game, /* curses only */
No, Yes, No, No, NoAlias, "attributes for highlighting pets") No, Yes, No, No, NoAlias, "attributes for highlighting pets")
/* pettype is ignored for some roles */ /* pettype is ignored for some roles */
@@ -461,7 +469,7 @@ static int optfn_##a(int, int, boolean, char *, char *);
No, Yes, No, Yes, NoAlias, No, Yes, No, Yes, NoAlias,
"maximum burden picked up before prompt") "maximum burden picked up before prompt")
NHOPTB(pickup_thrown, Behavior, 0, opt_out, set_in_game, 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, NHOPTC(pickup_types, Behavior, MAXOCLASSES, opt_in, set_in_game,
No, Yes, No, Yes, NoAlias, No, Yes, No, Yes, NoAlias,
"types of objects to pick up automatically") "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") "choose character via dialog or prompts")
/* NHOPTC(playmode) -- moved to top */ /* NHOPTC(playmode) -- moved to top */
NHOPTB(popup_dialog, Advanced, 0, opt_in, set_in_game, 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 */ 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, 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, 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 */ /* NHOPTC(race) -- moved to top */
#ifdef MICRO #ifdef MICRO
NHOPTB(rawio, Advanced, 0, opt_in, set_in_config, 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 #else
NHOPTB(rawio, Advanced, 0, opt_in, set_in_config, 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 #endif
NHOPTB(rest_on_space, Advanced, 0, opt_in, set_in_game, Off, 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, NHOPTC(roguesymset, Advanced, 70, opt_in, set_in_game,
No, Yes, No, Yes, NoAlias, No, Yes, No, Yes, NoAlias,
"load a set of rogue display symbols from symbols file") "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, Yes, Yes, No, Yes, NoAlias,
"display frequency when `running' or `travelling'") "display frequency when `running' or `travelling'")
NHOPTB(safe_pet, Advanced, 0, opt_out, set_in_game, 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, 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, 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, NHOPTC(scores, Advanced, 32, opt_in, set_in_game,
No, Yes, No, No, NoAlias, No, Yes, No, No, NoAlias,
"the parts of the score list you wish to see") "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, Yes, Yes, No, No, NoAlias,
"scroll map when this far from the edge") "scroll map when this far from the edge")
NHOPTB(selectsaved, Advanced, 0, opt_out, set_in_config, 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, 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, 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 #ifdef SCORE_ON_BOTL
NHOPTB(showscore, Status, 0, opt_in, set_in_game, 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 #else
NHOPTB(showscore, Status, 0, opt_in, set_in_config, 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 #endif
NHOPTB(silent, Advanced, 0, opt_out, set_in_game, 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, 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, NHOPTC(sortdiscoveries, Advanced, 0, opt_in, set_in_game,
Yes, Yes, No, Yes, NoAlias, Yes, Yes, No, Yes, NoAlias,
"preferred order when displaying discovered objects") "preferred order when displaying discovered objects")
@@ -536,21 +545,28 @@ static int optfn_##a(int, int, boolean, char *, char *);
No, Yes, No, Yes, NoAlias, No, Yes, No, Yes, NoAlias,
"sort object selection lists by description") "sort object selection lists by description")
NHOPTB(sortpack, Advanced, 0, opt_out, set_in_game, 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, NHOPTC(sortvanquished, Advanced, 0, opt_in, set_in_game,
Yes, Yes, No, Yes, NoAlias, Yes, Yes, No, Yes, NoAlias,
"preferred order when displaying vanquished monsters") "preferred order when displaying vanquished monsters")
NHOPTC(soundlib, Advanced, WINTYPELEN, opt_in, set_gameview, NHOPTC(soundlib, Advanced, WINTYPELEN, opt_in, set_gameview,
No, Yes, No, No, NoAlias, No, Yes, No, No, NoAlias,
"soundlib interface to use (if any)") "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, 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, 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, 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, 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, NHOPTO("status condition fields", Status, o_status_cond, BUFSZ,
opt_in, set_in_game, opt_in, set_in_game,
No, Yes, No, NoAlias, "edit status condition fields") 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, NHOPTC(tile_width, Advanced, 20, opt_in, set_gameview,
Yes, Yes, No, No, NoAlias, "width of tiles") Yes, Yes, No, No, NoAlias, "width of tiles")
NHOPTB(tiled_map, Advanced, 0, opt_in, set_in_game, 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, 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 #ifdef TIMED_DELAY
NHOPTB(timed_delay, Map, 0, opt_out, set_in_game, 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 #else
NHOPTB(timed_delay, Map, 0, opt_in, set_in_config, 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 #endif
NHOPTB(tombstone, Advanced, 0, opt_out, set_in_game, 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, 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, NHOPTC(traps, Advanced, MAXTCHARS + 1, opt_in, set_in_config,
No, Yes, No, No, NoAlias, No, Yes, No, No, NoAlias,
"list of symbols to use in drawing traps") "list of symbols to use in drawing traps")
NHOPTB(travel, Advanced, 0, opt_out, set_in_game, 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 #ifdef DEBUG
NHOPTB(travel_debug, Advanced, 0, opt_out, set_wizonly, 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 #else
NHOPTB(travel_debug, Advanced, 0, opt_out, set_wizonly, 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 #endif
NHOPTB(use_darkgray, Advanced, 0, opt_out, set_in_config, 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, 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, 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, NHOPTC(vary_msgcount, Advanced, 20, opt_in, set_gameview,
No, Yes, No, No, NoAlias, "show more old messages at a time") No, Yes, No, No, NoAlias, "show more old messages at a time")
#if defined(NO_VERBOSE_GRANULARITY) #if defined(NO_VERBOSE_GRANULARITY)
NHOPTB(verbose, Advanced, 0, opt_out, set_in_game, 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 #endif
#ifdef MSDOS #ifdef MSDOS
NHOPTC(video, Advanced, 20, opt_in, set_in_config, NHOPTC(video, Advanced, 20, opt_in, set_in_config,
@@ -646,17 +664,17 @@ static int optfn_##a(int, int, boolean, char *, char *);
#endif #endif
#ifdef TTY_TILES_ESCCODES #ifdef TTY_TILES_ESCCODES
NHOPTB(vt_tiledata, Advanced, 0, opt_in, set_in_config, 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 #else
NHOPTB(vt_tiledata, Advanced, 0, opt_in, set_in_config, 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 #endif
#ifdef TTY_SOUND_ESCCODES #ifdef TTY_SOUND_ESCCODES
NHOPTB(vt_sounddata, Advanced, 0, opt_in, set_in_config, 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 #else
NHOPTB(vt_sounddata, Advanced, 0, opt_in, set_in_config, 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 #endif
NHOPTC(warnings, Advanced, 10, opt_in, set_in_config, NHOPTC(warnings, Advanced, 10, opt_in, set_in_config,
No, Yes, No, No, NoAlias, "display characters for warnings") 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, Yes, Yes, No, Yes, NoAlias,
"filter coordinate locations when targeting next or previous") "filter coordinate locations when targeting next or previous")
NHOPTB(whatis_menu, Advanced, 0, opt_in, set_in_game, 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, 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, NHOPTC(windowborders, Advanced, 9, opt_in, set_in_game,
Yes, Yes, No, Yes, NoAlias, "0 (off), 1 (on), 2 (auto)") Yes, Yes, No, Yes, NoAlias, "0 (off), 1 (on), 2 (auto)")
#ifdef WINCHAIN #ifdef WINCHAIN
@@ -681,11 +699,11 @@ static int optfn_##a(int, int, boolean, char *, char *);
"the foreground/background colors of windows") "the foreground/background colors of windows")
/* NHOPTC(windowtype) -- moved to top */ /* NHOPTC(windowtype) -- moved to top */
NHOPTB(wizmgender, Advanced, 0, opt_in, set_wizonly, 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, 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, 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 * Prefix-based Options

View File

@@ -357,14 +357,14 @@ SoundAchievement(0, sa2_xpleveldown, level);
#define Play_usersound(filename, vol, idx) \ #define Play_usersound(filename, vol, idx) \
do { \ do { \
if (!Deaf && soundprocs.sound_play_usersound \ if (iflags.sounds && !Deaf && soundprocs.sound_play_usersound \
&& ((soundprocs.sound_triggers & SOUND_TRIGGER_USERSOUNDS) != 0)) \ && ((soundprocs.sound_triggers & SOUND_TRIGGER_USERSOUNDS) != 0)) \
(*soundprocs.sound_play_usersound)((filename), (vol), (idx)); \ (*soundprocs.sound_play_usersound)((filename), (vol), (idx)); \
} while(0) } while(0)
#define Soundeffect(seid, vol) \ #define Soundeffect(seid, vol) \
do { \ do { \
if (!Deaf && soundprocs.sound_soundeffect \ if (iflags.sounds && !Deaf && soundprocs.sound_soundeffect \
&& ((soundprocs.sound_triggers & SOUND_TRIGGER_SOUNDEFFECTS) != 0)) \ && ((soundprocs.sound_triggers & SOUND_TRIGGER_SOUNDEFFECTS) != 0)) \
(*soundprocs.sound_soundeffect)(emptystr, (seid), (vol)); \ (*soundprocs.sound_soundeffect)(emptystr, (seid), (vol)); \
} while(0) } while(0)
@@ -372,14 +372,14 @@ SoundAchievement(0, sa2_xpleveldown, level);
/* Player's perspective, not the hero's; no Deaf suppression */ /* Player's perspective, not the hero's; no Deaf suppression */
#define SoundeffectEvenIfDeaf(seid, vol) \ #define SoundeffectEvenIfDeaf(seid, vol) \
do { \ do { \
if (!soundprocs.sound_soundeffect \ if (iflags.sounds && !soundprocs.sound_soundeffect \
&& ((soundprocs.sound_triggers & SOUND_TRIGGER_SOUNDEFFECTS) != 0)) \ && ((soundprocs.sound_triggers & SOUND_TRIGGER_SOUNDEFFECTS) != 0)) \
(*soundprocs.sound_soundeffect)(emptystr, (seid), (vol)); \ (*soundprocs.sound_soundeffect)(emptystr, (seid), (vol)); \
} while(0) } while(0)
#define Hero_playnotes(instrument, str, vol) \ #define Hero_playnotes(instrument, str, vol) \
do { \ do { \
if (!Deaf && soundprocs.sound_hero_playnotes \ if (iflags.sounds && !Deaf && soundprocs.sound_hero_playnotes \
&& ((soundprocs.sound_triggers & SOUND_TRIGGER_HEROMUSIC) != 0)) \ && ((soundprocs.sound_triggers & SOUND_TRIGGER_HEROMUSIC) != 0)) \
(*soundprocs.sound_hero_playnotes)((instrument), (str), (vol)); \ (*soundprocs.sound_hero_playnotes)((instrument), (str), (vol)); \
} while(0) } while(0)
@@ -389,7 +389,7 @@ SoundAchievement(0, sa2_xpleveldown, level);
/* Player's perspective, not the hero's; no Deaf suppression */ /* Player's perspective, not the hero's; no Deaf suppression */
#define SoundAchievement(arg1, arg2, avals) \ #define SoundAchievement(arg1, arg2, avals) \
do { \ do { \
if (soundprocs.sound_achievement \ if (iflags.sounds && soundprocs.sound_achievement \
&& ((soundprocs.sound_triggers & SOUND_TRIGGER_ACHIEVEMENTS) != 0)) \ && ((soundprocs.sound_triggers & SOUND_TRIGGER_ACHIEVEMENTS) != 0)) \
(*soundprocs.sound_achievement)((arg1), (arg2), (avals)); \ (*soundprocs.sound_achievement)((arg1), (arg2), (avals)); \
} while(0) } while(0)

View File

@@ -65,9 +65,9 @@ enum opt {
static struct allopt_t allopt_init[] = { static struct allopt_t allopt_init[] = {
#include "optlist.h" #include "optlist.h"
{(const char *) 0, OptS_Advanced, 0, 0, 0, set_in_sysconf, BoolOpt, {(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, (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 #undef NHOPT_PARSE
@@ -362,6 +362,7 @@ static boolean wc2_supported(const char *);
static void wc_set_font_name(int, char *); static void wc_set_font_name(int, char *);
static int wc_set_window_colors(char *); static int wc_set_window_colors(char *);
static boolean illegal_menu_cmd_key(uchar); static boolean illegal_menu_cmd_key(uchar);
static const char *term_for_boolean(int, boolean *);
#ifdef CURSES_GRAPHICS #ifdef CURSES_GRAPHICS
extern int curses_read_attrs(const char *attrs); extern int curses_read_attrs(const char *attrs);
extern char *curses_fmt_attrs(char *); extern char *curses_fmt_attrs(char *);
@@ -8565,6 +8566,23 @@ doset_simple(void)
return ECMD_OK; 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 */ /* the #optionsfull command */
int int
doset(void) /* changing options via menu by Per Liboriussen */ 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; any.a_int = (pass == 0) ? 0 : i + 1 + indexoffset;
indent = (pass == 0 && !iflags.menu_tab_sep) ? " " : ""; indent = (pass == 0 && !iflags.menu_tab_sep) ? " " : "";
Sprintf(buf, fmtstr_doset, indent, Sprintf(buf, fmtstr_doset, indent,
name, *bool_p ? "true" : "false"); name, term_for_boolean(i, bool_p));
if (pass == 0) if (pass == 0)
enhance_menu_text(buf, sizeof buf, pass, bool_p, enhance_menu_text(buf, sizeof buf, pass, bool_p,
&allopt[i]); &allopt[i]);