1 /* SCCS Id: @(#)monflag.h 3.4 1996/05/04 */ 2 /* Copyright (c) 1989 Mike Threepoint */ 3 /* NetHack may be freely redistributed. See license for details. */ 4 5 #ifndef MONFLAG_H 6 #define MONFLAG_H 7 8 #define MS_SILENT 0 /* makes no sound */ 9 #define MS_BARK 1 /* if full moon, may howl */ 10 #define MS_MEW 2 /* mews or hisses */ 11 #define MS_ROAR 3 /* roars */ 12 #define MS_GROWL 4 /* growls */ 13 #define MS_SQEEK 5 /* squeaks, as a rodent */ 14 #define MS_SQAWK 6 /* squawks, as a bird */ 15 #define MS_HISS 7 /* hisses */ 16 #define MS_BUZZ 8 /* buzzes (killer bee) */ 17 #define MS_GRUNT 9 /* grunts (or speaks own language) */ 18 #define MS_NEIGH 10 /* neighs, as an equine */ 19 #define MS_WAIL 11 /* wails, as a tortured soul */ 20 #define MS_GURGLE 12 /* gurgles, as liquid or through saliva */ 21 #define MS_BURBLE 13 /* burbles (jabberwock) */ 22 #define MS_ANIMAL 13 /* up to here are animal noises */ 23 #define MS_SHRIEK 15 /* wakes up others */ 24 #define MS_BONES 16 /* rattles bones (skeleton) */ 25 #define MS_LAUGH 17 /* grins, smiles, giggles, and laughs */ 26 #define MS_MUMBLE 18 /* says something or other */ 27 #define MS_IMITATE 19 /* imitates others (leocrotta) */ 28 #define MS_ORC MS_GRUNT /* intelligent brutes */ 29 #define MS_HUMANOID 20 /* generic traveling companion */ 30 #ifdef KOPS 31 #define MS_ARREST 21 /* "Stop in the name of the law!" (Kops) */ 32 #endif 33 #define MS_SOLDIER 22 /* army and watchmen expressions */ 34 #define MS_GUARD 23 /* "Please drop that gold and follow me." */ 35 #define MS_DJINNI 24 /* "Thank you for freeing me!" */ 36 #define MS_NURSE 25 /* "Take off your shirt, please." */ 37 #define MS_SEDUCE 26 /* "Hello, sailor." (Nymphs) */ 38 #define MS_VAMPIRE 27 /* vampiric seduction, Vlad's exclamations */ 39 #define MS_BRIBE 28 /* asks for money, or berates you */ 40 #define MS_CUSS 29 /* berates (demons) or intimidates (Wiz) */ 41 #define MS_RIDER 30 /* astral level special monsters */ 42 #define MS_LEADER 31 /* your class leader */ 43 #define MS_NEMESIS 32 /* your nemesis */ 44 #define MS_GUARDIAN 33 /* your leader's guards */ 45 #define MS_SELL 34 /* demand payment, complain about shoplifters */ 46 #define MS_ORACLE 35 /* do a consultation */ 47 #define MS_PRIEST 36 /* ask for contribution; do cleansing */ 48 #define MS_SPELL 37 /* spellcaster not matching any of the above */ 49 #define MS_WERE 38 /* lycanthrope in human form */ 50 #define MS_BOAST 39 /* giants */ 51 #define MS_GYPSY 40 /* gypsies */ 52 #define MS_SHEEP 41 /* sheep */ 53 #define MS_CHICKEN 42 /* chicken */ 54 #define MS_COW 43 /* cows and bulls */ 55 #define MS_PARROT 44 /* parrots */ 56 57 58 #define MR_FIRE 0x01 /* resists fire */ 59 #define MR_COLD 0x02 /* resists cold */ 60 #define MR_SLEEP 0x04 /* resists sleep */ 61 #define MR_DISINT 0x08 /* resists disintegration */ 62 #define MR_ELEC 0x10 /* resists electricity */ 63 #define MR_POISON 0x20 /* resists poison */ 64 #define MR_ACID 0x40 /* resists acid */ 65 #define MR_STONE 0x80 /* resists petrification */ 66 67 /* other resistances: magic, sickness */ 68 /* other conveyances: teleport, teleport control, telepathy */ 69 70 /* individual resistances */ 71 #define MR2_SEE_INVIS 0x0100 /* see invisible */ 72 #define MR2_LEVITATE 0x0200 /* levitation */ 73 #define MR2_WATERWALK 0x0400 /* water walking */ 74 #define MR2_MAGBREATH 0x0800 /* magical breathing */ 75 #define MR2_DISPLACED 0x1000 /* displaced */ 76 #define MR2_STRENGTH 0x2000 /* gauntlets of power */ 77 #define MR2_FUMBLING 0x4000 /* clumsy */ 78 79 /* more type resistances */ 80 #define MR_DEATH 0x00400000L /* resists death magic */ 81 #define MR_DRAIN 0x00800000L /* resists level drain */ 82 83 #define MR_PLUSONE 0x01000000L /* need +1 weapon to hit */ 84 #define MR_PLUSTWO 0x02000000L /* need +2 weapon to hit */ 85 #define MR_PLUSTHREE 0x04000000L /* need +3 weapon to hit */ 86 #define MR_PLUSFOUR 0x08000000L /* need +4 weapon to hit */ 87 88 /* Doesn't really belong under resistances, but ... */ 89 #define MR_HITASONE 0x10000000L /* hits ceatures as +1 weapon */ 90 #define MR_HITASTWO 0x20000000L /* hits ceatures as +2 weapon */ 91 #define MR_HITASTHREE 0x40000000L /* hits ceatures as +3 weapon */ 92 #define MR_HITASFOUR 0x80000000L /* hits ceatures as +4 weapon */ 93 94 #define MR_TYPEMASK 0xFFC000FFL /* bits to take from mresists */ 95 96 97 #define M1_FLY 0x00000001L /* can fly or float */ 98 #define M1_SWIM 0x00000002L /* can traverse water */ 99 #define M1_AMORPHOUS 0x00000004L /* can flow under doors */ 100 #define M1_WALLWALK 0x00000008L /* can phase thru rock */ 101 #define M1_CLING 0x00000010L /* can cling to ceiling */ 102 #define M1_TUNNEL 0x00000020L /* can tunnel thru rock */ 103 #define M1_NEEDPICK 0x00000040L /* needs pick to tunnel */ 104 #define M1_CONCEAL 0x00000080L /* hides under objects */ 105 #define M1_HIDE 0x00000100L /* mimics, blends in with ceiling */ 106 #define M1_AMPHIBIOUS 0x00000200L /* can survive underwater */ 107 #define M1_BREATHLESS 0x00000400L /* doesn't need to breathe */ 108 #define M1_NOTAKE 0x00000800L /* cannot pick up objects */ 109 #define M1_NOEYES 0x00001000L /* no eyes to gaze into or blind */ 110 #define M1_NOHANDS 0x00002000L /* no hands to handle things */ 111 #define M1_NOLIMBS 0x00006000L /* no arms/legs to kick/wear on */ 112 #define M1_NOHEAD 0x00008000L /* no head to behead */ 113 #define M1_MINDLESS 0x00010000L /* has no mind--golem, zombie, mold */ 114 #define M1_HUMANOID 0x00020000L /* has humanoid head/arms/torso */ 115 #define M1_ANIMAL 0x00040000L /* has animal body */ 116 #define M1_SLITHY 0x00080000L /* has serpent body */ 117 #define M1_UNSOLID 0x00100000L /* has no solid or liquid body */ 118 #define M1_THICK_HIDE 0x00200000L /* has thick hide or scales */ 119 #define M1_OVIPAROUS 0x00400000L /* can lay eggs */ 120 #define M1_REGEN 0x00800000L /* regenerates hit points */ 121 #define M1_SEE_INVIS 0x01000000L /* can see invisible creatures */ 122 #define M1_TPORT 0x02000000L /* can teleport */ 123 #define M1_TPORT_CNTRL 0x04000000L /* controls where it teleports to */ 124 #define M1_ACID 0x08000000L /* acidic to eat */ 125 #define M1_POIS 0x10000000L /* poisonous to eat */ 126 #define M1_CARNIVORE 0x20000000L /* eats corpses */ 127 #define M1_HERBIVORE 0x40000000L /* eats fruits */ 128 #define M1_OMNIVORE 0x60000000L /* eats both */ 129 #ifdef NHSTDC 130 #define M1_METALLIVORE 0x80000000UL /* eats metal */ 131 #else 132 #define M1_METALLIVORE 0x80000000L /* eats metal */ 133 #endif 134 135 #define M2_NOPOLY 0x00000001L /* players mayn't poly into one */ 136 #define M2_UNDEAD 0x00000002L /* is walking dead */ 137 #define M2_MERC 0x00000004L /* is a guard or soldier */ 138 #define M2_HUMAN 0x00000008L /* is a human */ 139 #define M2_ELF 0x00000010L /* is an elf */ 140 #define M2_DWARF 0x00000020L /* is a dwarf */ 141 #define M2_GNOME 0x00000040L /* is a gnome */ 142 #define M2_ORC 0x00000080L /* is an orc */ 143 #define M2_HOBBIT 0x00000100L /* is a hobbit */ 144 #define M2_WERE 0x00000200L /* is a lycanthrope */ 145 #define M2_VAMPIRE 0x00000400L /* is a vampire */ 146 #define M2_LORD 0x00000800L /* is a lord to its kind */ 147 #define M2_PRINCE 0x00001000L /* is an overlord to its kind */ 148 #define M2_MINION 0x00002000L /* is a minion of a deity */ 149 #define M2_GIANT 0x00004000L /* is a giant */ 150 #define M2_DEMON 0x00008000L /* is a demon */ 151 #define M2_MALE 0x00010000L /* always male */ 152 #define M2_FEMALE 0x00020000L /* always female */ 153 #define M2_NEUTER 0x00040000L /* neither male nor female */ 154 #define M2_PNAME 0x00080000L /* monster name is a proper name */ 155 #define M2_HOSTILE 0x00100000L /* always starts hostile */ 156 #define M2_PEACEFUL 0x00200000L /* always starts peaceful */ 157 #define M2_DOMESTIC 0x00400000L /* can be tamed by feeding */ 158 #define M2_WANDER 0x00800000L /* wanders randomly */ 159 #define M2_STALK 0x01000000L /* follows you to other levels */ 160 #define M2_NASTY 0x02000000L /* extra-nasty monster (more xp) */ 161 #define M2_STRONG 0x04000000L /* strong (or big) monster */ 162 #define M2_ROCKTHROW 0x08000000L /* throws boulders */ 163 #define M2_GREEDY 0x10000000L /* likes gold */ 164 #define M2_JEWELS 0x20000000L /* likes gems */ 165 #define M2_COLLECT 0x40000000L /* picks up weapons and food */ 166 #ifdef NHSTDC 167 #define M2_MAGIC 0x80000000UL /* picks up magic items */ 168 #else 169 #define M2_MAGIC 0x80000000L /* picks up magic items */ 170 #endif 171 172 #define M3_WANTSAMUL 0x0001 /* would like to steal the amulet */ 173 #define M3_WANTSBELL 0x0002 /* wants the bell */ 174 #define M3_WANTSBOOK 0x0004 /* wants the book */ 175 #define M3_WANTSCAND 0x0008 /* wants the candelabrum */ 176 #define M3_WANTSARTI 0x0010 /* wants the quest artifact */ 177 #define M3_WANTSALL 0x001f /* wants any major artifact */ 178 #define M3_WAITFORU 0x0040 /* waits to see you or get attacked */ 179 #define M3_CLOSE 0x0080 /* lets you close unless attacked */ 180 181 #define M3_COVETOUS 0x001f /* wants something */ 182 #define M3_WAITMASK 0x00c0 /* waiting... */ 183 184 /* Infravision is currently implemented for players only */ 185 #define M3_INFRAVISION 0x0100 /* has infravision */ 186 #define M3_INFRAVISIBLE 0x0200 /* visible by infravision */ 187 188 /* [DS] Lethe */ 189 #define M3_TRAITOR 0x0400L /* Capable of treachery */ 190 #define M3_NOTAME 0x0800L /* Cannot be tamed */ 191 192 193 #define MZ_TINY 0 /* < 2' */ 194 #define MZ_SMALL 1 /* 2-4' */ 195 #define MZ_MEDIUM 2 /* 4-7' */ 196 #define MZ_HUMAN MZ_MEDIUM /* human-sized */ 197 #define MZ_LARGE 3 /* 7-12' */ 198 #define MZ_HUGE 4 /* 12-25' */ 199 #define MZ_GIGANTIC 7 /* off the scale */ 200 201 202 /* Monster races -- must stay within ROLE_RACEMASK */ 203 /* Eventually this may become its own field */ 204 #define MH_HUMAN M2_HUMAN 205 #define MH_ELF M2_ELF 206 #define MH_DWARF M2_DWARF 207 #define MH_GNOME M2_GNOME 208 #define MH_ORC M2_ORC 209 #define MH_HOBBIT M2_HOBBIT 210 #define MH_WERE M2_WERE 211 #define MH_VAMPIRE M2_VAMPIRE 212 213 214 /* for mons[].geno (constant during game) */ 215 #define G_VLGROUP 0x2000 /* appear in very large groups normally */ 216 #define G_UNIQ 0x1000 /* generated only once */ 217 #define G_NOHELL 0x0800 /* not generated in "hell" */ 218 #define G_HELL 0x0400 /* generated only in "hell" */ 219 #define G_NOGEN 0x0200 /* generated only specially */ 220 #define G_SGROUP 0x0080 /* appear in small groups normally */ 221 #define G_LGROUP 0x0040 /* appear in large groups normally */ 222 #define G_GENO 0x0020 /* can be genocided */ 223 #define G_NOCORPSE 0x0010 /* no corpse left ever */ 224 #define G_FREQ 0x0007 /* creation frequency mask */ 225 226 /* for mvitals[].mvflags (variant during game), along with G_NOCORPSE */ 227 #define G_KNOWN 0x0004 /* have been encountered */ 228 #define G_GONE (G_GENOD|G_EXTINCT) 229 #define G_GENOD 0x0002 /* have been genocided */ 230 #define G_EXTINCT 0x0001 /* have been extinguished as 231 population control */ 232 #define MV_KNOWS_EGG 0x0008 /* player recognizes egg of this 233 monster type */ 234 235 /* Additional flag for mkclass() */ 236 #define MKC_ULIMIT 0x10000 /* place an upper limit on difficulty 237 of generated monster */ 238 #endif /* MONFLAG_H */ 239