Wikia

Wikihack

Source:SLASH'EM 0.0.7E7F2/decl.h

2,032pages on
this wiki
Talk0

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.


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

Around Wikia's network

Random Wiki