[comp.sources.games] v09i023: NetHack3 - display oriented dungeons & dragons

billr@saab.CNA.TEK.COM (Bill Randle) (02/24/90)

Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
Posting-number: Volume 9, Issue 23
Archive-name: NetHack3/Patch7w
Patch-To: NetHack3: Volume 7, Issue 56-93



#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 23 (of 30)."
# Contents:  include/system.h src/monst.c2
# Wrapped by billr@saab on Wed Feb 21 10:04:45 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'include/system.h' -a "${1}" != "-c" ; then 
  echo shar: Renaming existing file \"'include/system.h'\" to \"'include/system.h.orig'\"
  mv -f 'include/system.h' 'include/system.h.orig'
fi
echo shar: Extracting \"'include/system.h'\" \(7445 characters\)
sed "s/^X//" >'include/system.h' <<'END_OF_FILE'
X/*	SCCS Id: @(#)system.h 3.0	88/10/10 */
X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X/* NetHack may be freely redistributed.  See license for details. */
X
X#ifndef SYSTEM_H
X#define SYSTEM_H
X
X#define E extern
X
X/* some old <sys/types.h> may not define off_t and size_t; if your system is
X * one of these, define them by hand below
X */
X#if !defined(THINKC4) && !defined(AMIGA) && !defined(MACOS)
X# include <sys/types.h>
X#endif
X
X#if defined(TOS) && defined(__GNUC__) && !defined(_SIZE_T)
X# define _SIZE_T
X#endif
X
X#if defined(MSDOS) || ((defined(AMIGA) || defined(MACOS)) && !defined(THINKC4))
X# ifndef _SIZE_T
X#  define _SIZE_T
Xtypedef unsigned int	size_t;
X# endif
X#endif
X
X#ifdef ULTRIX
X/* The Ultrix v3.0 <sys/types.h> seems to be very wrong. */
X# define time_t long
X#endif
X#if defined(ULTRIX) || defined(VMS)
X# define off_t long
X#endif
X#if defined(AZTEC) || defined(THINKC4) || (defined(MSDOS) && defined(__TURBOC__))
Xtypedef long	off_t;
X#endif
X
X
X/* You may want to change this to fit your system, as this is almost
X * impossible to get right automatically.
X * This is the type of signal handling functions.
X */
X#if defined(__STDC__) || defined(ULTRIX)
X	/* also SVR3 and later, Sun4.0 and later */
X# define SIG_RET_TYPE void (*)()
X#else
X	/* BSD, SIII, SVR2 and earlier, Sun3.5 and earlier */
X# define SIG_RET_TYPE int (*)()
X#endif
X
X#if defined(BSD) || defined(ULTRIX) || defined(RANDOM)
XE long random();
XE void FDECL(srandom, (unsigned int));
X#else
XE long lrand48();
XE void srand48();
X#endif /* BSD || ULTRIX || RANDOM */
X
X#if !defined(BSD) || defined(ultrix)
X			/* real BSD wants all these to return int */
X# ifndef MSDOS
XE void FDECL(exit, (int));
X# endif /* MSDOS */
XE void FDECL(free, (genericptr_t));
X# ifdef AMIGA
XE int FDECL(perror, (const char *));
X# else
X#  ifndef MACOS
XE void FDECL(perror, (const char *));
X#  endif
X# endif
X#endif
X#if defined(BSD) || defined(ULTRIX) || (defined(MACOS) && !defined(THINKC4))
XE int qsort();
X#else
X# ifndef LATTICE
XE void FDECL(qsort, (genericptr_t,size_t,size_t,int(*)(genericptr_t,genericptr_t)));
X# endif
X#endif
X
X#ifdef ULTRIX
XE long FDECL(lseek, (int,off_t,int));
X  /* Ultrix 3.0 man page mistakenly says it returns an int. */
XE int FDECL(write, (int,char *,int));
X#else
XE long FDECL(lseek, (int,long,int));
XE int FDECL(write, (int,genericptr_t,unsigned));
X#endif /* ULTRIX */
XE int FDECL(unlink, (const char *));
X
X#ifdef MSDOS
XE int FDECL(close, (int));
XE int FDECL(read, (int,genericptr_t,unsigned int));
XE int FDECL(open, (const char *,int,...));
XE int FDECL(dup2, (int, int));
XE int FDECL(setmode, (int,int));
XE int FDECL(kbhit, (void));
XE int FDECL(chdir, (char *));
XE char *FDECL(getcwd, (char *,int));
X#endif
X
X#ifdef TOS
XE int FDECL(creat, (const char *, int));
X#endif
X
X/* both old & new versions of Ultrix want these, but real BSD does not */
X#ifdef ultrix
XE void abort();
XE void bcopy();
X#endif
X#ifdef MSDOS
XE void FDECL(abort, (void));
XE void FDECL(_exit, (int));
XE int FDECL(system, (const char *));
X#endif
X#ifdef HPUX
XE long FDECL(fork, (void));
X#endif
X
X#ifdef SYSV
XE char *memcpy();
X#endif
X#ifdef HPUX
XE void *FDECL(memcpy, (char *,char *,int));
XE int FDECL(memcmp, (char *,char *,int));
XE void *FDECL(memset, (char*,int,int));
X#endif
X#ifdef MSDOS
X# if defined(TOS) && defined(__GNUC__)
XE int FDECL(memcmp, (const char *,const char *,size_t));
XE char *FDECL(memcpy, (char *,const char *,size_t));
XE char *FDECL(memset, (char*,int,size_t));
X# else
X#  ifndef LATTICE
X#    ifdef MSC
Xvoid * _CDECL memcpy(void *, const void *, size_t);
Xvoid * _CDECL memset(void *, int, size_t);
X#    else
XE int FDECL(memcmp, (char *,char *,unsigned int));
XE char *FDECL(memcpy, (char *,char *,unsigned int));
XE char *FDECL(memset, (char*,int,int));
X#    endif
X#  endif
X# endif /* TOS */
X#endif
X
X#if defined(BSD) && defined(ultrix)	/* i.e., old versions of Ultrix */
XE void sleep();
X#endif
X#if defined(ULTRIX) || defined(SYSV)
XE unsigned sleep();
X#endif
X#if defined(HPUX)
XE unsigned int FDECL(sleep, (unsigned int));
X#endif
X
XE char *FDECL(getenv, (const char *));
XE char *getlogin();
X#ifdef HPUX
XE long FDECL(getuid, (void));
XE long FDECL(getgid, (void));
XE long FDECL(getpid, (void));
X#else
XE int FDECL(getpid, (void));
X#endif
X
X/*# string(s).h #*/
X
XE char	*FDECL(strcpy, (char *,const char *));
XE char	*FDECL(strncpy, (char *,const char *,size_t));
XE char	*FDECL(strcat, (char *,const char *));
XE char	*FDECL(strncat, (char *,const char *,size_t));
X
X#if defined(SYSV) || defined(MSDOS) || defined(AMIGA) || defined(THINK_C) || defined(VMS) || defined(HPUX)
XE char	*FDECL(strchr, (const char *,int));
XE char	*FDECL(strrchr, (const char *,int));
X#else /* BSD */
XE char	*FDECL(index, (const char *,int));
XE char	*FDECL(rindex, (const char *,int));
X#endif
X
X
XE int	FDECL(strcmp, (const char *,const char *));
XE int	FDECL(strncmp, (const char *,const char *,size_t));
X#ifdef MSDOS
XE size_t FDECL(strlen, (const char *));
X#else
X# ifdef HPUX
XE unsigned int	FDECL(strlen, (char *));
X# else
X#  ifdef THINKC4
XE size_t	FDECL(strlen, (char *));
X#  else
XE int	FDECL(strlen, (char *));
X#  endif /* THINKC4 */
X# endif /* HPUX */
X#endif /* MSDOS */
X
X/* Old varieties of BSD have char *sprintf().
X * Newer varieties of BSD have int sprintf() but allow for the old char *.
X * Several varieties of SYSV and PC systems also have int sprintf().
X * If your system doesn't agree with this breakdown, you may want to change
X * this declaration, especially if your machine treats the types differently.
X */
X#if (defined(BSD) || defined(ULTRIX)) && !defined(DGUX) && !defined(NeXT)
X# define OLD_SPRINTF
XE char *sprintf();
X#else
X# ifndef TOS	/* problem with prototype mismatches with <stdio.h> */
XE int FDECL(sprintf, (char *,const char *,...));
X# endif
X#endif
X
X#ifdef NEED_VARARGS
X# if defined(USE_STDARG) || defined(USE_VARARGS)
XE int FDECL(vsprintf, (char *, const char *, va_list));
XE int FDECL(vprintf, (const char *, va_list));
X# else
X#  define vprintf	printf
X#  define vsprintf	sprintf
X#  define vpline	pline
X# endif
X#endif /* NEED_VARARGS */
X
X#define Sprintf	(void) sprintf
X#define Strcat	(void) strcat
X#define Strcpy	(void) strcpy
X
X#if defined(MACOS) && defined(CUSTOM_IO)
X# undef printf
X# undef puts
X# undef putchar
X# undef putc
X# define printf  (void) mprintf
X# define puts	 mputs
X# define putchar mputc
X# define putc	 mputc
X# define Printf  (void) mprintf
X#else
X# define Printf  (void) printf
X#endif
X
X#ifdef NEED_VARARGS
X# define Vprintf (void) vprintf
X# define Vsprintf (void) vsprintf
X#endif
X
X#ifdef TOS
XE int FDECL(tgetent, (const char *,const char *));
XE int FDECL(tgetnum, (const char *));
XE int FDECL(tgetflag, (const char *));
XE char *FDECL(tgetstr, (const char *,char **));
XE char *FDECL(tgoto, (const char *,int,int));
XE void FDECL(tputs, (const char *,int,int (*)()));
X#else
XE int FDECL(tgetent, (char *,char *));
XE int FDECL(tgetnum, (char *));
XE int FDECL(tgetflag, (char *));
XE char *FDECL(tgetstr, (char *,char **));
XE char *FDECL(tgoto, (char *,int,int));
XE void FDECL(tputs, (char *,int,int (*)()));
X#endif
X
X#ifndef MACOS
XE genericptr_t FDECL(malloc, (size_t));
X#endif
X
X/* time functions */
X
X#ifndef MACOS
X# ifndef LATTICE
XE struct tm *FDECL(localtime, (const time_t *));
X# endif
X
X# if defined(ULTRIX) || defined(SYSV) || defined(MSDOS)
XE time_t FDECL(time, (time_t *));
X# else
XE long FDECL(time, (time_t *));
X# endif /* ULTRIX */
X#endif
X
X#ifdef MSDOS
X# ifdef abs
X# undef abs
X# endif
XE int FDECL(abs, (int));
XE int FDECL(atoi, (const char *));
X#endif
X
X#undef E
X
X#endif /* SYSTEM_H */
END_OF_FILE
if test 7445 -ne `wc -c <'include/system.h'`; then
    echo shar: \"'include/system.h'\" unpacked with wrong size!
