monflag.h

Go to the documentation of this file.
00001 /*      SCCS Id: @(#)monflag.h  3.4     1996/05/04      */
00002 /* Copyright (c) 1989 Mike Threepoint                             */
00003 /* NetHack may be freely redistributed.  See license for details. */
00004 
00005 #ifndef MONFLAG_H
00006 #define MONFLAG_H
00007 
00008 #define MS_SILENT       0       /* makes no sound */
00009 #define MS_BARK         1       /* if full moon, may howl */
00010 #define MS_MEW          2       /* mews or hisses */
00011 #define MS_ROAR         3       /* roars */
00012 #define MS_GROWL        4       /* growls */
00013 #define MS_SQEEK        5       /* squeaks, as a rodent */
00014 #define MS_SQAWK        6       /* squawks, as a bird */
00015 #define MS_HISS         7       /* hisses */
00016 #define MS_BUZZ         8       /* buzzes (killer bee) */
00017 #define MS_GRUNT        9       /* grunts (or speaks own language) */
00018 #define MS_NEIGH        10      /* neighs, as an equine */
00019 #define MS_WAIL         11      /* wails, as a tortured soul */
00020 #define MS_GURGLE       12      /* gurgles, as liquid or through saliva */
00021 #define MS_BURBLE       13      /* burbles (jabberwock) */
00022 #define MS_ANIMAL       13      /* up to here are animal noises */
00023 #define MS_SHRIEK       15      /* wakes up others */
00024 #define MS_BONES        16      /* rattles bones (skeleton) */
00025 #define MS_LAUGH        17      /* grins, smiles, giggles, and laughs */
00026 #define MS_MUMBLE       18      /* says something or other */
00027 #define MS_IMITATE      19      /* imitates others (leocrotta) */
00028 #define MS_ORC          MS_GRUNT        /* intelligent brutes */
00029 #define MS_HUMANOID     20      /* generic traveling companion */
00030 #ifdef KOPS
00031 #define MS_ARREST       21      /* "Stop in the name of the law!" (Kops) */
00032 #endif
00033 #define MS_SOLDIER      22      /* army and watchmen expressions */
00034 #define MS_GUARD        23      /* "Please drop that gold and follow me." */
00035 #define MS_DJINNI       24      /* "Thank you for freeing me!" */
00036 #define MS_NURSE        25      /* "Take off your shirt, please." */
00037 #define MS_SEDUCE       26      /* "Hello, sailor." (Nymphs) */
00038 #define MS_VAMPIRE      27      /* vampiric seduction, Vlad's exclamations */
00039 #define MS_BRIBE        28      /* asks for money, or berates you */
00040 #define MS_CUSS         29      /* berates (demons) or intimidates (Wiz) */
00041 #define MS_RIDER        30      /* astral level special monsters */
00042 #define MS_LEADER       31      /* your class leader */
00043 #define MS_NEMESIS      32      /* your nemesis */
00044 #define MS_GUARDIAN     33      /* your leader's guards */
00045 #define MS_SELL         34      /* demand payment, complain about shoplifters */
00046 #define MS_ORACLE       35      /* do a consultation */
00047 #define MS_PRIEST       36      /* ask for contribution; do cleansing */
00048 #define MS_SPELL        37      /* spellcaster not matching any of the above */
00049 #define MS_WERE         38      /* lycanthrope in human form */
00050 #define MS_BOAST        39      /* giants */
00051 
00052 
00053 #define MR_FIRE         0x01    /* resists fire */
00054 #define MR_COLD         0x02    /* resists cold */
00055 #define MR_SLEEP        0x04    /* resists sleep */
00056 #define MR_DISINT       0x08    /* resists disintegration */
00057 #define MR_ELEC         0x10    /* resists electricity */
00058 #define MR_POISON       0x20    /* resists poison */
00059 #define MR_ACID         0x40    /* resists acid */
00060 #define MR_STONE        0x80    /* resists petrification */
00061 /* other resistances: magic, sickness */
00062 /* other conveyances: teleport, teleport control, telepathy */
00063 
00064 /* individual resistances */
00065 #define MR2_SEE_INVIS   0x0100  /* see invisible */
00066 #define MR2_LEVITATE    0x0200  /* levitation */
00067 #define MR2_WATERWALK   0x0400  /* water walking */
00068 #define MR2_MAGBREATH   0x0800  /* magical breathing */
00069 #define MR2_DISPLACED   0x1000  /* displaced */
00070 #define MR2_STRENGTH    0x2000  /* gauntlets of power */
00071 #define MR2_FUMBLING    0x4000  /* clumsy */
00072 
00073 
00074 #define M1_FLY          0x00000001L     /* can fly or float */
00075 #define M1_SWIM         0x00000002L     /* can traverse water */
00076 #define M1_AMORPHOUS    0x00000004L     /* can flow under doors */
00077 #define M1_WALLWALK     0x00000008L     /* can phase thru rock */
00078 #define M1_CLING        0x00000010L     /* can cling to ceiling */
00079 #define M1_TUNNEL       0x00000020L     /* can tunnel thru rock */
00080 #define M1_NEEDPICK     0x00000040L     /* needs pick to tunnel */
00081 #define M1_CONCEAL      0x00000080L     /* hides under objects */
00082 #define M1_HIDE         0x00000100L     /* mimics, blends in with ceiling */
00083 #define M1_AMPHIBIOUS   0x00000200L     /* can survive underwater */
00084 #define M1_BREATHLESS   0x00000400L     /* doesn't need to breathe */
00085 #define M1_NOTAKE       0x00000800L     /* cannot pick up objects */
00086 #define M1_NOEYES       0x00001000L     /* no eyes to gaze into or blind */
00087 #define M1_NOHANDS      0x00002000L     /* no hands to handle things */
00088 #define M1_NOLIMBS      0x00006000L     /* no arms/legs to kick/wear on */
00089 #define M1_NOHEAD       0x00008000L     /* no head to behead */
00090 #define M1_MINDLESS     0x00010000L     /* has no mind--golem, zombie, mold */
00091 #define M1_HUMANOID     0x00020000L     /* has humanoid head/arms/torso */
00092 #define M1_ANIMAL       0x00040000L     /* has animal body */
00093 #define M1_SLITHY       0x00080000L     /* has serpent body */
00094 #define M1_UNSOLID      0x00100000L     /* has no solid or liquid body */
00095 #define M1_THICK_HIDE   0x00200000L     /* has thick hide or scales */
00096 #define M1_OVIPAROUS    0x00400000L     /* can lay eggs */
00097 #define M1_REGEN        0x00800000L     /* regenerates hit points */
00098 #define M1_SEE_INVIS    0x01000000L     /* can see invisible creatures */
00099 #define M1_TPORT        0x02000000L     /* can teleport */
00100 #define M1_TPORT_CNTRL  0x04000000L     /* controls where it teleports to */
00101 #define M1_ACID         0x08000000L     /* acidic to eat */
00102 #define M1_POIS         0x10000000L     /* poisonous to eat */
00103 #define M1_CARNIVORE    0x20000000L     /* eats corpses */
00104 #define M1_HERBIVORE    0x40000000L     /* eats fruits */
00105 #define M1_OMNIVORE     0x60000000L     /* eats both */
00106 #ifdef NHSTDC
00107 #define M1_METALLIVORE  0x80000000UL    /* eats metal */
00108 #else
00109 #define M1_METALLIVORE  0x80000000L     /* eats metal */
00110 #endif
00111 
00112 #define M2_NOPOLY       0x00000001L     /* players mayn't poly into one */
00113 #define M2_UNDEAD       0x00000002L     /* is walking dead */
00114 #define M2_WERE         0x00000004L     /* is a lycanthrope */
00115 #define M2_HUMAN        0x00000008L     /* is a human */
00116 #define M2_ELF          0x00000010L     /* is an elf */
00117 #define M2_DWARF        0x00000020L     /* is a dwarf */
00118 #define M2_GNOME        0x00000040L     /* is a gnome */
00119 #define M2_ORC          0x00000080L     /* is an orc */
00120 #define M2_VAMPIRE      0x00000100L     /* is a vampire */
00121 #define M2_DEMON        0x00000200L     /* is a demon */
00122 #define M2_MERC         0x00000400L     /* is a guard or soldier */
00123 #define M2_LORD         0x00000800L     /* is a lord to its kind */
00124 #define M2_PRINCE       0x00001000L     /* is an overlord to its kind */
00125 #define M2_MINION       0x00002000L     /* is a minion of a deity */
00126 #define M2_GIANT        0x00004000L     /* is a giant */
00127 
00128 #define M2_MALE         0x00010000L     /* always male */
00129 #define M2_FEMALE       0x00020000L     /* always female */
00130 #define M2_NEUTER       0x00040000L     /* neither male nor female */
00131 #define M2_PNAME        0x00080000L     /* monster name is a proper name */
00132 #define M2_HOSTILE      0x00100000L     /* always starts hostile */
00133 #define M2_PEACEFUL     0x00200000L     /* always starts peaceful */
00134 #define M2_DOMESTIC     0x00400000L     /* can be tamed by feeding */
00135 #define M2_WANDER       0x00800000L     /* wanders randomly */
00136 #define M2_STALK        0x01000000L     /* follows you to other levels */
00137 #define M2_NASTY        0x02000000L     /* extra-nasty monster (more xp) */
00138 #define M2_STRONG       0x04000000L     /* strong (or big) monster */
00139 #define M2_ROCKTHROW    0x08000000L     /* throws boulders */
00140 #define M2_GREEDY       0x10000000L     /* likes gold */
00141 #define M2_JEWELS       0x20000000L     /* likes gems */
00142 #define M2_COLLECT      0x40000000L     /* picks up weapons and food */
00143 #ifdef NHSTDC
00144 #define M2_MAGIC        0x80000000UL    /* picks up magic items */
00145 #else
00146 #define M2_MAGIC        0x80000000L     /* picks up magic items */
00147 #endif
00148 
00149 #define M3_WANTSAMUL    0x0001          /* would like to steal the amulet */
00150 #define M3_WANTSBELL    0x0002          /* wants the bell */
00151 #define M3_WANTSBOOK    0x0004          /* wants the book */
00152 #define M3_WANTSCAND    0x0008          /* wants the candelabrum */
00153 #define M3_WANTSARTI    0x0010          /* wants the quest artifact */
00154 #define M3_WANTSALL     0x001f          /* wants any major artifact */
00155 #define M3_WAITFORU     0x0040          /* waits to see you or get attacked */
00156 #define M3_CLOSE        0x0080          /* lets you close unless attacked */
00157 
00158 #define M3_COVETOUS     0x001f          /* wants something */
00159 #define M3_WAITMASK     0x00c0          /* waiting... */
00160 
00161 /* Infravision is currently implemented for players only */
00162 #define M3_INFRAVISION  0x0100          /* has infravision */
00163 #define M3_INFRAVISIBLE 0x0200          /* visible by infravision */
00164 
00165 #define MZ_TINY         0               /* < 2' */
00166 #define MZ_SMALL        1               /* 2-4' */
00167 #define MZ_MEDIUM       2               /* 4-7' */
00168 #define MZ_HUMAN        MZ_MEDIUM       /* human-sized */
00169 #define MZ_LARGE        3               /* 7-12' */
00170 #define MZ_HUGE         4               /* 12-25' */
00171 #define MZ_GIGANTIC     7               /* off the scale */
00172 
00173 
00174 /* Monster races -- must stay within ROLE_RACEMASK */
00175 /* Eventually this may become its own field */
00176 #define MH_HUMAN        M2_HUMAN
00177 #define MH_ELF          M2_ELF
00178 #define MH_DWARF        M2_DWARF
00179 #define MH_GNOME        M2_GNOME
00180 #define MH_ORC          M2_ORC
00181 #define MH_VAMPIRE      M2_VAMPIRE
00182 
00183 
00184 /* for mons[].geno (constant during game) */
00185 #define G_UNIQ          0x1000          /* generated only once */
00186 #define G_NOHELL        0x0800          /* not generated in "hell" */
00187 #define G_HELL          0x0400          /* generated only in "hell" */
00188 #define G_NOGEN         0x0200          /* generated only specially */
00189 #define G_SGROUP        0x0080          /* appear in small groups normally */
00190 #define G_LGROUP        0x0040          /* appear in large groups normally */
00191 #define G_GENO          0x0020          /* can be genocided */
00192 #define G_NOCORPSE      0x0010          /* no corpse left ever */
00193 #define G_FREQ          0x0007          /* creation frequency mask */
00194 
00195 /* for mvitals[].mvflags (variant during game), along with G_NOCORPSE */
00196 #define G_KNOWN         0x0004          /* have been encountered */
00197 #define G_GONE          (G_GENOD|G_EXTINCT)
00198 #define G_GENOD         0x0002          /* have been genocided */
00199 #define G_EXTINCT       0x0001          /* have been extinguished as
00200                                            population control */
00201 #define MV_KNOWS_EGG    0x0008          /* player recognizes egg of this
00202                                            monster type */
00203 
00204 #endif /* MONFLAG_H */