Source:SLASH'EM 0.0.7E7F2/sp lev.h
Revision as of 18:24, 7 March 2008 by Kernigh bot (talk | contribs) (SLASH'EM 0.0.7E7F2/sp lev.h moved to Source:SLASH'EM 0.0.7E7F2/sp lev.h: Robot: moved page)
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 */