fi
# end of 'include/system.h'
if test -f 'src/monst.c2' -a "${1}" != "-c" ; then 
  echo shar: Renaming existing file \"'src/monst.c2'\" to \"'src/monst.c2.orig'\"
  mv -f 'src/monst.c2' 'src/monst.c2.orig'
fi
echo shar: Extracting \"'src/monst.c2'\" \(46080 characters\)
sed "s/^X//" >'src/monst.c2' <<'END_OF_FILE'
X
X/* horrible kludge alert:
X * This is a compiler-specific kludge to allow the compilation of monst.o in
X * two pieces, by defining first SPLITMON_1 and then SPLITMON_2. The
X * resulting assembler files (monst1.s and monst2.s) are then run through
X * sed to change local symbols, concatenated together, and assembled to
X * produce monst.o. THIS ONLY WORKS WITH THE ATARI GCC, and should only
X * be done if you don't have enough memory to compile monst.o the "normal"
X * way.  --ERS
X */
X
X#ifndef SPLITMON_1
X#ifdef SPLITMON_2
Xstruct permonst _mons2[] = {
X#endif
X/*	giant Humanoids */
X	{ "ettin", S_GIANT, 10, 12, 3, 0, 0, (G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 8 }, { AT_WEAP, AD_PHYS, 3, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_GRUNT, MZ_HUGE, M1_ANIMAL | M1_HUMANOID | M1_COLLECT,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE, C(BROWN) },
X	{ "giant", S_GIANT, 6, 6, 0, 0, 2, (G_GENO | G_NOGEN | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 10 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  75, 750, 0, MS_SILENT, MZ_HUGE, M1_HUMANOID | M1_COLLECT | M1_JEWELS,
X	   M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_NASTY, C(RED) },
X	{ "stone giant", S_GIANT, 6, 6, 0, 0, 2, (G_GENO | G_SGROUP | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 10 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  75, 750, 0, MS_SILENT, MZ_HUGE, M1_HUMANOID | M1_COLLECT | M1_JEWELS,
X	   M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_NASTY, C(GRAY) },
X	{ "hill giant", S_GIANT, 8, 10, 6, 0, -2, (G_GENO | G_SGROUP | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  70, 700, 0, MS_SILENT, MZ_HUGE, M1_HUMANOID | M1_COLLECT | M1_JEWELS,
X	  M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_NASTY, C(CYAN) },
X	{ "fire giant", S_GIANT, 9, 12, 4, 5, 2, (G_GENO | G_SGROUP | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 10 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  75, 750, 0, MS_SILENT, MZ_HUGE,
X	  M1_HUMANOID | M1_FIRE_RES | M1_COLLECT | M1_JEWELS,
X	  M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_NASTY, C(YELLOW) },
X	{ "frost giant", S_GIANT, 10, 12, 3, 10, -3, (G_GENO | G_SGROUP | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 12 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  75, 750, 0, MS_SILENT, MZ_HUGE,
X	  M1_HUMANOID | M1_COLD_RES | M1_COLLECT | M1_JEWELS,
X	  M2_GIANT | M2_STRONG | M2_ROCKTHROW | M2_NASTY, C(WHITE) },
X	{ "titan", S_GIANT, 16, 18, -3, 70, 9, 1,
X	  { { AT_WEAP, AD_PHYS, 2, 8 }, { AT_MAGC, AD_SPEL, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  90, 900, 0, MS_SILENT, MZ_HUGE, M1_FLY | M1_HUMANOID | M1_MAGIC |
X	  M1_COLLECT, M2_STRONG | M2_ROCKTHROW | M2_NASTY, C(MAGENTA) },
X	{ "minotaur", S_GIANT, 15, 15, 6, 0, 0, (G_GENO | G_NOGEN),
X	  { { AT_CLAW, AD_PHYS, 3, 10 }, { AT_CLAW, AD_PHYS, 3, 10 },
X	    { AT_BUTT, AD_PHYS, 2, 8}, NO_ATTK, NO_ATTK},
X	  70, 700, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_HUMANOID,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE, C(BROWN) },
X	{ "owlbear", S_GIANT, 5, 12, 5, 0, 0, (G_GENO | 3),
X	  { { AT_CLAW, AD_PHYS, 1, 6 }, { AT_CLAW, AD_PHYS, 1, 6 },
X	    { AT_HUGS, AD_PHYS, 2, 8 }, NO_ATTK, NO_ATTK },
X	  70, 700, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_HUMANOID,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE, C(BROWN) },
X/*	Invisible stalker	*/
X	{ "stalker", S_STALKER, 8, 12, 3, 0, 0, (G_GENO | 3),
X	  { { AT_CLAW, AD_PHYS, 4, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  40, 400, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_FLY | M1_SEE_INVIS,
X	  M2_WANDER | M2_STALK | M2_HOSTILE | M2_STRONG, C(WHITE) },
X/*	Jabberwock */
X	{ "jabberwock", S_JABBERWOCK, 15, 12, -2, 50, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 2, 10 }, { AT_BITE, AD_PHYS, 2, 10 },
X	    { AT_CLAW, AD_PHYS, 2, 10 }, { AT_CLAW, AD_PHYS, 2, 10 }, NO_ATTK },
X	  60, 600, 0, MS_BURBLE, MZ_LARGE, M1_ANIMAL | M1_COLLECT | M1_FLY,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE, C(BRIGHT|RED) },
X/*	Kops	*/
X#ifdef KOPS
X	{ "Keystone Kop", S_KOP, 1, 6, 7, 10, 9, (G_GENO | G_LGROUP | G_NOGEN),
X	  { { AT_WEAP, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_ARREST, MZ_HUMAN, M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_WANDER | M2_HOSTILE, C(BLUE) },
X	{ "Kop Sergeant", S_KOP, 2, 8, 6, 10, 10, (G_GENO | G_SGROUP | G_NOGEN),
X	  { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_ARREST, MZ_HUMAN, M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_WANDER | M2_HOSTILE | M2_STRONG, C(BLUE) },
X	{ "Kop Lieutenant", S_KOP, 3, 10, 5, 20, 11, (G_GENO | G_NOGEN),
X	  { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_ARREST, MZ_HUMAN, M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_WANDER | M2_HOSTILE | M2_STRONG, C(CYAN) },
X	{ "Kop Kaptain", S_KOP, 4, 12, 4, 20, 12, (G_GENO | G_NOGEN),
X	  { { AT_WEAP, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_ARREST, MZ_HUMAN, M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_WANDER | M2_HOSTILE | M2_STRONG, C(HI_LORD) },
X#endif
X/*	Liches	 */
X	{ "lich", S_LICH, 11, 6, 0, 30, -9, (G_GENO | 1),
X	  { { AT_TUCH, AD_COLD, 1, 10 }, { AT_MAGC, AD_SPEL, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 30, 100, 0, MS_MUMBLE, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS | M1_COLD_RES | M1_REGEN | M1_MAGIC,
X	  M2_UNDEAD | M2_HOSTILE, C(BROWN) },
X	{ "demilich", S_LICH, 14, 9, -2, 60, -12, (G_GENO | 1),
X	  { { AT_TUCH, AD_COLD, 3, 4 }, { AT_MAGC, AD_SPEL, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 30, 100, 0, MS_MUMBLE, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS | M1_COLD_RES | M1_REGEN | M1_MAGIC,
X	  M2_UNDEAD | M2_HOSTILE, C(RED) },
X	{ "master lich", S_LICH, 17, 9, -4, 90, -15, (G_HELL | G_GENO | 1),
X	  { { AT_TUCH, AD_COLD, 3, 6 }, { AT_MAGC, AD_SPEL, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 30, 100, 0, MS_MUMBLE, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS | M1_FIRE_RES | M1_COLD_RES | M1_REGEN |
X	  M1_MAGIC, M2_UNDEAD | M2_HOSTILE, C(HI_LORD) },
X/*	Mummies 	*/
X	{ "kobold mummy", S_MUMMY, 3, 8, 6, 20, -2, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_SILENT, MZ_SMALL,
X	  M1_HUMANOID | M1_POIS, M2_UNDEAD | M2_HOSTILE, C(BROWN) },
X	{ "gnome mummy", S_MUMMY, 4, 10, 6, 20, -3, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_SILENT, MZ_SMALL,
X	  M1_HUMANOID | M1_POIS, M2_UNDEAD | M2_HOSTILE, C(RED) },
X	{ "orc mummy", S_MUMMY, 5, 10, 5, 20, -4, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  15, 150, 0, MS_SILENT, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS | M1_GREEDY | M1_JEWELS,
X	  M2_UNDEAD | M2_HOSTILE | M2_ORC, C(GRAY) },
X	{ "elf mummy", S_MUMMY, 6, 12, 4, 30, -5, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  35, 350, 0, MS_SILENT, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS | M1_SLEE_RES,
X	  M2_UNDEAD | M2_HOSTILE | M2_ELF, C(GREEN) },
X	{ "human mummy", S_MUMMY, 6, 12, 4, 30, -5, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 2, 4 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  40, 400, 0, MS_SILENT, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS, M2_UNDEAD | M2_HOSTILE, C(GRAY) },
X	{ "ettin mummy", S_MUMMY, 7, 12, 4, 30, -6, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 2, 6 }, { AT_CLAW, AD_PHYS, 2, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, 0, MS_SILENT, MZ_HUGE,
X	  M1_HUMANOID | M1_POIS,
X	  M2_UNDEAD | M2_HOSTILE | M2_STRONG, C(BLUE) },
X	{ "giant mummy", S_MUMMY, 8, 14, 3, 30, -7, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 3, 4 }, { AT_CLAW, AD_PHYS, 3, 4 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 75, 750, 0, MS_SILENT, MZ_HUGE,
X	  M1_HUMANOID | M1_POIS | M1_JEWELS,
X	  M2_UNDEAD | M2_HOSTILE | M2_GIANT | M2_STRONG, C(CYAN) },
X/*	Nagas	*/
X	{ "red naga hatchling", S_NAGA, 3, 10, 6, 0, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 100, 0, MS_MUMBLE, MZ_LARGE,
X	  M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_FIRE_RES | M1_POIS_RES,
X	  M2_STRONG, C(RED) },
X	{ "black naga hatchling", S_NAGA, 3, 10, 6, 0, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 100, 0, MS_MUMBLE, MZ_LARGE,
X	  M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_POIS_RES | M1_STON_RES,
X	  M2_STRONG, C(BLACK) },
X	{ "golden naga hatchling", S_NAGA, 3, 10, 6, 0, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 100, 0, MS_MUMBLE, MZ_LARGE,
X	  M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_POIS_RES,
X	  M2_STRONG, C(HI_GOLD) },
X	{ "guardian naga hatchling", S_NAGA, 3, 10, 6, 0, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 100, 0, MS_MUMBLE, MZ_LARGE,
X	  M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_POIS_RES,
X	  M2_STRONG, C(GREEN) },
X	{ "red naga", S_NAGA, 6, 12, 4, 0, -4, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 2, 4 }, { AT_BREA, AD_FIRE, 2, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 60, 400, 0, MS_MUMBLE, MZ_HUGE,
X	  M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_POIS_RES | M1_FIRE_RES,
X	  M2_STRONG | M2_EGGS, C(RED) },
X	{ "black naga", S_NAGA, 8, 14, 2, 10, 4, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 2, 6 }, { AT_SPIT, AD_ACID, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 60, 400, 0, MS_MUMBLE, MZ_HUGE,
X	  M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_POIS_RES |
X	  M1_ACID | M1_STON_RES,
X	  M2_STRONG | M2_EGGS, C(BLACK) },
X	{ "golden naga", S_NAGA, 10, 14, 2, 70, 5, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 2, 6 }, { AT_MAGC, AD_SPEL, 4, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 60, 400, 0, MS_MUMBLE, MZ_HUGE,
X	  M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_POIS_RES,
X	  M2_STRONG | M2_EGGS, C(HI_GOLD) },
X	{ "guardian naga", S_NAGA, 12, 16, 0, 50, 7, (G_GENO | 1),
X	  { { AT_BITE, AD_PLYS, 1, 6 }, { AT_HUGS, AD_PHYS, 2, 4 },
X	    { AT_SPIT, AD_DRST, 1, 6 }, NO_ATTK, NO_ATTK },
X	  60, 400, 0, MS_MUMBLE, MZ_HUGE,
X	  M1_NOLIMBS | M1_SLITHY | M1_THICK_HIDE | M1_POIS_RES | M1_POIS,
X	  M2_STRONG | M2_EGGS, C(GREEN) },
X/*	Ogres	*/
X	{ "ogre", S_OGRE, 5, 10, 5, 0, -3, (G_SGROUP | G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 5 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  60, 500, 0, MS_GRUNT, MZ_LARGE,
X	  M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
X	  M2_STRONG, C(BROWN) },
X	{ "ogre lord", S_OGRE, 7, 12, 3, 30, -5, (G_GENO | 2),
X	  { { AT_WEAP, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  70, 700, 0, MS_GRUNT, MZ_LARGE,
X	  M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
X	  M2_STRONG | M2_LORD, C(RED) },
X	{ "ogre king", S_OGRE, 7, 14, 4, 60, -7, (G_GENO | 2),
X	  { { AT_WEAP, AD_PHYS, 3, 5 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  70, 750, 0, MS_GRUNT, MZ_LARGE,
X	  M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
X	  M2_STRONG | M2_PRINCE, C(HI_LORD) },
X/*	Puddings */
X	{ "gray ooze", S_PUDDING, 3, 1, 8, 0, 0, (G_GENO | 2),
X	  { { AT_BITE, AD_RUST, 2, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_SILENT, MZ_MEDIUM,
X	  M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES,
X	  M2_HOSTILE | M2_OMNIVORE, C(GRAY) },
X	{ "brown pudding", S_PUDDING, 5, 3, 8, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_DCAY, 0, 0 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_SILENT, MZ_MEDIUM,
X	  M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_COLD_RES |
X	  M1_ELEC_RES, M2_HOSTILE | M2_OMNIVORE, C(BROWN) },
X	{ "black pudding", S_PUDDING, 10, 6, 6, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_RUST, 3, 8 }, { AT_NONE, AD_RUST, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_SILENT, MZ_LARGE,
X	  M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_COLD_RES |
X	  M1_ELEC_RES, M2_HOSTILE | M2_OMNIVORE, C(BLACK) },
X/*	Quantum Mechanics	*/
X	{ "quantum mechanic", S_QUANTMECH, 7, 12, 3, 10, 0, (G_GENO | 3),
X	  { { AT_CLAW, AD_TLPT, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  2, 20, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS | M1_TPORT, M2_HOSTILE, C(CYAN) },
X/*	Rust Monster	*/
X	{ "rust monster", S_RUSTMONST, 5, 18, 2, 0, 0, (G_GENO | 2),
X	  { { AT_TUCH, AD_RUST, 0, 0 }, { AT_TUCH, AD_RUST, 0, 0 },
X	    { AT_NONE, AD_RUST, 0, 0 }, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_SILENT, MZ_MEDIUM,
X	  M1_SWIM | M1_ANIMAL | M1_NOHANDS, M2_HOSTILE | M2_METALLIVORE,
X	  C(BROWN) },
X/*	Snakes	*/
X	{ "garter snake", S_SNAKE, 1, 8, 8, 0, 0, (G_LGROUP | G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 1, 2 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  5, 60, 0, MS_HISS, MZ_TINY,
X	  M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY,
X	  M2_CARNIVORE | M2_EGGS, C(GREEN) },
X	{ "snake", S_SNAKE, 4, 15, 3, 0, 0, (G_GENO | 2),
X	  { { AT_BITE, AD_DRST, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  10, 80, 0, MS_HISS, MZ_SMALL,
X	  M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY |
X	  M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(BROWN) },
X	{ "water moccasin", S_SNAKE, 4, 15, 3, 0, 0,
X	  (G_GENO | G_NOGEN | G_LGROUP),
X	  { { AT_BITE, AD_DRST, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_HISS, MZ_SMALL,
X	  M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY |
X	  M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(RED) },
X	{ "pit viper", S_SNAKE, 6, 15, 2, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_DRST, 1, 4 }, { AT_BITE, AD_DRST, 1, 4 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 5, 60, 0, MS_HISS, MZ_MEDIUM,
X	  M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY |
X	  M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(BLUE) },
X	{ "cobra", S_SNAKE, 6, 18, 2, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_DRST, 2, 4 }, { AT_SPIT, AD_BLND, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 15, 100, 0, MS_HISS, MZ_MEDIUM,
X	  M1_SWIM | M1_CONCEAL | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY |
X	  M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(BLUE) },
X	{ "python", S_SNAKE, 6, 3, 5, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_DRST, 1, 4 }, { AT_HUGS, AD_WRAP, 2, 4 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 15, 100, 0, MS_HISS, MZ_LARGE,
X	  M1_SWIM | M1_NOLIMBS | M1_ANIMAL | M1_SLITHY | M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_EGGS, C(MAGENTA) },
X/*	Trolls	*/
X	{ "troll", S_TROLL, 7, 12, 4, 0, -3, (G_GENO | 2),
X	  { { AT_CLAW, AD_PHYS, 4, 2 }, { AT_CLAW, AD_PHYS, 4, 2 },
X	    { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK },
X	  40, 400, 0, MS_GRUNT, MZ_LARGE, M1_HUMANOID | M1_REGEN,
X	  M2_STRONG | M2_STALK | M2_CARNIVORE | M2_HOSTILE, C(BROWN) },
X	{ "ice troll", S_TROLL, 9, 10, 2, 20, -3, (G_GENO | 1),
X	  { { AT_CLAW, AD_PHYS, 2, 6 }, { AT_CLAW, AD_COLD, 2, 6 },
X	    { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK },
X	  40, 300, 0, MS_GRUNT, MZ_LARGE,
X	  M1_HUMANOID | M1_COLD_RES | M1_REGEN,
X	  M2_STRONG | M2_STALK | M2_CARNIVORE | M2_HOSTILE, C(WHITE) },
X	{ "rock troll", S_TROLL, 9, 12, 0, 0, -3, (G_GENO | 1),
X	  { { AT_CLAW, AD_PHYS, 2, 8 }, { AT_WEAP, AD_PHYS, 3, 6 },
X	    { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK },
X	  40, 300, 0, MS_GRUNT, MZ_LARGE,
X	  M1_HUMANOID | M1_REGEN | M1_COLLECT,
X	  M2_STRONG | M2_STALK | M2_CARNIVORE | M2_HOSTILE, C(CYAN) },
X	{ "water troll", S_TROLL, 11, 14, 4, 40, -3, (G_NOGEN | G_GENO),
X	  { { AT_CLAW, AD_PHYS, 2, 8 }, { AT_CLAW, AD_PHYS, 2, 8 },
X	    { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK },
X	  40, 400, 0, MS_GRUNT, MZ_LARGE,
X	  M1_SWIM | M1_HUMANOID | M1_REGEN,
X	  M2_STRONG | M2_STALK | M2_CARNIVORE | M2_HOSTILE, C(BLUE) },
X#ifdef TOLKIEN
X	{ "Olog-hai", S_TROLL, 13, 12, -4, 0, -7, (G_GENO | 1),
X	  { { AT_CLAW, AD_PHYS, 2, 8 }, { AT_WEAP, AD_PHYS, 3, 6 },
X	    { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK },
X	  40, 400, 0, MS_GRUNT, MZ_LARGE,
X	  M1_HUMANOID | M1_REGEN | M1_COLLECT,
X	  M2_STRONG | M2_STALK | M2_CARNIVORE | M2_HOSTILE, C(HI_LORD) },
X#endif
X/*	Umber Hulk	*/
X	{ "umber hulk", S_UMBER, 9, 6, 2, 25, 0, (G_GENO | 2),
X	  { { AT_CLAW, AD_PHYS, 3, 4 }, { AT_CLAW, AD_PHYS, 3, 4 },
X	    { AT_BITE, AD_PHYS, 2, 5 }, { AT_GAZE, AD_CONF, 0, 0 }, NO_ATTK },
X	  50, 500, 0, MS_SILENT, MZ_LARGE,
X	  M1_TUNNEL, M2_STRONG | M2_CARNIVORE, C(BROWN) },
X/*	Vampires	*/
X	{ "vampire", S_VAMPIRE, 10, 12, 1, 25, -8, (G_GENO | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 6 }, { AT_BITE, AD_DRLI, 1, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 40, 400, 0, MS_VAMPIRE, MZ_HUMAN,
X	  M1_FLY | M1_HUMANOID | M1_POIS | M1_REGEN,
X	  M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY, C(RED) },
X	{ "vampire lord", S_VAMPIRE, 12, 14, 0, 50, -9, (G_GENO | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 8 }, { AT_BITE, AD_DRLI, 1, 8 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 40, 400, 0, MS_VAMPIRE, MZ_HUMAN,
X	  M1_FLY | M1_HUMANOID | M1_POIS | M1_REGEN,
X	  M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_LORD,
X	  C(BLUE) },
X	{ "Vlad the Impaler", S_VAMPIRE, 14, 18, -3, 80, -10,
X	  (G_NOGEN | G_NOCORPSE | G_UNIQ),
X	  { { AT_WEAP, AD_PHYS, 1, 6 }, { AT_BITE, AD_DRLI, 1, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 40, 400, 0, MS_VAMPIRE, MZ_HUMAN,
X	  M1_NOPOLY | M1_FLY | M1_HUMANOID | M1_POIS | M1_REGEN,
X	  M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY |
X	  M2_PRINCE, C(HI_LORD) },
X/*	Wraiths 	*/
X	{ "barrow wight", S_WRAITH, 3, 12, 5, 5, -3, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_MAGC, AD_SPEL, 0, 0 },
X	    { AT_WEAP, AD_DRLI, 0, 0 }, NO_ATTK, NO_ATTK },
X	  30, 0, 0, MS_SILENT, MZ_HUMAN, M1_HUMANOID | M1_POIS_RES | M1_COLLECT,
X	  M2_UNDEAD | M2_STALK | M2_HOSTILE, C(GRAY) },
X	{ "wraith", S_WRAITH, 6, 12, 4, 15, -6, (G_GENO | 2),
X	  { { AT_TUCH, AD_DRLI, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 0, 0, MS_SILENT, MZ_HUMAN,
X	  M1_FLY | M1_HUMANOID | M1_POIS_RES,
X	  M2_UNDEAD | M2_STALK | M2_HOSTILE, C(BLACK) },
X#ifdef TOLKIEN
X	{ "Nazgul", S_WRAITH, 13, 12, 0, 25, -17, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_WEAP, AD_DRLI, 1, 4 }, { AT_BREA, AD_SLEE, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 30, 0, 0, MS_SILENT, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS_RES | M1_COLLECT,
X	  M2_UNDEAD | M2_STALK | M2_STRONG | M2_HOSTILE, C(HI_LORD) },
X#endif
X/*	Xorn	*/
X	{ "xorn", S_XORN, 8, 9,-2, 20, 0, (G_GENO | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_CLAW, AD_PHYS, 1, 3 },
X	    { AT_CLAW, AD_PHYS, 1, 3 }, { AT_BITE, AD_PHYS, 4, 6 },
X	    NO_ATTK }, 70, 700, 0, MS_SILENT, MZ_MEDIUM,
X	  M1_WALLWALK | M1_THICK_HIDE | M1_FIRE_RES | M1_COLD_RES |
X	  M1_STON_RES, M2_HOSTILE | M2_STRONG, C(BROWN) },
X/*	Yeti	*/
X	{ "yeti", S_YETI, 5, 15, 6, 0, 0, (G_GENO | 2),
X	  { { AT_CLAW, AD_PHYS, 1, 6 }, { AT_CLAW, AD_PHYS, 1, 6 },
X	    { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK },
X	  70, 700, 0, MS_GROWL, MZ_LARGE, M1_ANIMAL | M1_HUMANOID | M1_COLD_RES,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(WHITE) },
X/*	Zombies 	*/
X	{ "kobold zombie", S_ZOMBIE, 0, 6, 10, 0, -2, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_SILENT, MZ_SMALL, M1_HUMANOID | M1_POIS |
X	  M1_POIS_RES, M2_UNDEAD | M2_STALK | M2_HOSTILE, C(BROWN) },
X	{ "gnome zombie", S_ZOMBIE, 1, 6, 10, 0, -2, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 5 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_SILENT, MZ_SMALL, M1_HUMANOID | M1_POIS |
X	  M1_POIS_RES, M2_UNDEAD | M2_STALK | M2_HOSTILE, C(BROWN) },
X	{ "orc zombie", S_ZOMBIE, 2, 6, 9, 0, -3,
X	  (G_GENO | G_SGROUP | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  15, 150, 0, MS_SILENT, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS_RES | M1_GREEDY |
X	  M1_JEWELS, M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_ORC, C(GRAY) },
X	{ "elf zombie", S_ZOMBIE, 3, 6, 9, 0, -3,
X	  (G_GENO | G_SGROUP | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 7 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  35, 350, 0, MS_SILENT, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS_RES | M1_SLEE_RES,
X	  M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_ELF, C(GREEN) },
X	{ "human zombie", S_ZOMBIE, 4, 6, 8, 0, -3,
X	  (G_GENO | G_SGROUP | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  40, 400, 0, MS_SILENT, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS_RES,
X	  M2_UNDEAD | M2_STALK | M2_HOSTILE, C(HI_DOMESTIC) },
X	{ "ettin zombie", S_ZOMBIE, 6, 8, 6, 0, -4, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 10 }, { AT_CLAW, AD_PHYS, 1, 10 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, 0, MS_SILENT, MZ_HUGE,
X	  M1_HUMANOID | M1_POIS_RES,
X	  M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_STRONG, C(BLUE) },
X	{ "giant zombie", S_ZOMBIE, 8, 8, 6, 0, -4, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 2, 8 }, { AT_CLAW, AD_PHYS, 2, 8 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 75, 750, 0, MS_SILENT, MZ_HUGE,
X	  M1_HUMANOID | M1_POIS_RES | M1_JEWELS,
X	  M2_UNDEAD | M2_STALK | M2_HOSTILE | M2_GIANT | M2_STRONG, C(CYAN) },
X/*	Golems	*/
X#ifdef GOLEMS
X	{ "straw golem", S_GOLEM, 3, 12, 10, 0, 0, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 2 }, { AT_CLAW, AD_PHYS, 1, 2 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 10, 0, 0, MS_SILENT, MZ_LARGE,
X	  M1_HUMANOID | M1_POIS_RES, M2_HOSTILE, C(YELLOW) },
X	{ "rope golem", S_GOLEM, 4, 9, 8, 0, 0, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 6 }, { AT_HUGS, AD_PHYS, 6, 1 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 20, 0, 0, MS_SILENT, MZ_LARGE,
X	  M1_HUMANOID | M1_POIS_RES, M2_HOSTILE, C(BROWN) },
X	{ "leather golem", S_GOLEM, 6, 6, 6, 0, 0, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 6 }, { AT_CLAW, AD_PHYS, 1, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 40, 0, 0, MS_SILENT, MZ_LARGE,
X	  M1_HUMANOID | M1_POIS_RES, M2_HOSTILE, C(HI_LEATHER) },
X	{ "wood golem", S_GOLEM, 7, 3, 4, 0, 0, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 3, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 0, 0, MS_SILENT, MZ_LARGE,
X	  M1_HUMANOID | M1_POIS_RES | M1_THICK_HIDE, M2_HOSTILE, C(HI_WOOD) },
X	{ "flesh golem", S_GOLEM, 9, 8, 9, 30, 0, (G_GENO | 1),
X	  { { AT_CLAW, AD_PHYS, 2, 8 }, { AT_CLAW, AD_PHYS, 2, 8 },
X	    NO_ATTK, NO_ATTK, NO_ATTK},
X	  60, 600, 0, MS_SILENT, MZ_LARGE,
X	  M1_HUMANOID | M1_POIS_RES | M1_FIRE_RES | M1_COLD_RES | M1_ELEC_RES,
X	  M2_HOSTILE | M2_STRONG, C(RED) },
X	{ "clay golem", S_GOLEM, 11, 7, 7, 40, 0, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 3, 10 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  75, 0, 0, MS_SILENT, MZ_LARGE,
X	  M1_HUMANOID | M1_POIS_RES | M1_THICK_HIDE,
X	  M2_HOSTILE | M2_STRONG, C(BROWN) },
X	{ "stone golem", S_GOLEM, 14, 6, 5, 50, 0, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 3, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  90, 0, 0, MS_SILENT, MZ_LARGE,
X	  M1_HUMANOID | M1_POIS_RES | M1_THICK_HIDE | M1_STON_RES,
X	  M2_HOSTILE | M2_STRONG, C(GRAY) },
X	{ "iron golem", S_GOLEM, 18, 6, 3, 60, 0, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_WEAP, AD_PHYS, 4, 10 }, { AT_BREA, AD_DRST, 4, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  100, 0, 0, MS_SILENT, MZ_LARGE,
X	  M1_HUMANOID | M1_THICK_HIDE | M1_POIS | M1_FIRE_RES | M1_COLD_RES |
X	  M1_ELEC_RES | M1_COLLECT,
X	  M2_HOSTILE | M2_STRONG, C(HI_METAL) },
X#endif /* GOLEMS */
X/*	Humans		*/
X	{ "human", S_HUMAN, 0, 12, 10, 0, 0, G_NOGEN, /* for corpses */
X	  { {AT_WEAP, AD_PHYS, 1, 6}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_PEACEFUL | M2_STRONG, C(HI_DOMESTIC) },
X	{ "wererat", S_HUMAN, 2, 12, 7, 10, -7, 1,
X	  { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_SILENT, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_POIS | M1_REGEN | M1_COLLECT,
X	  M2_WERE | M2_HOSTILE | M2_HUMAN, C(BROWN) },
X	{ "werejackal", S_HUMAN, 2, 12, 7, 10, -7, 1,
X	  { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_BARK, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_POIS | M1_REGEN | M1_COLLECT,
X	  M2_WERE | M2_HOSTILE | M2_HUMAN, C(RED) },
X	{ "werewolf", S_HUMAN, 5, 12, 6, 20, -7, 1,
X	  { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_BARK, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_POIS | M1_REGEN | M1_COLLECT,
X	  M2_WERE | M2_HOSTILE | M2_HUMAN, C(ORANGE_COLORED) },
X#ifdef TOLKIEN
X	{ "Woodland-elf", S_HUMAN, 4, 12, 5, 10, 5, (G_GENO | G_SGROUP | 2),
X	  { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  35, 350, 0, MS_HUMANOID, MZ_HUMAN, M1_HUMANOID |
X	  M1_COLLECT | M1_SLEE_RES, M2_ELF, C(GREEN) },
X	{ "Green-elf", S_HUMAN, 5, 12, 5, 10, 6, (G_GENO | G_SGROUP | 2),
X	  { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  35, 350, 0, MS_HUMANOID, MZ_HUMAN, M1_HUMANOID |
X	  M1_COLLECT | M1_SLEE_RES, M2_ELF, C(GREEN+BRIGHT) },
X	{ "Grey-elf", S_HUMAN, 6, 12, 5, 10, 7, (G_GENO | G_SGROUP | 2),
X	  { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  35, 350, 0, MS_HUMANOID, MZ_HUMAN, M1_HUMANOID |
X	  M1_COLLECT | M1_SLEE_RES, M2_ELF, C(GRAY) },
X#endif
X	{ "elf-lord", S_HUMAN, 8, 12, 5, 20, 9, (G_GENO | G_SGROUP | 2),
X	  { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  35, 350, 0, MS_HUMANOID, MZ_HUMAN, M1_HUMANOID |
X	  M1_COLLECT | M1_SLEE_RES, M2_ELF | M2_STRONG | M2_LORD, C(BLUE+BRIGHT) },
X	{ "Elvenking", S_HUMAN, 9, 12, 5, 25, 10, (G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4},
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  35, 350, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_HUMANOID | M1_COLLECT | M1_SLEE_RES,
X	  M2_ELF | M2_STRONG | M2_PRINCE, C(HI_LORD) },
X	{ "nurse", S_HUMAN, 11, 6, 0, 0, 0, (G_GENO | 3),
X	  { { AT_CLAW, AD_HEAL, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_NURSE, MZ_HUMAN, M1_NOPOLY | M1_HUMANOID | M1_POIS_RES,
X	  M2_HUMAN | M2_HOSTILE, C(HI_DOMESTIC) },
X	{ "shopkeeper", S_HUMAN, 12, 18, 0, 50, 0, G_NOGEN,
X	  { { AT_WEAP, AD_PHYS, 4, 4 }, { AT_WEAP, AD_PHYS, 4, 4 }, NO_ATTK,
X	    NO_ATTK, NO_ATTK }, 45, 400, sizeof(struct eshk), MS_SELL, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_MAGIC | M1_COLLECT,
X	  M2_HUMAN | M2_PEACEFUL | M2_STRONG, C(HI_DOMESTIC) },
X	{ "guard", S_HUMAN, 12, 12, -1, 40, 10, G_NOGEN,
X	  { { AT_WEAP, AD_PHYS, 4, 10 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, sizeof(struct egd), MS_GUARD, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_MERC | M2_PEACEFUL | M2_STRONG, C(BLUE) },
X#ifdef ORACLE
X	{ "oracle", S_HUMAN, 12, 0, 0, 50, 0, G_NOGEN | G_UNIQ,
X	  { { AT_NONE, AD_MAGM, 0, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_ORACLE, MZ_HUMAN, M1_NOPOLY | M1_HUMANOID,
X	  M2_HUMAN | M2_PEACEFUL | M2_FEM, C(HI_ZAP) },
X#endif
X#if defined(ALTARS) && defined(THEOLOGY)
X	{ "temple priest", S_HUMAN, 12, 12, 0, 50, 1, G_NOGEN,
X	  { { AT_WEAP, AD_PHYS, 4, 10 }, { AT_KICK, AD_PHYS, 1, 4 },
X	    { AT_MAGC, AD_CLRC, 0, 0 }, NO_ATTK, NO_ATTK },
X	  45, 400, sizeof(struct epri), MS_PRIEST, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_ELEC_RES | M1_COLLECT,
X	  M2_HUMAN | M2_PEACEFUL, C(WHITE) },
X	{ "temple priestess", S_HUMAN, 12, 12, 0, 50, 1, G_NOGEN,
X	  { { AT_WEAP, AD_PHYS, 4, 10 }, { AT_KICK, AD_PHYS, 1, 4 },
X	    { AT_MAGC, AD_CLRC, 0, 0 }, NO_ATTK, NO_ATTK },
X	  45, 400, sizeof(struct epri), MS_PRIEST, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_ELEC_RES | M1_COLLECT,
X	  M2_HUMAN | M2_PEACEFUL | M2_FEM, C(WHITE) },
X#endif
X#ifdef ARMY
X	{ "unarmored soldier", S_HUMAN, 6, 4, 10, 0, -2, G_NOGEN,
X	  { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_SOLDIER, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_MERC | M2_STALK | M2_HOSTILE | M2_STRONG, C(BROWN) },
X	{ "soldier", S_HUMAN, 6, 4, 3, 0, -2, (G_SGROUP | G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_SOLDIER, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_MERC | M2_STALK | M2_HOSTILE | M2_STRONG, C(GRAY) },
X	{ "sergeant", S_HUMAN, 8, 4, 0, 5, -3, (G_SGROUP | G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_SOLDIER, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_MERC | M2_STALK | M2_HOSTILE | M2_STRONG, C(RED) },
X	{ "lieutenant", S_HUMAN, 10, 4, -2, 15, -4, (G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 3, 4 }, { AT_WEAP, AD_PHYS, 3, 4 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 45, 400, 0, MS_SOLDIER, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_MERC | M2_STALK | M2_HOSTILE | M2_STRONG, C(GREEN) },
X	{ "captain", S_HUMAN, 12, 4, -3, 15, -5, (G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 4, 4 }, { AT_WEAP, AD_PHYS, 4, 4 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 45, 400, 0, MS_SOLDIER, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_MERC | M2_STALK | M2_HOSTILE | M2_STRONG, C(BLUE) },
X#endif
X#ifdef MEDUSA
X	{ "Medusa", S_HUMAN, 20, 12, 2, 50, -15, G_NOGEN | G_UNIQ,
X	  { { AT_CLAW, AD_PHYS, 1, 8 }, { AT_GAZE, AD_STON, 0, 0 },
X	    { AT_BITE, AD_DRST, 1, 6 }, { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK },
X	  45, 400, 0, MS_HISS, MZ_LARGE,
X	  M1_NOPOLY | M1_HUMANOID | M1_SLITHY | M1_POIS | M1_POIS_RES |
X	  M1_STON_RES, M2_HOSTILE | M2_STRONG | M2_PNAME | M2_FEM,
X	  C(BRIGHT|GREEN) },
X#endif
X	{ "Wizard of Yendor", S_HUMAN, 30, 12, -8, 100, -20, G_NOGEN,
X	  { { AT_CLAW, AD_SAMU, 2, 12 }, { AT_MAGC, AD_SPEL, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 45, 400, 0, MS_CUSS, MZ_HUMAN,
X	  M1_NOPOLY | M1_FLY | M1_HUMANOID | M1_POIS_RES | M1_FIRE_RES |
X	  M1_REGEN | M1_SEE_INVIS | M1_TPORT | M1_TPORT_CONTROL | M1_MAGIC,
X	  M2_HUMAN | M2_PNAME | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_PRINCE,
X	  C(HI_LORD) },
X#ifdef CHARON
X	{ "Charon", S_HUMAN, 76, 18, -5, 120, 0,
X	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X	  { { AT_WEAP, AD_PHYS, 1, 8 }, { AT_TUCH, AD_PLYS, 1, 8 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 45, 400, 0, MS_FERRY, MZ_HUMAN,
X	  M1_NOPOLY | M1_SEE_INVIS | M1_HUMANOID | M1_POIS_RES | M1_FIRE_RES |
X	  M1_GREEDY | M1_COLLECT, M2_HUMAN | M2_PEACEFUL | M2_PNAME,
X	  C(WHITE) },
X#endif
X/*	Ghost		*/
X	{ "ghost", S_GHOST, 10, 3, -5, 50, -5, (G_NOCORPSE | G_NOGEN),
X	  { { AT_TUCH, AD_PHYS, 1, 1 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 0, PL_NSIZ, MS_SILENT, MZ_HUMAN,
X	  M1_NOPOLY | M1_FLY | M1_WALLWALK | M1_HUMANOID | M1_POIS_RES,
X	  M2_UNDEAD | M2_STALK | M2_HOSTILE, C(GRAY) },
X/*	(major) Demons	*/
X	{ "water demon", S_DEMON, 8, 12,-4, 30, -7, (G_NOCORPSE | G_NOGEN),
X	  { { AT_WEAP, AD_PHYS, 1, 3 }, { AT_CLAW, AD_PHYS, 1, 3 },
X	    { AT_BITE, AD_PHYS, 1, 3 }, NO_ATTK, NO_ATTK },
X	  45, 450, 0, MS_SILENT, MZ_HUMAN,
X	  M1_SWIM | M1_HUMANOID | M1_POIS | M1_FIRE_RES | M1_COLLECT,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY, C(BLUE) },
X#ifndef INFERNO /* generic type */
X	{ "demon", S_DEMON, 10, 12,-4, 30, -7, (G_NOCORPSE | 3),
X	  { { AT_WEAP, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
X	    { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK },
X	  45, 450, 0, MS_CUSS, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS | M1_FIRE_RES | M1_COLLECT,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY, C(RED) },
X#else	/* used in hell for bigger, badder demons! */
X	/* standard demons & devils */
X	{ "horned devil", S_DEMON, 6, 9, -5, 50, 11, (G_HELL | G_NOCORPSE | 2),
X	  { { AT_WEAP, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
X	    { AT_BITE, AD_PHYS, 2, 3 }, { AT_STNG, AD_PHYS, 1, 3 }, NO_ATTK },
X	  45, 450, 0, MS_SILENT, MZ_HUMAN,
X	  M1_POIS | M1_FIRE_RES | M1_THICK_HIDE,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY, C(BROWN) },
X#ifdef SEDUCE
X	{ "succubus", S_DEMON, 6, 12, 0, 70, -9, (G_NOCORPSE | 1),
X	  { { AT_BITE, AD_SSEX, 0, 0 }, { AT_CLAW, AD_PHYS, 1, 3 },
X	    { AT_CLAW, AD_PHYS, 1, 3 }, NO_ATTK },
X	  45, 450, 0, MS_SEDUCE, MZ_HUMAN,
X	  M1_HUMANOID | M1_FLY | M1_POIS | M1_FIRE_RES,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_FEM, C(GRAY) },
X	{ "incubus", S_DEMON, 6, 12, 0, 70, -9, (G_NOCORPSE | 1),
X	  { { AT_BITE, AD_SSEX, 0, 0 }, { AT_CLAW, AD_PHYS, 1, 3 },
X	    { AT_CLAW, AD_PHYS, 1, 3 }, NO_ATTK },
X	  45, 450, 0, MS_SEDUCE, MZ_HUMAN,
X	  M1_HUMANOID | M1_FLY | M1_POIS | M1_FIRE_RES,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY, C(GRAY) },
X#else
X	{ "succubus", S_DEMON, 6, 12, 0, 70, -9, (G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_CLAW, AD_PHYS, 1, 3 },
X	    { AT_BITE, AD_DRLI, 2, 6 }, NO_ATTK },
X	  45, 450, 0, MS_SEDUCE, MZ_HUMAN,
X	  M1_HUMANOID | M1_FLY | M1_POIS | M1_FIRE_RES,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_FEM, C(GRAY) },
X	{ "incubus", S_DEMON, 6, 12, 0, 70, -9, (G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_CLAW, AD_PHYS, 1, 3 },
X	    { AT_BITE, AD_DRLI, 2, 6 }, NO_ATTK },
X	  45, 450, 0, MS_SEDUCE, MZ_HUMAN,
X	  M1_HUMANOID | M1_FLY | M1_POIS | M1_FIRE_RES,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY, C(GRAY) },
X#endif
X	{ "erinyes", S_DEMON, 7, 12, 2, 30, 10,
X	  (G_HELL | G_NOCORPSE | G_SGROUP | 2),
X	  { { AT_WEAP, AD_DRST, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 450, 0, MS_SILENT, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS | M1_FIRE_RES | M1_COLLECT,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY | M2_FEM,
X	  C(RED) },
X	{ "marilith", S_DEMON, 7, 12, -6, 80, -12, (G_HELL | G_NOCORPSE | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
X	    { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
X	    { AT_WEAP, AD_PHYS, 2, 4 }, }, 45, 450, 0, MS_CUSS, MZ_LARGE,
X	  M1_HUMANOID | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES | M1_COLLECT |
X	  M1_SLITHY,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY | M2_FEM, C(RED) },
X	{ "barbed devil", S_DEMON, 8, 12, 0, 35, 8,
X	  (G_HELL | G_NOCORPSE | G_SGROUP | 2),
X	  { { AT_CLAW, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 2, 4 },
X	    { AT_STNG, AD_PHYS, 3, 4 }, NO_ATTK, NO_ATTK },
X	  45, 450, 0, MS_SILENT, MZ_HUMAN,
X	  M1_POIS | M1_FIRE_RES | M1_THICK_HIDE,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY, C(RED) },
X	{ "vrock", S_DEMON, 8, 12, 0, 50, -9,
X	  (G_HELL | G_NOCORPSE | G_SGROUP | 2),
X	  { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
X	    { AT_CLAW, AD_PHYS, 1, 8 }, { AT_CLAW, AD_PHYS, 1, 8 },
X	    { AT_BITE, AD_PHYS, 1, 6 }, },
X	  45, 450, 0, MS_SILENT, MZ_LARGE, M1_POIS | M1_FIRE_RES,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY, C(RED) },
X	{ "hezrou", S_DEMON, 9, 6, -2, 55, -10,
X	  (G_HELL | G_NOCORPSE | G_SGROUP | 2),
X	  { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_CLAW, AD_PHYS, 1, 3 },
X	    { AT_BITE, AD_PHYS, 4, 4 }, NO_ATTK, NO_ATTK }, 45, 450, 0,
X	  MS_SILENT, MZ_LARGE, M1_HUMANOID | M1_POIS | M1_FIRE_RES,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY, C(RED) },
X	{ "bone devil", S_DEMON, 9, 15, -1, 40, -9,
X	  (G_HELL | G_NOCORPSE | G_SGROUP | 2),
X	  { { AT_WEAP, AD_PHYS, 3, 4 }, { AT_STNG, AD_DRST, 2, 4 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 45, 450, 0, MS_SILENT, MZ_LARGE,
X	  M1_POIS | M1_FIRE_RES | M1_COLLECT,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY, C(GRAY) },
X	{ "nalfeshnee", S_DEMON, 11, 9, -1, 65, -11, (G_HELL | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
X	    { AT_BITE, AD_PHYS, 2, 4 }, { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK },
X	  45, 450, 0, MS_SILENT, MZ_LARGE,
X	  M1_HUMANOID | M1_POIS | M1_FIRE_RES,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY, C(RED) },
X	{ "ice devil", S_DEMON, 11, 6, -4, 55, -12, (G_HELL | G_NOCORPSE | 2),
X	  { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
X	    { AT_BITE, AD_PHYS, 2, 4 }, { AT_STNG, AD_COLD, 3, 4 }, NO_ATTK },
X	  45, 450, 0, MS_SILENT, MZ_LARGE,
X	  M1_SEE_INVIS | M1_POIS | M1_FIRE_RES | M1_COLD_RES,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY, C(WHITE) },
X	{ "pit fiend", S_DEMON, 13, 6, -3, 65, -13, (G_HELL | G_NOCORPSE | 2),
X	  { { AT_WEAP, AD_PHYS, 4, 2 }, { AT_WEAP, AD_PHYS, 4, 2 },
X	    { AT_HUGS, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK },
X	  45, 450, 0, MS_GROWL, MZ_LARGE,
X	  M1_SEE_INVIS | M1_POIS | M1_FIRE_RES | M1_COLLECT,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_NASTY, C(RED) },
X	{ "balrog", S_DEMON, 16, 5, -2, 75, -14, (G_HELL | G_NOCORPSE | 1),
X	  { { AT_WEAP, AD_PHYS, 8, 4 }, { AT_WEAP, AD_PHYS, 4, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 45, 450, 0, MS_SILENT, MZ_LARGE,
X	  M1_FLY | M1_SEE_INVIS | M1_COLLECT | M1_POIS | M1_FIRE_RES,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_STRONG | M2_NASTY, C(RED) },
X	/* Named demon lords & princes plus Arch-Devils */
X	{ "Juiblex", S_DEMON, 50, 3, -7, 65, -15,
X	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X	  { { AT_ENGL, AD_DISE, 4, 10 }, { AT_SPIT, AD_ACID, 3, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 250, 0, MS_GURGLE, MZ_LARGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_ACID | M1_POIS | M1_FIRE_RES |
X	  M1_AMORPHOUS,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_LORD,
X	  C(BRIGHT|GREEN) },
X	{ "Yeenoghu", S_DEMON, 56, 18, -5, 80, -15,
X	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X	  { { AT_WEAP, AD_PHYS, 3, 6 }, { AT_WEAP, AD_CONF, 2, 8 },
X	    { AT_WEAP, AD_PLYS, 1, 6 }, { AT_MAGC, AD_MAGM, 2, 6 }, NO_ATTK },
X	  50, 500, 0, MS_ORC, MZ_LARGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
X	  M1_COLLECT,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_LORD,
X	  C(HI_LORD) },
X	{ "Orcus", S_DEMON, 66, 9, -6, 85, -20,
X	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X	  { { AT_MAGC, AD_SPEL, 8, 6 }, { AT_WEAP, AD_PHYS, 3, 6 },
X	    { AT_CLAW, AD_PHYS, 3, 4 }, { AT_CLAW, AD_PHYS, 3, 4 },
X	    { AT_STNG, AD_DRST, 2, 4 }, }, 50, 500, 0, MS_ORC, MZ_HUGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
X	  M1_COLLECT,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_PRINCE,
X	  C(HI_LORD) },
X	{ "Geryon", S_DEMON, 72, 3, -3, 75, 15,
X	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X	  { { AT_CLAW, AD_PHYS, 3, 6 }, { AT_CLAW, AD_PHYS, 3, 6 },
X	    { AT_STNG, AD_DRST, 2, 4 }, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_BRIBE, MZ_HUGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
X	  M1_SLITHY,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_PRINCE, C(HI_LORD) },
X	{ "Dispater", S_DEMON, 78, 15, -2, 80, 15,
X	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X	  { { AT_WEAP, AD_PHYS, 4, 6 }, { AT_MAGC, AD_SPEL, 6, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, 0, MS_BRIBE, MZ_HUMAN,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
X	  M1_HUMANOID | M1_COLLECT,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_PRINCE, C(HI_LORD) },
X	{ "Baalzebub", S_DEMON, 89, 9, -5, 85, 20,
X	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X	  { { AT_BITE, AD_DRST, 2, 6 }, { AT_GAZE, AD_STUN, 2, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, 0, MS_BRIBE, MZ_LARGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_PRINCE,
X	  C(HI_LORD) },
X	{ "Asmodeus", S_DEMON, 105, 12, -7, 90, 20,
X	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X	  { { AT_CLAW, AD_PHYS, 4, 4 }, { AT_MAGC, AD_COLD, 6, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, 0, MS_BRIBE, MZ_HUGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_HUMANOID | M1_POIS |
X	  M1_FIRE_RES | M1_COLD_RES,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY |
X	  M2_PRINCE, C(HI_LORD) },
X	{ "Demogorgon", S_DEMON, 106, 15, -8, 95, -20,
X	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X	  { { AT_MAGC, AD_SPEL, 8, 6 }, { AT_STNG, AD_DRLI, 1, 4 },
X	    { AT_CLAW, AD_DISE, 1, 6 }, { AT_CLAW, AD_DISE, 1, 6 },
X	    NO_ATTK }, 50, 500, 0, MS_GROWL, MZ_HUGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_NOHANDS | M1_POIS |
X	  M1_FIRE_RES,
X	  M2_DEMON | M2_STALK | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_PRINCE,
X	  C(HI_LORD) },
X#endif
X#ifdef MAIL
X	{ "mail daemon", S_DEMON, 56, 24, 10, 127, 0, (G_NOGEN | G_NOCORPSE),
X	  { NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0,
X	  MS_SILENT, MZ_HUMAN, M1_NOPOLY | M1_FLY | M1_SWIM | M1_SEE_INVIS |
X	  M1_HUMANOID | M1_POIS | M1_FIRE_RES | M1_COLD_RES | M1_SLEE_RES,
X	  M2_STALK | M2_PEACEFUL, C(BRIGHT|BLUE) },
X/* Neither rain nor sleet nor gloom of night shall stay this courier... */
X#endif
X	{ "djinni", S_DEMON, 7, 12, 4, 30, 0, (G_NOGEN | G_NOCORPSE),
X	  { { AT_WEAP, AD_PHYS, 2, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  40, 400, 0, MS_DJINNI, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_FLY | M1_POIS | M1_COLLECT, M2_STALK,
X	  C(YELLOW) },
X/*	sea monsters		*/
X	{ "giant eel", S_EEL, 5, 9, -1, 0, 0, (G_GENO | G_NOGEN),
X	  { { AT_BITE, AD_PHYS, 3, 6 }, { AT_TUCH, AD_WRAP, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 10, 250, 0, MS_SILENT, MZ_HUGE,
X	  M1_SWIM | M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_NOPOLY,
X	  M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(CYAN) },
X	{ "electric eel", S_EEL, 7, 10, -3, 0, 0, (G_GENO | G_NOGEN),
X	  { { AT_BITE, AD_ELEC, 4, 6 }, { AT_TUCH, AD_WRAP, 0, 0 },
X	  NO_ATTK, NO_ATTK, NO_ATTK }, 10, 250, 0, MS_SILENT, MZ_HUGE,
X	  M1_SWIM | M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_NOPOLY |
X	  M1_ELEC_RES, M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(BLUE) },
X	{ "kraken", S_EEL, 20, 3, 6, 0, -3, (G_GENO | G_NOGEN),
X	  { { AT_CLAW, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 2, 4 },
X	    { AT_HUGS, AD_WRAP, 2, 6 }, { AT_BITE, AD_PHYS, 5, 4 }, NO_ATTK },
X	  100, 1000, 0, MS_SILENT, MZ_HUGE,
X	  M1_SWIM | M1_ANIMAL | M1_NOHANDS | M1_NOPOLY,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(RED) },
X/*	lizards 	*/
X	{ "newt", S_LIZARD, 0, 6, 8, 0, 0, (G_GENO | 5),
X	  { { AT_BITE, AD_PHYS, 1, 2 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  2, 20, 0, MS_SILENT, MZ_TINY, M1_SWIM | M1_ANIMAL | M1_NOHANDS,
X	  M2_HOSTILE | M2_CARNIVORE, C(YELLOW) },
X	{ "gecko", S_LIZARD, 1, 6, 8, 0, 0, (G_GENO | 5),
X	  { { AT_BITE, AD_PHYS, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  2, 20, 0, MS_SQEEK, MZ_TINY, M1_ANIMAL | M1_NOHANDS,
X	  M2_HOSTILE | M2_CARNIVORE, C(GREEN) },
X	{ "iguana", S_LIZARD, 2, 6, 7, 0, 0, (G_GENO | 5),
X	  { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  3, 30, 0, MS_SILENT, MZ_TINY, M1_ANIMAL | M1_NOHANDS,
X	  M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X	{ "baby crocodile", S_LIZARD, 3, 6, 7, 0, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_SILENT, MZ_MEDIUM, M1_ANIMAL | M1_NOHANDS | M1_SWIM,
X	  M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X	{ "lizard", S_LIZARD, 5, 6, 6, 10, 0, (G_GENO | 5),
X	  { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  1, 40, 0, MS_SILENT, MZ_TINY, M1_ANIMAL | M1_NOHANDS | M1_STON_RES,
X	  M2_HOSTILE | M2_CARNIVORE, C(GREEN) },
X	{ "chameleon", S_LIZARD, 6, 5, 6, 10, 0, (G_GENO | 2),
X	  { { AT_BITE, AD_PHYS, 4, 2 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_SILENT, MZ_TINY, M1_ANIMAL | M1_NOHANDS | M1_NOPOLY,
X	  M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X	{ "crocodile", S_LIZARD, 6, 9, 5, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 4, 2 }, { AT_CLAW, AD_PHYS, 1, 12 }, NO_ATTK,
X	  NO_ATTK, NO_ATTK }, 45, 400, 0, MS_SILENT, MZ_LARGE,
X	  M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS | M1_SWIM,
X	  M2_STRONG | M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(BROWN) },
X
X/*	character classes */
X	{ "archeologist", S_HUMAN, 1, 10, 10, 1, 3, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 1, 6}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT | M1_TUNNEL | M1_NEEDPICK,
X	  M2_HUMAN | M2_STRONG, C(HI_DOMESTIC) },
X	{ "barbarian", S_HUMAN, 1, 10, 10, 1, -3, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 1, 6}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT | M1_POIS_RES,
X	  M2_HUMAN | M2_STRONG, C(HI_DOMESTIC) },
X	{ "caveman", S_HUMAN, 1, 10, 10, 0, 1, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 2, 4}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_STRONG | M2_CARNIVORE, C(RED) },
X	{ "cavewoman", S_HUMAN, 1, 10, 10, 0, 1, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 2, 4}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_STRONG | M2_CARNIVORE | M2_FEM, C(HI_DOMESTIC) },
X	/* Note: players who are elves still get normal carrying capacity,
X	 * even though this is strictly speaking inconsistent.
X	 */
X	{ "elf", S_HUMAN, 1, 12, 10, 2, 3, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 1, 8}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  35, 350, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT | M1_SLEE_RES | M1_SEE_INVIS,
X	  M2_ELF | M2_STRONG, C(HI_DOMESTIC) },
X	{ "healer", S_HUMAN, 1, 10, 10, 1, 3, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 1, 6}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT | M1_POIS_RES,
X	  M2_HUMAN | M2_STRONG, C(HI_DOMESTIC) },
X	{ "knight", S_HUMAN, 1, 10, 10, 1, 3, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 1, 6}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_STRONG, C(HI_DOMESTIC) },
X	{ "priest", S_HUMAN, 1, 10, 10, 2, 0, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 1, 6}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_STRONG, C(HI_DOMESTIC) },
X	{ "priestess", S_HUMAN, 1, 10, 10, 2, 0, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 1, 6}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_STRONG | M2_FEM, C(HI_DOMESTIC) },
X	{ "rogue", S_HUMAN, 1, 10, 10, 1, -3, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 1, 6}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT | M1_GREEDY,
X	  M2_HUMAN | M2_STRONG, C(HI_DOMESTIC) },
X	{ "samurai", S_HUMAN, 1, 10, 10, 1, 3, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 1, 8}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_STRONG, C(HI_DOMESTIC) },
X	{ "tourist", S_HUMAN, 1, 10, 10, 1, 0, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 1, 6}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT,
X	  M2_HUMAN | M2_STRONG, C(HI_DOMESTIC) },
X	{ "valkyrie", S_HUMAN, 1, 10, 10, 1, -1, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 1, 8}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT | M1_COLD_RES,
X	  M2_HUMAN | M2_STRONG | M2_FEM, C(HI_DOMESTIC) },
X	{ "wizard", S_HUMAN, 1, 10, 10, 3, 0, G_NOGEN,
X	  { {AT_WEAP, AD_PHYS, 1, 6}, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  45, 400, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_NOPOLY | M1_HUMANOID | M1_COLLECT | M1_MAGIC,
X	  M2_HUMAN | M2_STRONG, C(HI_DOMESTIC) },
X
X/*	ARRAY TERMINATOR	*/
X	{ "", 0, 0, 0, 0, 0, 0, 0,
X	  { NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  0, 0, 0, 0, 0, 0, 0, C(0) }
X};
X#endif /* !SPLITMON_1 */
X#endif /* !MAKEDEFS_C */
END_OF_FILE
if test 46080 -ne `wc -c <'src/monst.c2'`; then
    echo shar: \"'src/monst.c2'\" unpacked with wrong size!
fi
# end of 'src/monst.c2'
echo shar: End of archive 23 \(of 30\).
cp /dev/null ark23isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 30 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0