OSDN Git Service

Initial Import
[nethackexpress/trunk.git] / include / permonst.h
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 */