Source:SLASH'EM 0.0.7E7F2/global.h

From NetHackWiki
Revision as of 17:51, 7 March 2008 by Kernigh bot (talk | contribs) (SLASH'EM 0.0.7E7F2/global.h moved to Source:SLASH'EM 0.0.7E7F2/global.h: Robot: moved page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Below is the full text to global.h from the source code of SLASH'EM 0.0.7E7F2. To link to a particular line, write [[SLASH'EM 0.0.7E7F2/global.h#line123]], for example.

The latest source code for vanilla NetHack is at Source code.


The NetHack General Public License applies to screenshots, source code and other content from NetHack.

This content was modified from the original NetHack source code distribution (by splitting up NetHack content between wiki pages, and possibly further editing). See the page history for a list of who changed it, and on what dates.

1.    /*	SCCS Id: @(#)global.h	3.4	2003/08/31	*/
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 <stdio.h>
9.    
10.   /* #define ALPHA */	/* if an alpha-test copy */
11.   /* #define BETA */	/* if an alpha- or beta-test copy */
12.   /* #define OBJ_SANITY *//* Object sanity checks for all players */
13.   
14.   /*
15.    * Files expected to exist in the playground directory if file areas are not
16.    * enabled and in the named areas otherwise.
17.    * [WAC] - put a NH_ prefix on all the names to prevent conflicts
18.    */
19.   
20.   #define NH_RECORD		"record"  /* a file containing list of topscorers */
21.   #define NH_RECORD_AREA	FILE_AREA_VAR
22.   #define NH_HELP		"help"	  /* a file containing command descriptions */
23.   #define NH_HELP_AREA	FILE_AREA_SHARE
24.   #define NH_SHELP		"hh"		/* abbreviated form of the same */
25.   #define NH_SHELP_AREA	FILE_AREA_SHARE
26.   #define NH_DEBUGHELP	"wizhelp"	/* a file containing debug mode cmds */
27.   #define NH_DEBUGHELP_AREA	FILE_AREA_SHARE
28.   #define NH_RUMORFILE	"rumors"	/* a file with fortune cookies */
29.   #define NH_RUMORAREA	FILE_AREA_SHARE
30.   #define NH_ORACLEFILE	"oracles"	/* a file with oracular information */
31.   #define NH_ORACLEAREA	FILE_AREA_SHARE
32.   #define NH_DATAFILE	"data"	/* a file giving the meaning of symbols used */
33.   #define NH_DATAAREA	FILE_AREA_SHARE
34.   #define NH_CMDHELPFILE	"cmdhelp"	/* file telling what commands do */
35.   #define NH_CMDHELPAREA	FILE_AREA_SHARE
36.   #define NH_HISTORY		"history"	/* a file giving nethack's history */
37.   #define NH_HISTORY_AREA	FILE_AREA_SHARE
38.   #define NH_LICENSE		"license"	/* file with license information */
39.   #define NH_LICENSE_AREA	FILE_AREA_DOC
40.   #define NH_OPTIONFILE	"opthelp"	/* a file explaining runtime options */
41.   #define NH_OPTIONAREA	FILE_AREA_SHARE
42.   #define NH_OPTIONS_USED	"options"	/* compile-time options, for #version */
43.   #define NH_OPTIONS_USED_AREA FILE_AREA_SHARE
44.   #ifdef SHORT_FILENAMES
45.   # define NH_GUIDEBOOK       "guideboo.txt"        /* Nethack Guidebook*/
46.   #else
47.   #define NH_GUIDEBOOK       "Guidebook.txt"       /* Nethack Guidebook*/
48.   #endif
49.   #define NH_GUIDEBOOK_AREA	FILE_AREA_DOC
50.   
51.   #define LEV_EXT	".lev"		/* extension for special level files */
52.   
53.   
54.   /* Assorted definitions that may depend on selections in config.h. */
55.   
56.   /*
57.    * for DUMB preprocessor and compiler, e.g., cpp and pcc supplied
58.    * with Microport SysV/AT, which have small symbol tables;
59.    * DUMB if needed is defined in CFLAGS
60.    */
61.   #ifdef DUMB
62.   #ifdef BITFIELDS
63.   #undef BITFIELDS
64.   #endif
65.   #ifndef STUPID
66.   #define STUPID
67.   #endif
68.   #endif	/* DUMB */
69.   
70.   /*
71.    * type xchar: small integers in the range 0 - 127, usually coordinates
72.    * although they are nonnegative they must not be declared unsigned
73.    * since otherwise comparisons with signed quantities are done incorrectly
74.    */
75.   typedef schar	xchar;
76.   #ifndef SKIP_BOOLEAN
77.   typedef xchar	boolean;		/* 0 or 1 */
78.   #endif
79.   
80.   #ifndef TRUE		/* defined in some systems' native include files */
81.   #define TRUE	((boolean)1)
82.   #define FALSE	((boolean)0)
83.   #endif
84.   
85.   #ifndef STRNCMPI
86.   # if !defined(__SASC_60) && !defined(__MINGW32__) /* SAS/C already shifts to stricmp */
87.   #  define strcmpi(a,b) strncmpi((a),(b),-1)
88.   # endif
89.   #endif
90.   
91.   /* comment out to test effects of each #define -- these will probably
92.    * disappear eventually
93.    */
94.   #ifdef INTERNAL_COMP
95.   # define RLECOMP	/* run-length compression of levl array - JLee */
96.   # define ZEROCOMP	/* zero-run compression of everything - Olaf Seibert */
97.   #endif
98.   
99.   /* #define SPECIALIZATION */	/* do "specialized" version of new topology */
100.  
101.  
102.  #ifdef BITFIELDS
103.  #define Bitfield(x,n)	unsigned x:n
104.  #else
105.  #define Bitfield(x,n)	uchar x
106.  #endif
107.  
108.  #ifdef UNWIDENED_PROTOTYPES
109.  # define CHAR_P char
110.  # define SCHAR_P schar
111.  # define UCHAR_P uchar
112.  # define XCHAR_P xchar
113.  # define SHORT_P short
114.  #ifndef SKIP_BOOLEAN
115.  # define BOOLEAN_P boolean
116.  #endif
117.  # define ALIGNTYP_P aligntyp
118.  #else
119.  # ifdef WIDENED_PROTOTYPES
120.  #  define CHAR_P int
121.  #  define SCHAR_P int
122.  #  define UCHAR_P int
123.  #  define XCHAR_P int
124.  #  define SHORT_P int
125.  #  define BOOLEAN_P int
126.  #  define ALIGNTYP_P int
127.  # endif
128.  #endif
129.  #if defined(ULTRIX_PROTO) && !defined(__STDC__)
130.  /* The ultrix 2.0 and 2.1 compilers (on Ultrix 4.0 and 4.2 respectively) can't
131.   * handle "struct obj *" constructs in prototypes.  Their bugs are different,
132.   * but both seem to work if we put "void*" in the prototype instead.  This
133.   * gives us minimal prototype checking but avoids the compiler bugs.
134.   *
135.   * OBJ_P and MONST_P should _only_ be used for declaring function pointers.
136.   */
137.  #define OBJ_P void*
138.  #define MONST_P void*
139.  #else
140.  #define OBJ_P struct obj*
141.  #define MONST_P struct monst*
142.  #endif
143.  
144.  #define SIZE(x)	(int)(sizeof(x) / sizeof(x[0]))
145.  
146.  
147.  /* A limit for some NetHack int variables.  It need not, and for comparable
148.   * scoring should not, depend on the actual limit on integers for a
149.   * particular machine, although it is set to the minimum required maximum
150.   * signed integer for C (2^15 -1).
151.   */
152.  #define LARGEST_INT	32767
153.  
154.  
155.  #ifdef REDO
156.  #define Getchar pgetchar
157.  #endif
158.  
159.  
160.  #include "coord.h"
161.  /*
162.   * Automatic inclusions for the subsidiary files.
163.   * Please don't change the order.  It does matter.
164.   */
165.  
166.  #ifdef VMS
167.  #include "vmsconf.h"
168.  #endif
169.  
170.  #ifdef UNIX
171.  #include "unixconf.h"
172.  #endif
173.  
174.  #ifdef OS2
175.  #include "os2conf.h"
176.  #endif
177.  
178.  #ifdef MSDOS
179.  #include "pcconf.h"
180.  #endif
181.  
182.  #ifdef TOS
183.  #include "tosconf.h"
184.  #endif
185.  
186.  #ifdef AMIGA
187.  #include "amiconf.h"
188.  #endif
189.  
190.  #ifdef MAC
191.  #include "macconf.h"
192.  #endif
193.  
194.  #ifdef __BEOS__
195.  #include "beconf.h"
196.  #endif
197.  
198.  #ifdef WIN32
199.  #ifdef WIN_CE
200.  #include "wceconf.h"
201.  #else
202.  #include "ntconf.h"
203.  #endif
204.  #endif
205.  
206.  #ifndef FILE_AREAS
207.  
208.  #define fopen_datafile_area(area, filename, mode, use_spfx) \
209.   		fopen_datafile(filename, mode, use_spfx)
210.  #define lock_file_area(area, filename, prefix, retryct) \
211.   		lock_file(filename, prefix, retryct)
212.  #define unlock_file_area(area, filename) unlock_file(filename)
213.  #define dlb_fopen_area(area, name, mode) dlb_fopen(name, mode)
214.  
215.  /*
216.   * ALI
217.   *
218.   * By defining these, functions can pass them around even though they're
219.   * not actually used. This can make the code easier to read at the cost
220.   * of some efficiency. Given the high overhead of dealing with files anyway,
221.   * this is often a good trade-off.
222.   */
223.  
224.  #define FILE_AREA_VAR		NULL
225.  #define FILE_AREA_SAVE		NULL
226.  #define FILE_AREA_LEVL		NULL
227.  #define FILE_AREA_BONES		NULL
228.  #define FILE_AREA_SHARE		NULL
229.  #define FILE_AREA_UNSHARE	NULL
230.  
231.  #endif
232.  
233.  /* Displayable name of this port; don't redefine if defined in *conf.h */
234.  #ifndef PORT_ID
235.  # ifdef AMIGA
236.  #  define PORT_ID	"Amiga"
237.  # endif
238.  # ifdef MAC
239.  #  define PORT_ID	"Mac"
240.  #  if 0
241.  #  ifdef MAC_MPW_PPC
242.  #   define PORT_SUB_ID "PPC"
243.  #  else
244.  #   ifdef MAC_MPW_68K
245.  #    define PORT_SUB_ID "68K"
246.  #   endif
247.  #  endif
248.  #  endif
249.  # endif
250.  # ifdef MSDOS
251.  #  ifdef PC9800
252.  #  define PORT_ID	"PC-9800"
253.  #  else
254.  #  define PORT_ID	"PC"
255.  #  endif
256.  #  ifdef DJGPP
257.  #  define PORT_SUB_ID	"djgpp"
258.  #  else
259.  #   ifdef OVERLAY
260.  #  define PORT_SUB_ID	"overlaid"
261.  #   else
262.  #  define PORT_SUB_ID	"non-overlaid"
263.  #   endif
264.  #  endif
265.  # endif
266.  # ifdef OS2
267.  #  define PORT_ID	"OS/2"
268.  # endif
269.  # ifdef TOS
270.  #  define PORT_ID	"ST"
271.  # endif
272.  # ifdef UNIX
273.  #  define PORT_ID	"Unix"
274.  # endif
275.  # ifdef VMS
276.  #  define PORT_ID	"VMS"
277.  # endif
278.  # ifdef WIN32
279.  #  define PORT_ID	"Windows"
280.  #  ifndef PORT_SUB_ID
281.  #   if defined(MSWIN_GRAPHICS) || defined(GTK_GRAPHICS)
282.  #    define PORT_SUB_ID	"graphical"
283.  #   else
284.  #    define PORT_SUB_ID	"tty"
285.  #   endif
286.  #  endif
287.  # endif
288.  #endif
289.  
290.  #if defined(MICRO)
291.  #if !defined(AMIGA) && !defined(TOS) && !defined(OS2_HPFS)
292.  #define SHORT_FILENAMES		/* filenames are 8.3 */
293.  #endif
294.  #endif
295.  
296.  #ifdef VMS
297.  /* vms_exit() (sys/vms/vmsmisc.c) expects the non-VMS EXIT_xxx values below.
298.   * these definitions allow all systems to be treated uniformly, provided
299.   * main() routines do not terminate with return(), whose value is not
300.   * so massaged.
301.   */
302.  # ifdef EXIT_SUCCESS
303.  #  undef EXIT_SUCCESS
304.  # endif
305.  # ifdef EXIT_FAILURE
306.  #  undef EXIT_FAILURE
307.  # endif
308.  #endif
309.  
310.  #ifndef EXIT_SUCCESS
311.  # define EXIT_SUCCESS 0
312.  #endif
313.  #ifndef EXIT_FAILURE
314.  # define EXIT_FAILURE 1
315.  #endif
316.  
317.  #if defined(X11_GRAPHICS) || defined(QT_GRAPHICS) || defined(GNOME_GRAPHICS) || defined(MSWIN_GRAPHICS)
318.  # ifndef USE_TILES
319.  #  define USE_TILES		/* glyph2tile[] will be available */
320.  # endif
321.  #endif
322.  #if defined(AMII_GRAPHICS) || defined(GEM_GRAPHICS) || defined(GTK_GRAPHICS)
323.  # ifndef USE_TILES
324.  #  define USE_TILES
325.  # endif
326.  #endif
327.  #if defined(GL_GRAPHICS) || defined(SDL_GRAPHICS)
328.  # ifndef USE_TILES
329.  #  define USE_TILES
330.  # endif
331.  #endif
332.  
333.  #define Sprintf  (void) sprintf
334.  #define Strcat   (void) strcat
335.  #define Strcpy   (void) strcpy
336.  #ifdef NEED_VARARGS
337.  #define Vprintf  (void) vprintf
338.  #define Vfprintf (void) vfprintf
339.  #define Vsprintf (void) vsprintf
340.  #endif
341.  
342.  
343.  /* primitive memory leak debugging; see alloc.c */
344.  #ifdef MONITOR_HEAP
345.  extern long *FDECL(nhalloc, (unsigned int,const char *,int));
346.  extern void FDECL(nhfree, (genericptr_t,const char *,int));
347.  #ifdef INTERNAL_MALLOC
348.  extern void FDECL(monitor_heap_push, (const char *, int));
349.  extern unsigned long FDECL(monitor_heap_pop, (const char *, int, unsigned long));
350.  extern void FDECL(monitor_heap_set_subid, (const char *, int ));
351.  extern size_t NDECL(monitor_heap_getmem);
352.  extern boolean FDECL(monitor_heap_trace, (boolean flag));
353.  extern void NDECL(monitor_heap_mark);
354.  #endif
355.  # ifndef __FILE__
356.  #  define __FILE__ ""
357.  # endif
358.  # ifndef __LINE__
359.  #  define __LINE__ 0
360.  # endif
361.  # define alloc(a) nhalloc(a,__FILE__,(int)__LINE__)
362.  # define free(a) nhfree(a,__FILE__,(int)__LINE__)
363.  #else	/* !MONITOR_HEAP */
364.  extern long *FDECL(alloc, (unsigned int));		/* alloc.c */
365.  #endif
366.  
367.  /* Used for consistency checks of various data files; declare it here so
368.     that utility programs which include config.h but not hack.h can see it. */
369.  struct version_info {
370.  	unsigned long	incarnation;	/* actual version number */
371.  	unsigned long	feature_set;	/* bitmask of config settings */
372.  	unsigned long	entity_count;	/* # of monsters and objects */
373.  	unsigned long	struct_sizes;	/* size of key structs */
374.  };
375.  
376.  /*
377.   * Configurable internal parameters.
378.   *
379.   * Please be very careful if you are going to change one of these.  Any
380.   * changes in these parameters, unless properly done, can render the
381.   * executable inoperative.
382.   */
383.  
384.  /* size of terminal screen is (at least) (ROWNO+3) by COLNO */
385.  #define COLNO	80
386.  #define ROWNO	21
387.  
388.  #define MAXNROFROOMS	40	/* max number of rooms per level */
389.  #define MAX_SUBROOMS	24	/* max # of subrooms in a given room */
390.  #define DOORMAX		120	/* max number of doors per level */
391.  
392.  #define BUFSZ		256	/* for getlin buffers */
393.  #define QBUFSZ		128	/* for building question text */
394.  #define TBUFSZ		300	/* toplines[] buffer max msg: 3 81char names */
395.  				/* plus longest prefix plus a few extra words */
396.  
397.  #define PL_NSIZ		32	/* name of player, ghost, shopkeeper */
398.  #define PL_CSIZ		32	/* sizeof pl_character */
399.  #define PL_FSIZ		32	/* fruit name */
400.  #define PL_PSIZ		63	/* player-given names for pets, other
401.  				 * monsters, objects */
402.  
403.  #define MAXDUNGEON	32	/* current maximum number of dungeons */
404.  #define MAXLEVEL	50	/* max number of levels in one dungeon */
405.  #define MAXSTAIRS	1	/* max # of special stairways in a dungeon */
406.  #define ALIGNWEIGHT	10	/* generation weight of alignment */
407.  
408.  #define MAXULEV		30	/* max character experience level */
409.  
410.  #define MAXMONNO	120	/* extinct monst after this number created */
411.  #define MHPMAX		500	/* maximum monster hp */
412.  
413.  #endif /* GLOBAL_H */