home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / hack / 2_3 / obj.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-20  |  1.8 KB  |  66 lines

  1. /*    SCCS Id: @(#)obj.h    2.3    88/01/21
  2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  3.  
  4. #ifndef OBJ_H
  5. #define OBJ_H
  6.  
  7. struct obj {
  8.     struct obj *nobj;
  9.     unsigned o_id;
  10.     unsigned o_cnt_id;        /* id of container object is in */
  11.     xchar ox,oy;
  12.     xchar odx,ody;
  13.     unsigned otyp;
  14. #ifdef DGK
  15.     unsigned int    owt;
  16.     unsigned int    quan;
  17. #else
  18.     uchar owt;
  19.     uchar quan;        /* use oextra for tmp gold objects */
  20. #endif
  21.     schar spe;        /* quality of weapon, armor or ring (+ or -)
  22.                    number of charges for wand ( >= -1 )
  23.                    special for uball and amulet %% BAH */
  24.     char olet;
  25.     char invlet;
  26.     Bitfield(oinvis,1);    /* not yet implemented */
  27.     Bitfield(odispl,1);
  28.     Bitfield(known,1);    /* exact nature known */
  29.     Bitfield(dknown,1);    /* color or text known */
  30.     Bitfield(cursed,1);
  31.     Bitfield(unpaid,1);    /* on some bill */
  32.     Bitfield(rustfree,1);
  33.     Bitfield(no_charge, 1);    /* if shk shouldn't charge for this */
  34.     Bitfield(onamelth,6);
  35.     long age;        /* creation date */
  36.     long owornmask;
  37. #define    W_ARM    01L
  38. #define    W_ARM2    02L
  39. #define    W_ARMH    04L
  40. #define    W_ARMS    010L
  41. #define    W_ARMG    020L
  42. #define    W_TOOL    040L    /* wearing a blindfold or badge */
  43. #ifdef SHIRT
  44. #define W_ARMU  0100L
  45. #define W_ARMOR        (W_ARM | W_ARM2 | W_ARMH | W_ARMS | W_ARMG | W_ARMU)
  46. #else
  47. #define    W_ARMOR        (W_ARM | W_ARM2 | W_ARMH | W_ARMS | W_ARMG)
  48. #endif
  49. #define    W_RINGL    010000L    /* make W_RINGL = RING_LEFT (see uprop) */
  50. #define    W_RINGR    020000L
  51. #define    W_RING        (W_RINGL | W_RINGR)
  52. #define    W_WEP    01000L
  53. #define    W_BALL    02000L
  54. #define    W_CHAIN    04000L
  55.     long oextra[1];        /* used for name of ordinary objects - length
  56.                    is flexible; amount for tmp gold objects */
  57. };
  58.  
  59. extern struct obj *fobj;
  60.  
  61. #define newobj(xl)    (struct obj *) alloc((unsigned)(xl) + sizeof(struct obj))
  62. #define    ONAME(otmp)    ((char *) otmp->oextra)
  63. #define    OGOLD(otmp)    (otmp->oextra[0])
  64.  
  65. #endif
  66.