Source:NetHack 3.1.0/hack.h

Below is the full text to hack.h from the source code of NetHack 3.1.0. To link to a particular line, write [[NetHack 3.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.   /*	SCCS Id: @(#)hack.h	3.1	93/01/15	*/ 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3.    /* NetHack may be freely redistributed. See license for details. */ 4.     5.    #ifndef HACK_H 6.   #define HACK_H 7.    8.    #ifndef CONFIG_H 9.   #include "config.h"  10. #endif 11.   12.   /*	For debugging beta code. */ 13.   #ifdef BETA 14.  #define Dpline	pline 15.  #endif 16.   17.   #define TELL		1 18.  #define NOTELL		0 19.  #define ON		1 20.  #define OFF		0 21.  #define BOLT_LIM    8	/* from this distance ranged attacks will be made */ 22.  #define MAX_CARR_CAP	1000	/* so that boulders can be heavier */ 23.  #ifndef __SASC_60 24.  #ifdef NULL 25.  #undef NULL 26.  #endif /* NULL */ 27.  #define NULL  ((char *)0) 28.  #endif 29.  #define DUMMY { 0 } 30.   31.   /* symbolic names for capacity levels */ 32.  #define UNENCUMBERED	0 33.  #define SLT_ENCUMBER	1 34.  #define MOD_ENCUMBER	2 35.  #define HVY_ENCUMBER	3 36.  #define EXT_ENCUMBER	4 37.  #define OVERLOADED	5 38.   39.   /* this is the way the game ends */ 40.  /* if these are rearranged, the arrays in end.c will need to be changed */ 41.  #define DIED		 0 42.  #define CHOKING		 1 43.  #define POISONING	 2 44.  #define STARVING	 3 45.  #define DROWNING	 4 46.  #define BURNING		 5 47.  #define CRUSHING	 6 48.  #define STONING		 7 49.  #define GENOCIDED	 8 50.  #define PANICKED	 9 51.  #define TRICKED		10 52.  #define QUIT		11 53.  #define ESCAPED		12 54.  #define ASCENDED	13 55.   56.   #ifndef DUNGEON_H	/* includes align.h */ 57.  #include "dungeon.h"  58. #endif 59.   60.   #ifndef MONSYM_H 61.  #include "monsym.h"  62. #endif 63.  #ifndef MKROOM_H 64.  #include "mkroom.h"  65. #endif 66.  #ifndef OBJCLASS_H 67.  #include "objclass.h"  68. #endif 69.   70.   #ifndef DECL_H 71.  #include "decl.h"  72. #endif 73.   74.   extern coord bhitpos;	/* place where thrown weapon falls to the ground */ 75.   76.   /* types of calls to bhit */ 77.  #define ZAPPED_WAND	0 78.  #define THROWN_WEAPON	1 79.  #define KICKED_WEAPON	2 80.  #define FLASHED_LIGHT	3 81.  #define INVIS_BEAM	4 82.   83.   #ifndef TRAP_H 84.  #include "trap.h"  85. #endif 86.  #ifndef FLAG_H 87.  #include "flag.h"  88. #endif 89.   90.   #ifndef RM_H 91.  #include "rm.h"  92. #endif 93.   94.   #ifndef VISION_H 95.  #include "vision.h"  96. #endif 97.   98.   #ifndef DISPLAY_H 99.  #include  "display.h"  100. #endif 101.  102.  #ifndef WINTYPE_H 103. #include  "wintype.h"  104. #endif 105.  106.  #ifndef ENGRAVE_H 107. #include "engrave.h"  108. #endif 109.  110.  #ifndef RECT_H 111. #include "rect.h"  112. #endif 113.  114.  #ifdef OVERLAY	/* This doesn't belong here, but we have little choice */ 115. #undef NDECL 116. #define NDECL(f) f 117. #endif 118.  119.  #ifndef EXTERN_H 120. #include "extern.h"  121. #endif 122.  123.  #ifndef WINPROCS_H 124. #include "winprocs.h"  125. #endif 126.  127.  #if defined(OVERLAY) && !defined(MOVERLAY) 128. #include "wintty.h"  129. #undef WINTTY_H 130.  131.  #ifndef TRAMPOLI_H 132. #include "trampoli.h"  133. #endif 134.  135.  #undef EXTERN_H 136. #include "extern.h"  137. #endif /* OVERLAY */ 138.  139.  #define NO_SPELL	0 140.  141.  /*** some utility macros ***/ 142. #define yn(query) yn_function(query,ynchars, 'n') 143. #define ynq(query) yn_function(query,ynqchars, 'q') 144. #define ynaq(query) yn_function(query,ynaqchars, 'y') 145. #define nyaq(query) yn_function(query,ynaqchars, 'n') 146. #define nyNaq(query) yn_function(query,ynNaqchars, 'n') 147. #define ynNaq(query) yn_function(query,ynNaqchars, 'y') 148.  149.  #ifndef max 150. #define max(a,b) ((a) > (b) ? (a) : (b)) 151. #endif 152. #ifndef min 153. #define min(x,y) ((x) < (y) ? (x) : (y)) 154. #endif 155. #define plur(x)	(((x) == 1) ? "" : "s") 156.  157.  #define ARM_BONUS(obj)	(objects[(obj)->otyp].a_ac + (obj)->spe \  158.  			 - min((int)(obj)->oeroded,objects[(obj)->otyp].a_ac)) 159.  160.  #define makeknown(x)	discover_object((x),TRUE) 161. #define distu(xx,yy)	dist2((int)(xx),(int)(yy),(int)u.ux,(int)u.uy) 162. #define onlineu(xx,yy)	online2((int)(xx),(int)(yy),(int)u.ux,(int)u.uy) 163.  164.  #define rn1(x,y)	(rn2(x)+(y)) 165.  166.  #ifndef MUSE 167. #define find_mac(m)	((m)->data->ac) 168. #endif 169.  170.  #if defined(MICRO) 171. #define getuid 1 172. #define getlogin (NULL) 173. #endif /* MICRO */ 174.  175.  /* Macro for a few items that are only static if we're not overlaid.... */ 176.  #if defined(OVERLAY) 177. # define STATIC_PTR 178. #else 179. # define STATIC_PTR static 180. #endif 181.  182.  #if defined(OVERLAY)&&(defined(OVL0)||defined(OVL1)||defined(OVL2)||defined(OVL3)||defined(OVLB)) 183. # define STATIC_DCL extern 184. # define STATIC_OVL 185. # ifdef OVLB 186. #  define STATIC_VAR 187. # else 188. #  define STATIC_VAR extern 189. # endif 190.  191.  #else	/* !OVERLAY || (!OVL0 && !OVL1 && !OVL2 && !OVL3 && !OVLB) */ 192. # define STATIC_DCL static 193. # define STATIC_OVL static 194. # define STATIC_VAR static 195.  196.  /* If not compiling an overlay, compile everything. */ 197.  # define OVL0	/* Highest priority */ 198. # define OVL1 199. # define OVL2 200. # define OVL3	/* Lowest specified priority */ 201. # define OVLB	/* The base overlay segment */ 202. #endif	/* OVERLAY && (OVL0 || OVL1 || OVL2 || OVL3 || OVLB) */ 203.  204.  #endif /* HACK_H */