1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248
|
/* SCCS Id: @(#)hack.h 3.2 96/05/09 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
#ifndef HACK_H
#define HACK_H
#ifndef CONFIG_H
#include "config.h"
#endif
/* For debugging beta code. */
#ifdef BETA
#define Dpline pline
#endif
#define TELL 1
#define NOTELL 0
#define ON 1
#define OFF 0
#define BOLT_LIM 8 /* from this distance ranged attacks will be made */
#define MAX_CARR_CAP 1000 /* so that boulders can be heavier */
#define DUMMY { 0 }
/* symbolic names for capacity levels */
#define UNENCUMBERED 0
#define SLT_ENCUMBER 1
#define MOD_ENCUMBER 2
#define HVY_ENCUMBER 3
#define EXT_ENCUMBER 4
#define OVERLOADED 5
/*
* This is the way the game ends. If these are rearranged, the arrays
* in end.c and topten.c will need to be changed.
*/
#define DIED 0
#define CHOKING 1
#define POISONING 2
#define STARVING 3
#define DROWNING 4
#define BURNING 5
#define DISSOLVED 6
#define CRUSHING 7
#define STONING 8
#define GENOCIDED 9
#define PANICKED 10
#define TRICKED 11
#define QUIT 12
#define ESCAPED 13
#define ASCENDED 14
#ifndef DUNGEON_H /* includes align.h */
#include "dungeon.h"
#endif
#ifndef MONSYM_H
#include "monsym.h"
#endif
#ifndef MKROOM_H
#include "mkroom.h"
#endif
#ifndef OBJCLASS_H
#include "objclass.h"
#endif
#ifndef YOUPROP_H
#include "youprop.h"
#endif
#ifndef WINTYPE_H
#include "wintype.h"
#endif
#ifndef DECL_H
#include "decl.h"
#endif
#ifndef TIMEOUT_H
#include "timeout.h"
#endif
NEARDATA extern coord bhitpos; /* place where thrown weapon falls to the ground */
/* types of calls to bhit() */
#define ZAPPED_WAND 0
#define THROWN_WEAPON 1
#define KICKED_WEAPON 2
#define FLASHED_LIGHT 3
#define INVIS_BEAM 4
#ifndef TRAP_H
#include "trap.h"
#endif
#ifndef FLAG_H
#include "flag.h"
#endif
#ifndef RM_H
#include "rm.h"
#endif
#ifndef VISION_H
#include "vision.h"
#endif
#ifndef DISPLAY_H
#include "display.h"
#endif
#ifndef ENGRAVE_H
#include "engrave.h"
#endif
#ifndef RECT_H
#include "rect.h"
#endif
#ifdef USE_TRAMPOLI /* This doesn't belong here, but we have little choice */
#undef NDECL
#define NDECL(f) f()
#endif
#ifndef EXTERN_H
#include "extern.h"
#endif
#ifndef WINPROCS_H
#include "winprocs.h"
#endif
#ifdef USE_TRAMPOLI
#include "wintty.h"
#undef WINTTY_H
#ifndef TRAMPOLI_H
#include "trampoli.h"
#endif
#undef EXTERN_H
#include "extern.h"
#endif /* USE_TRAMPOLI */
#define NO_SPELL 0
/* flags to control makemon() */
#define NO_MM_FLAGS 0x00 /* use this rather than plain 0 */
#define NO_MINVENT 0x01 /* suppress minvent when creating mon */
/* flags to control query_objlist() */
#define BY_NEXTHERE 0x1 /* follow objlist by nexthere field */
#define AUTOSELECT_SINGLE 0x2 /* if only 1 object, don't ask */
#define USE_INVLET 0x4 /* use object's invlet */
#define INVORDER_SORT 0x8 /* sort objects by packorder */
#define SIGNAL_NOMENU 0x10 /* return -1 rather than 0 if none allowed */
/* Flags to control query_category() */
/* BY_NEXTHERE used by query_category() too, so skip 0x01 */
#define UNPAID_TYPES 0x02
#define GOLD_TYPES 0x04
#define WORN_TYPES 0x08
#define ALL_TYPES 0x10
#define BILLED_TYPES 0x20
#define CHOOSE_ALL 0x40
#define ALL_TYPES_SELECTED -2
/*** some utility macros ***/
#define yn(query) yn_function(query,ynchars, 'n')
#define ynq(query) yn_function(query,ynqchars, 'q')
#define ynaq(query) yn_function(query,ynaqchars, 'y')
#define nyaq(query) yn_function(query,ynaqchars, 'n')
#define nyNaq(query) yn_function(query,ynNaqchars, 'n')
#define ynNaq(query) yn_function(query,ynNaqchars, 'y')
/* Macros for scatter */
#define VIS_EFFECTS 0x1 /* Display visual effects */
#define MAY_HITMON 0x2 /* Objects may hit monsters */
#define MAY_HITYOU 0x4 /* Objects may hit you */
#define MAY_HIT 0x6 /* Objects may hit you and monsters */
#define MAY_DESTROY 0x8 /* Objects may be destroyed at random */
#define MAY_FRACTURE 0x10 /* Boulders & statues may fracture */
/* Macros for launching objects */
#define ROLL 1
#define FLING 2
/* Flags to control menus */
#define MENUTYPELEN sizeof("traditional ")
#define MENU_TRADITIONAL 0
#define MENU_COMBINATION 1
#define MENU_PARTIAL 2
#define MENU_FULL 3
#define MENU_SELECTED TRUE
#define MENU_UNSELECTED FALSE
#ifndef max
#define max(a,b) ((a) > (b) ? (a) : (b))
#endif
#ifndef min
#define min(x,y) ((x) < (y) ? (x) : (y))
#endif
#define plur(x) (((x) == 1) ? "" : "s")
#define ARM_BONUS(obj) (objects[(obj)->otyp].a_ac + (obj)->spe \
- min((int)(obj)->oeroded,objects[(obj)->otyp].a_ac))
#define makeknown(x) discover_object((x),TRUE)
#define distu(xx,yy) dist2((int)(xx),(int)(yy),(int)u.ux,(int)u.uy)
#define onlineu(xx,yy) online2((int)(xx),(int)(yy),(int)u.ux,(int)u.uy)
#define rn1(x,y) (rn2(x)+(y))
/* negative armor class is randomly weakened to prevent invulnerability */
#define AC_VALUE(AC) ((AC) >= 0 ? (AC) : -rnd(-(AC)))
#if defined(MICRO) && !defined(__DJGPP__)
#define getuid() 1
#define getlogin() ((char *)0)
#endif /* MICRO */
#if defined(OVERLAY)&&(defined(OVL0)||defined(OVL1)||defined(OVL2)||defined(OVL3)||defined(OVLB))
# define USE_OVLx
# define STATIC_DCL extern
# define STATIC_OVL
# ifdef OVLB
# define STATIC_VAR
# else
# define STATIC_VAR extern
# endif
#else /* !OVERLAY || (!OVL0 && !OVL1 && !OVL2 && !OVL3 && !OVLB) */
# define STATIC_DCL static
# define STATIC_OVL static
# define STATIC_VAR static
/* If not compiling an overlay, compile everything. */
# define OVL0 /* Highest priority */
# define OVL1
# define OVL2
# define OVL3 /* Lowest specified priority */
# define OVLB /* The base overlay segment */
#endif /* OVERLAY && (OVL0 || OVL1 || OVL2 || OVL3 || OVLB) */
/* Macro for a few items that are only static if we're not overlaid.... */
#if defined(USE_TRAMPOLI) || defined(USE_OVLx)
# define STATIC_PTR
#else
# define STATIC_PTR static
#endif
#endif /* HACK_H */
|