|
|
1.1 ! root 1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ ! 2: /* hack.h - version 1.0.3 */ ! 3: ! 4: #include "config.h" ! 5: #include <string.h> ! 6: ! 7: #ifndef BSD ! 8: #define index strchr ! 9: #define rindex strrchr ! 10: #endif BSD ! 11: ! 12: #define Null(type) ((struct type *) 0) ! 13: ! 14: #include "def.objclass.h" ! 15: ! 16: typedef struct { ! 17: xchar x,y; ! 18: } coord; ! 19: ! 20: #include "def.monst.h" /* uses coord */ ! 21: #include "def.gold.h" ! 22: #include "def.trap.h" ! 23: #include "def.obj.h" ! 24: #include "def.flag.h" ! 25: ! 26: #define plur(x) (((x) == 1) ? "" : "s") ! 27: ! 28: #define BUFSZ 256 /* for getlin buffers */ ! 29: #define PL_NSIZ 32 /* name of player, ghost, shopkeeper */ ! 30: ! 31: #include "def.rm.h" ! 32: #include "def.permonst.h" ! 33: ! 34: extern long *alloc(); ! 35: ! 36: extern xchar xdnstair, ydnstair, xupstair, yupstair; /* stairs up and down. */ ! 37: ! 38: extern xchar dlevel; ! 39: #define newstring(x) (char *) alloc((unsigned)(x)) ! 40: #include "hack.onames.h" ! 41: ! 42: #define ON 1 ! 43: #define OFF 0 ! 44: ! 45: extern struct obj *invent, *uwep, *uarm, *uarm2, *uarmh, *uarms, *uarmg, ! 46: *uleft, *uright, *fcobj; ! 47: extern struct obj *uchain; /* defined iff PUNISHED */ ! 48: extern struct obj *uball; /* defined if PUNISHED */ ! 49: struct obj *o_at(), *getobj(), *sobj_at(); ! 50: ! 51: struct prop { ! 52: #define TIMEOUT 007777 /* mask */ ! 53: #define LEFT_RING W_RINGL /* 010000L */ ! 54: #define RIGHT_RING W_RINGR /* 020000L */ ! 55: #define INTRINSIC 040000L ! 56: #define LEFT_SIDE LEFT_RING ! 57: #define RIGHT_SIDE RIGHT_RING ! 58: #define BOTH_SIDES (LEFT_SIDE | RIGHT_SIDE) ! 59: long p_flgs; ! 60: int (*p_tofn)(); /* called after timeout */ ! 61: }; ! 62: ! 63: struct you { ! 64: xchar ux, uy; ! 65: schar dx, dy, dz; /* direction of move (or zap or ... ) */ ! 66: #ifdef QUEST ! 67: schar di; /* direction of FF */ ! 68: xchar ux0, uy0; /* initial position FF */ ! 69: #endif QUEST ! 70: xchar udisx, udisy; /* last display pos */ ! 71: char usym; /* usually '@' */ ! 72: schar uluck; ! 73: #define LUCKMAX 10 /* on moonlit nights 11 */ ! 74: #define LUCKMIN (-10) ! 75: int last_str_turn:3; /* 0: none, 1: half turn, 2: full turn */ ! 76: /* +: turn right, -: turn left */ ! 77: unsigned udispl:1; /* @ on display */ ! 78: unsigned ulevel:4; /* 1 - 14 */ ! 79: #ifdef QUEST ! 80: unsigned uhorizon:7; ! 81: #endif QUEST ! 82: unsigned utrap:3; /* trap timeout */ ! 83: unsigned utraptype:1; /* defined if utrap nonzero */ ! 84: #define TT_BEARTRAP 0 ! 85: #define TT_PIT 1 ! 86: unsigned uinshop:6; /* used only in shk.c - (roomno+1) of shop */ ! 87: ! 88: ! 89: /* perhaps these #define's should also be generated by makedefs */ ! 90: #define TELEPAT LAST_RING /* not a ring */ ! 91: #define Telepat u.uprops[TELEPAT].p_flgs ! 92: #define FAST (LAST_RING+1) /* not a ring */ ! 93: #define Fast u.uprops[FAST].p_flgs ! 94: #define CONFUSION (LAST_RING+2) /* not a ring */ ! 95: #define Confusion u.uprops[CONFUSION].p_flgs ! 96: #define INVIS (LAST_RING+3) /* not a ring */ ! 97: #define Invis u.uprops[INVIS].p_flgs ! 98: #define Invisible (Invis && !See_invisible) ! 99: #define GLIB (LAST_RING+4) /* not a ring */ ! 100: #define Glib u.uprops[GLIB].p_flgs ! 101: #define PUNISHED (LAST_RING+5) /* not a ring */ ! 102: #define Punished u.uprops[PUNISHED].p_flgs ! 103: #define SICK (LAST_RING+6) /* not a ring */ ! 104: #define Sick u.uprops[SICK].p_flgs ! 105: #define BLIND (LAST_RING+7) /* not a ring */ ! 106: #define Blind u.uprops[BLIND].p_flgs ! 107: #define WOUNDED_LEGS (LAST_RING+8) /* not a ring */ ! 108: #define Wounded_legs u.uprops[WOUNDED_LEGS].p_flgs ! 109: #define STONED (LAST_RING+9) /* not a ring */ ! 110: #define Stoned u.uprops[STONED].p_flgs ! 111: #define PROP(x) (x-RIN_ADORNMENT) /* convert ring to index in uprops */ ! 112: unsigned umconf:1; ! 113: char *usick_cause; ! 114: struct prop uprops[LAST_RING+10]; ! 115: ! 116: unsigned uswallow:1; /* set if swallowed by a monster */ ! 117: unsigned uswldtim:4; /* time you have been swallowed */ ! 118: unsigned uhs:3; /* hunger state - see hack.eat.c */ ! 119: schar ustr,ustrmax; ! 120: schar udaminc; ! 121: schar uac; ! 122: int uhp,uhpmax; ! 123: long int ugold,ugold0,uexp,urexp; ! 124: int uhunger; /* refd only in eat.c and shk.c */ ! 125: int uinvault; ! 126: struct monst *ustuck; ! 127: int nr_killed[CMNUM+2]; /* used for experience bookkeeping */ ! 128: }; ! 129: ! 130: extern struct you u; ! 131: ! 132: extern char *traps[]; ! 133: extern char *monnam(), *Monnam(), *amonnam(), *Amonnam(), ! 134: *doname(), *aobjnam(); ! 135: extern char readchar(); ! 136: extern char vowels[]; ! 137: ! 138: extern xchar curx,cury; /* cursor location on screen */ ! 139: ! 140: extern coord bhitpos; /* place where thrown weapon falls to the ground */ ! 141: ! 142: extern xchar seehx,seelx,seehy,seely; /* where to see*/ ! 143: extern char *save_cm,*killer; ! 144: ! 145: extern xchar dlevel, maxdlevel; /* dungeon level */ ! 146: ! 147: extern long moves; ! 148: ! 149: extern int multi; ! 150: ! 151: ! 152: extern char lock[]; ! 153: ! 154: ! 155: #define DIST(x1,y1,x2,y2) (((x1)-(x2))*((x1)-(x2)) + ((y1)-(y2))*((y1)-(y2))) ! 156: ! 157: #define PL_CSIZ 20 /* sizeof pl_character */ ! 158: #define MAX_CARR_CAP 120 /* so that boulders can be heavier */ ! 159: #define MAXLEVEL 40 ! 160: #define FAR (COLNO+2) /* position outside screen */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.