Source:NetHack 3.4.0/sp lev.h

From NetHackWiki
Jump to navigation Jump to search

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

Warning! This is the source code from an old release. For the latest release, see 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: @(#)sp_lev.h	3.4	1996/05/08	*/
2.    /* Copyright (c) 1989 by Jean-Christophe Collet			  */
3.    /* NetHack may be freely redistributed.  See license for details. */
4.    
5.    #ifndef SP_LEV_H
6.    #define SP_LEV_H
7.    
8.        /* wall directions */
9.    #define W_NORTH		1
10.   #define W_SOUTH		2
11.   #define W_EAST		4
12.   #define W_WEST		8
13.   #define W_ANY		(W_NORTH|W_SOUTH|W_EAST|W_WEST)
14.   
15.       /* MAP limits */
16.   #define MAP_X_LIM	76
17.   #define MAP_Y_LIM	21
18.   
19.       /* Per level flags */
20.   #define NOTELEPORT	1
21.   #define HARDFLOOR	2
22.   #define NOMMAP		4
23.   #define SHORTSIGHTED	8
24.   #define ARBOREAL	16
25.   
26.       /* special level types */
27.   #define SP_LEV_ROOMS	1
28.   #define SP_LEV_MAZE	2
29.   
30.   /*
31.    * Structures manipulated by the special levels loader & compiler
32.    */
33.   
34.   typedef union str_or_len {
35.   	char *str;
36.   	int   len;
37.   } Str_or_Len;
38.   
39.   typedef struct {
40.   	boolean init_present, padding;
41.   	char	fg, bg;
42.   	boolean smoothed, joined;
43.   	xchar	lit, walled;
44.   } lev_init;
45.   
46.   typedef struct {
47.   	xchar x, y, mask;
48.   } door;
49.   
50.   typedef struct {
51.   	xchar wall, pos, secret, mask;
52.   } room_door;
53.   
54.   typedef struct {
55.   	xchar x, y, chance, type;
56.   } trap;
57.   
58.   typedef struct {
59.   	Str_or_Len name, appear_as;
60.   	short id;
61.   	aligntyp align;
62.   	xchar x, y, chance, class, appear;
63.   	schar peaceful, asleep;
64.   } monster;
65.   
66.   typedef struct {
67.   	Str_or_Len name;
68.   	int   corpsenm;
69.   	short id, spe;
70.   	xchar x, y, chance, class, containment;
71.   	schar curse_state;
72.   } object;
73.   
74.   typedef struct {
75.   	xchar		x, y;
76.   	aligntyp	align;
77.   	xchar		shrine;
78.   } altar;
79.   
80.   typedef struct {
81.   	xchar x, y, dir, db_open;
82.   } drawbridge;
83.   
84.   typedef struct {
85.   	xchar x, y, dir;
86.   } walk;
87.   
88.   typedef struct {
89.   	xchar x1, y1, x2, y2;
90.   } digpos;
91.   
92.   typedef struct {
93.   	xchar x, y, up;
94.   } lad;
95.   
96.   typedef struct {
97.   	xchar x, y, up;
98.   } stair;
99.   
100.  typedef struct {
101.  	xchar x1, y1, x2, y2;
102.  	xchar rtype, rlit, rirreg;
103.  } region;
104.  
105.  /* values for rtype are defined in dungeon.h */
106.  typedef struct {
107.  	struct { xchar x1, y1, x2, y2; } inarea;
108.  	struct { xchar x1, y1, x2, y2; } delarea;
109.  	boolean in_islev, del_islev;
110.  	xchar rtype, padding;
111.  	Str_or_Len rname;
112.  } lev_region;
113.  
114.  typedef struct {
115.  	xchar x, y;
116.  	int   amount;
117.  } gold;
118.  
119.  typedef struct {
120.  	xchar x, y;
121.  	Str_or_Len engr;
122.  	xchar etype;
123.  } engraving;
124.  
125.  typedef struct {
126.  	xchar x, y;
127.  } fountain;
128.  
129.  typedef struct {
130.  	xchar x, y;
131.  } sink;
132.  
133.  typedef struct {
134.  	xchar x, y;
135.  } pool;
136.  
137.  typedef struct {
138.  	char halign, valign;
139.  	char xsize, ysize;
140.  	char **map;
141.  	char nrobjects;
142.  	char *robjects;
143.  	char nloc;
144.  	char *rloc_x;
145.  	char *rloc_y;
146.  	char nrmonst;
147.  	char *rmonst;
148.  	char nreg;
149.  	region **regions;
150.  	char nlreg;
151.  	lev_region **lregions;
152.  	char ndoor;
153.  	door **doors;
154.  	char ntrap;
155.  	trap **traps;
156.  	char nmonster;
157.  	monster **monsters;
158.  	char nobject;
159.  	object **objects;
160.  	char ndrawbridge;
161.  	drawbridge **drawbridges;
162.  	char nwalk;
163.  	walk **walks;
164.  	char ndig;
165.  	digpos **digs;
166.  	char npass;
167.  	digpos **passs;
168.  	char nlad;
169.  	lad **lads;
170.  	char nstair;
171.  	stair **stairs;
172.  	char naltar;
173.  	altar **altars;
174.  	char ngold;
175.  	gold **golds;
176.  	char nengraving;
177.  	engraving **engravings;
178.  	char nfountain;
179.  	fountain **fountains;
180.  } mazepart;
181.  
182.  typedef struct {
183.  	long flags;
184.  	lev_init init_lev;
185.  	schar filling;
186.  	char numpart;
187.  	mazepart **parts;
188.  } specialmaze;
189.  
190.  typedef struct _room {
191.  	char  *name;
192.  	char  *parent;
193.  	xchar x, y, w, h;
194.  	xchar xalign, yalign;
195.  	xchar rtype, chance, rlit, filled;
196.  	char ndoor;
197.  	room_door **doors;
198.  	char ntrap;
199.  	trap **traps;
200.  	char nmonster;
201.  	monster **monsters;
202.  	char nobject;
203.  	object **objects;
204.  	char naltar;
205.  	altar **altars;
206.  	char nstair;
207.  	stair **stairs;
208.  	char ngold;
209.  	gold **golds;
210.  	char nengraving;
211.  	engraving **engravings;
212.  	char nfountain;
213.  	fountain **fountains;
214.  	char nsink;
215.  	sink **sinks;
216.  	char npool;
217.  	pool **pools;
218.  	/* These three fields are only used when loading the level... */
219.  	int nsubroom;
220.  	struct _room *subrooms[MAX_SUBROOMS];
221.  	struct mkroom *mkr;
222.  } room;
223.  
224.  typedef struct {
225.  	struct {
226.  		xchar room;
227.  		xchar wall;
228.  		xchar door;
229.  	} src, dest;
230.  } corridor;
231.  
232.  /* used only by lev_comp */
233.  typedef struct {
234.  	long flags;
235.  	lev_init init_lev;
236.  	char nrobjects;
237.  	char *robjects;
238.  	char nrmonst;
239.  	char *rmonst;
240.  	xchar nroom;
241.  	room **rooms;
242.  	xchar ncorr;
243.  	corridor **corrs;
244.  } splev;
245.  
246.  #endif /* SP_LEV_H */