This is obj.h in view mode; [Download] [Up]
/* SCCS Id: @(#)obj.h 3.0 89/11/10
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
#ifndef OBJ_H
#define OBJ_H
struct obj {
struct obj *nobj;
struct obj *nexthere; /* for location lists */
struct obj *cobj; /* id of container object is in */
/* unsigned o_cwt; /* container weight capacity */
unsigned o_id;
xchar ox,oy;
xchar odx,ody;
unsigned otyp;
unsigned owt;
unsigned quan; /* use oextra for tmp gold objects */
schar spe; /* quality of weapon, armor or ring (+ or -)
number of charges for wand ( >= -1 )
marks your eggs, spinach tins, key shapes
indicates statues have spellbooks inside
tells which fruit a fruit is
marks diluted potions
special for uball and amulet %% BAH */
#define N_LOX 10 /* # of key/lock shapes */
char olet;
char invlet;
int corpsenm; /* type of corpse is mons[corpsenm] */
#define leashmon corpsenm /* gets m_id of attached pet */
Bitfield(oinvis,1); /* not yet implemented */
Bitfield(olocked,1); /* object is locked */
#define recharged olocked /* recharged once */
#define orotten olocked /* rotten food */
Bitfield(otrapped,1); /* container is trapped */
#define opoisoned otrapped /* object (weapon) is coated with poison */
Bitfield(odispl,1);
Bitfield(known,1); /* exact nature known */
Bitfield(dknown,1); /* color or text known */
Bitfield(bknown,1); /* blessing or curse known */
Bitfield(cursed,1);
Bitfield(blessed,1);
Bitfield(unpaid,1); /* on some bill */
Bitfield(rustfree,1);
#ifndef NO_SIGNAL
# define in_use rustfree /* for magic items before useup items */
#endif
Bitfield(no_charge,1); /* if shk shouldn't charge for this */
Bitfield(onamelth,6);
unsigned oeaten; /* nutrition left in food, if partly eaten */
long age; /* creation date */
long owornmask;
/* note that TIMEOUT in you.h is defined as 07777L; no bits for items that
* confer properties may overlap that mask, or timeout.c will happily
* rearrange the bits behind the back of the property code
* shirts, balls, and chains are currently safe
*/
#define W_BALL 02000L
#define W_CHAIN 04000L
#define W_RINGL 010000L /* make W_RINGL = RING_LEFT (see uprop) */
#define W_RINGR 020000L
#define W_RING (W_RINGL | W_RINGR)
#define W_ARM 040000L
#define W_ARMC 0100000L
#define W_ARMH 0200000L
#define W_ARMS 0400000L
#define W_ARMG 01000000L
#define W_ARMF 02000000L
#define W_AMUL 04000000L
#define W_TOOL 010000000L /* wearing another tool (see uprop) */
#define W_WEP 020000000L
#ifdef SHIRT
#define W_ARMU 01000L
#define W_ARMOR (W_ARM | W_ARMC | W_ARMH | W_ARMS | W_ARMG | W_ARMF | W_ARMU)
#else
#define W_ARMOR (W_ARM | W_ARMC | W_ARMH | W_ARMS | W_ARMG | W_ARMF)
#endif
long oextra[1]; /* used for name of ordinary objects - length
is flexible; amount for tmp gold objects */
};
#define newobj(xl) (struct obj *) alloc((unsigned)(xl) + sizeof(struct obj))
#define ONAME(otmp) ((char *) otmp->oextra)
#define OGOLD(otmp) (otmp->oextra[0])
# ifndef STUPID_CPP /* otherwise these macros are functions */
#define Is_container(otmp) (otmp->otyp >= ICE_BOX && otmp->otyp <= BAG_OF_TRICKS)
#define Is_box(otmp) (otmp->otyp == LARGE_BOX || otmp->otyp == CHEST)
#define Is_mbag(otmp) (otmp->otyp == BAG_OF_HOLDING || otmp->otyp == BAG_OF_TRICKS)
#define is_sword(otmp) (otmp->otyp >= SHORT_SWORD && otmp->otyp <= KATANA)
#define bimanual(otmp) (otmp->olet == WEAPON_SYM && objects[otmp->otyp].oc_bimanual)
#define is_rustprone(otmp) (objects[otmp->otyp].oc_material == METAL)
#define is_corrodeable(otmp) (objects[otmp->otyp].oc_material == COPPER)
# endif /* STUPID_CPP */
#endif /* OBJ_H /**/
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.