Source:SLASH'EM 0.0.7E7F2/monflag.h

Below is the full text to monflag.h from the source code of SLASH'EM 0.0.7E7F2. To link to a particular line, write [[SLASH'EM 0.0.7E7F2/monflag.h#line123 ]], for example.

The latest source code for vanilla NetHack is at Source code.

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 */