1 /* SCCS Id: @(#)permonst.h 3.4 1999/07/02 */ 2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3 /* NetHack may be freely redistributed. See license for details. */ 4 5 #ifndef PERMONST_H 6 #define PERMONST_H 7 8 /* This structure covers all attack forms. 9 * aatyp is the gross attack type (eg. claw, bite, breath, ...) 10 * adtyp is the damage type (eg. physical, fire, cold, spell, ...) 11 * damn is the number of hit dice of damage from the attack. 12 * damd is the number of sides on each die. 13 * 14 * Some attacks can do no points of damage. Additionally, some can 15 * have special effects *and* do damage as well. If damn and damd 16 * are set, they may have a special meaning. For example, if set 17 * for a blinding attack, they determine the amount of time blinded. 18 */ 19 20 struct attack { 21 uchar aatyp; 22 uchar adtyp, damn, damd; 23 }; 24 25 /* Max # of attacks for any given monster. 26 */ 27 28 #define NATTK 6 29 30 /* Weight of a human body 31 */ 32 33 #define WT_HUMAN 1450 34 35 #ifndef ALIGN_H 36 #include "align.h" 37 #endif 38 #include "monattk.h" 39 #include "monflag.h" 40 41 struct permonst { 42 const char *mname; /* full name */ 43 char mlet; /* symbol */ 44 schar mlevel, /* base monster level */ 45 mmove, /* move speed */ 46 ac, /* (base) armor class */ 47 mr; /* (base) magic resistance */ 48 aligntyp maligntyp; /* basic monster alignment */ 49 unsigned short geno; /* creation/geno mask value */ 50 struct attack mattk[NATTK]; /* attacks matrix */ 51 unsigned short cwt, /* weight of corpse */ 52 cnutrit; /* its nutritional value */ 53 short pxlth; /* length of extension */ 54 uchar msound; /* noise it makes (6 bits) */ 55 uchar msize; /* physical size (3 bits) */ 56 uchar mresists; /* resistances */ 57 uchar mconveys; /* conveyed by eating */ 58 unsigned long mflags1, /* boolean bitflags */ 59 mflags2; /* more boolean bitflags */ 60 unsigned short mflags3; /* yet more boolean bitflags */ 61 # ifdef TEXTCOLOR 62 uchar mcolor; /* color to use */ 63 # endif 64 }; 65 66 extern NEARDATA struct permonst 67 mons[]; /* the master list of monster types */ 68 69 #define VERY_SLOW 3 70 #define SLOW_SPEED 9 71 #define NORMAL_SPEED 12 /* movement rates */ 72 #define FAST_SPEED 15 73 #define VERY_FAST 24 74 75 #define NON_PM PM_PLAYERMON /* "not a monster" */ 76 #define LOW_PM (NON_PM+1) /* first monster in mons[] */ 77 #define SPECIAL_PM PM_LONG_WORM_TAIL /* [normal] < ~ < [special] */ 78 /* mons[SPECIAL_PM] through mons[NUMMONS-1], inclusive, are 79 never generated randomly and cannot be polymorphed into */ 80 81 #endif /* PERMONST_H */ 82