Source:NetHack 3.4.0/mkroom.h

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

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

1.   /*	SCCS Id: @(#)mkroom.h	3.4	1992/11/14	*/ 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.    /* NetHack may be freely redistributed. See license for details. */ 4.     5.    #ifndef MKROOM_H 6.   #define MKROOM_H 7.    8.    /* mkroom.h - types and structures for room and shop initialization */ 9.    10.   struct mkroom { 11.  	schar lx,hx,ly,hy;	/* usually xchar, but hx may be -1 */ 12.  	schar rtype;		/* type of room (zoo, throne, etc...) */ 13.  	schar rlit;		/* is the room lit ? */ 14.   	schar doorct;		/* door count */ 15.  	schar fdoor;		/* index for the first door of the room */ 16.  	schar nsubrooms;	/* number of subrooms */ 17.  	boolean irregular;	/* true if room is non-rectangular */ 18.  	struct mkroom *sbrooms[MAX_SUBROOMS];  /* Subrooms pointers */ 19.  	struct monst *resident; /* priest/shopkeeper/guard for this room */ 20.  };  21.    22.   struct shclass { 23.  	const char *name;	/* name of the shop type */ 24.  	char	symb;		/* this identifies the shop type */ 25.  	int	prob;		/* the shop type probability in % */ 26.  	schar	shdist;		/* object placement type */ 27.  #define D_SCATTER	0	/* normal placement */ 28.  #define D_SHOP		1	/* shop-like placement */ 29.  #define D_TEMPLE	2	/* temple-like placement */ 30.  	struct itp { 31.  	    int iprob;		/* probability of an item type */ 32.  	    int itype;	/* item type: if >=0 a class, if < 0 a specific item */ 33.  	} iprobs[5]; 34.  	const char **shknms;	/* list of shopkeeper names for this type */ 35.  };  36.    37.   extern NEARDATA struct mkroom rooms[(MAXNROFROOMS+1)*2]; 38.  extern NEARDATA struct mkroom* subrooms; 39.  /* the normal rooms on the current level are described in rooms[0..n] for 40.   * some n<MAXNROFROOMS 41.   * the vault, if any, is described by rooms[n+1] 42.   * the next rooms entry has hx -1 as a flag 43.   * there is at most one non-vault special room on a level 44.   */  45.    46.   extern struct mkroom *dnstairs_room, *upstairs_room, *sstairs_room; 47.   48.   extern NEARDATA coord doors[DOORMAX]; 49.   50.   /* values for rtype in the room definition structure */ 51.  #define OROOM		 0	/* ordinary room */ 52.  #define COURT		 2	/* contains a throne */ 53.  #define SWAMP		 3	/* contains pools */ 54.  #define VAULT		 4	/* contains piles of gold */ 55.  #define BEEHIVE		 5	/* contains killer bees and royal jelly */ 56.  #define MORGUE		 6	/* contains corpses, undead and ghosts */ 57.  #define BARRACKS	 7	/* contains soldiers and their gear */ 58.  #define ZOO		 8	/* floor covered with treasure and monsters */ 59.  #define DELPHI		 9	/* contains Oracle and peripherals */ 60.  #define TEMPLE		10	/* contains a shrine */ 61.  #define LEPREHALL	11	/* leprechaun hall (Tom Proudfoot) */ 62.  #define COCKNEST	12	/* cockatrice nest (Tom Proudfoot) */ 63.  #define ANTHOLE		13	/* ants (Tom Proudfoot) */ 64.  #define SHOPBASE	14	/* everything above this is a shop */ 65.  #define ARMORSHOP	15	/* specific shop defines for level compiler */ 66.  #define SCROLLSHOP	16 67.  #define POTIONSHOP	17 68.  #define WEAPONSHOP	18 69.  #define FOODSHOP	19 70.  #define RINGSHOP	20 71.  #define WANDSHOP	21 72.  #define TOOLSHOP	22 73.  #define BOOKSHOP	23 74.  #define UNIQUESHOP	24	/* shops here & above not randomly gen'd. */ 75.  #define CANDLESHOP	24 76.  #define MAXRTYPE	24	/* maximum valid room type */ 77.   78.   /* Special type for search_special */ 79.  #define ANY_TYPE	(-1) 80.  #define ANY_SHOP	(-2) 81.   82.   #define NO_ROOM		0	/* indicates lack of room-occupancy */ 83.  #define SHARED		1	/* indicates normal shared boundary */ 84.  #define SHARED_PLUS	2	/* indicates shared boundary - extra adjacent- 85.  				 * square searching required */ 86.   87.   #define ROOMOFFSET	3	/* 88.  				 * (levl[x][y].roomno - ROOMOFFSET) gives 89.  				 * rooms[] index, for inside-squares and 90.  				 * non-shared boundaries. 91.  				 */  92.    93.   #define IS_ROOM_PTR(x)		((x) >= rooms && (x) < rooms + MAXNROFROOMS) 94.  #define IS_ROOM_INDEX(x)	((x) >= 0 && (x) < MAXNROFROOMS) 95.  #define IS_SUBROOM_PTR(x)	((x) >= subrooms && \  96.   				 (x) < subrooms + MAXNROFROOMS) 97.  #define IS_SUBROOM_INDEX(x)	((x) > MAXNROFROOMS && (x) < (MAXNROFROOMS*2)) 98.  #define ROOM_INDEX(x)		((x) - rooms) 99.  #define SUBROOM_INDEX(x)	((x) - subrooms) 100. #define IS_LAST_ROOM_PTR(x)	(ROOM_INDEX(x) == nroom) 101. #define IS_LAST_SUBROOM_PTR(x)	(!nsubroom || SUBROOM_INDEX(x) == nsubroom) 102.  103.  #endif /* MKROOM_H */