Source:NetHack 3.2.0/global.h

Below is the full text to global.h from the source code of NetHack 3.2.0. To link to a particular line, write [[NetHack 3.2.0/global.h#line123 ]], for example.

Warning! This is the source code from an old release. For the latest release, see Source code

1.   /*	SCCS Id: @(#)global.h	3.2	96/03/28	*/ 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.    /* NetHack may be freely redistributed. See license for details. */ 4.     5.    #ifndef GLOBAL_H 6.   #define GLOBAL_H 7.    8.    #include   9. 10.   11.   /* #define BETA		/* if a beta-test copy	[MRS] */ 12.   13.   /*  14.    * Files expected to exist in the playground directory. 15.   */  16.    17.   #define RECORD		"record"  /* a file containing list of topscorers */ 18.  #define HELP		"help"	  /* a file containing command descriptions */ 19.  #define SHELP		"hh"		/* abbreviated form of the same */ 20.  #define DEBUGHELP	"wizhelp"	/* a file containing debug mode cmds */ 21.  #define RUMORFILE	"rumors"	/* a file with fortune cookies */ 22.  #define ORACLEFILE	"oracles"	/* a file with oracular information */ 23.  #define DATAFILE	"data"	/* a file giving the meaning of symbols used */ 24.  #define CMDHELPFILE	"cmdhelp"	/* file telling what commands do */ 25.  #define HISTORY		"history"	/* a file giving nethack's history */ 26.  #define LICENSE		"license"	/* file with license information */ 27.  #define OPTIONFILE	"opthelp"	/* a file explaining runtime options */ 28.  #define OPTIONS_USED	"options"	/* compile-time options, for #version */ 29.   30.   #define LEV_EXT	".lev"		/* extension for special level files */ 31.   32.    33.   /* Assorted definitions that may depend on selections in config.h. */ 34.   35.   /*  36.    * for DUMB preprocessor and compiler, e.g., cpp and pcc supplied 37.   * with Microport SysV/AT, which have small symbol tables; 38.   * DUMB if needed is defined in CFLAGS 39.   */  40.   #ifdef DUMB 41.  #ifdef BITFIELDS 42.  #undef BITFIELDS 43.  #endif 44.  #ifndef STUPID 45.  #define STUPID 46.  #endif 47.  #endif	/* DUMB */ 48.   49.   /*  50.    * type xchar: small integers in the range 0 - 127, usually coordinates 51.   * although they are nonnegative they must not be declared unsigned 52.   * since otherwise comparisons with signed quantities are done incorrectly 53.   */  54.   typedef schar	xchar; 55.  typedef xchar	boolean;		/* 0 or 1 */ 56.   57.   #ifndef TRUE		/* defined in some systems' native include files */ 58.  #define TRUE	((boolean)1) 59.  #define FALSE	((boolean)0) 60.  #endif 61.   62.   #ifndef STRNCMPI 63.  # ifndef __SASC_60		/* SAS/C already shifts to stricmp */ 64.  #  define strcmpi(a,b) strncmpi((a),(b),-1) 65.  # endif 66.  #endif 67.   68.   /* comment out to test effects of each #define -- these will probably 69.   * disappear eventually 70.   */  71.   #ifdef INTERNAL_COMP 72.  # define RLECOMP	/* run-length compression of levl array - JLee */ 73.  # define ZEROCOMP	/* zero-run compression of everything - Olaf Seibert */ 74.  #endif 75.   76.   /* #define SPECIALIZATION	/* do "specialized" version of new topology */ 77.   78.    79.   #ifdef BITFIELDS 80.  #define Bitfield(x,n)	unsigned x:n 81.  #else 82.  #define Bitfield(x,n)	uchar x  83. #endif 84.   85.   #ifdef UNWIDENED_PROTOTYPES 86.  # define CHAR_P char 87.  # define SCHAR_P schar 88.  # define UCHAR_P uchar 89.  # define XCHAR_P xchar 90.  # define SHORT_P short 91.  # define BOOLEAN_P boolean 92.  # define ALIGNTYP_P aligntyp 93.  #else 94.  # ifdef WIDENED_PROTOTYPES 95.  #  define CHAR_P int 96.  #  define SCHAR_P int 97.  #  define UCHAR_P int 98.  #  define XCHAR_P int 99.  #  define SHORT_P int 100. #  define BOOLEAN_P int 101. #  define ALIGNTYP_P int 102. # endif 103. #endif 104. #if defined(ULTRIX_PROTO) && !defined(__STDC__) 105. /* The ultrix 2.0 and 2.1 compilers (on Ultrix 4.0 and 4.2 respectively) can't  106. * handle "struct obj *" constructs in prototypes. Their bugs are different, 107.  * but both seem to work if we put "void*" in the prototype instead. This 108.  * gives us minimal prototype checking but avoids the compiler bugs. 109.  *  110.   * OBJ_P and MONST_P should _only_ be used for declaring function pointers. 111.  */  112.  #define OBJ_P void* 113. #define MONST_P void* 114. #else 115. #define OBJ_P struct obj* 116. #define MONST_P struct monst* 117. #endif 118.  119.  #define SIZE(x)	(int)(sizeof(x) / sizeof(x[0])) 120.  121.   122.  /* A limit for some NetHack int variables. It need not, and for comparable 123.  * scoring should not, depend on the actual limit on integers for a  124. * particular machine, although it is set to the minimum required maximum 125.  * signed integer for C (2^15 -1). 126.  */  127.  #define LARGEST_INT	32767 128.  129.   130.  #ifdef REDO 131. #define Getchar pgetchar 132. #endif 133.  134.  /*  135.   * Automatic inclusions for the subsidiary files. 136.  * Please don't change the order. It does matter. 137.  */  138.   139.  #ifndef COORD_H 140. #include "coord.h"  141. #endif 142.  143.  #if defined(VMS) && !defined(VMSCONF_H) 144. #include "vmsconf.h"  145. #endif 146.  147.  #if defined(UNIX) && !defined(UNIXCONF_H) 148. #include "unixconf.h"  149. #endif 150.  151.  #if defined(OS2) && !defined(OS2CONF_H) 152. #include "os2conf.h"  153. #endif 154.  155.  #if defined(MSDOS) && !defined(PCCONF_H) 156. #include "pcconf.h"  157. #endif 158.  159.  #if defined(TOS) && !defined(TOSCONF_H) 160. #include "tosconf.h"  161. #endif 162.  163.  #if defined(AMIGA) && !defined(AMICONF_H) 164. #include "amiconf.h"  165. #endif 166.  167.  #if defined(MAC) && ! defined(MACCONF_H) 168. #include "macconf.h"  169. #endif 170.  171.  #if defined(WIN32) && !defined(NTCONF_H) 172. #include "ntconf.h"  173. #endif 174.  175.  /* Displayable name of this port; don't redefine if defined in *conf.h */ 176. #ifndef PORT_ID 177. # ifdef AMIGA 178. #  define PORT_ID	"Amiga" 179. # endif 180. # ifdef MAC 181. #  define PORT_ID	"Mac" 182. # endif 183. # ifdef MSDOS 184. #  ifdef PC9800 185. #  define PORT_ID	"PC-9800" 186. #  else 187. #  define PORT_ID	"PC" 188. #  endif 189. #  ifdef DJGPP 190. #  define PORT_SUB_ID	"djgpp" 191. #  else 192. #   ifdef OVERLAY 193. #  define PORT_SUB_ID	"overlaid" 194. #   else 195. #  define PORT_SUB_ID	"non-overlaid" 196. #   endif 197. #  endif 198. # endif 199. # ifdef OS2 200. #  define PORT_ID	"OS/2" 201. # endif 202. # ifdef TOS 203. #  define PORT_ID	"ST" 204. # endif 205. # ifdef UNIX 206. #  define PORT_ID	"Unix" 207. # endif 208. # ifdef VMS 209. #  define PORT_ID	"VMS" 210. # endif 211. # ifdef WIN32 212. #  define PORT_ID	"NT" 213. # endif 214. #endif 215.  216.  #if defined(MICRO) && !defined(AMIGA) && !defined(TOS) && !defined(OS2_HPFS) 217. #define SHORT_FILENAMES		/* filenames are 8.3 */ 218. #endif 219.  220.  /*  221.   * This must follow the include of macconf.h because EXIT_SUCCESS is defined 222.  * in one of the header files and we get a duplicate define. 223.  */  224.  #ifdef VMS 225. /* vms_exit (sys/vms/vmsmisc.c) expects the non-VMS EXIT_xxx values below. 226.  * these definitions allow all systems to be treated uniformly, provided 227.  * main routines do not terminate with return, whose value is not 228.  * so massaged. 229.  */  230.  # ifdef EXIT_SUCCESS 231. #  undef EXIT_SUCCESS 232. # endif 233. # ifdef EXIT_FAILURE 234. #  undef EXIT_FAILURE 235. # endif 236. #endif 237.  238.  #ifndef EXIT_SUCCESS 239. # define EXIT_SUCCESS 0 240. #endif 241. #ifndef EXIT_FAILURE 242. # define EXIT_FAILURE 1 243. #endif 244.  245.  #if defined(X11_GRAPHICS) || defined(AMII_GRAPHICS) 246. # ifndef USE_TILES 247. #  define USE_TILES		/* glyph2tile[] will be available */ 248. # endif 249. #endif 250.  251.   252.  /* primitive memory leak debugging; see alloc.c */ 253. #ifdef MONITOR_HEAP 254. extern long *FDECL(nhalloc, (unsigned int,const char *,int)); 255. extern void FDECL(nhfree, (genericptr_t,const char *,int)); 256. # ifndef __FILE__ 257. #  define __FILE__ "" 258. # endif 259. # ifndef __LINE__ 260. #  define __LINE__ 0 261. # endif 262. # define alloc(a) nhalloc(a,__FILE__,(int)__LINE__) 263. # define free(a) nhfree(a,__FILE__,(int)__LINE__) 264. #else	/* !MONITOR_HEAP */ 265. extern long *FDECL(alloc, (unsigned int));		/* alloc.c */ 266. #endif 267.  268.   269.  /*  270.   * Configurable internal parameters. 271.  *  272.   * Please be very careful if you are going to change one of these. Any 273.  * changes in these parameters, unless properly done, can render the 274.  * executable inoperative. 275.  */  276.   277.  /* size of terminal screen is (at least) (ROWNO+3) by COLNO */ 278. #define COLNO	80 279. #define ROWNO	21 280.  281.  #define MAXNROFROOMS	40	/* max number of rooms per level */ 282. #define MAX_SUBROOMS	24	/* max # of subrooms in a given room */ 283. #define DOORMAX		120	/* max number of doors per level */ 284.  285.  #define BUFSZ		256	/* for getlin buffers */ 286. #define QBUFSZ		128	/* for building question text */ 287.  288.  #define PL_NSIZ		32	/* name of player, ghost, shopkeeper */ 289. #define PL_CSIZ		20	/* sizeof pl_character */ 290. #define PL_FSIZ		32	/* fruit name */ 291. #define PL_PSIZ		63	/* player-given names for pets, other 292. 				 * monsters, objects */ 293.  294.  #define MAXDUNGEON	10	/* current maximum number of dungeons */ 295. #define MAXLEVEL	30	/* max number of levels in one dungeon */ 296. #define MAXSTAIRS	1	/* max # of special stairways in a dungeon */ 297. #define ALIGNWEIGHT	4	/* generation weight of alignment */ 298.  299.  #define MAXULEV		30	/* max character experience level */ 300.  301.  #define MAXMONNO	120	/* geno monst after this number killed */ 302. #define MHPMAX		500	/* maximum monster hp */ 303.  304.  #endif /* GLOBAL_H */