Wikia

Wikihack

Source:SLASH'EM 0.0.7E7F2/dungeon.h

2,032pages on
this wiki
Talk0

Below is the full text to dungeon.h from the source code of SLASH'EM 0.0.7E7F2. To link to a particular line, write [[SLASH'EM 0.0.7E7F2/dungeon.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.
1.    /*	SCCS Id: @(#)dungeon.h	3.4	1999/07/02	*/
2.    /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3.    /* NetHack may be freely redistributed.  See license for details. */
4.    
5.    #ifndef DUNGEON_H
6.    #define DUNGEON_H
7.    
8.    typedef struct d_flags {	/* dungeon/level type flags */
9.    	Bitfield(town, 1);	/* is this a town? (levels only) */
10.   	Bitfield(hellish, 1);	/* is this part of hell? */
11.   	Bitfield(maze_like, 1);	/* is this a maze? */
12.   	Bitfield(rogue_like, 1); /* is this an old-fashioned presentation? */
13.   	Bitfield(align, 3);	/* dungeon alignment. */
14.   	Bitfield(unused, 1);	/* etc... */
15.   } d_flags;
16.   
17.   typedef struct d_level {	/* basic dungeon level element */
18.   	xchar	dnum;		/* dungeon number */
19.   	xchar	dlevel;		/* level number */
20.   } d_level;
21.   
22.   typedef struct s_level {	/* special dungeon level element */
23.   	struct	s_level	*next;
24.   	d_level	dlevel;		/* dungeon & level numbers */
25.   	char	proto[15];	/* name of prototype file (eg. "tower") */
26.   	char    boneid;		/* character to id level in bones files */
27.   	uchar	rndlevs;	/* no. of randomly available similar levels */
28.   	d_flags	flags;		/* type flags */
29.   } s_level;
30.   
31.   typedef struct stairway {	/* basic stairway identifier */
32.   	xchar	sx, sy;		/* x / y location of the stair */
33.   	d_level	tolev;		/* where does it go */
34.   	char	up;		/* what type of stairway (up/down) */
35.   } stairway;
36.   
37.   /* level region types */
38.   #define LR_DOWNSTAIR 0
39.   #define LR_UPSTAIR 1
40.   #define LR_PORTAL 2
41.   #define LR_BRANCH 3
42.   #define LR_TELE 4
43.   #define LR_UPTELE 5
44.   #define LR_DOWNTELE 6
45.   
46.   typedef struct dest_area {	/* non-stairway level change indentifier */
47.   	xchar	lx, ly;		/* "lower" left corner (near [0,0]) */
48.   	xchar	hx, hy;		/* "upper" right corner (near [COLNO,ROWNO]) */
49.   	xchar	nlx, nly;	/* outline of invalid area */
50.   	xchar	nhx, nhy;	/* opposite corner of invalid area */
51.   } dest_area;
52.   
53.   typedef struct dungeon {	/* basic dungeon identifier */
54.   	char	dname[24];	/* name of the dungeon (eg. "Hell") */
55.   	char	proto[15];	/* name of prototype file (eg. "tower") */
56.   	char	boneid;		/* character to id dungeon in bones files */
57.   	d_flags	flags;		/* dungeon flags */
58.   	xchar	entry_lev;	/* entry level */
59.   	xchar	num_dunlevs;	/* number of levels in this dungeon */
60.   	xchar	dunlev_ureached; /* how deep you have been in this dungeon */
61.   	int	ledger_start,	/* the starting depth in "real" terms */
62.   		depth_start;	/* the starting depth in "logical" terms */
63.   } dungeon;
64.   
65.   /*
66.    * A branch structure defines the connection between two dungeons.  They
67.    * will be ordered by the dungeon number/level number of 'end1'.  Ties
68.    * are resolved by 'end2'.  'Type' uses 'end1' arbitrarily as the primary
69.    * point.
70.    */
71.   typedef struct branch {
72.       struct branch *next;	/* next in the branch chain */
73.       int		  id;		/* branch identifier */
74.       int		  type;		/* type of branch */
75.       d_level	  end1;		/* "primary" end point */
76.       d_level	  end2;		/* other end point */
77.       boolean	  end1_up;	/* does end1 go up? */
78.   } branch;
79.   
80.   /* branch types */
81.   #define BR_STAIR   0	/* "Regular" connection, 2 staircases. */
82.   #define BR_NO_END1 1	/* "Regular" connection.  However, no stair from  */
83.   			/*	end1 to end2.  There is a stair from end2 */
84.   			/*	to end1.				  */
85.   #define BR_NO_END2 2	/* "Regular" connection.  However, no stair from  */
86.   			/*	end2 to end1.  There is a stair from end1 */
87.   			/*	to end2.				  */
88.   #define BR_PORTAL  3	/* Connection by magic portals (traps) */
89.   
90.   
91.   /* A particular dungeon contains num_dunlevs d_levels with dlevel 1..
92.    * num_dunlevs.  Ledger_start and depth_start are bases that are added
93.    * to the dlevel of a particular d_level to get the effective ledger_no
94.    * and depth for that d_level.
95.    *
96.    * Ledger_no is a bookkeeping number that gives a unique identifier for a
97.    * particular d_level (for level.?? files, e.g.).
98.    *
99.    * Depth corresponds to the number of floors below the surface.
100.   */
101.  #define Is_astralevel(x)	(on_level(x, &astral_level))
102.  #define Is_earthlevel(x)	(on_level(x, &earth_level))
103.  #define Is_waterlevel(x)	(on_level(x, &water_level))
104.  #define Is_firelevel(x)		(on_level(x, &fire_level))
105.  #define Is_airlevel(x)		(on_level(x, &air_level))
106.  #define Is_medusa_level(x)	(on_level(x, &medusa_level))
107.  #define Is_oracle_level(x)	(on_level(x, &oracle_level))
108.  #define Is_valley(x)		(on_level(x, &valley_level))
109.  #define Is_juiblex_level(x)	(on_level(x, &juiblex_level))
110.  #define Is_asmo_level(x)	(on_level(x, &asmodeus_level))
111.  #define Is_baal_level(x)	(on_level(x, &baalzebub_level))
112.  #define Is_wiz1_level(x)	(on_level(x, &wiz1_level))
113.  #define Is_wiz2_level(x)	(on_level(x, &wiz2_level))
114.  #define Is_wiz3_level(x)	(on_level(x, &wiz3_level))
115.  #define Is_sanctum(x)		(on_level(x, &sanctum_level))
116.  #define Is_portal_level(x)	(on_level(x, &portal_level))
117.  #define Is_rogue_level(x)	(on_level(x, &rogue_level))
118.  #define Is_stronghold(x)	(on_level(x, &stronghold_level))
119.  #define Is_bigroom(x)		(on_level(x, &bigroom_level))
120.  
121.  #define Is_demogorgon_level(x)  (on_level(x, &demogorgon_level))
122.  #define Is_yeenoghu_level(x)    (on_level(x, &yeenoghu_level))
123.  #define Is_geryon_level(x)      (on_level(x, &geryon_level))
124.  #define Is_dispater_level(x)    (on_level(x, &dispater_level))
125.  
126.  #define Is_lawful_quest(x)	(on_level(x, &lawful_quest_level))
127.  #define Is_neutral_quest(x)	(on_level(x, &neutral_quest_level))
128.  #define Is_chaotic_quest(x)	(on_level(x, &chaotic_quest_level))
129.  #define Is_aligned_quest(x)	(Is_lawful_quest(x) || Is_neutral_quest(x) || \
130.  				 Is_chaotic_quest(x))
131.  
132.  #define Is_qstart(x)		(on_level(x, &qstart_level))
133.  #define Is_qlocate(x)		(on_level(x, &qlocate_level))
134.  #define Is_nemesis(x)		(on_level(x, &nemesis_level))
135.  #define Is_knox(x)		(on_level(x, &knox_level))
136.  #ifdef BLACKMARKET
137.  #define Is_blackmarket(x)       (on_level(x, &blackmarket_level))
138.  #endif /* BLACKMARKET */
139.  
140.  #define In_sokoban(x)		((x)->dnum == sokoban_dnum)
141.  #define Inhell			In_hell(&u.uz)	/* now gehennom */
142.  #define In_endgame(x)		((x)->dnum == astral_level.dnum)
143.  
144.  #define within_bounded_area(X,Y,LX,LY,HX,HY) \
145.  		((X) >= (LX) && (X) <= (HX) && (Y) >= (LY) && (Y) <= (HY))
146.  
147.  
148.  /* monster and object migration codes */
149.  
150.  #define MIGR_NOWHERE	      (-1)	/* failure flag for down_gate() */
151.  #define MIGR_RANDOM		0
152.  #define MIGR_APPROX_XY		1	/* approximate coordinates */
153.  #define MIGR_EXACT_XY		2	/* specific coordinates */
154.  #define MIGR_STAIRS_UP		3
155.  #define MIGR_STAIRS_DOWN	4
156.  #define MIGR_LADDER_UP		5
157.  #define MIGR_LADDER_DOWN	6
158.  #define MIGR_SSTAIRS		7	/* dungeon branch */
159.  #define MIGR_PORTAL		8	/* magic portal */
160.  #define MIGR_NEAR_PLAYER	9	/* mon: followers; obj: trap door */
161.  
162.  /* level information (saved via ledger number) */
163.  
164.  struct linfo {
165.  	unsigned char	flags;
166.  #define VISITED		0x01	/* hero has visited this level */
167.  #define FORGOTTEN	0x02	/* hero will forget this level when reached */
168.  #define LFILE_EXISTS	0x04	/* a level file exists for this level */
169.  /*
170.   * Note:  VISITED and LFILE_EXISTS are currently almost always set at the
171.   * same time.  However they _mean_ different things.
172.   */
173.  
174.  #ifdef MFLOPPY
175.  # define FROMPERM        1      /* for ramdisk use */
176.  # define TOPERM          2      /* for ramdisk use */
177.  # define ACTIVE          1
178.  # define SWAPPED         2
179.  	int	where;
180.  	long	time;
181.  	long	size;
182.  #endif /* MFLOPPY */
183.  };
184.  
185.  #endif /* DUNGEON_H */

Around Wikia's network

Random Wiki