abstract
| - Below is the full text to decl.h from the source code of SLASH'EM 0.0.7E7F2. To link to a particular line, write [[SLASH'EM 0.0.7E7F2/decl.h#line123]], for example. The latest source code for vanilla NetHack is at Source code. 1. /* SCCS Id: @(#)decl.h 3.4 2001/12/10 */ 2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. /* NetHack may be freely redistributed. See license for details. */ 4. 5. #ifndef DECL_H 6. #define DECL_H 7. 8. #define E extern 9. 10. E int NDECL((*occupation)); 11. E int NDECL((*afternmv)); 12. 13. E const char *hname; 14. E int hackpid; 15. #if defined(UNIX) || defined(VMS) 16. E int locknum; 17. #endif 18. #ifdef DEF_PAGER 19. E char *catmore; 20. #endif /* DEF_PAGER */ 21. 22. E char SAVEF[]; 23. #ifdef MICRO 24. E char SAVEP[]; 25. #endif 26. 27. E NEARDATA int bases[MAXOCLASSES]; 28. 29. E NEARDATA int multi; 30. #if 0 31. E NEARDATA int warnlevel; 32. #endif 33. E NEARDATA int lastuse; 34. E NEARDATA int nextuse; 35. E NEARDATA int nroom; 36. E NEARDATA int nsubroom; 37. E NEARDATA int occtime; 38. 39. #define WARNCOUNT 6 /* number of different warning levels */ 40. E uchar warnsyms[WARNCOUNT]; 41. 42. E int x_maze_max, y_maze_max; 43. E int otg_temp; 44. 45. #ifdef REDO 46. E NEARDATA int in_doagain; 47. #endif 48. 49. E struct dgn_topology { /* special dungeon levels for speed */ 50. d_level d_oracle_level; 51. d_level d_bigroom_level; /* unused */ 52. #ifdef REINCARNATION 53. d_level d_rogue_level; 54. #endif 55. d_level d_medusa_level; 56. d_level d_mineend_level; 57. d_level d_stronghold_level; 58. d_level d_valley_level; 59. d_level d_wiz1_level; 60. d_level d_wiz2_level; 61. d_level d_wiz3_level; 62. d_level d_juiblex_level; 63. d_level d_orcus_level; 64. d_level d_baalzebub_level; /* unused */ 65. d_level d_demogorgon_level; /* unused */ 66. d_level d_dispater_level; /* unused */ 67. d_level d_geryon_level; /* unused */ 68. d_level d_yeenoghu_level; /* unused */ 69. d_level d_asmodeus_level; /* unused */ 70. d_level d_portal_level; /* only in goto_level() [do.c] */ 71. d_level d_sanctum_level; 72. d_level d_earth_level; 73. d_level d_water_level; 74. d_level d_fire_level; 75. d_level d_air_level; 76. d_level d_astral_level; 77. xchar d_tower_dnum; 78. xchar d_sokoban_dnum; 79. xchar d_mines_dnum, d_quest_dnum; 80. xchar d_spiders_dnum; 81. d_level d_lawful_quest_level; 82. d_level d_neutral_quest_level; 83. d_level d_chaotic_quest_level; 84. d_level d_qstart_level, d_qlocate_level, d_nemesis_level; 85. d_level d_knox_level; 86. #ifdef BLACKMARKET 87. d_level d_blackmarket_level; 88. #endif /* BLACKMARKET */ 89. } dungeon_topology; 90. /* macros for accesing the dungeon levels by their old names */ 91. #define oracle_level (dungeon_topology.d_oracle_level) 92. #define bigroom_level (dungeon_topology.d_bigroom_level) 93. #ifdef REINCARNATION 94. #define rogue_level (dungeon_topology.d_rogue_level) 95. #endif 96. #define medusa_level (dungeon_topology.d_medusa_level) 97. #define stronghold_level (dungeon_topology.d_stronghold_level) 98. #define valley_level (dungeon_topology.d_valley_level) 99. #define mineend_level (dungeon_topology.d_mineend_level) 100. #define wiz1_level (dungeon_topology.d_wiz1_level) 101. #define wiz2_level (dungeon_topology.d_wiz2_level) 102. #define wiz3_level (dungeon_topology.d_wiz3_level) 103. #define juiblex_level (dungeon_topology.d_juiblex_level) 104. #define orcus_level (dungeon_topology.d_orcus_level) 105. #define baalzebub_level (dungeon_topology.d_baalzebub_level) 106. #define yeenoghu_level (dungeon_topology.d_yeenoghu_level) 107. #define geryon_level (dungeon_topology.d_geryon_level) 108. #define dispater_level (dungeon_topology.d_dispater_level) 109. #define demogorgon_level (dungeon_topology.d_demogorgon_level) 110. #define asmodeus_level (dungeon_topology.d_asmodeus_level) 111. #define portal_level (dungeon_topology.d_portal_level) 112. #define sanctum_level (dungeon_topology.d_sanctum_level) 113. #define earth_level (dungeon_topology.d_earth_level) 114. #define water_level (dungeon_topology.d_water_level) 115. #define fire_level (dungeon_topology.d_fire_level) 116. #define air_level (dungeon_topology.d_air_level) 117. #define astral_level (dungeon_topology.d_astral_level) 118. #define tower_dnum (dungeon_topology.d_tower_dnum) 119. #define sokoban_dnum (dungeon_topology.d_sokoban_dnum) 120. #define mines_dnum (dungeon_topology.d_mines_dnum) 121. #define quest_dnum (dungeon_topology.d_quest_dnum) 122. #define qstart_level (dungeon_topology.d_qstart_level) 123. #define qlocate_level (dungeon_topology.d_qlocate_level) 124. #define nemesis_level (dungeon_topology.d_nemesis_level) 125. #define knox_level (dungeon_topology.d_knox_level) 126. #define spiders_dnum (dungeon_topology.d_spiders_dnum) 127. #define lawful_quest_level (dungeon_topology.d_lawful_quest_level) 128. #define neutral_quest_level (dungeon_topology.d_neutral_quest_level) 129. #define chaotic_quest_level (dungeon_topology.d_chaotic_quest_level) 130. #ifdef BLACKMARKET 131. #define blackmarket_level (dungeon_topology.d_blackmarket_level) 132. #endif /* BLACKMARKET */ 133. 134. E NEARDATA stairway dnstair, upstair; /* stairs up and down */ 135. #define xdnstair (dnstair.sx) 136. #define ydnstair (dnstair.sy) 137. #define xupstair (upstair.sx) 138. #define yupstair (upstair.sy) 139. 140. E NEARDATA stairway dnladder, upladder; /* ladders up and down */ 141. #define xdnladder (dnladder.sx) 142. #define ydnladder (dnladder.sy) 143. #define xupladder (upladder.sx) 144. #define yupladder (upladder.sy) 145. 146. E NEARDATA stairway sstairs; 147. 148. E NEARDATA dest_area updest, dndest; /* level-change destination areas */ 149. 150. E NEARDATA coord inv_pos; 151. E NEARDATA dungeon dungeons[]; 152. E NEARDATA s_level *sp_levchn; 153. #define dunlev_reached(x) (dungeons[(x)->dnum].dunlev_ureached) 154. 155. #include "quest.h" 156. E struct q_score quest_status; 157. 158. E NEARDATA char pl_fruit[PL_FSIZ]; 159. E NEARDATA int current_fruit; 160. E NEARDATA struct fruit *ffruit; 161. 162. E NEARDATA char tune[6]; 163. 164. #define MAXLINFO (MAXDUNGEON * MAXLEVEL) 165. E struct linfo level_info[MAXLINFO]; 166. 167. E NEARDATA struct sinfo { 168. int gameover; /* self explanatory? */ 169. int stopprint; /* inhibit further end of game disclosure */ 170. #if defined(UNIX) || defined(VMS) || defined (__EMX__) || defined(WIN32) 171. int done_hup; /* SIGHUP or moral equivalent received 172. * -- no more screen output */ 173. #endif 174. int something_worth_saving; /* in case of panic */ 175. int panicking; /* `panic' is in progress */ 176. #if defined(VMS) || defined(WIN32) 177. int exiting; /* an exit handler is executing */ 178. #endif 179. int in_impossible; 180. #ifdef PANICLOG 181. int in_paniclog; 182. #endif 183. } program_state; 184. 185. E boolean restoring; 186. 187. E const char quitchars[]; 188. E const char vowels[]; 189. E const char ynchars[]; 190. E const char ynqchars[]; 191. E const char ynaqchars[]; 192. E const char ynNaqchars[]; 193. E NEARDATA long yn_number; 194. 195. E const char disclosure_options[]; 196. 197. E NEARDATA int smeq[]; 198. E NEARDATA int doorindex; 199. E NEARDATA char *save_cm; 200. #define KILLED_BY_AN 0 201. #define KILLED_BY 1 202. #define NO_KILLER_PREFIX 2 203. E NEARDATA int killer_format; 204. E const char *killer; 205. E const char *delayed_killer; 206. #ifdef GOLDOBJ 207. E long done_money; 208. #endif 209. E char killer_buf[BUFSZ]; 210. E const char *configfile; 211. E NEARDATA char plname[PL_NSIZ]; 212. E NEARDATA char dogname[]; 213. E NEARDATA char catname[]; 214. E NEARDATA char ghoulname[]; 215. E NEARDATA char horsename[]; 216. E NEARDATA char wolfname[]; 217. #if 0 218. E NEARDATA char batname[]; 219. E NEARDATA char snakename[]; 220. E NEARDATA char ratname[]; 221. E NEARDATA char badgername[]; 222. E NEARDATA char reddragonname[]; 223. E NEARDATA char whitedragonname[]; 224. #endif 225. E char preferred_pet; 226. E const char *occtxt; /* defined when occupation != NULL */ 227. E const char *nomovemsg; 228. E const char nul[]; 229. E char lock[]; 230. 231. E const char sdir[], ndir[]; 232. E const schar xdir[], ydir[], zdir[]; 233. 234. E NEARDATA schar tbx, tby; /* set in mthrowu.c */ 235. 236. E NEARDATA struct multishot { int n, i; short o; boolean s; } m_shot; 237. 238. E NEARDATA struct dig_info { /* apply.c, hack.c */ 239. int effort; 240. d_level level; 241. coord pos; 242. long lastdigtime; 243. boolean down, chew, warned, quiet; 244. } digging; 245. 246. E NEARDATA long moves, monstermoves; 247. E NEARDATA long wailmsg; 248. 249. E NEARDATA boolean in_mklev; 250. E NEARDATA boolean stoned; 251. E NEARDATA boolean unweapon; 252. E NEARDATA boolean mrg_to_wielded; 253. E NEARDATA struct obj *current_wand; 254. E NEARDATA boolean defer_see_monsters; 255. 256. E NEARDATA boolean in_steed_dismounting; 257. 258. E const int shield_static[]; 259. 260. 261. /*** Objects ***/ 262. #include "obj.h" 263. 264. E NEARDATA struct obj *invent, *uarm, *uarmc, *uarmh, *uarms, *uarmg, *uarmf, 265. #ifdef TOURIST 266. *uarmu, /* under-wear, so to speak */ 267. #endif 268. #ifdef STEED 269. *usaddle, 270. #endif 271. *uskin, *uamul, *uleft, *uright, *ublindf, 272. *uwep, *uswapwep, *uquiver; 273. 274. E NEARDATA struct obj *uchain; /* defined only when punished */ 275. E NEARDATA struct obj *uball; 276. E NEARDATA struct obj *migrating_objs; 277. E NEARDATA struct obj *billobjs; 278. E NEARDATA struct obj zeroobj; /* init'd and defined in decl.c */ 279. E NEARDATA struct obj thisplace; /* init'd and defined in decl.c */ 280. 281. #include "spell.h" 282. E NEARDATA struct spell spl_book[]; /* sized in decl.c */ 283. 284. #ifndef TECH_H 285. #include "tech.h" 286. #endif 287. E NEARDATA struct tech tech_list[]; /* sized in decl.c */ 288. 289. 290. /*** The player ***/ 291. E NEARDATA char pl_character[PL_CSIZ]; 292. E NEARDATA char pl_race; /* character's race */ 293. /* KMH, role patch -- more maintainable when declared as an array */ 294. E const char pl_classes[]; 295. 296. #include "you.h" 297. #include "onames.h" 298. 299. E NEARDATA struct you u; 300. E NEARDATA struct Role urole; 301. 302. 303. /*** Monsters ***/ 304. #ifndef PM_H 305. #include "pm.h" 306. #endif 307. 308. E NEARDATA struct permonst playermon, *uasmon; 309. /* also decl'd extern in permonst.h */ 310. /* init'd in monst.c */ 311. 312. E NEARDATA struct monst youmonst; /* init'd and defined in decl.c */ 313. E NEARDATA struct monst *mydogs, *migrating_mons; 314. 315. E NEARDATA struct permonst upermonst; /* init'd in decl.c, 316. * defined in polyself.c 317. */ 318. 319. E NEARDATA struct mvitals { 320. uchar born; 321. uchar died; 322. uchar mvflags; 323. #ifdef EATEN_MEMORY 324. uchar eaten; /* WAC -- eaten memory */ 325. #endif 326. } mvitals[NUMMONS]; 327. 328. 329. /* The names of the colors used for gems, etc. */ 330. E const char *c_obj_colors[]; 331. 332. E struct c_common_strings { 333. const char *const c_nothing_happens, *const c_thats_enough_tries, 334. *const c_silly_thing_to, *const c_shudder_for_moment, 335. *const c_something, *const c_Something, 336. *const c_You_can_move_again, 337. *const c_Never_mind, *c_vision_clears, 338. *const c_the_your[2]; 339. } c_common_strings; 340. #define nothing_happens c_common_strings.c_nothing_happens 341. #define thats_enough_tries c_common_strings.c_thats_enough_tries 342. #define silly_thing_to c_common_strings.c_silly_thing_to 343. #define shudder_for_moment c_common_strings.c_shudder_for_moment 344. #define something c_common_strings.c_something 345. #define Something c_common_strings.c_Something 346. #define You_can_move_again c_common_strings.c_You_can_move_again 347. #define Never_mind c_common_strings.c_Never_mind 348. #define vision_clears c_common_strings.c_vision_clears 349. #define the_your c_common_strings.c_the_your 350. 351. E const char no_elbow_room[]; 352. 353. /* material strings */ 354. E const char *materialnm[]; 355. 356. /* Monster name articles */ 357. #define ARTICLE_NONE 0 358. #define ARTICLE_THE 1 359. #define ARTICLE_A 2 360. #define ARTICLE_YOUR 3 361. 362. /* Monster name suppress masks */ 363. #define SUPPRESS_IT 0x01 364. #define SUPPRESS_INVISIBLE 0x02 365. #define SUPPRESS_HALLUCINATION 0x04 366. #define SUPPRESS_SADDLE 0x08 367. #define EXACT_NAME 0x0F 368. 369. 370. /*** Vision ***/ 371. E NEARDATA boolean vision_full_recalc; /* TRUE if need vision recalc */ 372. E NEARDATA char **viz_array; /* could see/in sight row pointers */ 373. 374. 375. /*** Window system stuff ***/ 376. #include "color.h" 377. #ifdef TEXTCOLOR 378. E const int zapcolors[]; 379. #endif 380. 381. E const char def_oc_syms[MAXOCLASSES]; /* default class symbols */ 382. E uchar oc_syms[MAXOCLASSES]; /* current class symbols */ 383. E const char def_monsyms[MAXMCLASSES]; /* default class symbols */ 384. E uchar monsyms[MAXMCLASSES]; /* current class symbols */ 385. 386. E NEARDATA struct c_color_names { 387. const char *const c_black, *const c_amber, *const c_golden, 388. *const c_light_blue,*const c_red, *const c_green, 389. *const c_silver, *const c_blue, *const c_purple, 390. *const c_white; 391. } c_color_names; 392. #define NH_BLACK c_color_names.c_black 393. #define NH_AMBER c_color_names.c_amber 394. #define NH_GOLDEN c_color_names.c_golden 395. #define NH_LIGHT_BLUE c_color_names.c_light_blue 396. #define NH_RED c_color_names.c_red 397. #define NH_GREEN c_color_names.c_green 398. #define NH_SILVER c_color_names.c_silver 399. #define NH_BLUE c_color_names.c_blue 400. #define NH_PURPLE c_color_names.c_purple 401. #define NH_WHITE c_color_names.c_white 402. 403. E NEARDATA winid WIN_MESSAGE, WIN_STATUS; 404. E NEARDATA winid WIN_MAP, WIN_INVEN; 405. E char toplines[]; 406. #ifndef TCAP_H 407. E struct tc_gbl_data { /* also declared in tcap.h */ 408. char *tc_AS, *tc_AE; /* graphics start and end (tty font swapping) */ 409. int tc_LI, tc_CO; /* lines and columns */ 410. } tc_gbl_data; 411. #define AS tc_gbl_data.tc_AS 412. #define AE tc_gbl_data.tc_AE 413. #define LI tc_gbl_data.tc_LI 414. #define CO tc_gbl_data.tc_CO 415. #endif 416. 417. E struct authentication { 418. char prog[BUFSZ]; 419. char args[BUFSZ]; 420. } authentication; 421. 422. #define MAXNOTILESETS 20 423. #ifndef TILESET_MAX_FILENAME 424. #define TILESET_MAX_FILENAME 256 425. #endif 426. 427. #define TILESET_TRANSPARENT 1 428. #define TILESET_PSEUDO3D 2 429. 430. E struct tileset { 431. char name[PL_PSIZ]; 432. char file[TILESET_MAX_FILENAME]; 433. unsigned long flags; 434. void *data; /* For windowing port's use */ 435. } tilesets[MAXNOTILESETS]; 436. E int no_tilesets; 437. E struct tileset def_tilesets[]; 438. E char tileset[PL_PSIZ]; 439. 440. /* xxxexplain[] is in drawing.c */ 441. E const char * const monexplain[], invisexplain[], * const objexplain[], * const oclass_names[]; 442. 443. /* Some systems want to use full pathnames for some subsets of file names, 444. * rather than assuming that they're all in the current directory. This 445. * provides all the subclasses that seem reasonable, and sets up for all 446. * prefixes being null. Port code can set those that it wants. 447. */ 448. #define HACKPREFIX 0 449. #define LEVELPREFIX 1 450. #define SAVEPREFIX 2 451. #define BONESPREFIX 3 452. #define DATAPREFIX 4 /* this one must match hardcoded value in dlb.c */ 453. #define SCOREPREFIX 5 454. #define LOCKPREFIX 6 455. #define CONFIGPREFIX 7 456. #define TROUBLEPREFIX 8 457. #define PREFIX_COUNT 9 458. /* used in files.c; xxconf.h can override if needed */ 459. # ifndef FQN_MAX_FILENAME 460. #define FQN_MAX_FILENAME 512 461. # endif 462. 463. #if defined(NOCWD_ASSUMPTIONS) || defined(VAR_PLAYGROUND) 464. /* the bare-bones stuff is unconditional above to simplify coding; for 465. * ports that actually use prefixes, add some more localized things 466. */ 467. #define PREFIXES_IN_USE 468. #endif 469. 470. E char *fqn_prefix[PREFIX_COUNT]; 471. #ifdef PREFIXES_IN_USE 472. E char *fqn_prefix_names[PREFIX_COUNT]; 473. #endif 474. 475. 476. #ifdef AUTOPICKUP_EXCEPTIONS 477. struct autopickup_exception { 478. char *pattern; 479. boolean grab; 480. struct autopickup_exception *next; 481. }; 482. #endif /* AUTOPICKUP_EXCEPTIONS */ 483. 484. #undef E 485. 486. #endif /* DECL_H */
|