Source:NetHack 2.2a/rm.h

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

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

1.   /*	SCCS Id: @(#)rm.h	2.1	87/10/17 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.     4.    /*  5.     * The dungeon presentation graphics code and data structures were rewritten 6.    * and generalized for NetHack's release 2 by Eric S. Raymond (eric@snark) 7.    * building on Don G. Kneller's MS-DOS implementation. See options.c for 8.    * the code that permits the user to set the contents of the symbol structure. 9.    */  10.    11.   /* Level location types */ 12.  #define	HWALL 1 13.  #define	VWALL 2 14.  #define	SDOOR 3 15.  #define	SCORR 4 16.  #define	LDOOR 5 17.  #define	POOL	6	/* not yet fully implemented */ 18.  			/* this should in fact be a bit like lit */ 19.  #define	DOOR 7 20.  #define	CORR 8 21.  #define	ROOM 9 22.  #define	STAIRS 10 23.  #define FOUNTAIN 11 24.  #define THRONE 12 25.   26.   /*  27.    * Avoid using the level types in inequalities: 28.   *  these types are subject to change. 29.   * Instead, use one of the macros below. 30.   */  31.   #define	IS_WALL(typ)	((typ) <= VWALL) 32.  #define IS_ROCK(typ)	((typ) < POOL)		/* absolutely nonaccessible */ 33.  #define	ACCESSIBLE(typ)	((typ) >= DOOR)			/* good position */ 34.  #define	IS_ROOM(typ)		((typ) >= ROOM)		/* ROOM or STAIRS */ 35.  #ifdef RPH 36.  /* zappable positions include 1 in 5 doors. */ 37.   #define ZAP_POS(typ)	((typ) >= POOL || (((typ) == DOOR) && !rn2(5))) 38.  #define SPACE_POS(typ)	((typ) > DOOR) 39.  #else 40.  #define	ZAP_POS(typ)		((typ) > DOOR) 41.  #endif 42.  #define IS_POOL(typ)    ((typ) == POOL) 43.  #define IS_THRONE(typ)    ((typ) == THRONE) 44.  #define IS_FOUNTAIN(typ)        ((typ) == FOUNTAIN) 45.   46.   /*  47.    * The level-map symbols may be compiled in or defined at initialization time 48.   */  49.   #ifndef GRAPHICS 50.   51.   #define STONE_SYM	' ' 52.  #define VWALL_SYM	'|' 53.  #define HWALL_SYM	'-' 54.  #define TLCORN_SYM	'+' 55.  #define TRCORN_SYM	'+' 56.  #define BLCORN_SYM	'+' 57.  #define BRCORN_SYM	'+' 58.  #define DOOR_SYM	'+' 59.  #define ROOM_SYM	'.' 60.  #ifdef QUEST 61.  # define	CORR_SYM	':' 62.  #else 63.  # define	CORR_SYM	'#' 64.  #endif 65.  #define UP_SYM		'<' 66.  #define DN_SYM		'>' 67.  #define TRAP_SYM	'^' 68.  #define	POOL_SYM	'}' 69.  #define FOUNTAIN_SYM    '{' 70.  #define THRONE_SYM      '\\' 71.  #define WEB_SYM         '"'  72.   #else /* GRAPHICS */  73.    74.   /* screen symbols for using character graphics. */  75.   struct symbols {  76.       unsigned char stone, vwall, hwall, tlcorn, trcorn, blcorn, brcorn;  77.       unsigned char door, room, corr, upstair, dnstair, trap;  78.   #ifdef FOUNTAINS  79.       unsigned char pool, fountain;  80.   #endif  81.   #ifdef NEWCLASS  82.       unsigned char throne;  83.   #endif  84.   #ifdef SPIDERS  85.       unsigned char web;  86.   #endif  87.   };  88.   extern struct symbols showsyms, defsyms;  89.    90.   #define STONE_SYM	showsyms.stone  91.   #define VWALL_SYM	showsyms.vwall  92.   #define HWALL_SYM	showsyms.hwall  93.   #define TLCORN_SYM	showsyms.tlcorn  94.   #define TRCORN_SYM	showsyms.trcorn  95.   #define BLCORN_SYM	showsyms.blcorn  96.   #define BRCORN_SYM	showsyms.brcorn  97.   #define DOOR_SYM	showsyms.door 98.  #define ROOM_SYM	showsyms.room 99.  #define	CORR_SYM	showsyms.corr 100. #define UP_SYM		showsyms.upstair 101. #define DN_SYM		showsyms.dnstair 102. #define TRAP_SYM	showsyms.trap 103. #define	POOL_SYM	showsyms.pool 104. #define FOUNTAIN_SYM    showsyms.fountain 105. #define THRONE_SYM      showsyms.throne 106. #define WEB_SYM         showsyms.web 107. #endif 108.  109.  #define	ERRCHAR	']' 110.  111.  #define MAXPCHARS	17	/* maximum number of mapped characters */ 112.  113.  #define IS_CORNER(x)	((x) == TLCORN_SYM || (x) == TRCORN_SYM \  114.  			 || (x) == BLCORN_SYM || (x) == BRCORN_SYM) 115.  116.  /*  117.   * The structure describing a coordinate position. 118.  * Before adding fields, remember that this will significantly affect 119.  * the size of temporary files and save files. 120.  */  121.  #ifdef MSDOS 122. /* Save disk space by using unsigned char's instead of unsigned ints 123.  */  124.  struct rm { 125. 	uchar scrsym; 126. 	unsigned typ:5; 127. 	unsigned new:1; 128. 	unsigned seen:1; 129. 	unsigned lit:1; 130. };  131.  #else 132. struct rm { 133. 	char scrsym; 134. 	Bitfield(typ,5); 135. 	Bitfield(new,1); 136. 	Bitfield(seen,1); 137. 	Bitfield(lit,1); 138. };  139.  #endif /* MSDOS /**/ 140. extern struct rm levl[COLNO][ROWNO]; 141.  142.  #ifdef DGK 143. #define ACTIVE	1 144. #define SWAPPED	2 145.  146.  struct finfo { 147. 	int	where; 148. 	long	time; 149. 	long	size; 150. };  151.  extern struct finfo fileinfo[]; 152. #define ZFINFO	{ 0, 0L, 0L } 153. #endif