home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / volume16 / nethck31 / part11 < prev    next >
Encoding:
Internet Message Format  |  1993-01-31  |  57.6 KB

  1. Path: uunet!news.tek.com!master!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v16i011:  nethack31 - display oriented dungeons & dragons (Ver. 3.1), Part11/108
  5. Message-ID: <4294@master.CNA.TEK.COM>
  6. Date: 28 Jan 93 19:12:22 GMT
  7. Sender: news@master.CNA.TEK.COM
  8. Lines: 1269
  9. Approved: billr@saab.CNA.TEK.COM
  10. Xref: uunet comp.sources.games:1567
  11.  
  12. Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
  13. Posting-number: Volume 16, Issue 11
  14. Archive-name: nethack31/Part11
  15. Supersedes: nethack3p9: Volume 10, Issue 46-102
  16. Environment: Amiga, Atari, Mac, MS-DOS, OS2, Unix, VMS, X11
  17.  
  18.  
  19.  
  20. #! /bin/sh
  21. # This is a shell archive.  Remove anything before this line, then unpack
  22. # it by saving it into a file and typing "sh file".  To overwrite existing
  23. # files, type "sh file -c".  You can also feed this as standard input via
  24. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  25. # will see the following message at the end:
  26. #        "End of archive 11 (of 108)."
  27. # Contents:  src/monst.c1 sys/amiga/amimenu.c
  28. # Wrapped by billr@saab on Wed Jan 27 16:08:49 1993
  29. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  30. if test -f 'src/monst.c1' -a "${1}" != "-c" ; then 
  31.   echo shar: Will not clobber existing file \"'src/monst.c1'\"
  32. else
  33. echo shar: Extracting \"'src/monst.c1'\" \(48860 characters\)
  34. sed "s/^X//" >'src/monst.c1' <<'END_OF_FILE'
  35. X/*    SCCS Id: @(#)monst.c    3.1    92/11/25          */
  36. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  37. X/* NetHack may be freely redistributed.  See license for details. */
  38. X
  39. X#include "config.h"
  40. X#include "permonst.h"
  41. X#include "monsym.h"
  42. X#include "eshk.h"
  43. X#include "vault.h"
  44. X#include "epri.h"
  45. X
  46. X#ifdef MUSE
  47. X#define MARM(x,y) x /* x is usually 10 */
  48. X#else
  49. X#define MARM(x,y) y
  50. X#endif
  51. X
  52. X#define NO_ATTK     { 0, 0, 0, 0 }
  53. X
  54. X#define WT_ELF        800
  55. X#define WT_DRAGON    4500
  56. X
  57. X#ifdef C
  58. X#undef C
  59. X#endif
  60. X#ifdef TEXTCOLOR
  61. X#include "color.h"
  62. X#define C(color)    color
  63. X#define HI_DOMESTIC    WHITE        /* use for player + friendlies */
  64. X#define HI_LORD     MAGENTA
  65. X#else
  66. X#define C(color)
  67. X#endif
  68. X
  69. Xvoid NDECL(monst_init);
  70. X/*
  71. X *    Entry Format:        (from permonst.h)
  72. X *
  73. X *    name, symbol (S_* defines),
  74. X *    difficulty level, move rate, armor class, magic resistance,
  75. X *    alignment, creation/geno flags (G_* defines),
  76. X *    6 * attack structs ( type , damage-type, # dice, # sides ),
  77. X *    weight (WT_* defines), nutritional value, extension length,
  78. X *    sounds made (MS_* defines), physical size (MZ_* defines),
  79. X *    resistances, resistances conferred (both MR_* defines),
  80. X *    3 * flag bitmaps (M1_*, M2_*, and M3_* defines respectively)
  81. X *    symbol color (C(x) macro)
  82. X */
  83. X
  84. X#ifndef SPLITMON_2
  85. Xstruct permonst NEARDATA playermon = {        /* used by weapons bonus code */
  86. X    "player", S_HUMAN, 1, 10, 10, 0, 0, G_GENO | G_NOGEN,
  87. X    { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  88. X      NO_ATTK, NO_ATTK, NO_ATTK },
  89. X    WT_HUMAN, 400, PL_NSIZ, MS_HUMANOID, MZ_HUMAN, 0, 0,
  90. X    M1_NEEDPICK | M1_HUMANOID | M1_OMNIVORE,
  91. X    M2_HUMAN | M2_STRONG | M2_COLLECT, 0, C(HI_DOMESTIC)
  92. X},    NEARDATA *uasmon = &playermon;
  93. X#endif /* SPLITMON_2 */
  94. X
  95. X/*
  96. X *    Rule #1:    monsters of a given class are contiguous in the
  97. X *            mons[] array.
  98. X *
  99. X *    Rule #2:    monsters of a given class are presented in ascending
  100. X *            order of strength.
  101. X *
  102. X *    Rule #3:    monster frequency is included in the geno mask;
  103. X *            the frequency can be from 0 to 7.  0's will also
  104. X *            be skipped during generation.
  105. X *
  106. X *    Rule #4:    monster subclasses (e.g. giants) should be kept
  107. X *            together, unless it violates Rule 2.  NOGEN monsters
  108. X *            won't violate Rule 2.
  109. X *
  110. X * Guidelines for color assignment:
  111. X *
  112. X *    * Use the same color for all `growth stages' of a monster (ex.
  113. X *      little dog/big dog, baby naga/full-grown naga.
  114. X *
  115. X *    * Use colors given in names wherever possible. If the class has `real'
  116. X *      members with strong color associations, use those.
  117. X *
  118. X *    * Favor `cool' colors for cold-resistent monsters, `warm' ones for
  119. X *      fire-resistent ones.
  120. X *
  121. X *    * Try to reserve purple (magenta) for powerful `ruler' monsters (queen
  122. X *      bee, kobold lord, &c.).
  123. X *
  124. X *    * Subject to all these constraints, try to use color to make as many
  125. X *      distinctions as the / command (that is, within a monster letter
  126. X *      distinct names should map to distinct colors).
  127. X *
  128. X * The aim in assigning colors is to be consistent enough so a player can
  129. X * become `intuitive' about them, deducing some or all of these rules
  130. X * unconsciously. Use your common sense.
  131. X */
  132. X
  133. X#ifndef SPLITMON_2
  134. Xstruct permonst NEARDATA mons[] = {
  135. X/*    ants    */
  136. X    { "giant ant",    S_ANT, 2, 18, 3, 0, 0, (G_GENO | G_SGROUP | 3),
  137. X      { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK,
  138. X        NO_ATTK, NO_ATTK, NO_ATTK },
  139. X      10, 10, 0, MS_SILENT, MZ_TINY, 0, 0,
  140. X      M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE,
  141. X      M2_HOSTILE, 0, C(BROWN) },
  142. X    { "killer bee", S_ANT, 1, 18, -1, 0, 0, (G_GENO | G_LGROUP | 2),
  143. X      { { AT_STNG, AD_DRST, 1, 3 }, NO_ATTK, NO_ATTK,
  144. X        NO_ATTK, NO_ATTK, NO_ATTK },
  145. X      1, 5, 0, MS_BUZZ, MZ_TINY, MR_POISON, MR_POISON,
  146. X      M1_ANIMAL | M1_FLY | M1_NOHANDS | M1_POIS, M2_HOSTILE | M2_FEMALE,
  147. X      0, C(YELLOW) },
  148. X    { "soldier ant", S_ANT, 3, 18, 3, 0, 0, (G_GENO | G_SGROUP | 2),
  149. X      { { AT_BITE, AD_PHYS, 2, 4 }, { AT_STNG, AD_DRST, 3, 4 },
  150. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  151. X      20, 5, 0, MS_SILENT, MZ_TINY, MR_POISON, MR_POISON,
  152. X      M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_POIS | M1_CARNIVORE,
  153. X      M2_HOSTILE, 0, C(BLUE) },
  154. X    { "fire ant", S_ANT, 3, 18, 3, 10, 0, (G_GENO | G_SGROUP | 1),
  155. X      { { AT_BITE, AD_PHYS, 2, 4 }, { AT_BITE, AD_FIRE, 2, 4 },
  156. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  157. X      30, 10, 0, MS_SILENT, MZ_TINY, MR_FIRE, MR_FIRE,
  158. X      M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE,
  159. X      M2_HOSTILE, 0, C(RED) },
  160. X    { "giant beetle", S_ANT, 5, 6, 4, 0, 0, (G_GENO | 3),
  161. X      { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK,
  162. X        NO_ATTK, NO_ATTK, NO_ATTK },
  163. X      10, 10, 0, MS_SILENT, MZ_LARGE, MR_POISON, MR_POISON,
  164. X      M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_CARNIVORE,
  165. X      M2_HOSTILE, 0, C(BLACK) },
  166. X    { "queen bee", S_ANT, 9, 24, -4, 0, 0, (G_GENO | G_NOGEN),
  167. X      { { AT_STNG, AD_DRST, 1, 8 }, NO_ATTK, NO_ATTK,
  168. X        NO_ATTK, NO_ATTK, NO_ATTK },
  169. X      1, 5, 0, MS_BUZZ, MZ_TINY, MR_POISON, MR_POISON,
  170. X      M1_ANIMAL | M1_FLY | M1_NOHANDS | M1_POIS,
  171. X      M2_HOSTILE | M2_FEMALE | M2_PRINCE, 0, C(HI_LORD) },
  172. X/*    blobs    */
  173. X    { "acid blob", S_BLOB, 1, 3, 8, 0, 0, (G_GENO | 2),
  174. X      { { AT_NONE, AD_ACID, 1, 8 }, NO_ATTK, NO_ATTK,
  175. X        NO_ATTK, NO_ATTK, NO_ATTK },
  176. X      30, 10, 0, MS_SILENT, MZ_TINY,
  177. X      MR_SLEEP | MR_POISON | MR_ACID | MR_STONE, MR_SLEEP | MR_STONE,
  178. X      M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
  179. X      M1_MINDLESS | M1_ACID, M2_WANDER | M2_NEUTER, 0, C(GREEN) },
  180. X    { "quivering blob", S_BLOB, 5, 1, 8, 0, 0, (G_GENO | 2),
  181. X      { { AT_TUCH, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK,
  182. X        NO_ATTK, NO_ATTK, NO_ATTK },
  183. X      200, 100, 0, MS_SILENT, MZ_SMALL,
  184. X      MR_SLEEP | MR_POISON, MR_POISON,
  185. X      M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS,
  186. X      M2_WANDER | M2_HOSTILE | M2_NEUTER, 0, C(WHITE) },
  187. X    { "gelatinous cube", S_BLOB, 6, 6, 8, 0, 0, (G_GENO | 2),
  188. X      { { AT_TUCH, AD_PLYS, 2, 4 }, { AT_NONE, AD_PLYS, 1, 4 },
  189. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  190. X      600, 150, 0, MS_SILENT, MZ_LARGE,
  191. X      MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON | MR_ACID |
  192. X      MR_STONE, MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP,
  193. X      M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_OMNIVORE |
  194. X      M1_ACID, M2_WANDER | M2_HOSTILE | M2_NEUTER,
  195. X      0, C(CYAN) },
  196. X/*    cockatrice    */
  197. X    { "cockatrice", S_COCKATRICE, 5, 6, 6, 30, 0, (G_GENO | 5),
  198. X      { { AT_BITE, AD_PHYS, 1, 3 }, { AT_TUCH, AD_STON, 0, 0 },
  199. X        { AT_NONE, AD_STON, 0, 0 }, NO_ATTK, NO_ATTK, NO_ATTK },
  200. X      30, 30, 0, MS_HISS, MZ_SMALL,
  201. X      MR_POISON | MR_STONE, MR_POISON | MR_STONE,
  202. X      M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS, M2_HOSTILE, 0, C(YELLOW) },
  203. X/*    dogs and other canines    */
  204. X    { "jackal", S_DOG, 0, 12, 7, 0, 0, (G_GENO | G_SGROUP | 3),
  205. X      { { AT_BITE, AD_PHYS, 1, 2 }, NO_ATTK, NO_ATTK,
  206. X        NO_ATTK, NO_ATTK, NO_ATTK },
  207. X      300, 250, 0, MS_BARK, MZ_SMALL, 0, 0,
  208. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, C(BROWN) },
  209. X    { "werejackal", S_DOG, 2, 12, 7, 10, -7, G_NOGEN | G_NOCORPSE,
  210. X      { { AT_BITE, AD_WERE, 1, 4 }, NO_ATTK, NO_ATTK,
  211. X        NO_ATTK, NO_ATTK, NO_ATTK },
  212. X      300, 250, 0, MS_BARK, MZ_SMALL, MR_POISON, 0,
  213. X      M1_NOHANDS | M1_POIS | M1_REGEN | M1_CARNIVORE,
  214. X      M2_NOPOLY | M2_WERE | M2_HOSTILE, 0, C(BROWN) },
  215. X    { "little dog", S_DOG, 2, 18, 6, 0, 0, (G_GENO | 1),
  216. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  217. X        NO_ATTK, NO_ATTK, NO_ATTK },
  218. X      150, 150, 0, MS_BARK, MZ_SMALL, 0, 0,
  219. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  220. X      M2_DOMESTIC, 0, C(HI_DOMESTIC) },
  221. X    { "dog", S_DOG, 4, 16, 5, 0, 0, (G_GENO | 1),
  222. X      { { AT_BITE, AD_PHYS, 1 ,6 }, NO_ATTK, NO_ATTK,
  223. X        NO_ATTK, NO_ATTK, NO_ATTK },
  224. X      400, 200, 0, MS_BARK, MZ_MEDIUM, 0, 0,
  225. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  226. X      M2_DOMESTIC, 0, C(HI_DOMESTIC) },
  227. X    { "large dog", S_DOG, 6, 15, 4, 0, 0, (G_GENO | 1),
  228. X      { { AT_BITE, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK,
  229. X        NO_ATTK, NO_ATTK, NO_ATTK },
  230. X      800, 250, 0, MS_BARK, MZ_MEDIUM, 0, 0,
  231. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_STRONG | M2_DOMESTIC,
  232. X      0, C(HI_DOMESTIC) },
  233. X    { "wolf", S_DOG, 5, 12, 4, 0, 0, (G_GENO | G_SGROUP | 2),
  234. X      { { AT_BITE, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK,
  235. X        NO_ATTK, NO_ATTK, NO_ATTK },
  236. X      500, 250, 0, MS_BARK, MZ_SMALL, 0, 0,
  237. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, C(BROWN) },
  238. X    { "werewolf", S_DOG, 5, 12, 4, 20, -7, G_NOGEN | G_NOCORPSE,
  239. X      { { AT_BITE, AD_WERE, 2, 6 }, NO_ATTK, NO_ATTK,
  240. X        NO_ATTK, NO_ATTK, NO_ATTK },
  241. X      500, 250, 0, MS_BARK, MZ_MEDIUM, MR_POISON, 0,
  242. X      M1_NOHANDS | M1_POIS | M1_REGEN | M1_CARNIVORE,
  243. X      M2_NOPOLY | M2_WERE | M2_HOSTILE, 0, C(BROWN) },
  244. X    { "warg", S_DOG, 7, 12, 4, 0, -5, (G_GENO | G_SGROUP | 2),
  245. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK,
  246. X        NO_ATTK, NO_ATTK, NO_ATTK },
  247. X      850, 350, 0, MS_BARK, MZ_MEDIUM, 0, 0,
  248. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  249. X      M2_HOSTILE, 0, C(BROWN) },
  250. X    { "winter wolf", S_DOG, 7, 12, 4, 0, 0, (G_GENO | 1),
  251. X      { { AT_BITE, AD_PHYS, 2, 6 }, { AT_BREA, AD_COLD, 2, 6 },
  252. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  253. X      700, 300, 0, MS_BARK, MZ_LARGE, MR_COLD, MR_COLD,
  254. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  255. X      M2_HOSTILE | M2_STRONG, 0, C(CYAN) },
  256. X    { "hell hound pup", S_DOG, 7, 12, 4, 20, -5,
  257. X      (G_HELL | G_GENO | G_SGROUP | 1),
  258. X      { { AT_BITE, AD_PHYS, 2, 6 }, { AT_BREA, AD_FIRE, 2, 6 },
  259. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  260. X      200, 200, 0, MS_BARK, MZ_SMALL,
  261. X      MR_FIRE, MR_FIRE, M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  262. X      M2_HOSTILE, 0, C(RED) },
  263. X    { "hell hound", S_DOG, 12, 14, 2, 20, 0, (G_HELL | G_GENO | 1),
  264. X      { { AT_BITE, AD_PHYS, 3, 6 }, { AT_BREA, AD_FIRE, 3, 6 },
  265. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  266. X      600, 300, 0, MS_BARK, MZ_MEDIUM,
  267. X      MR_FIRE, MR_FIRE, M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  268. X      M2_HOSTILE | M2_STRONG, 0, C(RED) },
  269. X#ifdef CHARON
  270. X    { "Cerberus", S_DOG, 12, 10, 2, 20, -7, (G_HELL | G_UNIQ | 1),
  271. X      { { AT_BITE, AD_PHYS, 3, 6 }, { AT_BITE, AD_PHYS, 3, 6 },
  272. X        { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK },
  273. X      1000, 350, 0, MS_BARK, MZ_LARGE, MR_FIRE, MR_FIRE,
  274. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  275. X      M2_NOPOLY | M2_HOSTILE | M2_STRONG | M2_PNAME | M2_MALE, 0,
  276. X      C(RED) },
  277. X#endif
  278. X/*    eyes    */
  279. X    { "floating eye", S_EYE, 2, 1, 9, 10, 0, (G_GENO | 5),
  280. X      { { AT_NONE, AD_PLYS, 0, 70 }, NO_ATTK, NO_ATTK,
  281. X        NO_ATTK, NO_ATTK, NO_ATTK },
  282. X      10, 10, 0, MS_SILENT, MZ_SMALL, 0, 0,
  283. X      M1_FLY | M1_AMPHIBIOUS | M1_NOLIMBS | M1_NOHEAD,
  284. X      M2_HOSTILE | M2_NEUTER, 0, C(BLUE) },
  285. X    { "freezing sphere", S_EYE, 6, 13, 4, 0, 0, (G_GENO | 2),
  286. X      { { AT_EXPL, AD_COLD, 4, 6 }, NO_ATTK, NO_ATTK,
  287. X        NO_ATTK, NO_ATTK, NO_ATTK },
  288. X      10, 10, 0, MS_SILENT, MZ_SMALL, MR_COLD, MR_COLD,
  289. X      M1_FLY | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS,
  290. X      M2_HOSTILE | M2_NEUTER, 0, C(WHITE) },
  291. X/*    felines     */
  292. X    { "kitten", S_FELINE, 2, 18, 6, 0, 0, (G_GENO | 1),
  293. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  294. X        NO_ATTK, NO_ATTK, NO_ATTK },
  295. X      150, 150, 0, MS_MEW, MZ_SMALL, 0, 0,
  296. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  297. X      M2_WANDER | M2_DOMESTIC, 0, C(HI_DOMESTIC) },
  298. X    { "housecat", S_FELINE, 4, 16, 5, 0, 0, (G_GENO | 1),
  299. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  300. X        NO_ATTK, NO_ATTK, NO_ATTK },
  301. X      200, 200, 0, MS_MEW, MZ_SMALL, 0, 0,
  302. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  303. X      M2_DOMESTIC, 0, C(HI_DOMESTIC) },
  304. X    { "jaguar", S_FELINE, 4, 15, 6, 0, 0, (G_GENO | 2),
  305. X      { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
  306. X        { AT_BITE, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK },
  307. X      600, 300, 0, MS_GROWL, MZ_LARGE, 0, 0,
  308. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  309. X      M2_HOSTILE, 0, C(BROWN) },
  310. X    { "large cat", S_FELINE, 6, 15, 4, 0, 0, (G_GENO | 1),
  311. X      { { AT_BITE, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK,
  312. X        NO_ATTK, NO_ATTK, NO_ATTK },
  313. X      250, 250, 0, MS_MEW, MZ_SMALL, 0, 0,
  314. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  315. X      M2_STRONG | M2_DOMESTIC, 0, C(HI_DOMESTIC) },
  316. X    { "tiger", S_FELINE, 6, 12, 6, 0, 0, (G_GENO | 2),
  317. X      { { AT_CLAW, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 2, 4 },
  318. X        { AT_BITE, AD_PHYS, 1, 10 }, NO_ATTK, NO_ATTK, NO_ATTK },
  319. X      600, 300, 0, MS_GROWL, MZ_LARGE, 0, 0,
  320. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  321. X      M2_HOSTILE, 0, C(YELLOW) },
  322. X/*    gremlins    */
  323. X    { "gremlin", S_GREMLIN, 5, 12, 2, 25, -9, (G_GENO | 2),
  324. X      { { AT_CLAW, AD_PHYS, 1, 6 }, { AT_CLAW, AD_PHYS, 1, 6 },
  325. X        { AT_BITE, AD_PHYS, 1, 4 }, { AT_CLAW, AD_CURS, 0, 0 },
  326. X        NO_ATTK, NO_ATTK },
  327. X      100, 20, 0, MS_LAUGH, MZ_SMALL, MR_POISON, 0,
  328. X      M1_SWIM | M1_HUMANOID | M1_POIS, M2_STALK, 0, C(GREEN) },
  329. X/*    humanoids    */
  330. X    { "hobbit", S_HUMANOID, 1, 9, MARM(10,7), 0, 6, (G_GENO | 2),
  331. X      { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  332. X        NO_ATTK, NO_ATTK, NO_ATTK },
  333. X      500, 200, 0, MS_HUMANOID, MZ_SMALL, 0, 0,
  334. X      M1_HUMANOID, M2_COLLECT, 0, C(GREEN) },
  335. X    { "dwarf", S_HUMANOID,    2, 6, MARM(10,4), 10, 4, (G_GENO | 3),
  336. X      { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK,
  337. X        NO_ATTK, NO_ATTK, NO_ATTK },
  338. X      900, 300, 0, MS_HUMANOID, MZ_HUMAN, 0, 0,
  339. X      M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID,
  340. X      M2_DWARF | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
  341. X      0, C(RED) },
  342. X    { "bugbear", S_HUMANOID, 3, 9, 5, 0, -6, (G_GENO | 1),
  343. X      { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK,
  344. X        NO_ATTK, NO_ATTK, NO_ATTK },
  345. X      1250, 250, 0, MS_GROWL, MZ_LARGE, 0, 0,
  346. X      M1_HUMANOID, M2_STRONG | M2_COLLECT, 0, C(BROWN) },
  347. X    { "dwarf lord", S_HUMANOID,  4, 6, MARM(10,4), 10, 5, (G_GENO | 2),
  348. X      { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
  349. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  350. X      900, 300, 0, MS_HUMANOID, MZ_HUMAN,
  351. X      0, 0, M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID,
  352. X      M2_DWARF | M2_STRONG | M2_LORD | M2_MALE | M2_GREEDY | M2_JEWELS |
  353. X      M2_COLLECT, 0, C(BLUE) },
  354. X    { "dwarf king", S_HUMANOID,  6, 6, MARM(10,4), 20, 6, (G_GENO | 1),
  355. X      { { AT_WEAP, AD_PHYS, 2, 6 }, { AT_WEAP, AD_PHYS, 2, 6 },
  356. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  357. X      900, 300, 0, MS_HUMANOID, MZ_HUMAN,
  358. X      0, 0, M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID,
  359. X      M2_DWARF | M2_STRONG | M2_PRINCE | M2_MALE | M2_GREEDY | M2_JEWELS |
  360. X      M2_COLLECT, 0, C(HI_LORD) },
  361. X    { "mind flayer", S_HUMANOID, 9, 12, 5, 90, -8, (G_GENO | 1),
  362. X      { { AT_WEAP, AD_PHYS, 1, 4 }, { AT_TENT, AD_DRIN, 2, 1 },
  363. X        { AT_TENT, AD_DRIN, 2, 1 }, { AT_TENT, AD_DRIN, 2, 1 },
  364. X        { AT_TENT, AD_DRIN, 2, 1 }, NO_ATTK },
  365. X      1450, 400, 0, MS_HISS, MZ_HUMAN,
  366. X      0, 0, M1_HUMANOID | M1_FLY | M1_SEE_INVIS | M1_OMNIVORE,
  367. X      M2_HOSTILE | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_COLLECT,
  368. X      0, C(MAGENTA) },
  369. X/*    imps & other minor demons/devils */
  370. X    { "manes", S_IMP, 1, 3, 7, 0, -7, (G_GENO | G_LGROUP | G_NOCORPSE | 1),
  371. X      { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_CLAW, AD_PHYS, 1, 3 },
  372. X        { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK },
  373. X      100, 100, 0, MS_SILENT, MZ_SMALL,
  374. X      MR_SLEEP | MR_POISON, 0, M1_POIS, M2_HOSTILE | M2_STALK, 0, C(RED) },
  375. X    { "homunculus", S_IMP, 2, 12, 6, 10, -7, (G_GENO | 2),
  376. X      { { AT_BITE, AD_SLEE, 1, 3 }, NO_ATTK, NO_ATTK,
  377. X        NO_ATTK, NO_ATTK, NO_ATTK },
  378. X      60, 100, 0, MS_SILENT, MZ_TINY,
  379. X      MR_SLEEP | MR_POISON, MR_SLEEP | MR_POISON,
  380. X      M1_FLY | M1_POIS, M2_STALK, 0, C(GREEN) },
  381. X    { "imp", S_IMP, 3, 12, 2, 20, -7, (G_GENO | 1),
  382. X      { { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK,
  383. X        NO_ATTK, NO_ATTK, NO_ATTK },
  384. X      20, 10, 0, MS_CUSS, MZ_TINY, 0, 0,
  385. X      M1_REGEN, M2_WANDER | M2_STALK, 0, C(RED) },
  386. X    { "lemure", S_IMP, 3, 3, 7, 0, -7,
  387. X      (G_HELL | G_GENO | G_LGROUP | G_NOCORPSE | 1),
  388. X      { { AT_CLAW, AD_PHYS, 1, 3 }, NO_ATTK, NO_ATTK,
  389. X        NO_ATTK, NO_ATTK, NO_ATTK },
  390. X      150, 100, 0, MS_SILENT, MZ_MEDIUM, MR_SLEEP | MR_POISON, MR_SLEEP,
  391. X      M1_POIS | M1_REGEN, M2_HOSTILE | M2_WANDER | M2_STALK | M2_NEUTER,
  392. X      0, C(BROWN) },
  393. X    { "quasit", S_IMP, 3, 15, 2, 20, -7, (G_GENO | 2),
  394. X      { { AT_CLAW, AD_DRDX, 1, 2 }, { AT_CLAW, AD_DRDX, 1, 2 },
  395. X        { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK },
  396. X      200, 200, 0, MS_SILENT, MZ_SMALL, MR_POISON, MR_POISON,
  397. X      M1_REGEN, M2_STALK, 0, C(BLUE) },
  398. X    { "tengu", S_IMP, 6, 13, 5, 30, 7, (G_GENO | 3),
  399. X      { { AT_BITE, AD_PHYS, 1, 7 }, NO_ATTK, NO_ATTK,
  400. X        NO_ATTK, NO_ATTK, NO_ATTK },
  401. X      300, 200, 0, MS_SQAWK, MZ_SMALL, MR_POISON, MR_POISON,
  402. X      M1_TPORT | M1_TPORT_CNTRL, M2_STALK, 0, C(CYAN) },
  403. X/*    jellies     */
  404. X    { "blue jelly", S_JELLY, 4, 0, 8, 10, 0, (G_GENO | 2),
  405. X      { { AT_NONE, AD_COLD, 0, 6 }, NO_ATTK, NO_ATTK,
  406. X        NO_ATTK, NO_ATTK, NO_ATTK },
  407. X      50, 20, 0, MS_SILENT, MZ_MEDIUM,
  408. X      MR_COLD | MR_POISON, MR_COLD | MR_POISON,
  409. X      M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
  410. X      M1_MINDLESS | M1_OMNIVORE, M2_HOSTILE | M2_NEUTER, 0, C(BLUE) },
  411. X    { "spotted jelly", S_JELLY, 5, 0, 8, 10, 0, (G_GENO | 1),
  412. X      { { AT_NONE, AD_ACID, 0, 6 }, NO_ATTK, NO_ATTK,
  413. X        NO_ATTK, NO_ATTK, NO_ATTK },
  414. X      50, 20, 0, MS_SILENT, MZ_MEDIUM, MR_ACID | MR_STONE, 0,
  415. X      M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
  416. X      M1_MINDLESS | M1_ACID | M1_OMNIVORE, M2_HOSTILE | M2_NEUTER,
  417. X      0, C(GREEN) },
  418. X    { "ochre jelly", S_JELLY, 6, 3, 8, 20, 0, (G_GENO | 2),
  419. X      { { AT_ENGL, AD_ACID, 3, 6 }, { AT_NONE, AD_ACID, 3, 6 },
  420. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  421. X      50, 20, 0, MS_SILENT, MZ_MEDIUM, MR_ACID | MR_STONE, 0,
  422. X      M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
  423. X      M1_MINDLESS | M1_ACID | M1_OMNIVORE, M2_HOSTILE | M2_NEUTER,
  424. X      0, C(BROWN) },
  425. X/*    kobolds     */
  426. X    { "kobold", S_KOBOLD,  0, 6, MARM(10,7), 0, -2, (G_GENO | 1),
  427. X      { { AT_WEAP, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK,
  428. X        NO_ATTK, NO_ATTK, NO_ATTK },
  429. X      400, 100, 0, MS_ORC, MZ_SMALL, MR_POISON, 0,
  430. X      M1_HUMANOID | M1_POIS, M2_HOSTILE | M2_COLLECT, 0, C(BROWN) },
  431. X    { "large kobold", S_KOBOLD,  1, 6, MARM(10,6), 0, -3, (G_GENO | 1),
  432. X      { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  433. X        NO_ATTK, NO_ATTK, NO_ATTK },
  434. X      450, 150, 0, MS_ORC, MZ_SMALL, MR_POISON, 0,
  435. X      M1_HUMANOID | M1_POIS, M2_HOSTILE | M2_COLLECT, 0, C(RED) },
  436. X    { "kobold lord", S_KOBOLD,  2, 6, MARM(10,5), 0, -4, (G_GENO | 1),
  437. X      { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK,
  438. X        NO_ATTK, NO_ATTK, NO_ATTK },
  439. X      500, 200, 0, MS_ORC, MZ_SMALL, MR_POISON, 0,
  440. X      M1_HUMANOID | M1_POIS,
  441. X      M2_HOSTILE | M2_LORD | M2_MALE | M2_COLLECT, 0, C(HI_LORD) },
  442. X    { "kobold shaman", S_KOBOLD, 1, 6, 6, 10, -4, (G_GENO | 1),
  443. X      { { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK,
  444. X        NO_ATTK, NO_ATTK, NO_ATTK },
  445. X      450, 150, 0, MS_ORC, MZ_SMALL, MR_POISON, 0,
  446. X      M1_HUMANOID | M1_POIS, M2_HOSTILE | M2_MAGIC, 0, C(HI_ZAP) },
  447. X/*    leprechauns    */
  448. X    { "leprechaun", S_LEPRECHAUN, 5, 15, 8, 20, 0, (G_GENO | 4),
  449. X      { { AT_CLAW, AD_SGLD, 1, 2 }, NO_ATTK, NO_ATTK,
  450. X        NO_ATTK, NO_ATTK, NO_ATTK },
  451. X      60, 30, 0, MS_LAUGH, MZ_TINY, 0, 0,
  452. X      M1_HUMANOID | M1_TPORT, M2_HOSTILE | M2_GREEDY, 0, C(GREEN) },
  453. X/*    mimics    */
  454. X    { "small mimic", S_MIMIC, 7, 3, 7, 0, 0, (G_GENO | 2),
  455. X      { { AT_CLAW, AD_PHYS, 3, 4 }, NO_ATTK, NO_ATTK,
  456. X        NO_ATTK, NO_ATTK, NO_ATTK },
  457. X      300, 200, 0, MS_SILENT, MZ_MEDIUM, MR_ACID, 0,
  458. X      M1_BREATHLESS | M1_AMORPHOUS | M1_HIDE | M1_ANIMAL |
  459. X      M1_NOEYES | M1_NOHEAD | M1_NOLIMBS | M1_THICK_HIDE | M1_CARNIVORE,
  460. X      M2_HOSTILE, 0, C(BROWN) },
  461. X    { "large mimic", S_MIMIC, 8, 3, 7, 10, 0, (G_GENO | 1),
  462. X      { { AT_CLAW, AD_STCK, 3, 4 }, NO_ATTK, NO_ATTK,
  463. X        NO_ATTK, NO_ATTK, NO_ATTK },
  464. X      600, 400, 0, MS_SILENT, MZ_LARGE, MR_ACID, 0,
  465. X      M1_CLING | M1_BREATHLESS | M1_AMORPHOUS | M1_HIDE | M1_ANIMAL |
  466. X      M1_NOEYES | M1_NOHEAD | M1_NOLIMBS | M1_THICK_HIDE | M1_CARNIVORE,
  467. X      M2_HOSTILE | M2_STRONG, 0, C(RED) },
  468. X    { "giant mimic", S_MIMIC, 9, 3, 7, 20, 0, (G_GENO | 1),
  469. X      { { AT_CLAW, AD_STCK, 3, 6 }, { AT_CLAW, AD_STCK, 3, 6 },
  470. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  471. X      800, 500, 0, MS_SILENT, MZ_LARGE, MR_ACID, 0,
  472. X      M1_CLING | M1_BREATHLESS | M1_AMORPHOUS | M1_HIDE | M1_ANIMAL |
  473. X      M1_NOEYES | M1_NOHEAD | M1_NOLIMBS | M1_THICK_HIDE | M1_CARNIVORE,
  474. X      M2_HOSTILE | M2_STRONG, 0, C(HI_LORD) },
  475. X/*    nymphs    */
  476. X    { "wood nymph", S_NYMPH, 3, 12, 9, 20, 0, (G_GENO | 2),
  477. X      { { AT_CLAW, AD_SITM, 0, 0 }, { AT_CLAW, AD_SEDU, 0, 0 },
  478. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  479. X      600, 300, 0, MS_SEDUCE, MZ_HUMAN,
  480. X      0, 0, M1_HUMANOID | M1_TPORT, M2_HOSTILE | M2_FEMALE | M2_COLLECT,
  481. X      0, C(GREEN) },
  482. X    { "water nymph", S_NYMPH, 3, 12, 9, 20, 0, (G_GENO | 2),
  483. X      { { AT_CLAW, AD_SITM, 0, 0 }, { AT_CLAW, AD_SEDU, 0, 0 },
  484. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  485. X      600, 300, 0, MS_SEDUCE, MZ_HUMAN,
  486. X      0, 0, M1_HUMANOID | M1_TPORT | M1_SWIM,
  487. X      M2_HOSTILE | M2_FEMALE | M2_COLLECT, 0, C(BLUE) },
  488. X    { "mountain nymph", S_NYMPH, 3, 12, 9, 20, 0, (G_GENO | 2),
  489. X      { { AT_CLAW, AD_SITM, 0, 0 }, { AT_CLAW, AD_SEDU, 0, 0 },
  490. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  491. X      600, 300, 0, MS_SEDUCE, MZ_HUMAN,
  492. X      0, 0, M1_HUMANOID | M1_TPORT, M2_HOSTILE | M2_FEMALE | M2_COLLECT,
  493. X      0, C(BROWN) },
  494. X/*    orcs    */
  495. X    { "goblin", S_ORC,  0, 6, MARM(10,6), 0, -3, (G_GENO | 2),
  496. X      { { AT_WEAP, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK,
  497. X        NO_ATTK, NO_ATTK, NO_ATTK },
  498. X      400, 100, 0, MS_ORC, MZ_SMALL, 0, 0,
  499. X      M1_HUMANOID, M2_ORC | M2_COLLECT, 0, C(GRAY) },
  500. X    { "hobgoblin", S_ORC,  1, 9, MARM(10,6), 0, -4, (G_GENO | 2),
  501. X      { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  502. X        NO_ATTK, NO_ATTK, NO_ATTK },
  503. X      1000, 200, 0, MS_ORC, MZ_HUMAN, 0, 0,
  504. X      M1_HUMANOID, M2_ORC | M2_STRONG | M2_COLLECT, 0, C(BROWN) },
  505. X    /* "orc" for zombie corpses only; they don't get created at random */
  506. X    { "orc", S_ORC,  1, 9, MARM(10,6), 0, -3, (G_GENO | G_NOGEN | G_LGROUP),
  507. X      { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK,
  508. X        NO_ATTK, NO_ATTK, NO_ATTK },
  509. X      850, 150, 0, MS_ORC, MZ_HUMAN, 0, 0, M1_HUMANOID,
  510. X      M2_ORC | M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
  511. X      0, C(RED) },
  512. X    { "hill orc", S_ORC, 2, 9, MARM(10,6), 0, -4, (G_GENO | G_LGROUP | 2),
  513. X      { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  514. X        NO_ATTK, NO_ATTK, NO_ATTK },
  515. X      1000, 200, 0, MS_ORC, MZ_HUMAN, 0, 0, M1_HUMANOID,
  516. X      M2_ORC | M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
  517. X      0, C(YELLOW) },
  518. X    { "Mordor orc", S_ORC, 3, 5, MARM(10,6), 0, -5, (G_GENO | G_LGROUP | 1),
  519. X      { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  520. X        NO_ATTK, NO_ATTK, NO_ATTK },
  521. X      1200, 200, 0, MS_ORC, MZ_HUMAN, 0, 0, M1_HUMANOID,
  522. X      M2_ORC | M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
  523. X      0, C(BLUE) },
  524. X    { "Uruk-hai", S_ORC, 3, 7, MARM(10,5), 0, -4, (G_GENO | G_LGROUP | 1),
  525. X      { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK,
  526. X        NO_ATTK, NO_ATTK, NO_ATTK },
  527. X      1300, 300, 0, MS_ORC, MZ_HUMAN, 0, 0, M1_HUMANOID,
  528. X      M2_ORC | M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
  529. X      0, C(BLACK) },
  530. X    { "orc shaman", S_ORC, 3, 9, 5, 10, -5, (G_GENO | 1),
  531. X      { { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK,
  532. X        NO_ATTK, NO_ATTK, NO_ATTK },
  533. X      1000, 300, 0, MS_ORC, MZ_HUMAN, 0, 0, M1_HUMANOID,
  534. X      M2_ORC | M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_MAGIC,
  535. X      0, C(HI_ZAP) },
  536. X    { "orc-captain", S_ORC, 5, 5, MARM(10,4), 0, -5, (G_GENO | 1),
  537. X      { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
  538. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  539. X      1350, 350, 0, MS_ORC, MZ_HUMAN, 0, 0, M1_HUMANOID,
  540. X      M2_ORC | M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS | M2_COLLECT,
  541. X      0, C(HI_LORD) },
  542. X/*     piercers    */
  543. X    { "rock piercer", S_PIERCER, 3, 1, 3, 0, 0, (G_GENO | 4),
  544. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK,
  545. X        NO_ATTK, NO_ATTK, NO_ATTK },
  546. X      200, 200, 0, MS_SILENT, MZ_SMALL, 0, 0,
  547. X      M1_CLING | M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS |
  548. X      M1_CARNIVORE, M2_HOSTILE, 0, C(GRAY) },
  549. X    { "iron piercer", S_PIERCER, 5, 1, 0, 0, 0, (G_GENO | 2),
  550. X      { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK,
  551. X        NO_ATTK, NO_ATTK, NO_ATTK },
  552. X      400, 300, 0, MS_SILENT, MZ_MEDIUM, 0, 0,
  553. X      M1_CLING | M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS |
  554. X      M1_CARNIVORE, M2_HOSTILE, 0, C(CYAN) },
  555. X/*    quadrupeds (generic)    */
  556. X    { "rothe", S_QUADRUPED, 2, 9, 7, 0, 0, (G_GENO | G_SGROUP | 4),
  557. X      { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_BITE, AD_PHYS, 1, 3 },
  558. X        { AT_BITE, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK },
  559. X      400, 100, 0, MS_SILENT, MZ_LARGE, 0, 0,
  560. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE, M2_HOSTILE, 0, C(GRAY) },
  561. X    { "mumak", S_QUADRUPED, 5, 9, 0, 0, -2, (G_GENO | 1),
  562. X      { { AT_BUTT, AD_PHYS, 4, 12 }, { AT_BITE, AD_PHYS, 2, 6 },
  563. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  564. X      2500, 500, 0, MS_SILENT, MZ_LARGE, 0, 0,
  565. X      M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
  566. X      M2_HOSTILE | M2_STRONG, 0, C(GRAY) },
  567. X    { "leocrotta", S_QUADRUPED, 6, 18, 4, 10, 0, (G_GENO | 2),
  568. X      { { AT_CLAW, AD_PHYS, 2, 6 }, { AT_BITE, AD_PHYS, 2, 6 },
  569. X        { AT_CLAW, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK },
  570. X      1200, 500, 0, MS_IMITATE, MZ_LARGE, 0, 0,
  571. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  572. X      M2_HOSTILE | M2_STRONG, 0, C(RED) },
  573. X    { "wumpus", S_QUADRUPED, 8, 3, 2, 10, 0, (G_GENO | 1),
  574. X      { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK,
  575. X        NO_ATTK, NO_ATTK, NO_ATTK },
  576. X      2500, 500, 0, MS_SILENT, MZ_LARGE, 0, 0,
  577. X      M1_CLING | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  578. X      M2_HOSTILE | M2_STRONG, 0, C(CYAN) },
  579. X    { "titanothere", S_QUADRUPED, 12, 12, 6, 0, 0, (G_GENO | 2),
  580. X      { { AT_CLAW, AD_PHYS, 2, 8 }, NO_ATTK, NO_ATTK,
  581. X        NO_ATTK, NO_ATTK, NO_ATTK },
  582. X      2650, 650, 0, MS_SILENT, MZ_LARGE, 0, 0,
  583. X      M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
  584. X      M2_HOSTILE | M2_STRONG, 0, C(GRAY) },
  585. X    { "baluchitherium", S_QUADRUPED, 14, 12, 5, 0, 0, (G_GENO | 2),
  586. X      { { AT_CLAW, AD_PHYS, 5, 4 }, { AT_CLAW, AD_PHYS, 5, 4 },
  587. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  588. X      3800, 800, 0, MS_SILENT, MZ_LARGE, 0, 0,
  589. X      M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS | M1_HERBIVORE,
  590. X      M2_HOSTILE | M2_STRONG, 0, C(GRAY) },
  591. X/*    rodents     */
  592. X    { "sewer rat",    S_RODENT, 0, 12, 7, 0, 0, (G_GENO | G_SGROUP | 1),
  593. X      { { AT_BITE, AD_PHYS, 1, 3 }, NO_ATTK, NO_ATTK,
  594. X        NO_ATTK, NO_ATTK, NO_ATTK },
  595. X      20, 12, 0, MS_SQEEK, MZ_TINY, 0, 0,
  596. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  597. X      M2_HOSTILE, 0, C(BROWN) },
  598. X    { "giant rat",    S_RODENT, 1, 10, 7, 0, 0, (G_GENO | G_SGROUP | 2),
  599. X      { { AT_BITE, AD_PHYS, 1, 3 }, NO_ATTK, NO_ATTK,
  600. X        NO_ATTK, NO_ATTK, NO_ATTK },
  601. X      30, 30, 0, MS_SQEEK, MZ_TINY, 0, 0,
  602. X      M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  603. X      M2_HOSTILE, 0, C(BROWN) },
  604. X    { "rabid rat", S_RODENT, 2, 12, 6, 0, 0, (G_GENO | 1),
  605. X      { { AT_BITE, AD_DRCO, 2, 4 }, NO_ATTK, NO_ATTK,
  606. X        NO_ATTK, NO_ATTK, NO_ATTK },
  607. X      30, 5, 0, MS_SQEEK, MZ_TINY, MR_POISON, 0,
  608. X      M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_CARNIVORE,
  609. X      M2_HOSTILE, 0, C(BROWN) },
  610. X    { "wererat", S_RODENT, 2, 12, 6, 10, -7, G_NOGEN | G_NOCORPSE,
  611. X      { { AT_BITE, AD_WERE, 1, 4 }, NO_ATTK, NO_ATTK,
  612. X        NO_ATTK, NO_ATTK, NO_ATTK },
  613. X      40, 30, 0, MS_SQEEK, MZ_TINY, MR_POISON, 0,
  614. X      M1_NOHANDS | M1_POIS | M1_REGEN | M1_CARNIVORE,
  615. X      M2_NOPOLY | M2_WERE | M2_HOSTILE, 0, C(BROWN) },
  616. X    { "rock mole", S_RODENT, 3, 3, 0, 20, 0, (G_GENO | 2),
  617. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  618. X        NO_ATTK, NO_ATTK, NO_ATTK },
  619. X      30, 30, 0, MS_SILENT, MZ_SMALL, 0, 0,
  620. X      M1_TUNNEL | M1_ANIMAL | M1_NOHANDS | M1_METALLIVORE,
  621. X      M2_HOSTILE | M2_GREEDY | M2_JEWELS | M2_COLLECT, 0, C(GRAY) },
  622. X/*    spiders and scorpions    */
  623. X    { "cave spider", S_SPIDER, 1, 12, 3, 0, 0, (G_GENO | G_SGROUP | 2),
  624. X      { { AT_BITE, AD_PHYS, 1, 2 }, NO_ATTK, NO_ATTK,
  625. X        NO_ATTK, NO_ATTK, NO_ATTK },
  626. X      50, 50, 0, MS_SILENT, MZ_TINY, MR_POISON, MR_POISON,
  627. X      M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_CARNIVORE,
  628. X      M2_HOSTILE, 0, C(GRAY) },
  629. X    { "giant spider", S_SPIDER, 5, 15, 4, 0, 0, (G_GENO | 1),
  630. X      { { AT_BITE, AD_DRST, 2, 4 }, NO_ATTK, NO_ATTK,
  631. X        NO_ATTK, NO_ATTK, NO_ATTK },
  632. X      100, 100, 0, MS_SILENT, MZ_LARGE, MR_POISON, MR_POISON,
  633. X      M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_POIS | M1_CARNIVORE,
  634. X      M2_HOSTILE | M2_STRONG, 0, C(MAGENTA) },
  635. X    { "scorpion", S_SPIDER, 5, 15, 3, 0, 0, (G_GENO | 2),
  636. X      { { AT_CLAW, AD_PHYS, 1, 2 }, { AT_CLAW, AD_PHYS, 1, 2 },
  637. X        { AT_STNG, AD_DRST, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK },
  638. X      50, 100, 0, MS_SILENT, MZ_SMALL, MR_POISON, MR_POISON,
  639. X      M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_OVIPAROUS | M1_POIS |
  640. X      M1_CARNIVORE, M2_HOSTILE, 0, C(RED) },
  641. X/*    trappers, lurkers, &c.    */
  642. X    { "lurker above", S_TRAPPER, 10, 3, 3, 0, 0, (G_GENO | 2),
  643. X      { { AT_ENGL, AD_DGST, 1, 8 }, NO_ATTK, NO_ATTK,
  644. X        NO_ATTK, NO_ATTK, NO_ATTK },
  645. X      800, 350, 0, MS_SILENT, MZ_HUGE, 0, 0,
  646. X      M1_HIDE | M1_FLY | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
  647. X      M1_CARNIVORE, M2_HOSTILE | M2_STALK | M2_STRONG, 0, C(GRAY) },
  648. X    { "trapper", S_TRAPPER, 12, 3, 3, 0, 0, (G_GENO | 2),
  649. X      { { AT_ENGL, AD_DGST, 1, 10 }, NO_ATTK, NO_ATTK,
  650. X        NO_ATTK, NO_ATTK, NO_ATTK },
  651. X      800, 350, 0, MS_SILENT, MZ_HUGE, 0, 0,
  652. X      M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
  653. X      M1_CARNIVORE, M2_HOSTILE | M2_STALK | M2_STRONG, 0, C(GREEN) },
  654. X/*    unicorns    */
  655. X    { "white unicorn", S_UNICORN, 4, 24, 2, 70, 7, (G_GENO | 2),
  656. X      { { AT_BUTT, AD_PHYS, 1, 12 }, { AT_KICK, AD_PHYS, 1, 6 },
  657. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  658. X      1300, 300, 0, MS_NEIGH, MZ_LARGE,
  659. X      MR_POISON, MR_POISON, M1_NOHANDS | M1_HERBIVORE,
  660. X      M2_WANDER | M2_STRONG | M2_JEWELS, 0, C(WHITE) },
  661. X    { "gray unicorn", S_UNICORN, 4, 24, 2, 70, 0, (G_GENO | 1),
  662. X      { { AT_BUTT, AD_PHYS, 1, 12 }, { AT_KICK, AD_PHYS, 1, 6 },
  663. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  664. X      1300, 300, 0, MS_NEIGH, MZ_LARGE,
  665. X      MR_POISON, MR_POISON, M1_NOHANDS | M1_HERBIVORE,
  666. X      M2_WANDER | M2_STRONG | M2_JEWELS, 0, C(GRAY) },
  667. X    { "black unicorn", S_UNICORN, 4, 24, 2, 70, -7, (G_GENO | 1),
  668. X      { { AT_BUTT, AD_PHYS, 1, 12 }, { AT_KICK, AD_PHYS, 1, 6 },
  669. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  670. X      1300, 300, 0, MS_NEIGH, MZ_LARGE,
  671. X      MR_POISON, MR_POISON, M1_NOHANDS | M1_HERBIVORE,
  672. X      M2_WANDER | M2_STRONG | M2_JEWELS, 0, C(BLACK) },
  673. X/*    vortices    */
  674. X    { "fog cloud",    S_VORTEX, 3,  1, 0, 0, 0, (G_GENO | G_NOCORPSE | 2),
  675. X      { { AT_ENGL, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  676. X        NO_ATTK, NO_ATTK, NO_ATTK },
  677. X      0, 0, 0, MS_SILENT, MZ_HUGE,
  678. X      MR_SLEEP | MR_POISON | MR_STONE, 0,
  679. X      M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
  680. X      M1_MINDLESS | M1_AMORPHOUS | M1_UNSOLID,
  681. X      M2_HOSTILE | M2_NEUTER, 0, C(GRAY) },
  682. X    { "dust vortex", S_VORTEX, 4, 20, 2, 30, 0, (G_GENO | G_NOCORPSE | 2),
  683. X      { { AT_ENGL, AD_BLND, 2, 8 }, NO_ATTK, NO_ATTK,
  684. X        NO_ATTK, NO_ATTK, NO_ATTK },
  685. X      0, 0, 0, MS_SILENT, MZ_HUGE,
  686. X      MR_SLEEP | MR_POISON | MR_STONE, 0,
  687. X      M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
  688. X      M1_MINDLESS,
  689. X      M2_HOSTILE | M2_NEUTER, 0, C(BROWN) },
  690. X    { "ice vortex", S_VORTEX, 5, 20, 2, 30, 0, (G_GENO | G_NOCORPSE | 1),
  691. X      { { AT_ENGL, AD_COLD, 1, 6 }, NO_ATTK, NO_ATTK,
  692. X        NO_ATTK, NO_ATTK, NO_ATTK },
  693. X      0, 0, 0, MS_SILENT, MZ_HUGE,
  694. X      MR_COLD | MR_SLEEP | MR_POISON | MR_STONE, 0,
  695. X      M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
  696. X      M1_MINDLESS,
  697. X      M2_HOSTILE | M2_NEUTER, 0, C(CYAN) },
  698. X    { "energy vortex", S_VORTEX, 6, 20, 2, 30, 0, (G_GENO | G_NOCORPSE | 1),
  699. X      { { AT_ENGL, AD_ELEC, 1, 6 }, { AT_ENGL, AD_DREN, 0, 0 },
  700. X        { AT_NONE, AD_ELEC, 0, 4 }, NO_ATTK, NO_ATTK, NO_ATTK },
  701. X      0, 0, 0, MS_SILENT, MZ_HUGE,
  702. X      MR_ELEC | MR_SLEEP | MR_DISINT | MR_POISON | MR_STONE, 0,
  703. X      M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
  704. X      M1_MINDLESS | M1_UNSOLID, M2_HOSTILE | M2_NEUTER, 0, C(HI_ZAP) },
  705. X    { "steam vortex", S_VORTEX, 7, 22, 2, 30, 0,
  706. X      (G_HELL | G_GENO | G_NOCORPSE | 2),
  707. X      { { AT_ENGL, AD_FIRE, 1, 8 }, NO_ATTK, NO_ATTK,
  708. X        NO_ATTK, NO_ATTK, NO_ATTK },
  709. X      0, 0, 0, MS_SILENT, MZ_HUGE,
  710. X      MR_FIRE | MR_SLEEP | MR_POISON | MR_STONE, 0,
  711. X      M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
  712. X      M1_MINDLESS | M1_UNSOLID, M2_HOSTILE | M2_NEUTER, 0, C(BLUE) },
  713. X    { "fire vortex", S_VORTEX, 8, 22, 2, 30, 0,
  714. X      (G_HELL | G_GENO | G_NOCORPSE | 1),
  715. X      { { AT_ENGL, AD_FIRE, 1, 10 }, { AT_NONE, AD_FIRE, 0, 4 },
  716. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  717. X      0, 0, 0, MS_SILENT, MZ_HUGE,
  718. X      MR_FIRE | MR_SLEEP | MR_POISON | MR_STONE, 0,
  719. X      M1_FLY | M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD |
  720. X      M1_MINDLESS | M1_UNSOLID, M2_HOSTILE | M2_NEUTER, 0, C(YELLOW) },
  721. X/*    worms    */
  722. X    { "baby long worm", S_WORM, 8, 3, 5, 0, 0, G_GENO,
  723. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  724. X        NO_ATTK, NO_ATTK, NO_ATTK },
  725. X      600, 250, 0, MS_SILENT, MZ_LARGE, 0, 0,
  726. X      M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_CARNIVORE,
  727. X      M2_HOSTILE, 0, C(BROWN) },
  728. X    { "baby purple worm", S_WORM, 8, 3, 5, 0, 0, G_GENO,
  729. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  730. X        NO_ATTK, NO_ATTK, NO_ATTK },
  731. X      600, 250, 0, MS_SILENT, MZ_LARGE, 0, 0,
  732. X      M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_CARNIVORE,
  733. X      M2_HOSTILE, 0, C(MAGENTA) },
  734. X    { "long worm", S_WORM, 8, 3, 5, 10, 0, (G_GENO | 2),
  735. X      { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK,
  736. X        NO_ATTK, NO_ATTK, NO_ATTK },
  737. X      1500, 500, 0, MS_SILENT, MZ_GIGANTIC, 0, 0,
  738. X      M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_OVIPAROUS | M1_CARNIVORE,
  739. X      M2_HOSTILE | M2_STRONG | M2_NASTY,
  740. X      0, C(BROWN) },
  741. X    { "purple worm", S_WORM, 15, 9, 6, 20, 0, (G_GENO | 2),
  742. X      { { AT_BITE, AD_PHYS, 2, 8 }, { AT_ENGL, AD_DGST, 1, 10 },
  743. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  744. X      2700, 700, 0, MS_SILENT, MZ_GIGANTIC, 0, 0,
  745. X      M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_OVIPAROUS | M1_CARNIVORE,
  746. X      M2_HOSTILE | M2_STRONG | M2_NASTY,
  747. X      0, C(MAGENTA) },
  748. X/*    Dummy monster needed for visual interface. */
  749. X    { "long worm tail", S_WORM_TAIL, 0, 0, 0, 0, 0, G_NOGEN | G_NOCORPSE,
  750. X      { NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  751. X      0, 0, 0, 0, 0, 0, 0, 0, M2_NOPOLY, 0, C(BROWN) },
  752. X/*    xan, &c.    */
  753. X    { "grid bug", S_XAN, 0, 12, 9, 0, 0,
  754. X      (G_GENO | G_SGROUP | G_NOCORPSE | 3),
  755. X      { { AT_BITE, AD_ELEC, 1, 1 }, NO_ATTK, NO_ATTK,
  756. X        NO_ATTK, NO_ATTK, NO_ATTK },
  757. X      15, 10, 0, MS_BUZZ, MZ_TINY, MR_ELEC | MR_POISON, 0,
  758. X      M1_ANIMAL, M2_HOSTILE, 0, C(MAGENTA) },
  759. X    { "xan", S_XAN, 7, 18, -4, 0, 0, (G_GENO | 3),
  760. X      { { AT_STNG, AD_LEGS, 1, 4 }, NO_ATTK, NO_ATTK,
  761. X        NO_ATTK, NO_ATTK, NO_ATTK },
  762. X      300, 300, 0, MS_BUZZ, MZ_TINY, MR_POISON, MR_POISON,
  763. X      M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_POIS, M2_HOSTILE, 0, C(RED) },
  764. X/*    lights */
  765. X    { "yellow light", S_LIGHT, 3, 15, 0, 0, 0, (G_NOCORPSE| G_GENO | 4),
  766. X      { { AT_EXPL, AD_BLND, 10, 20 }, NO_ATTK, NO_ATTK,
  767. X        NO_ATTK, NO_ATTK, NO_ATTK },
  768. X      0, 0, 0, MS_SILENT, MZ_SMALL,
  769. X      MR_FIRE | MR_COLD | MR_ELEC | MR_DISINT | MR_SLEEP | MR_POISON |
  770. X      MR_ACID | MR_STONE, 0,
  771. X      M1_FLY | M1_BREATHLESS | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS |
  772. X      M1_NOHEAD | M1_MINDLESS | M1_UNSOLID, M2_HOSTILE | M2_NEUTER,
  773. X      0, C(YELLOW) },
  774. X/*    zruty    */
  775. X    { "zruty", S_ZRUTY, 9, 8, 3, 0, 0, (G_GENO | 2),
  776. X      { { AT_CLAW, AD_PHYS, 3, 4 }, { AT_CLAW, AD_PHYS, 3, 4 },
  777. X        { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK },
  778. X      1200, 600, 0, MS_SILENT, MZ_LARGE, 0, 0,
  779. X      M1_ANIMAL | M1_HUMANOID | M1_CARNIVORE,
  780. X      M2_HOSTILE | M2_STRONG, 0, C(BROWN) },
  781. X/*    Angels and other lawful minions */
  782. X    { "couatl", S_ANGEL, 8, 10, 5, 30, 7,
  783. X      (G_NOHELL | G_SGROUP | G_NOCORPSE | 1),
  784. X      { { AT_BITE, AD_DRST, 2, 4 }, { AT_BITE, AD_PHYS, 1, 3 },
  785. X        { AT_HUGS, AD_WRAP, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK },
  786. X      900, 400, 0, MS_SILENT, MZ_LARGE, MR_POISON, 0, M1_FLY | M1_POIS,
  787. X      M2_MINION | M2_STALK | M2_STRONG | M2_NASTY, 0, C(GREEN) },
  788. X    { "Aleax", S_ANGEL, 10, 8, 0, 30, 7, (G_NOHELL | G_NOCORPSE | 1),
  789. X      { { AT_WEAP, AD_PHYS, 1, 6 }, { AT_WEAP, AD_PHYS, 1, 6 },
  790. X        { AT_KICK, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK },
  791. X      WT_HUMAN, 400, 0,
  792. X      MS_SILENT, MZ_HUMAN, MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON, 0,
  793. X      M1_HUMANOID | M1_SEE_INVIS,
  794. X      M2_MINION | M2_STALK | M2_NASTY | M2_COLLECT, 0, C(YELLOW) },
  795. X    { "Angel", S_ANGEL, 14, 10, -4, 55, 12, (G_NOHELL | G_NOCORPSE | 1),
  796. X      { { AT_WEAP, AD_PHYS, 1, 6 }, { AT_CLAW, AD_PHYS, 1, 4 },
  797. X        { AT_WEAP, AD_PHYS, 1, 6 }, { AT_MAGC, AD_MAGM, 2, 6 },
  798. X        NO_ATTK, NO_ATTK },
  799. X      WT_HUMAN, 400, sizeof(struct epri), MS_CUSS, MZ_HUMAN,
  800. X      MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON, 0,
  801. X      M1_HUMANOID | M1_SEE_INVIS,
  802. X      M2_NOPOLY | M2_MINION | M2_STALK | M2_STRONG | M2_NASTY | M2_COLLECT,
  803. X      0, C(WHITE) },
  804. X    { "ki-rin", S_ANGEL, 16, 18, -5, 90, 15, (G_NOHELL | G_NOCORPSE | 1),
  805. X      { { AT_KICK, AD_PHYS, 2, 4 }, { AT_KICK, AD_BLND, 2, 4 },
  806. X        { AT_BUTT, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK },
  807. X      WT_HUMAN, 400, 0, MS_NEIGH, MZ_LARGE, 0, 0,
  808. X      M1_FLY | M1_HUMANOID | M1_SEE_INVIS,
  809. X      M2_NOPOLY | M2_MINION | M2_STALK | M2_STRONG | M2_NASTY | M2_LORD,
  810. X      0, C(HI_GOLD) },
  811. X    { "Archon", S_ANGEL, 19, 16, -6, 80, 15, (G_NOHELL | G_NOCORPSE |1),
  812. X      { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_GAZE, AD_BLND, 2, 6 },
  813. X        { AT_WEAP, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 1, 8 },
  814. X        { AT_MAGC, AD_SPEL, 4, 6 }, NO_ATTK },
  815. X      WT_HUMAN, 400, 0, MS_CUSS, MZ_LARGE,
  816. X      MR_FIRE | MR_COLD | MR_ELEC | MR_SLEEP | MR_POISON, 0,
  817. X      M1_FLY | M1_HUMANOID | M1_SEE_INVIS | M1_REGEN,
  818. X      M2_NOPOLY | M2_MINION | M2_STALK | M2_STRONG | M2_NASTY | M2_LORD |
  819. X      M2_COLLECT | M2_MAGIC,
  820. X      0, C(HI_LORD) },
  821. X/*    Bats    */
  822. X    { "bat", S_BAT, 0, 22, 8, 0, 0, (G_GENO | G_SGROUP | 1),
  823. X      { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK,
  824. X        NO_ATTK, NO_ATTK, NO_ATTK },
  825. X      20, 20, 0, MS_SQEEK, MZ_TINY, 0, 0,
  826. X      M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  827. X      M2_WANDER, 0, C(BROWN) },
  828. X    { "giant bat", S_BAT, 2, 22, 7, 0, 0, (G_GENO | 2),
  829. X      { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  830. X        NO_ATTK, NO_ATTK, NO_ATTK },
  831. X      30, 30, 0, MS_SQEEK, MZ_MEDIUM, 0, 0,
  832. X      M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_CARNIVORE,
  833. X      M2_WANDER | M2_HOSTILE, 0, C(RED) },
  834. X    { "vampire bat", S_BAT, 5, 20, 6, 0, 0, (G_GENO | 2),
  835. X      { { AT_BITE, AD_PHYS, 1, 6 }, { AT_BITE, AD_DRST, 0, 0 },
  836. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  837. X      30, 20, 0, MS_SQEEK, MZ_TINY, MR_SLEEP | MR_POISON, 0,
  838. X      M1_FLY | M1_BREATHLESS | M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_REGEN,
  839. X      M2_UNDEAD | M2_HOSTILE, 0, C(BLACK) },
  840. X/*    Centaurs    */
  841. X    { "plains centaur", S_CENTAUR, 4, 18, 4, 0, 0, (G_GENO | 1),
  842. X      { { AT_WEAP, AD_PHYS, 1, 6 }, { AT_KICK, AD_PHYS, 1, 6 },
  843. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  844. X      2500, 500, 0, MS_SILENT, MZ_LARGE, 0, 0,
  845. X      M1_HUMANOID, M2_STRONG | M2_GREEDY | M2_COLLECT, 0, C(BROWN) },
  846. X    { "forest centaur", S_CENTAUR, 5, 18, 3, 10, -1, (G_GENO | 1),
  847. X      { { AT_WEAP, AD_PHYS, 1, 8 }, { AT_KICK, AD_PHYS, 1, 6 },
  848. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  849. X      2550, 600, 0, MS_SILENT, MZ_LARGE, 0, 0,
  850. X      M1_HUMANOID, M2_STRONG | M2_GREEDY | M2_COLLECT, 0, C(GREEN) },
  851. X    { "mountain centaur", S_CENTAUR, 6, 20, 2, 10, -3, (G_GENO | 1),
  852. X      { { AT_WEAP, AD_PHYS, 1, 10 }, { AT_KICK, AD_PHYS, 1, 6 },
  853. X        { AT_KICK, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK },
  854. X      2550, 500, 0, MS_SILENT, MZ_LARGE, 0, 0,
  855. X      M1_HUMANOID, M2_STRONG | M2_GREEDY | M2_COLLECT, 0, C(CYAN) },
  856. X/*    Dragons.  The order of the dragons is VERY IMPORTANT.  Quite a few
  857. X    pieces of code depend on gray being first and yellow being last.
  858. X    The code also depends on the *order* being the same as that for
  859. X    dragon scale mail and dragon scales in objects.c            */
  860. X    { "baby gray dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  861. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK,
  862. X        NO_ATTK, NO_ATTK, NO_ATTK },
  863. X      1500, 500, 0, MS_ROAR, MZ_HUGE, 0, 0,
  864. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
  865. X      M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, C(GRAY) },
  866. X    { "baby red dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  867. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK,
  868. X        NO_ATTK, NO_ATTK, NO_ATTK },
  869. X      1500, 500, 0, MS_ROAR, MZ_HUGE, MR_FIRE, MR_FIRE,
  870. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
  871. X      M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, C(RED) },
  872. X    { "baby white dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  873. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK,
  874. X        NO_ATTK, NO_ATTK, NO_ATTK },
  875. X      1500, 500, 0, MS_ROAR, MZ_HUGE, MR_COLD, MR_COLD,
  876. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
  877. X      M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, C(WHITE) },
  878. X    { "baby orange dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  879. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK,
  880. X        NO_ATTK, NO_ATTK, NO_ATTK },
  881. X      1500, 500, 0, MS_ROAR, MZ_HUGE, MR_SLEEP, MR_SLEEP,
  882. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
  883. X      M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, C(ORANGE_COLORED) },
  884. X    { "baby black dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  885. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK,
  886. X        NO_ATTK, NO_ATTK, NO_ATTK },
  887. X      1500, 500, 0, MS_ROAR, MZ_HUGE, MR_DISINT, MR_DISINT,
  888. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
  889. X      M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, C(BLACK) },
  890. X    { "baby blue dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  891. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK,
  892. X        NO_ATTK, NO_ATTK, NO_ATTK },
  893. X      1500, 500, 0, MS_ROAR, MZ_HUGE, MR_ELEC, MR_ELEC,
  894. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE,
  895. X      M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, C(BLUE) },
  896. X    { "baby green dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  897. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK,
  898. X        NO_ATTK, NO_ATTK, NO_ATTK },
  899. X      1500, 500, 0, MS_ROAR, MZ_HUGE, MR_POISON, MR_POISON,
  900. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_POIS,
  901. X      M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, C(GREEN) },
  902. X    { "baby yellow dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
  903. X      { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK,
  904. X        NO_ATTK, NO_ATTK, NO_ATTK },
  905. X      1500, 500, 0, MS_ROAR, MZ_HUGE, MR_ACID | MR_STONE, MR_STONE,
  906. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_CARNIVORE | M1_ACID,
  907. X      M2_HOSTILE | M2_STRONG | M2_GREEDY | M2_JEWELS, 0, C(YELLOW) },
  908. X    { "gray dragon", S_DRAGON, 15, 9, -1, 20, 4, (G_GENO | 1),
  909. X      { { AT_BREA, AD_MAGM, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  910. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
  911. X        NO_ATTK, NO_ATTK },
  912. X      WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC, 0, 0,
  913. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS |
  914. X      M1_CARNIVORE,
  915. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
  916. X      0, C(GRAY) },
  917. X    { "red dragon", S_DRAGON, 15, 9, -1, 20, -4, (G_GENO | 1),
  918. X      { { AT_BREA, AD_FIRE, 6, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  919. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
  920. X        NO_ATTK, NO_ATTK },
  921. X      WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC, MR_FIRE, MR_FIRE,
  922. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS |
  923. X      M1_CARNIVORE,
  924. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
  925. X      0, C(RED) },
  926. X    { "white dragon", S_DRAGON, 15, 9, -1, 20, -5, (G_GENO | 1),
  927. X      { { AT_BREA, AD_COLD, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  928. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
  929. X        NO_ATTK, NO_ATTK },
  930. X      WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC, MR_COLD, MR_COLD,
  931. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS |
  932. X      M1_CARNIVORE,
  933. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
  934. X      0, C(WHITE) },
  935. X    { "orange dragon", S_DRAGON, 15, 9, -1, 20, 5, (G_GENO | 1),
  936. X      { { AT_BREA, AD_SLEE, 4, 25 }, { AT_BITE, AD_PHYS, 3, 8 },
  937. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
  938. X        NO_ATTK, NO_ATTK },
  939. X      WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC, MR_SLEEP, MR_SLEEP,
  940. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS |
  941. X      M1_CARNIVORE,
  942. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
  943. X      0, C(ORANGE_COLORED) },
  944. X    { "black dragon", S_DRAGON, 15, 9, -1, 20, -6, (G_GENO | 1),
  945. X      { { AT_BREA, AD_DISN, 4, 10 }, { AT_BITE, AD_PHYS, 3, 8 },
  946. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
  947. X        NO_ATTK, NO_ATTK },
  948. X      WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC, MR_DISINT, MR_DISINT,
  949. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS |
  950. X      M1_CARNIVORE,
  951. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
  952. X      0, C(BLACK) },
  953. X    { "blue dragon", S_DRAGON, 15, 9, -1, 20, -7, (G_GENO | 1),
  954. X      { { AT_BREA, AD_ELEC, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  955. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
  956. X        NO_ATTK, NO_ATTK },
  957. X      WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC, MR_ELEC, MR_ELEC,
  958. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS |
  959. X      M1_CARNIVORE,
  960. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
  961. X      0, C(BLUE) },
  962. X    { "green dragon", S_DRAGON, 15, 9, -1, 20, 6, (G_GENO | 1),
  963. X      { { AT_BREA, AD_DRST, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  964. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
  965. X        NO_ATTK, NO_ATTK },
  966. X      WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC, MR_POISON, MR_POISON,
  967. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS |
  968. X      M1_CARNIVORE | M1_POIS,
  969. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
  970. X      0, C(GREEN) },
  971. X    { "yellow dragon", S_DRAGON, 15, 9, -1, 20, 7, (G_GENO | 1),
  972. X      { { AT_BREA, AD_ACID, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
  973. X        { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
  974. X        NO_ATTK, NO_ATTK },
  975. X      WT_DRAGON, 1500, 0, MS_ROAR, MZ_GIGANTIC,
  976. X      MR_ACID | MR_STONE, MR_STONE,
  977. X      M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_SEE_INVIS | M1_OVIPAROUS |
  978. X      M1_CARNIVORE | M1_ACID,
  979. X      M2_HOSTILE | M2_STRONG | M2_NASTY | M2_GREEDY | M2_JEWELS | M2_MAGIC,
  980. X      0, C(YELLOW) },
  981. X/*    Elementals    */
  982. X    { "air elemental", S_ELEMENTAL, 8, 36, 2, 30, 0, (G_NOCORPSE | 1),
  983. X      { { AT_ENGL, AD_PHYS, 2, 10 }, NO_ATTK, NO_ATTK,
  984. X        NO_ATTK, NO_ATTK, NO_ATTK },
  985. X      0, 0, 0, MS_SILENT, MZ_HUGE, MR_POISON | MR_STONE, 0,
  986. X      M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_UNSOLID |
  987. X      M1_FLY,
  988. X      M2_STRONG | M2_NEUTER, 0, C(CYAN) },
  989. X    { "fire elemental", S_ELEMENTAL, 8, 12, 2, 30, 0, (G_NOCORPSE | 1),
  990. X      { { AT_CLAW, AD_FIRE, 3, 6 }, { AT_NONE, AD_FIRE, 0, 4 },
  991. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  992. X      0, 0, 0, MS_SILENT, MZ_HUGE, MR_FIRE | MR_POISON | MR_STONE, 0,
  993. X      M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_UNSOLID |
  994. X      M1_FLY,
  995. X      M2_STRONG | M2_NEUTER, 0, C(YELLOW) },
  996. X    { "earth elemental", S_ELEMENTAL, 8, 6, 2, 30, 0, (G_NOCORPSE | 1),
  997. X      { { AT_CLAW, AD_PHYS, 4, 6 }, NO_ATTK, NO_ATTK,
  998. X        NO_ATTK, NO_ATTK, NO_ATTK },
  999. X      2500, 0, 0, MS_SILENT, MZ_HUGE,
  1000. X      MR_FIRE | MR_COLD | MR_POISON | MR_STONE, 0,
  1001. X      M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_BREATHLESS |
  1002. X      M1_WALLWALK | M1_THICK_HIDE, M2_STRONG | M2_NEUTER, 0, C(BROWN) },
  1003. X    { "water elemental", S_ELEMENTAL, 8, 6, 2, 30, 0, (G_NOCORPSE | 1),
  1004. X      { { AT_CLAW, AD_PHYS, 5, 6 }, NO_ATTK, NO_ATTK,
  1005. X        NO_ATTK, NO_ATTK, NO_ATTK },
  1006. X      2500, 0, 0, MS_SILENT, MZ_HUGE, MR_POISON | MR_STONE, 0,
  1007. X      M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS | M1_AMPHIBIOUS |
  1008. X      M1_SWIM,
  1009. X      M2_STRONG | M2_NEUTER, 0, C(BLUE) },
  1010. X/*    Fungi    */
  1011. X    { "brown mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 1),
  1012. X      { { AT_NONE, AD_COLD, 0, 6 }, NO_ATTK, NO_ATTK,
  1013. X        NO_ATTK, NO_ATTK, NO_ATTK },
  1014. X      50, 30, 0, MS_SILENT, MZ_SMALL,
  1015. X      MR_COLD | MR_POISON, MR_COLD | MR_POISON,
  1016. X      M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS |
  1017. X      M1_OMNIVORE,
  1018. X      M2_HOSTILE | M2_NEUTER, 0, C(BROWN) },
  1019. X    { "yellow mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 2),
  1020. X      { { AT_NONE, AD_STUN, 0, 4 }, NO_ATTK, NO_ATTK,
  1021. X        NO_ATTK, NO_ATTK, NO_ATTK },
  1022. X      50, 30, 0, MS_SILENT, MZ_SMALL, MR_POISON, MR_POISON,
  1023. X      M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS |
  1024. X      M1_OMNIVORE | M1_POIS,
  1025. X      M2_HOSTILE | M2_NEUTER, 0, C(YELLOW) },
  1026. X    { "green mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 1),
  1027. X      { { AT_NONE, AD_ACID, 0, 4 }, NO_ATTK, NO_ATTK,
  1028. X        NO_ATTK, NO_ATTK, NO_ATTK },
  1029. X      50, 30, 0, MS_SILENT, MZ_SMALL, MR_ACID | MR_STONE, MR_STONE,
  1030. X      M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS |
  1031. X      M1_OMNIVORE | M1_ACID,
  1032. X      M2_HOSTILE | M2_NEUTER, 0, C(GREEN) },
  1033. X    { "red mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 1),
  1034. X      { { AT_NONE, AD_FIRE, 0, 4 }, NO_ATTK, NO_ATTK,
  1035. X        NO_ATTK, NO_ATTK, NO_ATTK },
  1036. X      50, 30, 0, MS_SILENT, MZ_SMALL,
  1037. X      MR_FIRE | MR_POISON, MR_FIRE | MR_POISON,
  1038. X      M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS |
  1039. X      M1_OMNIVORE,
  1040. X      M2_HOSTILE | M2_NEUTER, 0, C(RED) },
  1041. X    { "shrieker", S_FUNGUS, 3, 1, 7, 0, 0, (G_GENO | 1),
  1042. X      { NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1043. X      100, 100, 0, MS_SHRIEK, MZ_SMALL, MR_POISON, MR_POISON,
  1044. X      M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS,
  1045. X      M2_HOSTILE | M2_NEUTER, 0, C(MAGENTA) },
  1046. X    { "violet fungus", S_FUNGUS, 3, 1, 7, 0, 0, (G_GENO | 2),
  1047. X      { { AT_TUCH, AD_PHYS, 1, 4 }, { AT_TUCH, AD_STCK, 0, 0 },
  1048. X        NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
  1049. X      100, 100, 0, MS_SILENT, MZ_SMALL, MR_POISON, MR_POISON,
  1050. X      M1_BREATHLESS | M1_NOEYES | M1_NOLIMBS | M1_NOHEAD | M1_MINDLESS |
  1051. X      M1_OMNIVORE,
  1052. X      M2_HOSTILE | M2_NEUTER, 0, C(MAGENTA) },
  1053. X/*    Gnomes    */
  1054. X    { "gnome", S_GNOME, 1, 6, MARM(10,5), 4, 0, (G_GENO | G_SGROUP | 1),
  1055. X      { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK,
  1056. X        NO_ATTK, NO_ATTK, NO_ATTK },
  1057. X      650, 100, 0, MS_ORC, MZ_SMALL, 0, 0,
  1058. X      M1_HUMANOID, M2_COLLECT, 0, C(BROWN) },
  1059. X    { "gnome lord", S_GNOME, 3, 8, MARM(10,4), 4, 0, (G_GENO | 2),
  1060. X      { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK,
  1061. X        NO_ATTK, NO_ATTK, NO_ATTK },
  1062. X      700, 120, 0, MS_ORC, MZ_SMALL, 0, 0,
  1063. X      M1_HUMANOID, M2_LORD | M2_MALE | M2_COLLECT, 0, C(BLUE) },
  1064. X    { "gnomish wizard", S_GNOME, 3, 10, 4, 10, 0, (G_GENO | 1),
  1065. X      { { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK,
  1066. X        NO_ATTK, NO_ATTK, NO_ATTK },
  1067. X      700, 120, 0, MS_ORC, MZ_SMALL, 0, 0,
  1068. X      M1_HUMANOID, M2_MAGIC, 0, C(HI_ZAP) },
  1069. X    { "gnome king", S_GNOME, 5, 10, MARM(10,2), 20, 0, (G_GENO | 1),
  1070. X      { { AT_WEAP, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK,
  1071. X        NO_ATTK, NO_ATTK, NO_ATTK },
  1072. X      750, 150, 0, MS_ORC, MZ_SMALL, 0, 0,
  1073. X      M1_HUMANOID, M2_PRINCE | M2_MALE | M2_COLLECT, 0, C(HI_LORD) },
  1074. X#ifdef SPLITMON_1
  1075. X};
  1076. X#endif
  1077. X#endif /* !SPLITMON_2 */
  1078. X
  1079. END_OF_FILE
  1080. if test 48860 -ne `wc -c <'src/monst.c1'`; then
  1081.     echo shar: \"'src/monst.c1'\" unpacked with wrong size!
  1082. fi
  1083. # end of 'src/monst.c1'
  1084. fi
  1085. if test -f 'sys/amiga/amimenu.c' -a "${1}" != "-c" ; then 
  1086.   echo shar: Will not clobber existing file \"'sys/amiga/amimenu.c'\"
  1087. else
  1088. echo shar: Extracting \"'sys/amiga/amimenu.c'\" \(6187 characters\)
  1089. sed "s/^X//" >'sys/amiga/amimenu.c' <<'END_OF_FILE'
  1090. X/*    SCCS Id: @(#)amimenu.c    3.1    93/01/08
  1091. X/*    Copyright (c) Olaf 'Rhialto' Seibert, 1989           */
  1092. X/*    Copyright (c) Kenneth Lorber, Bethesda, Maryland, 1992, 1993 */
  1093. X/* NetHack may be freely redistributed.  See license for details.  */
  1094. X
  1095. X/*  Originally by John Toebes.  */
  1096. X
  1097. X#define TEXT(nam,str) \
  1098. Xstatic struct IntuiText nam = \
  1099. X  {1,5,JAM2,0,0,0L,(UBYTE*)str,0L}  /* 1,5 == C_WHITE,C_MAGENTA */
  1100. X
  1101. X    /* Commands */
  1102. X    TEXT(T_HELP,  "?   Display help menu");
  1103. X    TEXT(T_amp,   "&   Explain a command");
  1104. X    TEXT(T_O,     "O   Set options");
  1105. X    TEXT(T_SHELL, "!   AmigaDos commands");
  1106. X    TEXT(T_v,     "v   Version number");
  1107. X    TEXT(T_CR,    "^R  Redraw screen");
  1108. X    TEXT(T_CP,    "^P  Repeat last message");
  1109. X    TEXT(T_Q,     "Q   Quit game");
  1110. X    TEXT(T_S,     "S   Save the game");
  1111. X
  1112. X    /* Inventory */
  1113. X    TEXT(T_i,     "i   Inventory");
  1114. X    TEXT(T_p,     "p   Pay your bill");
  1115. X    TEXT(T_d,     "d   Drop an object");
  1116. X    TEXT(T_D,     "D   Drop several things");
  1117. X    TEXT(T_COMMA, ",   Pickup an object");
  1118. X    TEXT(T_AT,    "@   Toggle pickup");
  1119. X    TEXT(T_SLASH, "/   Identify something");
  1120. X    TEXT(T_C,     "C   Christen a monster");
  1121. X
  1122. X    /* Actions */
  1123. X    TEXT(T_a,     "a   Apply/use something");
  1124. X    TEXT(T_e,     "e   Eat something");
  1125. X    TEXT(T_q,     "q   Quaff a potion");
  1126. X    TEXT(T_r,     "r   Read scroll/book");
  1127. X    TEXT(T_t,     "t   Throw/shoot weapon");
  1128. X    TEXT(T_z,     "z   Zap a wand");
  1129. X    TEXT(T_Z,     "Z   Cast a spell");
  1130. X    TEXT(T_HASH,  "#   Extended command");
  1131. X
  1132. X    /* Preparations */
  1133. X    TEXT(T_w,     "w   Wield a weapon");
  1134. X    TEXT(T_P,     "P   Put on ring");
  1135. X    TEXT(T_R,     "R   Remove ring");
  1136. X    TEXT(T_T,     "T   Take off armor");
  1137. X    TEXT(T_W,     "W   Wear armor");
  1138. X    TEXT(T_WPN,   ")   Current weapon");
  1139. X    TEXT(T_ARMOR, "[   Current armor");
  1140. X    TEXT(T_RING,  "=   Current rings");
  1141. X    TEXT(T_AMU,  "\"   Current amulet");
  1142. X    TEXT(T_TOOL,  "(   Current tools");
  1143. X
  1144. X    /* Movement */
  1145. X    TEXT(T_o,     "o   Open door");
  1146. X    TEXT(T_c,     "c   Close door");
  1147. X    TEXT(T_KICK,  "^D  Kick door");
  1148. X    TEXT(T_s,     "s   Search");
  1149. X    TEXT(T_UP,    "<   Go up stairs");
  1150. X    TEXT(T_DOWN,  ">   Go down stairs");
  1151. X    TEXT(T_CT,    "^T  Teleport");
  1152. X    TEXT(T_WAIT,  ".   Wait a moment");
  1153. X    TEXT(T_E,     "E   Engrave msg on floor");
  1154. X
  1155. X#define IFLAGS ITEMENABLED|ITEMTEXT|HIGHCOMP
  1156. X#define IDATA(cmd,str,off) 0,off,WDT,9,IFLAGS,0,(APTR)&str,(APTR)0,cmd,0L,0
  1157. X
  1158. X/* Commands */
  1159. X
  1160. X#undef  WDT
  1161. X#define WDT 184
  1162. X
  1163. Xstatic struct MenuItem cmdsub[] = {
  1164. X    { &cmdsub[1], IDATA('?', T_HELP,   0) },    /*   Display help */
  1165. X    { &cmdsub[2], IDATA('&', T_amp,   10) },    /*   Explain a command */
  1166. X    { &cmdsub[3], IDATA('O', T_O,     20) },    /*   Set options */
  1167. X    { &cmdsub[4], IDATA('!', T_SHELL, 30) },    /*   AmigaDos commands */
  1168. X    { &cmdsub[5], IDATA('v', T_v,     40) },    /*   Version number */
  1169. X    { &cmdsub[6], IDATA(022, T_CR,    50) },    /*R  Redraw screen */
  1170. X    { &cmdsub[7], IDATA(020 ,T_CP,    60) },    /*P  Repeat last message */
  1171. X    { &cmdsub[8], IDATA('Q', T_Q,     70) },    /*   Quit game */
  1172. X    { NULL,   IDATA('S', T_S,     80) },    /*   Save the game */
  1173. X};
  1174. X
  1175. X/* Inventory */
  1176. X
  1177. X#undef  WDT
  1178. X#define WDT 184
  1179. X
  1180. Xstatic struct MenuItem invsub[] = {
  1181. X    { &invsub[1], IDATA('i', T_i,      0) },    /*   Inventory */
  1182. X    { &invsub[2], IDATA('p', T_p,     10) },    /*   Pay your bill */
  1183. X    { &invsub[3], IDATA('d', T_d,     20) },    /*   Drop an object */
  1184. X    { &invsub[4], IDATA('D', T_D,     30) },    /*   Drop several things */
  1185. X    { &invsub[5], IDATA(',', T_COMMA, 40) },    /*   Pickup an object */
  1186. X    { &invsub[6], IDATA('/', T_SLASH, 50) },    /*   Identify something */
  1187. X    { NULL,   IDATA('C', T_C,     60) },    /*   Christen a monster */
  1188. X};
  1189. X
  1190. X/* Actions */
  1191. X
  1192. X#undef  WDT
  1193. X#define WDT 184
  1194. X
  1195. Xstatic struct MenuItem actsub[] = {
  1196. X    { &actsub[1], IDATA('a', T_a,     0) },    /*   Apply/use something */
  1197. X    { &actsub[2], IDATA('e', T_e,    10) },    /*   Eat something */
  1198. X    { &actsub[3], IDATA('q', T_q,    20) },    /*   Quaff a potion */
  1199. X    { &actsub[4], IDATA('r', T_r,    30) },    /*   Read a scroll/spellbook */
  1200. X    { &actsub[5], IDATA('t', T_t,    40) },    /*   Throw/shoot weapon */
  1201. X    { &actsub[6], IDATA('z', T_z,    50) },    /*   Zap a wand */
  1202. X    { &actsub[7], IDATA('Z', T_Z,    60) },    /*   Cast a spell */
  1203. X    { NULL  , IDATA('#', T_HASH, 70) },        /*   Extended command */
  1204. X};
  1205. X
  1206. X/* Preparations */
  1207. X
  1208. X#undef  WDT
  1209. X#define WDT 144
  1210. X
  1211. Xstatic struct MenuItem armsub[] = {
  1212. X    { &armsub[1], IDATA('w', T_w,      0) },    /*   Wield a weapon */
  1213. X    { &armsub[2], IDATA('R', T_R,     10) },    /*   Remove ring */
  1214. X    { &armsub[3], IDATA('P', T_P,     20) },    /*   Put on ring */
  1215. X    { &armsub[4], IDATA('T', T_T,     30) },    /*   Take off armor */
  1216. X    { &armsub[5], IDATA('W', T_W,     40) },    /*   Wear armor */
  1217. X    { &armsub[6], IDATA(')', T_WPN,   50) },    /*   Current weapon */
  1218. X    { &armsub[7], IDATA('[', T_ARMOR, 60) },    /*   Current armor */
  1219. X    { &armsub[8], IDATA('=', T_RING,  70) },    /*   Current rings */
  1220. X    { &armsub[9], IDATA('"', T_AMU,   80) },    /*   Current amulet */
  1221. X    { NULL  , IDATA('(', T_TOOL,  90) },    /*   Current tools */
  1222. X};
  1223. X
  1224. X/* Movement */
  1225. X
  1226. X#undef  WDT
  1227. X#define WDT 192
  1228. X
  1229. Xstatic struct MenuItem movsub[] = {
  1230. X    { &movsub[1], IDATA('o', T_o,     0) },    /*   Open door */
  1231. X    { &movsub[2], IDATA('c', T_c,    10) },    /*   Close door */
  1232. X    { &movsub[3], IDATA(004, T_KICK, 20) },    /*D  Kick door */
  1233. X    { &movsub[4], IDATA('s', T_s,    30) },    /*   Search */
  1234. X    { &movsub[5], IDATA('<', T_UP,   40) },    /*   Go up stairs */
  1235. X    { &movsub[6], IDATA('>', T_DOWN, 50) },    /*   Go down stairs */
  1236. X    { &movsub[7], IDATA(024, T_CT,   60) },    /*T  Teleport */
  1237. X    { &movsub[8], IDATA('.', T_WAIT, 70) },    /*   Wait a moment */
  1238. X    { NULL  , IDATA('E', T_E,    80) },        /*   Engrave msg on floor */
  1239. X};
  1240. X
  1241. X/* Menustrip */
  1242. X
  1243. X/* Width = #letters * 8 + 8 + 10 */
  1244. X
  1245. Xstruct Menu HackMenu[] = {
  1246. X   { &HackMenu[1], 10,0, 72,0,MENUENABLED,"Commands",     &cmdsub[0] }, /*8*/
  1247. X   { &HackMenu[2], 92,0, 80,0,MENUENABLED,"Inventory",    &invsub[0] }, /*9*/
  1248. X   { &HackMenu[3],182,0, 64,0,MENUENABLED,"Actions",      &actsub[0] }, /*7*/
  1249. X   { &HackMenu[4],256,0,104,0,MENUENABLED,"Preparations", &armsub[0] }, /*12*/
  1250. X   { NULL,    370,0, 72,0,MENUENABLED,"Movement",     &movsub[0] },    /*8*/
  1251. X};
  1252. END_OF_FILE
  1253. if test 6187 -ne `wc -c <'sys/amiga/amimenu.c'`; then
  1254.     echo shar: \"'sys/amiga/amimenu.c'\" unpacked with wrong size!
  1255. fi
  1256. # end of 'sys/amiga/amimenu.c'
  1257. fi
  1258. echo shar: End of archive 11 \(of 108\).
  1259. cp /dev/null ark11isdone
  1260. MISSING=""
  1261. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \
  1262. 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \
  1263. 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 \
  1264. 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 \
  1265. 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 \
  1266. 101 102 103 104 105 106 107 108 ; do
  1267.     if test ! -f ark${I}isdone ; then
  1268.     MISSING="${MISSING} ${I}"
  1269.     fi
  1270. done
  1271. if test "${MISSING}" = "" ; then
  1272.     echo You have unpacked all 108 archives.
  1273.     echo "Now execute 'rebuild.sh'"
  1274.     rm -f ark10[0-8]isdone ark[1-9]isdone ark[1-9][0-9]isdone
  1275. else
  1276.     echo You still need to unpack the following archives:
  1277.     echo "        " ${MISSING}
  1278. fi
  1279. ##  End of shell archive.
  1280. exit 0
  1281.