Source:Hack 1.0/hack.h

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

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

1.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1984. */ 2.     3.    #include "mklev.h"  4.    #include "hack.onames.h"  5. 6.   #define ON 1 7.   #define OFF 0 8.    9.    extern struct obj *invent, *uwep, *uarm, *uarm2, *uarmh, *uarms, *uarmg, 10.  	*uleft, *uright, *fcobj; 11.  extern struct obj *uchain;	/* defined iff PUNISHED */ 12.  extern struct obj *uball;	/* defined if PUNISHED */ 13.  struct obj *o_at, *getobj, *sobj_at; 14.   15.   struct flag { 16.  	unsigned ident;		/* social security number for each monster */ 17.  	unsigned topl:2;	/* a top line (message) has been printed */ 18.  				/* 0: top line empty; 2: no --More-- reqd. */ 19.   	unsigned cbreak:1;	/* in cbreak mode, rogue format */ 20.  	unsigned oneline:1;	/* give inventories 1 line at a time */ 21.  	unsigned move:1; 22.  	unsigned mv:1; 23.  	unsigned run:3;		/* 0: h (etc), 1: H (etc), 2: fh (etc) */ 24.  				/* 3: FH, 4: ff+, 5: ff-, 6: FF+, 7: FF- */ 25.  	unsigned nopick:1;	/* do not pickup objects */ 26.  	unsigned echo:1;	/* 1 to echo characters */ 27.  	unsigned botl:1;	/* partially redo status line */ 28.  	unsigned botlx:1;	/* print an entirely new bottom line */ 29.  	unsigned nscrinh:1;	/* inhibit nscr in pline; */ 30.  };  31.   extern struct flag flags; 32.   33.   struct prop { 34.  #define	TIMEOUT		007777	/* mask */ 35.  #define	LEFT_RING	W_RINGL	/* 010000L */ 36.  #define	RIGHT_RING	W_RINGR	/* 020000L */ 37.  #define	INTRINSIC	040000L 38.  #define	LEFT_SIDE	LEFT_RING 39.  #define	RIGHT_SIDE	RIGHT_RING 40.  #define	BOTH_SIDES	(LEFT_SIDE | RIGHT_SIDE) 41.  	long p_flgs; 42.  	int (*p_tofn);	/* called after timeout */ 43.  };  44.    45.   struct you { 46.  	xchar ux, uy; 47.  	schar dx, dy;		/* direction of fast move */ 48.  #ifdef QUEST 49.  	schar di;		/* direction of FF */ 50.  	xchar ux0, uy0;		/* initial position FF */ 51.  #endif QUEST 52.  	xchar udisx, udisy;	/* last display pos */ 53.  	char usym;		/* usually '@' */ 54.  	schar uluck; 55.  	int last_str_turn:3;	/* 0: none, 1: half turn, 2: full turn */ 56.  				/* +: turn right, -: turn left */ 57.  	unsigned udispl:1;	/* @ on display */ 58.  	unsigned ulevel:5; 59.  #ifdef QUEST 60.  	unsigned uhorizon:7; 61.  #endif QUEST 62.  	unsigned utrap:3;	/* trap timeout */ 63.  	unsigned utraptype:1;	/* defined if utrap nonzero */ 64.  #define	TT_BEARTRAP	0 65.  #define	TT_PIT		1 66.  	unsigned uinshop:1; 67.   68.    69.   /* perhaps these #define's should also be generated by makedefs */ 70.  #define	TELEPAT		LAST_RING		/* not a ring */ 71.  #define	Telepat		u.uprops[TELEPAT].p_flgs 72.  #define	FAST		(LAST_RING+1)		/* not a ring */ 73.  #define	Fast		u.uprops[FAST].p_flgs 74.  #define	CONFUSION	(LAST_RING+2)		/* not a ring */ 75.  #define	Confusion	u.uprops[CONFUSION].p_flgs 76.  #define	INVIS		(LAST_RING+3)		/* not a ring */ 77.  #define	Invis		u.uprops[INVIS].p_flgs 78.  #define	GLIB		(LAST_RING+4)		/* not a ring */ 79.  #define	Glib		u.uprops[GLIB].p_flgs 80.  #define	PUNISHED	(LAST_RING+5)		/* not a ring */ 81.  #define	Punished	u.uprops[PUNISHED].p_flgs 82.  #define	SICK		(LAST_RING+6)		/* not a ring */ 83.  #define	Sick		u.uprops[SICK].p_flgs 84.  #define	BLIND		(LAST_RING+7)		/* not a ring */ 85.  #define	Blind		u.uprops[BLIND].p_flgs 86.  #define	WOUNDED_LEGS	(LAST_RING+8)		/* not a ring */ 87.  #define Wounded_legs	u.uprops[WOUNDED_LEGS].p_flgs 88.  #define PROP(x) (x-RIN_ADORNMENT)       /* convert ring to index in uprops */ 89.  	unsigned umconf:1; 90.  	char *usick_cause; 91.  	struct prop uprops[LAST_RING+9]; 92.   93.   	unsigned uswallow:1;		/* set if swallowed by a monster */ 94.  	unsigned uswldtim:4;		/* time you have been swallowed */ 95.  	unsigned uhs:3;			/* hunger state - see hack.eat.c */ 96.  	schar ustr,ustrmax; 97.  	schar udaminc; 98.  	schar uac; 99.  	int uhp,uhpmax; 100. 	long int ugold,ugold0,uexp,urexp; 101. 	int uhunger;			/* refd only in eat.c and shk.c */ 102. 	int uinvault; 103. 	struct monst *ustuck; 104. 	int nr_killed[CMNUM+2];		/* used for experience bookkeeping */ 105. };  106.   107.  extern struct you u;  108. 109. extern char *traps[]; 110. extern char *plur, *monnam, *Monnam, *amonnam, *Amonnam, 111. 	*doname, *aobjnam; 112. extern char readchar; 113. extern char vowels[]; 114.  115.  extern xchar curx,cury;	/* cursor location on screen */ 116.  117.  extern coord bhitpos;	/* place where thrown weapon falls to the ground */ 118.  119.  extern xchar seehx,seelx,seehy,seely; /* where to see*/ 120. extern char *save_cm,*killer; 121.  122.  extern xchar dlevel, maxdlevel; /* dungeon level */ 123.  124.  extern long moves; 125.  126.  extern int multi; 127.  128.   129.  extern char lock[]; 130.  131.   132.  #define DIST(x1,y1,x2,y2)       (((x1)-(x2))*((x1)-(x2)) + ((y1)-(y2))*((y1)-(y2))) 133.  134.  #define	PL_CSIZ		20	/* sizeof pl_character */ 135. #define	MAX_CARR_CAP	120	/* so that boulders can be heavier */ 136. #define	FAR	(COLNO+2)	/* position outside screen */