Annotation of 43BSDReno/games/hack/hack.h, revision 1.1.1.1

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 */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.