Wikia

Wikihack

Source:Sp lev.h

2,032pages on
this wiki
Talk0

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

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.    
The NetHack General Public License applies to screenshots, source code and other content from NetHack.
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 */

Around Wikia's network

Random Wiki