Source:NetHack 3.2.0/decl.h

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

Warning! This is the source code from an old release. For the latest release, see Source code

1.   /*	SCCS Id: @(#)decl.h	3.2	95/08/13	*/ 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.  E NEARDATA int warnlevel; 31.  E NEARDATA int nroom; 32.  E NEARDATA int nsubroom; 33.  E NEARDATA int occtime; 34.   35.   E int x_maze_max, y_maze_max; 36.  E int otg_temp; 37.   38.   #ifdef REDO 39.  E NEARDATA int in_doagain; 40.  #endif 41.   42.   E struct dgn_topology {	/* special dungeon levels for speed */ 43.      d_level	d_oracle_level; 44.      d_level	d_bigroom_level;	/* unused */ 45.  #ifdef REINCARNATION 46.      d_level	d_rogue_level; 47.  #endif 48.      d_level	d_medusa_level; 49.      d_level	d_stronghold_level; 50.      d_level	d_valley_level; 51.      d_level	d_wiz1_level; 52.      d_level	d_wiz2_level; 53.      d_level	d_wiz3_level; 54.      d_level     d_juiblex_level; 55.      d_level     d_orcus_level; 56.      d_level	d_baalzebub_level;	/* unused */ 57.      d_level	d_asmodeus_level;	/* unused */ 58.      d_level	d_portal_level;		/* only in goto_level [do.c] */ 59.      d_level	d_sanctum_level; 60.      d_level	d_earth_level; 61.      d_level	d_water_level; 62.      d_level	d_fire_level; 63.      d_level	d_air_level; 64.      d_level	d_astral_level; 65.      xchar	d_tower_dnum; 66.      xchar	d_mines_dnum, d_quest_dnum; 67.      d_level	d_qstart_level, d_qlocate_level, d_nemesis_level; 68.      d_level	d_knox_level; 69.  } dungeon_topology; 70.  /* macros for accesing the dungeon levels by their old names */ 71.  #define oracle_level		(dungeon_topology.d_oracle_level) 72.  #define bigroom_level		(dungeon_topology.d_bigroom_level) 73.  #ifdef REINCARNATION 74.  #define rogue_level		(dungeon_topology.d_rogue_level) 75.  #endif 76.  #define medusa_level		(dungeon_topology.d_medusa_level) 77.  #define stronghold_level	(dungeon_topology.d_stronghold_level) 78.  #define valley_level		(dungeon_topology.d_valley_level) 79.  #define wiz1_level		(dungeon_topology.d_wiz1_level) 80.  #define wiz2_level		(dungeon_topology.d_wiz2_level) 81.  #define wiz3_level		(dungeon_topology.d_wiz3_level) 82.  #define juiblex_level		(dungeon_topology.d_juiblex_level) 83.  #define orcus_level		(dungeon_topology.d_orcus_level) 84.  #define baalzebub_level		(dungeon_topology.d_baalzebub_level) 85.  #define asmodeus_level		(dungeon_topology.d_asmodeus_level) 86.  #define portal_level		(dungeon_topology.d_portal_level) 87.  #define sanctum_level		(dungeon_topology.d_sanctum_level) 88.  #define earth_level		(dungeon_topology.d_earth_level) 89.  #define water_level		(dungeon_topology.d_water_level) 90.  #define fire_level		(dungeon_topology.d_fire_level) 91.  #define air_level		(dungeon_topology.d_air_level) 92.  #define astral_level		(dungeon_topology.d_astral_level) 93.  #define tower_dnum		(dungeon_topology.d_tower_dnum) 94.  #define mines_dnum		(dungeon_topology.d_mines_dnum) 95.  #define quest_dnum		(dungeon_topology.d_quest_dnum) 96.  #define qstart_level		(dungeon_topology.d_qstart_level) 97.  #define qlocate_level		(dungeon_topology.d_qlocate_level) 98.  #define nemesis_level		(dungeon_topology.d_nemesis_level) 99.  #define knox_level		(dungeon_topology.d_knox_level) 100.  101.  E NEARDATA stairway dnstair, upstair; /* stairs up and down. */ 102.  #define xdnstair	(dnstair.sx) 103. #define ydnstair	(dnstair.sy) 104. #define xupstair	(upstair.sx) 105. #define yupstair	(upstair.sy) 106.  107.  E NEARDATA stairway dnladder, upladder; /* ladders up and down. */ 108.  #define xdnladder	(dnladder.sx) 109. #define ydnladder	(dnladder.sy) 110. #define xupladder	(upladder.sx) 111. #define yupladder	(upladder.sy) 112.  113.  E NEARDATA stairway sstairs; 114.  115.  E NEARDATA dest_area updest, dndest; /* level-change dest. areas */ 116.  117.  E NEARDATA coord inv_pos; 118. E NEARDATA dungeon dungeons[]; 119. E NEARDATA s_level *sp_levchn; 120. #define dunlev_reached(x)	(dungeons[(x)->dnum].dunlev_ureached) 121.  122.  #include "quest.h"  123. E struct q_score		quest_status; 124.  125.  E NEARDATA char pl_character[PL_CSIZ]; 126.  127.  E NEARDATA char pl_fruit[PL_FSIZ]; 128. E NEARDATA int current_fruit; 129. E NEARDATA struct fruit *ffruit; 130.  131.  E NEARDATA char tune[6]; 132.  133.  #define MAXLINFO (MAXDUNGEON * MAXLEVEL) 134. E struct linfo level_info[MAXLINFO]; 135.  136.  E NEARDATA struct sinfo { 137. 	int stopprint;		/* game over, inhibit further disclosure */ 138. #if defined(UNIX) || defined(VMS) 139. 	int done_hup;		/* SIGHUP or moral equivalent received 140. 				 * -- no more screen output */ 141. #endif 142. 	int something_worth_saving;	/* in case of panic */ 143. 	int panicking;		/* `panic' is in progress */ 144. #ifdef VMS 145. 	int exiting;		/* an exit handler is executing */ 146. #endif 147. } program_state; 148.  149.  E const char quitchars[]; 150. E const char vowels[]; 151. E const char ynchars[]; 152. E const char ynqchars[]; 153. E const char ynaqchars[]; 154. E const char ynNaqchars[]; 155. E NEARDATA long yn_number; 156. E NEARDATA int smeq[]; 157. E NEARDATA int doorindex; 158. E NEARDATA char *save_cm; 159. #define KILLED_BY_AN	 0 160. #define KILLED_BY	 1 161. #define NO_KILLER_PREFIX 2 162. E NEARDATA int killer_format; 163. E const char *killer; 164. E const char *configfile; 165. E NEARDATA char plname[PL_NSIZ]; 166. E NEARDATA char dogname[]; 167. E NEARDATA char catname[]; 168. E char preferred_pet; 169. E const char *occtxt;		/* defined when occupation != NULL */ 170. E const char *nomovemsg; 171. E const char nul[]; 172. E char lock[]; 173.  174.  E const char sdir[], ndir[]; 175. E const schar xdir[], ydir[], zdir[]; 176.  177.  E NEARDATA schar tbx, tby;		/* set in mthrowu.c */ 178.  179.  E NEARDATA struct dig_info {	/* apply.c, hack.c */ 180. 	int	effort; 181. 	d_level	level; 182. 	coord	pos; 183. 	boolean	down, chew; 184. } digging; 185.  186.  E NEARDATA long moves, monstermoves; 187. E NEARDATA long wailmsg; 188.  189.  E NEARDATA boolean in_mklev; 190. E NEARDATA boolean stoned; 191. E NEARDATA boolean unweapon; 192. E NEARDATA boolean mrg_to_wielded; 193. E NEARDATA struct obj *current_wand; 194.  195.  E const int shield_static[]; 196.  197.  #ifndef SPELLS_H 198. #include "spell.h"  199. #endif 200. E NEARDATA struct spell spl_book[];	/* sized in decl.c */ 201.  202.  #ifdef TEXTCOLOR 203. # ifndef COLOR_H 204. #include "color.h"  205. # endif 206. E const int zapcolors[]; 207. #endif 208.  209.  E const char def_oc_syms[MAXOCLASSES];	/* default class symbols */ 210. E uchar oc_syms[MAXOCLASSES];		/* current class symbols */ 211. E const char def_monsyms[MAXMCLASSES];	/* default class symbols */ 212. E uchar monsyms[MAXMCLASSES];		/* current class symbols */ 213.  214.  #ifndef OBJ_H 215. #include "obj.h"  216. #endif 217.  218.  E NEARDATA struct obj *invent, *uarm, *uarmc, *uarmh, *uarms, *uarmg, *uarmf, 219. #ifdef TOURIST 220. 	*uarmu, /* under-wear, so to speak */ 221. #endif 222. 	*uskin, *uamul, *uleft, *uright, *ublindf, *uwep; 223.  224.  E NEARDATA struct obj *uchain;	/* defined only when punished */ 225. E NEARDATA struct obj *uball; 226. E NEARDATA struct obj *migrating_objs; 227. E NEARDATA struct obj *billobjs; 228. E NEARDATA struct obj zeroobj;		/* init'd and defined in decl.c */ 229.  230.  E const char *he[3]; 231. E const char *him[3]; 232. E const char *his[3]; 233.  234.  #ifndef YOU_H 235. #include "you.h"  236. #endif 237.  238.  E NEARDATA struct you u;  239. 240. #ifndef ONAMES_H 241. #include "onames.h"  242. #endif 243. #ifndef PM_H 244. #include "pm.h"  245. #endif 246.  247.  E NEARDATA struct permonst playermon, *uasmon; 248. 					/* also decl'd extern in permonst.h */ 249. 					/* init'd in monst.c */ 250.  251.  E NEARDATA struct monst youmonst;	/* init'd and defined in decl.c */ 252. E NEARDATA struct monst *mydogs, *migrating_mons; 253.  254.  E NEARDATA struct mvitals { 255. 	uchar	died; 256. 	uchar	mvflags; 257. } mvitals[NUMMONS]; 258.  259.  E NEARDATA struct c_color_names { 260.     const char	*const c_black, *const c_amber, *const c_golden, 261. 		*const c_light_blue,*const c_red, *const c_green, 262. 		*const c_silver, *const c_blue, *const c_purple, 263. 		*const c_white; 264. } c_color_names; 265. #define Black		c_color_names.c_black 266. #define amber		c_color_names.c_amber 267. #define golden		c_color_names.c_golden 268. #define light_blue	c_color_names.c_light_blue 269. #define red		c_color_names.c_red 270. #define green		c_color_names.c_green 271. #define silver		c_color_names.c_silver 272. #define blue		c_color_names.c_blue 273. #define purple		c_color_names.c_purple 274. #define White		c_color_names.c_white 275.  276.  E struct c_common_strings { 277.     const char	*const c_nothing_happens, *const c_thats_enough_tries, 278. 		*const c_silly_thing_to, *const c_shudder_for_moment, 279. 		*const c_something, *const c_Something; 280. } c_common_strings; 281. #define nothing_happens    c_common_strings.c_nothing_happens 282. #define thats_enough_tries c_common_strings.c_thats_enough_tries 283. #define silly_thing_to	   c_common_strings.c_silly_thing_to 284. #define shudder_for_moment c_common_strings.c_shudder_for_moment 285. #define something          c_common_strings.c_something 286. #define Something          c_common_strings.c_Something 287.  288.  /* Vision */ 289. E NEARDATA boolean vision_full_recalc;	/* TRUE if need vision recalc */ 290. E NEARDATA char **viz_array;	/* could see/in sight row pointers */ 291.  292.  /* Window system stuff */ 293. E NEARDATA winid WIN_MESSAGE, WIN_STATUS; 294. E NEARDATA winid WIN_MAP, WIN_INVEN; 295. E char toplines[]; 296. #ifndef TERMCAP_H 297. E struct tc_gbl_data {	/* also declared in termcap.h */ 298.     char *tc_AS, *tc_AE;	/* graphics start and end (tty font swapping) */ 299.     int   tc_LI,  tc_CO;	/* lines and columns */ 300. } tc_gbl_data; 301. #define AS tc_gbl_data.tc_AS 302. #define AE tc_gbl_data.tc_AE 303. #define LI tc_gbl_data.tc_LI 304. #define CO tc_gbl_data.tc_CO 305. #endif 306.  307.  /* xxxexplain[] is in drawing.c */ 308. E const char *monexplain[], *objexplain[], *oclass_names[]; 309.  310.  E const char *pl_classes; 311.  312.  #undef E  313. 314. #endif /* DECL_H */