1 /* NetHack 3.6 sys.c $NHDT-Date: 1547118632 2019/01/10 11:10:32 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.43 $ */
2 /* Copyright (c) Kenneth Lorber, Kensington, Maryland, 2008. */
3 /* NetHack may be freely redistributed. See license for details. */
8 /* !SYSCF configurations need '#define DEBUGFILES "foo.c bar.c"'
9 * to enable debugging feedback for source files foo.c and bar.c;
10 * to activate debugpline(), set an appropriate value and uncomment
12 /* # define DEBUGFILES "*" */
14 /* note: DEBUGFILES value here or in sysconf.DEBUGFILES can be overridden
15 at runtime by setting up a value for "DEBUGFILES" in the environment */
23 sysopt.support = (char *) 0;
24 sysopt.recover = (char *) 0;
26 sysopt.wizards = (char *) 0;
28 sysopt.wizards = dupstr(WIZARD_NAME);
30 #if defined(SYSCF) || !defined(DEBUGFILES)
31 sysopt.debugfiles = (char *) 0;
33 sysopt.debugfiles = dupstr(DEBUGFILES);
36 sysopt.dumplogfile = (char *) 0;
38 sysopt.env_dbgfl = 0; /* haven't checked getenv("DEBUGFILES") yet */
39 sysopt.shellers = (char *) 0;
40 sysopt.explorers = (char *) 0;
41 sysopt.genericusers = (char *) 0;
42 sysopt.maxplayers = 0; /* XXX eventually replace MAX_NR_OF_PLAYERS */
43 sysopt.bones_pools = 0;
46 sysopt.persmax = PERSMAX;
47 sysopt.entrymax = ENTRYMAX;
48 sysopt.pointsmin = POINTSMIN;
49 sysopt.pers_is_uid = PERS_IS_UID;
50 sysopt.tt_oname_maxrank = 10;
59 if (PERS_IS_UID != 0 && PERS_IS_UID != 1)
60 panic("config error: PERS_IS_UID must be either 0 or 1");
64 sysopt.gdbpath = dupstr(GDBPATH);
65 sysopt.greppath = dupstr(GREPPATH);
67 sysopt.panictrace_gdb = 1;
68 #ifdef PANICTRACE_LIBC
69 sysopt.panictrace_libc = 2;
72 sysopt.panictrace_gdb = 0;
73 #ifdef PANICTRACE_LIBC
74 sysopt.panictrace_libc = 0;
79 sysopt.check_save_uid = 1;
80 sysopt.check_plname = 0;
81 sysopt.seduce = 1; /* if it's compiled in, default to on */
82 sysopt_seduce_set(sysopt.seduce);
90 free((genericptr_t) sysopt.support), sysopt.support = (char *) 0;
92 free((genericptr_t) sysopt.recover), sysopt.recover = (char *) 0;
94 free((genericptr_t) sysopt.wizards), sysopt.wizards = (char *) 0;
96 free((genericptr_t) sysopt.explorers), sysopt.explorers = (char *) 0;
98 free((genericptr_t) sysopt.shellers), sysopt.shellers = (char *) 0;
99 if (sysopt.debugfiles)
100 free((genericptr_t) sysopt.debugfiles),
101 sysopt.debugfiles = (char *) 0;
103 if (sysopt.dumplogfile)
104 free((genericptr_t)sysopt.dumplogfile), sysopt.dumplogfile=(char *)0;
106 if (sysopt.genericusers)
107 free((genericptr_t) sysopt.genericusers),
108 sysopt.genericusers = (char *) 0;
111 free((genericptr_t) sysopt.gdbpath), sysopt.gdbpath = (char *) 0;
113 free((genericptr_t) sysopt.greppath), sysopt.greppath = (char *) 0;
115 /* this one's last because it might be used in panic feedback, although
116 none of the preceding ones are likely to trigger a controlled panic */
117 if (sysopt.fmtd_wizard_list)
118 free((genericptr_t) sysopt.fmtd_wizard_list),
119 sysopt.fmtd_wizard_list = (char *) 0;
123 extern const struct attack sa_yes[NATTK];
124 extern const struct attack sa_no[NATTK];
127 sysopt_seduce_set(val)
132 * Attack substitution is now done on the fly in getmattk(mhitu.c).
134 struct attack *setval = val ? sa_yes : sa_no;
137 for (x = 0; x < NATTK; x++) {
138 mons[PM_INCUBUS].mattk[x] = setval[x];
139 mons[PM_SUCCUBUS].mattk[x] = setval[x];