tty role selection when filter by options
Honor things like OPTIONS:role=!tourist and NETHACKOPTIONS='race=!orc' when performing interactive role selection. I don't think it was completely correct when players let the program choose, but it must have been close enough because we haven't gotten any complaints. The post-3.4.3 interactive selection was ignoring options-base filtering entirely and did get complaints for the pre-beta. Role selection has a ton of code which bloats the program without doing anything useful for actual game play. It ought to be split off into a separate front end.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 extern.h $NHDT-Date: 1433050874 2015/05/31 05:41:14 $ $NHDT-Branch: master $:$NHDT-Revision: 1.499 $ */
|
||||
/* NetHack 3.6 extern.h $NHDT-Date: 1433207912 2015/06/02 01:18:32 $ $NHDT-Branch: master $:$NHDT-Revision: 1.500 $ */
|
||||
/* Copyright (c) Steve Creps, 1988. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -1982,8 +1982,8 @@ E int FDECL(randgend, (int, int));
|
||||
E int FDECL(randalign, (int, int));
|
||||
E int FDECL(str2role, (const char *));
|
||||
E int FDECL(str2race, (const char *));
|
||||
E int FDECL(str2gend, (char *));
|
||||
E int FDECL(str2align, (char *));
|
||||
E int FDECL(str2gend, (const char *));
|
||||
E int FDECL(str2align, (const char *));
|
||||
E boolean FDECL(ok_role, (int, int, int, int));
|
||||
E int FDECL(pick_role, (int, int, int, int));
|
||||
E boolean FDECL(ok_race, (int, int, int, int));
|
||||
@@ -1993,7 +1993,9 @@ E int FDECL(pick_gend, (int, int, int, int));
|
||||
E boolean FDECL(ok_align, (int, int, int, int));
|
||||
E int FDECL(pick_align, (int, int, int, int));
|
||||
E void NDECL(rigid_role_checks);
|
||||
E boolean FDECL(setrolefilter, (char *));
|
||||
E boolean FDECL(setrolefilter, (const char *));
|
||||
E boolean NDECL(gotrolefilter);
|
||||
E void NDECL(clearrolefilter);
|
||||
E char *FDECL(build_plselection_prompt, (char *, int, int, int, int, int));
|
||||
E char *FDECL(root_plselection_prompt, (char *, int, int, int, int, int));
|
||||
E void NDECL(plnamesuffix);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 winprocs.h $NHDT-Date: 1432512776 2015/05/25 00:12:56 $ $NHDT-Branch: master $:$NHDT-Revision: 1.34 $ */
|
||||
/* NetHack 3.6 winprocs.h $NHDT-Date: 1433207914 2015/06/02 01:18:34 $ $NHDT-Branch: master $:$NHDT-Revision: 1.35 $ */
|
||||
/* Copyright (c) David Cohrs, 1992 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -289,7 +289,8 @@ struct wc_Opt {
|
||||
#define RS_RACE 2
|
||||
#define RS_GENDER 3
|
||||
#define RS_ALGNMNT 4
|
||||
#define RS_menu_arg(x) (ROLE_RANDOM - ((x) + 1)) /* 0..4 -> -3..-7 */
|
||||
#define RS_filter 5
|
||||
#define RS_menu_arg(x) (ROLE_RANDOM - ((x) + 1)) /* 0..5 -> -3..-8 */
|
||||
|
||||
/* Choose_windows() may be called multiple times; these constants tell the
|
||||
* init function whether the window system is coming or going. */
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 wintype.h $NHDT-Date: 1432512782 2015/05/25 00:13:02 $ $NHDT-Branch: master $:$NHDT-Revision: 1.14 $ */
|
||||
/* NetHack 3.6 wintype.h $NHDT-Date: 1433207914 2015/06/02 01:18:34 $ $NHDT-Branch: master $:$NHDT-Revision: 1.15 $ */
|
||||
/* Copyright (c) David Cohrs, 1991 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -22,6 +22,7 @@ typedef union any {
|
||||
long *a_lptr;
|
||||
unsigned long *a_ulptr;
|
||||
unsigned *a_uptr;
|
||||
const char *a_string;
|
||||
/* add types as needed */
|
||||
} anything;
|
||||
#define ANY_P union any /* avoid typedef in prototypes */
|
||||
|
||||
Reference in New Issue
Block a user