Source:SLASH'EM 0.0.7E7F2/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 SLASH'EM 0.0.7E7F2. To link to a particular line, write [[SLASH'EM 0.0.7E7F2/sp_lev.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: @(#)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.   #define SPOOKY		32
26.   #define LETHE		64		/* All water on level is Lethe-ized */
27.   
28.       /* special level types */
29.   #define SP_LEV_ROOMS	1
30.   #define SP_LEV_MAZE	2
31.   
32.       /* object flags */
33.   #define OBJF_LIT	1
34.   #define OBJF_BURIED	2
35.   
36.   /*
37.    * Structures manipulated by the special levels loader & compiler
38.    */
39.   
40.   typedef union str_or_len {
41.   	char *str;
42.   	int   len;
43.   } Str_or_Len;
44.   
45.   typedef struct {
46.   	boolean	init_present, padding;
47.   	char	fg, bg;
48.   	boolean	smoothed, joined;
49.   	xchar   lit, walled;
50.   } lev_init;
51.   
52.   typedef struct {
53.   	xchar x, y, mask;
54.   	short arti_key;		/* Index (ART_) of key for this door */
55.   } door;
56.   
57.   typedef struct {
58.   	xchar wall, pos, secret, mask;
59.   	short arti_key;		/* Index (ART_) of key for this door */
60.   } room_door;
61.   
62.   typedef struct {
63.   	xchar x, y, chance, type;
64.   } trap;
65.   
66.   typedef struct {
67.   	Str_or_Len name, appear_as;
68.   	short id;
69.   	aligntyp align;
70.   	xchar x, y, chance, class, appear;
71.   	schar peaceful, asleep;
72.   } monster;
73.   
74.   typedef struct {
75.   	Str_or_Len name;
76.   	int   corpsenm;
77.   	short id, spe;
78.   	xchar x, y, chance, class, containment;
79.   	schar curse_state;
80.   	long  oflags;		/* OBJF_foo flags */
81.   } object;
82.   
83.   typedef struct {
84.   	xchar		x, y;
85.   	aligntyp	align;
86.   	xchar		shrine;
87.   } altar;
88.   
89.   typedef struct {
90.   	xchar x, y, dir, db_open;
91.   } drawbridge;
92.   
93.   typedef struct {
94.   	xchar x, y, dir;
95.   } walk;
96.   
97.   typedef struct {
98.   	xchar x1, y1, x2, y2;
99.   } digpos;
100.  
101.  typedef struct {
102.  	xchar x, y, up;
103.  } lad;
104.  
105.  typedef struct {
106.  	xchar x, y, up;
107.  } stair;
108.  
109.  typedef struct {
110.  	xchar x1, y1, x2, y2;
111.  	xchar rtype, rlit, rirreg;
112.  } region;
113.  
114.  /* values for rtype are defined in dungeon.h */
115.  typedef struct {
116.  	struct { xchar x1, y1, x2, y2; } inarea;
117.  	struct { xchar x1, y1, x2, y2; } delarea;
118.  	boolean in_islev, del_islev;
119.  	xchar rtype, padding;
120.  	Str_or_Len rname;
121.  } lev_region;
122.  
123.  typedef struct {
124.  	xchar x, y;
125.  	int   amount;
126.  } gold;
127.  
128.  typedef struct {
129.  	xchar x, y;
130.  	Str_or_Len engr;
131.  	xchar etype;
132.  } engraving;
133.  
134.  typedef struct {
135.  	xchar x, y;
136.  } fountain;
137.  
138.  typedef struct {
139.  	xchar x, y;
140.  } sink;
141.  
142.  typedef struct {
143.  	xchar x, y;
144.  } pool;
145.  
146.  typedef struct {
147.  	char halign, valign;
148.  	char xsize, ysize;
149.  	char **map;
150.  	char nrobjects;
151.  	char *robjects;
152.  	char nlocset;
153.  	char *nloc;
154.  	char **rloc_x;
155.  	char **rloc_y;
156.  	char nrmonst;
157.  	char *rmonst;
158.  	char nreg;
159.  	region **regions;
160.  	char nlreg;
161.  	lev_region **lregions;
162.  	char nrndlreg;
163.  	lev_region **rndlregions;
164.  	char ndoor;
165.  	door **doors;
166.  	char ntrap;
167.  	trap **traps;
168.  	char nmonster;
169.  	monster **monsters;
170.  	char nobject;
171.  	object **objects;
172.  	char ndrawbridge;
173.  	drawbridge **drawbridges;
174.  	char nwalk;
175.  	walk **walks;
176.  	char ndig;
177.  	digpos **digs;
178.  	char npass;
179.  	digpos **passs;
180.  	char nlad;
181.  	lad **lads;
182.  	char nstair;
183.  	stair **stairs;
184.  	char naltar;
185.  	altar **altars;
186.  	char ngold;
187.  	gold **golds;
188.  	char nengraving;
189.  	engraving **engravings;
190.  	char nfountain;
191.  	fountain **fountains;
192.  } mazepart;
193.  
194.  typedef struct {
195.  	long flags;
196.  	lev_init init_lev;
197.  	schar filling;
198.  	char numpart;
199.  	mazepart **parts;
200.  } specialmaze;
201.  
202.  typedef struct _room {
203.  	char  *name;
204.  	char  *parent;
205.  	xchar x, y, w, h;
206.  	xchar xalign, yalign;
207.  	xchar rtype, chance, rlit, filled;
208.  	char ndoor;
209.  	room_door **doors;
210.  	char ntrap;
211.  	trap **traps;
212.  	char nmonster;
213.  	monster **monsters;
214.  	char nobject;
215.  	object **objects;
216.  	char naltar;
217.  	altar **altars;
218.  	char nstair;
219.  	stair **stairs;
220.  	char ngold;
221.  	gold **golds;
222.  	char nengraving;
223.  	engraving **engravings;
224.  	char nfountain;
225.  	fountain **fountains;
226.  	char nsink;
227.  	sink **sinks;
228.  	char npool;
229.  	pool **pools;
230.  	/* These three fields are only used when loading the level... */
231.  	int nsubroom;
232.  	struct _room *subrooms[MAX_SUBROOMS];
233.  	struct mkroom *mkr;
234.  } room;
235.  
236.  typedef struct {
237.  	struct {
238.  		xchar room;
239.  		xchar wall;
240.  		xchar door;
241.  	} src, dest;
242.  } corridor;
243.  
244.  #ifdef LEVEL_COMPILER
245.  /* used only by lev_comp */
246.  typedef struct {
247.  	long flags;
248.  	lev_init init_lev;
249.  	char nrobjects;
250.  	char *robjects;
251.  	char nrmonst;
252.  	char *rmonst;
253.  	xchar nroom;
254.  	room **rooms;
255.  	xchar ncorr;
256.  	corridor **corrs;
257.  } splev;
258.  
259.  struct coord {
260.  	int x, y;
261.  };
262.  #endif	/* LEVEL_COMPILER */
263.  
264.  #endif /* SP_LEV_H */