home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / comp / sources / games / 319 < prev    next >
Encoding:
Internet Message Format  |  1993-01-28  |  57.6 KB

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