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

billr@saab.CNA.TEK.COM (Bill Randle) (11/23/89)

Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
Posting-number: Volume 8, Issue 66
Archive-name: NetHack3/Patch6m
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 13 (of 15)."
# Contents:  Install.dos src/monst.c2
# Wrapped by billr@saab on Wed Nov 22 10:50:20 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Install.dos' -a "${1}" != "-c" ; then 
  echo shar: clobbering existing file \"'Install.dos'\"
fi
echo shar: Extracting \"'Install.dos'\" \(13554 characters\)
sed "s/^X//" >'Install.dos' <<'END_OF_FILE'
X	Instructions for compiling and installing NetHack 3.0
X		   on an MS-DOS, TOS, or OS/2 system
X	=====================================================
X	    (or, How to make PC, ST, and OS/2 NetHack 3.0)
X		      Last revision: 19 Nov 1989
X
X1.  Make sure all the NetHack files are in the appropriate directory structure.
X    You should have a main directory with subdirectories src, include, auxil,
X    others, amiga, mac, and vms.  If you do not follow this structure, the
X    Makefile will not function properly.
X
X    All the shared and UNIX-specific .c files and the source Makefile belong
X    in src; all the PC .c files and make files belong in others; all the .h
X    files belong in include; other assorted files belong in auxil.  We will
X    not need any of the files from the amiga, mac, and vms directories.
X
X	If you downloaded or ftp'd the sources from a UNIX system, the lines
X	will probably end in UNIX-style newlines, instead of the carriage
X	return and line feed pairs used by DOS and OS/2.  Turbo C 2.0 in
X	particular dislikes these; you'll have to convert them (with a utility
X	like Rahul Dhesi's "flip").  Also, every file should end with an empty
X	line, because both Microsoft C and MASM have a habit of ignoring the
X	last line of each file.
X
X2.  Move all the .c files from the others directory to your src directory.
X    You will definitely need pc*.c and msdos.c.
X
X	random.c is only needed if you want the high-quality random number
X	generation routines.  The trampoli.c and ovlmgr.asm files are needed
X	for the MS-DOS overlays.  ovlmgr.obj should remain in others
X	(the makefile copies it when it's needed).  You can comment out the
X	#define RANDOM line in pcconf.h or tosconf.h to disable the random
X	number routines. Similarly, commenting out the #define OVERLAY in
X	pcconf.h disables the overlay code.  We'll get to pcconf.h/tosconf.h
X	in step 4.
X
X	oldtos.c is an old Atari ST version of msdos.c.  If you're using
X	a compiler other than GCC, you may need to #define OLD_TOS in
X	tosconf.h and edit your make file to use this.
X
X    Run a uudecode utility on termcap.uu (Fred Fish's termcap library) and
X    ovlmgr.uu (MS-DOS overlay manager), to generate the files termcap.arc
X    and ovlmgr.obj.  Move these into your src directory, too.  Unarc
X    termcap.arc.
X
X	termcap.arc contains termcap routines.  Using them involves some
X	knowledge of the UNIX concept of a termcap database and setting
X	the TERM environment variable.  Commenting out the #define TERMLIB
X	in pcconf.h/tosconf.h to disable this feature (relying on the
X	ANSI_DEFAULT feature) will make your job quite a bit easier.
X
X	ovlmgr.obj is used with the OVERLAY code, as above.
X
X3.  Now look at Makefile.* in your others directory.  Consult the list below
X    and pick out the make file most appropriate to your system.  Rename this
X    file to "Makefile" (no extension), and move it into your src directory.
X
X    DOS:
X	Microsoft C 5.1 	Makefile.ovl	Make.ini
X	Microsoft C 4.0		Makefile.pc	(not available)
X	Turbo C 2.0		Makefile.tcc	Maketcc.ini
X    OS/2:
X	Microsoft C 5.1		Makefile.os2	Make.ini
X    TOS:
X	GCC 1.34		Makefile.st
X
X    If an .ini file is also listed, move that init file to your src directory
X    too, renaming it to "Make.ini" if necessary.  If you like, you may also
X    place Make.ini in any directory listed in your PATH environment variable.
X
X	The PC NetHack make files are set up for NDMAKE, a public domain
X	"make" utility.  Both Microsoft's and Borland's "make" leave much to
X	be desired.  Neither can handle the complexity of the make file's link
X	command.  It is worth the extra effort to get NDMAKE if you don't
X	already have it.  If you must use Microsoft's or Borland's "make", you
X	will have to edit and/or merge the make and the make init files into a
X	form your make can use.
X
X	If you're using a different compiler, you will have to adapt one of
X	the make files (and make init file, if appropriate) to your needs.  In
X	particular, change the CC and CFLAGS macros to your C compiler's file
X	name and the parameters to pass to it.
X
X	    Makefile.top in the top directory and Makefile.aux(il) in the
X	    auxil directory are for UNIX NetHack.  You may delete them.
X
X4.  Go to the include subdirectory and edit config.h according to the comments
X    to match your system and desired set of features.  Also edit pcconf.h for
X    PC or OS/2 NetHack, or tosconf.h for ST NetHack.
X
X	If you're using an Atari ST and some compiler other than GCC, you may
X	possibly want to #define OLD_TOS and use oldtos.c instead of msdos.c.
X	This is *not* guaranteed to work, so be prepared to make some changes.
X
X    ST and OS/2 NetHackers can skip to the next section, since the entire game
X    will fit in less than one megabyte.  (Unfortunately, nothing you do is
X    likely to make NH3.0 work on a 520ST.)
X
X    PC NetHackers:
X
X    To compile under MS-DOS, you must either produce an overlaid executable or
X    make some very difficult decisions about which features to include.
X
X    The base size of a PC NetHack executable, with no extra features or
X    overlays, will be around 520 kilobytes.  Anything over 590K is likely not
X    to work.  Here's an incomplete and outdated list of the approximate costs
X    of various additional features in terms of executable size, using
X    Microsoft C:
X
X	WIZARD		    3K
X	LOGFILE
X	NEWS
X	COMPRESS	    2K
X	ZEROCOMP
X	CHDIR
X
X	POLYSELF	   31K
X	THEOLOGY	   11K
X	SOUNDS		    6K
X	KICK
X
X	THRONES 	    3K
X	FOUNTAINS	    2K
X	SINKS		    5K
X	ALTARS		    4K
X
X	WALLIFIED_MAZE	    1K
X	REINCARNATION	    7K
X	STRONGHOLD	   13K
X
X	ORACLE
X	MEDUSA
X	KOPS
X	ARMY		    1K
X	WORM
X	GOLEMS		    2K
X	INFERNO
X	SEDUCE
X	TOLKIEN
X	PROBING 	    1K
X	WALKIES 	    4K
X	SHIRT
X	MUSIC		    6K
X	TUTTI_FRUTTI
X	SPELLS		   10K
X	NAMED_ITEMS
X
X	ELBERETH	    3K
X	EXPLORE_MODE	    2K
X	HARD
X
X	REDO		    1K
X	COM_COMPL	    1K
X	CLIPPING
X
X	OVERLAY
X	DGK		    7K
X	TERMLIB
X	RANDOM		    1K
X	SHELL
X	TEXTCOLOR	    1K
X
X    Using Microsoft C and overlays, we've managed to enable everything.
X    Unfortunately, the overlay manager doesn't work with Turbo C.  Using
X    Turbo C, we eked by with just WIZARD, ZEROCOMP, BITFIELDS, ELBERETH,
X    HARD, REDO, DGK and TEXTCOLOR.  There's very little leeway for nifty
X    features without an overlay manager.
X
X5.  If you're using a compiler not in the list in step 3, you may want to look
X    through system.h, in the include directory.  This file matches the return
X    and parameter types for system calls and library routines with various
X    flavors of compilers and operating systems.  Leaving this file alone is
X    unlikely to cause problems, but if you get compile errors with any
X    functions in the standard library, it's worth checking the declarations
X    there.
X
X6.  If you want to change the high score list behavior, examine the top of
X    topten.c, in the src directory.  You may want to change the definitions of
X    PERSMAX, POINTSMIN, and ENTRYMAX.  I set POINTSMIN to 51 and ENTRYMAX to
X    50 to keep the size of the score list down.
X
X7.  Go to the src directory and edit the top of your Makefile.  Be sure the
X    directory you want the game installed in actually exists.
X
X    If you elected not to use the high-quality BSD random number routines by
X    commenting out RANDOM in pcconf.h or tosconf.h, comment out (or set equal
X    to nothing) the RANDOM macro in your Makefile.
X
X    If you elected to use Fred Fish's termcap library (bundled in as
X    termcap.arc), you will have to generate termcap.lib from those sources
X    (follow the comments therein, if you can).
X
X    If you're using Makefile.ovl and you have Microsoft's Macro Assembler
X    version 5.1, you may want to enable the option in the make file to rebuild
X    ovlmgr.obj, altho a ready-made object file is provided for those of you
X    without.
X
X    If you are recompiling after patching your sources, or if you got your
X    files from somewhere other than the official distribution, "touch
X    makedefs.c" to ensure that certain files (onames.h and pm.h) are remade,
X    lest potentially troublesome timestamps fool "make".
X
X8.  Now, enter "make all", and take a long siesta; your computer will be
X    occupied for a long time.  If all goes well, you will get an executable.
X    If you tried to compile in too many features, you will probably get a
X    dysfunctional executable, and will have to start over.
X
X	Hint:  If you're short on memory, you might enter "make -n all
X	>script.bat", and then in DOS enter "script", or in TOS use the Gulam
X	command "source script.bat".  GCC users will be short on memory if
X	they only have 2 megabytes.
X
X9.  Make sure the support files-- data, rumors, cmdhelp, opthelp, help, hh,
X    history, license, and oracles (if ORACLES was #define'd)-- were copied
X    to the game directory.  If not, move them there from the auxil directory
X    yourself.  rumors can be created manually by entering "makedefs -r";
X    data by entering "makedefs -d".
X
X    If you compiled in the compiled levels (if STRONGHOLD was #define'd), make
X    sure castle, tower?, and possibly endgame are there, too.  They can be
X    created manually by entering "lev_comp filename.des", where filename.des
X    is the appropriate description file (found in the auxil directory).
X
X10. Go to the others directory.  Copy NetHack.cnf, or Atari.cnf for TOS, to
X    your game directory as "NetHack.cnf".  Edit it to reflect your particular
X    setup and personal preferences, following the comments.
X
X    If you compiled in the TERMLIB feature, also move the "termcap" file to
X    your game directory.  (Note:  GCC's termcap routines have built-in
X    defaults, so the termcap file is not necessary with that compiler.)
X
X    To use funky graphics charaters in TOS, uudecode "atarifnt.uue" and unarc
X    the resulting "atarifnt.arc".  This contains a program to run that makes
X    some line graphics characters available to NetHack.  To use them, uncomment
X    the appropriate line in your NetHack.cnf file.
X
X    If you'll be running NetHack from a different subdirectory, you will
X    want to "set HACKDIR=\games\nethack" (or whatever directory you want to
X    use) now.  Add it to your autoexec.bat (in DOS), if you'll be playing
X    often.
X
X11. Play NetHack.  If it works, you're done!
X
X
XNotes
X-----
X
X1)  Save files and bones files from previous versions will not work with
X    NetHack 3.0.  Don't bother trying to keep them.  The record (score list)
X    file will work fine, but I recommend you delete it and create a new, empty
X    one.  Achieving the same scores in this version is a great deal harder.
X
X2)  To install an update of NetHack after changing something, enter "make"
X    from the src directory.  If you add, delete, or reorder monsters or
X    objects, or you change the format of saved level files, delete any save
X    and bones files.  (Trying to use such files sometimes produces amusing
X    confusions on the game's part, but usually crashes.)
X
X3)  While making the PC and OS/2 versions, during linking the Microsoft
X    Overlay Linker will need temporary storage space.  Make sure you have
X    about a meg of free disk whereever you have defined your temporary
X    storage.
X
X4)  About overlays:
X
X    First and foremost:  We have been developing with MSC 5.1 as a compiler
X    and NDmake 4.5 as a make.  NDmake is readily available on the Usenet,
X    obtaining MSC might be more of a problem.  MSC 5.0 is broken.  You *will
X    not* be able to compile the overlay version with that compiler due to
X    problems with the /Gt option allowing the CONST segement to become
X    > 64k when linking.
X
X    Anyone who uses Turbo C is free to try to compile the game.  Not only does
X    TLINK not do overlays, it chokes on huge projects, so you will need to use
X    some other linker, probably the Microsoft Overlay Linker.  Also,
X    you will more than likely have to find a way to tell the compiler to
X    keep most of your data out of the default data segment (whence the mystic
X    /Gt24 for MSC in Makefile.ovl).  Certain other problems can probably be
X    anticipated.  Feel free to try other compilers and linkers and please do
X    inform us if you succeed.
X
X    If you use the custom overlay manager, ovlmgr.asm, you will want to use
X    Makefile.ovl.  Otherwise you will have to roll your own make file;
X    Makefile.ovl may serve you as a stylistic guide, but ovlmgr's optimisation
X    characteristics are very different from those of (for example) the
X    standard Microsoft Overlay Manager:  you will find the actual partitioning
X    of the overlays entirely inappropriate to a more conventional system.
X
X    To make the game, follow the instructions above for arrangement of files
X    from the others directory to src.  If you are using the standard Microsoft
X    Overlay Linker (which we have been assuming you are) you should make doubly
X    certain that OVERLAY is defined in pcconf.h, since otherwise things will
X    compile properly but very ugly things are likely to happen wherever
X    function pointers cross overlay boundaries - the linker is a little thick
X    about that.  Now check the variables at the top of the  makefile for
X    correctness on your system.  Once you have the compiler, linker, source
X    files moved, and the include files configured, go to the src directory and
X    type "make install".
X
X    The versions of the software we used are:
X
X    MS Overlay Linker      3.65
X    MSC 		    5.1
X    MASM		    5.1
X
X    NDMake                  4.5
X
X    On a 286 10MHz PC you will have nethack in about 2 - 2.5 hours.
X    Hope you enjoy the game.  We have worked very hard to try to bring it back
X    to the PC.
END_OF_FILE
if test 13554 -ne `wc -c <'Install.dos'`; then
    echo shar: \"'Install.dos'\" unpacked with wrong size!
fi
# end of 'Install.dos'
if test -f 'src/monst.c2' -a "${1}" != "-c" ; then 
  echo shar: clobbering existing file \"'src/monst.c2'\"
fi
echo shar: Extracting \"'src/monst.c2'\" \(45809 characters\)
sed "s/^X//" >'src/monst.c2' <<'END_OF_FILE'
X
X/* horrible kludge alert: splitting monst.o into two parts depends on
X   the two files monst1.o and monst2.o being loaded consecutively into
X   memory; _mons2 must immediately follow mons. Needless to say,
X   don't depend on this unless you have to (I had to; my compiler was
X   too much of a memory pig to produce monst.o in a measly 2 megabytes
X   of memory -- ERS */
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(HI_MON) },
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(BROWN) },
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,
X	  M1_ANIMAL | M1_FLY | M1_SEE_INVIS | M1_STALK,
X	  M2_WANDER | 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(BLUE) },
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(BLUE) },
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 },
X	  30, 100, 0, MS_MUMBLE, MZ_HUMAN, M1_HUMANOID | M1_UNDEAD | M1_POIS |
X	  M1_COLD_RES | M1_REGEN, 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 },
X	  30, 100, 0, MS_MUMBLE, MZ_HUMAN, M1_HUMANOID | M1_UNDEAD | M1_POIS |
X	  M1_COLD_RES | M1_REGEN, M2_HOSTILE, C(BROWN) },
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 },
X	  30, 100, 0, MS_MUMBLE, MZ_HUMAN, M1_HUMANOID | M1_UNDEAD | M1_POIS |
X	  M1_FIRE_RES | M1_COLD_RES | M1_REGEN, M2_HOSTILE, C(BROWN) },
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_UNDEAD | M1_POIS, 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_UNDEAD | M1_POIS, M2_HOSTILE, C(BROWN) },
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, M1_HUMANOID | M1_UNDEAD | M1_POIS |
X	  M1_GREEDY | M1_JEWELS, M2_HOSTILE | M2_ORC, C(BROWN) },
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_UNDEAD | M1_POIS | M1_SLEE_RES,
X	  M2_HOSTILE | M2_ELF, C(BROWN) },
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_UNDEAD | M1_POIS, M2_HOSTILE, C(BROWN) },
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_UNDEAD | M1_POIS,
X	  M2_HOSTILE | M2_STRONG, C(BROWN) },
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_UNDEAD | M1_POIS | M1_JEWELS,
X	  M2_HOSTILE | M2_GIANT | M2_STRONG, C(BROWN) },
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, M1_NOHANDS | M1_POIS_RES |
X	  M1_FIRE_RES, M2_STRONG | M2_NOLIMBS | M2_THICK_HIDE, 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, M1_NOHANDS | M1_POIS_RES |
X	  M1_STON_RES, M2_STRONG | M2_NOLIMBS | M2_THICK_HIDE, 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, M1_NOHANDS | M1_POIS_RES, M2_STRONG |
X	  M2_NOLIMBS | M2_THICK_HIDE, 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, M1_NOHANDS | M1_POIS_RES, M2_STRONG |
X	  M2_NOLIMBS | M2_THICK_HIDE, 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_NOHANDS | M1_EGGS | M1_POIS_RES | M1_FIRE_RES,
X	  M2_STRONG | M2_NOLIMBS | M2_THICK_HIDE, 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_NOHANDS | M1_EGGS | M1_POIS | M1_POIS_RES | M1_STON_RES,
X	  M2_STRONG | M2_NOLIMBS | M2_THICK_HIDE, 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_NOHANDS | M1_EGGS | M1_POIS_RES,
X	  M2_STRONG | M2_NOLIMBS | M2_THICK_HIDE, 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_ACID, 1, 6 }, NO_ATTK, NO_ATTK },
X	  60, 400, 0, MS_MUMBLE, MZ_HUGE, M1_NOHANDS | M1_EGGS | M1_POIS_RES,
X	  M2_STRONG | M2_NOLIMBS | M2_THICK_HIDE, 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 | M1_LORD,
X	  M2_STRONG, C(BROWN) },
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 | M1_PRINCE,
X	  M2_STRONG, 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_NOEYES | M1_NOHANDS | M1_POIS_RES,
X	  M2_HOSTILE | M2_NOLIMBS | M2_OMNIVORE | M2_AMORPHOUS, 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_NOEYES | M1_NOHANDS | M1_POIS_RES | M1_COLD_RES | M1_ELEC_RES,
X	  M2_HOSTILE | M2_NOLIMBS | M2_OMNIVORE | M2_AMORPHOUS, C(BROWN) },
X	{ "black pudding", S_PUDDING, 10, 6, 6, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_RUST, 3, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_SILENT, MZ_LARGE,
X	  M1_NOEYES | M1_NOHANDS | M1_POIS_RES | M1_COLD_RES | M1_ELEC_RES,
X	  M2_HOSTILE | M2_NOLIMBS | M2_OMNIVORE | M2_AMORPHOUS, 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_SILENT, MZ_HUMAN, M1_ANIMAL | M1_HUMANOID | M1_POIS,
X	  M2_HOSTILE, C(CYAN) },
X	{ "mad scientist", S_QUANTMECH, 8, 12, 2, 20, 0, (G_GENO | 2),
X	  { { AT_WEAP, AD_SLEE, 1, 8 }, { AT_CLAW, AD_DREN, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  35, 200, 0, MS_SILENT, MZ_HUMAN, M1_HUMANOID | M1_POIS | M1_COLLECT,
X	  M2_HOSTILE, C(MAGENTA) },
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 }, NO_ATTK,
X	    NO_ATTK, NO_ATTK }, 50, 500, 0, MS_SILENT, MZ_MEDIUM,
X	  M1_SWIM | M1_ANIMAL | M1_NOHANDS, M2_HOSTILE, 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_ANIMAL | M1_NOHANDS | M1_EGGS,
X	  M2_CONCEAL | M2_NOLIMBS | M2_CARNIVORE, 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, M1_SWIM | M1_ANIMAL | M1_NOHANDS |
X	  M1_EGGS | M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_CONCEAL | M2_NOLIMBS | M2_CARNIVORE, C(GREEN) },
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, M1_SWIM | M1_ANIMAL | M1_NOHANDS |
X	  M1_EGGS | M1_POIS | M1_POIS_RES, M2_HOSTILE | M2_CONCEAL |
X	  M2_NOLIMBS | M2_CARNIVORE, C(GREEN) },
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_ANIMAL | M1_NOHANDS | M1_EGGS | M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_CONCEAL | M2_NOLIMBS | M2_CARNIVORE, C(GREEN) },
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_ANIMAL | M1_NOHANDS | M1_EGGS | M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_CONCEAL | M2_NOLIMBS | M2_CARNIVORE, C(GREEN) },
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_ANIMAL | M1_NOHANDS | M1_EGGS | M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_STRONG | M2_NOLIMBS | M2_CARNIVORE, C(GREEN) },
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 | M1_STALK,
X	  M2_STRONG | 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 | M1_STALK,
X	  M2_STRONG | 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_STALK | M1_COLLECT,
X	  M2_STRONG | M2_CARNIVORE | M2_HOSTILE, C(BROWN) },
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 | M1_STALK,
X	  M2_STRONG | 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_STALK | M1_COLLECT,
X	  M2_STRONG | M2_CARNIVORE | M2_HOSTILE, C(BROWN) },
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	  0, M2_STRONG | M2_TUNNEL | 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_UNDEAD | M1_POIS | M1_REGEN | M1_STALK,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY, C(HI_MON) },
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_UNDEAD | M1_POIS | M1_REGEN |
X	  M1_STALK | M1_LORD, M2_HOSTILE | M2_STRONG | M2_NASTY, C(HI_MON) },
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, PL_NSIZ, MS_VAMPIRE, MZ_HUMAN,
X	  M1_NOPOLY | M1_FLY | M1_HUMANOID | M1_UNDEAD | M1_POIS |
X	  M1_REGEN | M1_STALK | M1_PRINCE,
X	  M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY, 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,
X	  M1_HUMANOID | M1_UNDEAD | M1_POIS_RES | M1_STALK | M1_COLLECT,
X	  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_UNDEAD | M1_POIS_RES | M1_STALK,
X	  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_UNDEAD | M1_POIS_RES | M1_STALK | M1_COLLECT,
X	  M2_STRONG | M2_HOSTILE, C(BLACK) },
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_FIRE_RES | M1_COLD_RES | M1_STON_RES,
X	  M2_HOSTILE | M2_STRONG | M2_THICK_HIDE, 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_UNDEAD | M1_POIS |
X	  M1_POIS_RES | M1_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_UNDEAD | M1_POIS |
X	  M1_POIS_RES | M1_STALK, M2_HOSTILE, C(HI_MON) },
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_UNDEAD | M1_POIS_RES | M1_STALK | M1_GREEDY |
X	  M1_JEWELS, M2_HOSTILE | M2_ORC, C(BROWN) },
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_UNDEAD | M1_POIS_RES | M1_STALK | M1_SLEE_RES,
X	  M2_HOSTILE | M2_ELF, C(HI_MON) },
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_UNDEAD | M1_POIS_RES | M1_STALK,
X	  M2_HOSTILE, C(HI_MON) },
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_UNDEAD | M1_POIS_RES | M1_STALK,
X	  M2_HOSTILE | M2_STRONG, C(BROWN) },
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_UNDEAD | M1_POIS_RES | M1_STALK | M1_JEWELS,
X	  M2_HOSTILE | M2_GIANT | M2_STRONG, C(HI_MON) },
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, M2_HOSTILE | M2_THICK_HIDE, 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(HI_MON) },
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, M1_HUMANOID | M1_POIS_RES,
X	  M2_HOSTILE | M2_STRONG | M2_THICK_HIDE, 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_STON_RES,
X	  M2_HOSTILE | M2_STRONG | M2_THICK_HIDE, 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_POIS | M1_FIRE_RES | M1_COLD_RES | M1_ELEC_RES |
X	  M1_COLLECT, M2_HOSTILE | M2_STRONG | M2_THICK_HIDE, 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, M1_NOPOLY | M1_HUMANOID |
X	  M1_COLLECT, M2_HUMAN | M2_PEACEFUL | M2_STRONG, C(HI_MON) },
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, M1_NOPOLY | M1_HUMANOID | M1_WERE |
X	  M1_POIS | M1_REGEN | M1_COLLECT, M2_HOSTILE | M2_HUMAN, C(HI_MON) },
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, M1_NOPOLY | M1_HUMANOID | M1_WERE |
X	  M1_POIS | M1_REGEN | M1_COLLECT, M2_HOSTILE | M2_HUMAN, C(HI_MON) },
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, M1_NOPOLY | M1_HUMANOID | M1_WERE |
X	  M1_POIS | M1_REGEN | M1_COLLECT, M2_HOSTILE | M2_HUMAN, C(HI_MON) },
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(HI_MON) },
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(HI_MON) },
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(HI_MON) },
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 | M1_LORD |
X	  M1_COLLECT | M1_SLEE_RES, M2_ELF | M2_STRONG, C(HI_MON) },
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, M1_HUMANOID | M1_PRINCE |
X	  M1_COLLECT | M1_SLEE_RES, M2_ELF | M2_STRONG, C(HI_MON) },
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_MON) },
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_MON) },
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(HI_MON) },
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 | M1_FEM,
X	  M2_HUMAN | M2_PEACEFUL, C(HI_MON) },
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(BRIGHT|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 | M1_FEM,
X	  M2_HUMAN | M2_PEACEFUL, C(BRIGHT|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_STALK | M1_COLLECT,
X	  M2_HUMAN | M2_MERC | M2_HOSTILE | M2_STRONG, C(GREEN) },
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_STALK | M1_COLLECT,
X	  M2_HUMAN | M2_MERC | M2_HOSTILE | M2_STRONG, C(GREEN) },
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_STALK | M1_COLLECT,
X	  M2_HUMAN | M2_MERC | M2_HOSTILE | M2_STRONG, C(GREEN) },
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_STALK | M1_COLLECT,
X	  M2_HUMAN | M2_MERC | 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_STALK | M1_COLLECT,
X	  M2_HUMAN | M2_MERC | M2_HOSTILE | M2_STRONG, C(GREEN) },
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, PL_NSIZ, MS_HISS, MZ_LARGE,
X	  M1_NOPOLY | M1_HUMANOID | M1_POIS | M1_POIS_RES |
X	  M1_STON_RES | M1_FEM, M2_HOSTILE | M2_STRONG | M2_PNAME,
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	    { AT_BITE, AD_CUSS, 0, 0 }, NO_ATTK, NO_ATTK }, 45, 400, PL_NSIZ,
X	  MS_CUSS, MZ_HUMAN, M1_NOPOLY | M1_FLY | M1_HUMANOID | M1_POIS_RES |
X	  M1_FIRE_RES | M1_REGEN | M1_SEE_INVIS | M1_TPORT |
X	  M1_TPORT_CONTROL | M1_MAGIC | M1_PRINCE,
X	  M2_HUMAN | M2_PNAME | M2_HOSTILE | M2_STRONG | M2_NASTY, C(HI_LORD)
X	  },
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, PL_NSIZ, MS_FERRY, MZ_HUMAN,
X	  M1_NOPOLY | M1_SEE_INVIS | M1_HUMANOID | M1_POIS_RES | M1_FIRE_RES |
X	  M1_COLLECT, M2_HUMAN | M2_PEACEFUL, 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_UNDEAD |
X	  M1_STALK | M1_POIS_RES, M2_HOSTILE, C(WHITE)},
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_STALK | M1_COLLECT,
X	  M2_DEMON | 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_JEER, MZ_HUMAN,
X	  M1_HUMANOID | M1_POIS | M1_FIRE_RES | M1_STALK | M1_COLLECT,
X	  M2_DEMON | 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, M1_POIS | M1_FIRE_RES | M1_STALK,
X	  M2_DEMON | M2_HOSTILE | M2_NASTY | M2_THICK_HIDE, C(RED) },
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 | M1_STALK | M1_FEM,
X	  M2_DEMON | M2_HOSTILE | M2_NASTY, C(RED) },
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 | M1_STALK,
X	  M2_DEMON | M2_HOSTILE | M2_NASTY, C(RED) },
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 | M1_STALK | M1_FEM,
X	  M2_DEMON | M2_HOSTILE | M2_NASTY, C(RED) },
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 | M1_STALK,
X	  M2_DEMON | M2_HOSTILE | M2_NASTY, C(RED) },
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_STALK | M1_COLLECT | M1_FEM,
X	  M2_DEMON | M2_HOSTILE | M2_STRONG | M2_NASTY, 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_SILENT, MZ_LARGE,
X	  M1_HUMANOID | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES | M1_STALK |
X	  M1_COLLECT | M1_FEM, M2_DEMON | M2_HOSTILE | M2_NASTY, 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, M1_POIS | M1_FIRE_RES | M1_STALK,
X	  M2_DEMON | M2_HOSTILE | M2_NASTY | M2_THICK_HIDE, 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 | M1_STALK,
X	  M2_DEMON | 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 | M1_STALK,
X	  M2_DEMON | 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_STALK | M1_COLLECT,
X	  M2_DEMON | M2_HOSTILE | M2_NASTY, C(WHITE) },
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 | M1_STALK,
X	  M2_DEMON | 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 | M1_STALK,
X	  M2_DEMON | 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_STALK | M1_COLLECT,
X	  M2_DEMON | 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_STALK | M1_POIS | M1_FIRE_RES,
X	  M2_DEMON | 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, PL_NSIZ, MS_GURGLE, MZ_LARGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_NOHANDS | M1_POIS |
X	  M1_FIRE_RES | M1_STALK | M1_LORD,
X	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_AMORPHOUS,
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, PL_NSIZ, MS_ORC, MZ_LARGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
X	  M1_STALK | M1_COLLECT | M1_LORD,
X	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY, 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, PL_NSIZ, MS_ORC, MZ_HUGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
X	  M1_STALK | M1_COLLECT | M1_PRINCE,
X	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY, 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, PL_NSIZ, MS_BRIBE, MZ_HUGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
X	  M1_STALK | M1_PRINCE,
X	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY, 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, PL_NSIZ, MS_BRIBE, MZ_HUMAN,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_HUMANOID | M1_POIS |
X	  M1_FIRE_RES | M1_STALK | M1_COLLECT | M1_PRINCE,
X	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY, 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, PL_NSIZ, MS_BRIBE, MZ_LARGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
X	  M1_STALK | M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY,
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, PL_NSIZ, MS_BRIBE, MZ_HUGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_HUMANOID | M1_POIS |
X	  M1_FIRE_RES | M1_COLD_RES | M1_STALK | M1_PRINCE,
X	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY, 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, PL_NSIZ, MS_GROWL, MZ_HUGE,
X	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_NOHANDS | M1_POIS |
X	  M1_FIRE_RES | M1_STALK | M1_PRINCE,
X	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY, 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	  M1_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_STALK | M1_COLLECT, 0,
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_NOHANDS | M1_NOPOLY | M1_EGGS,
X	  M2_HOSTILE | M2_NOLIMBS | M2_CARNIVORE, 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_NOHANDS | M1_NOPOLY | M1_EGGS | M1_ELEC_RES,
X	  M2_HOSTILE | M2_NOLIMBS | M2_CARNIVORE, 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	{ "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,
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_NOHANDS | M1_SWIM,
X	  M2_STRONG | M2_HOSTILE | M2_CARNIVORE, 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,
X	  M2_HUMAN | M2_STRONG | M2_TUNNEL | M2_NEEDPICK, C(HI_MON) },
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_MON) },
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(HI_MON) },
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 | M1_FEM,
X	  M2_HUMAN | M2_STRONG | M2_CARNIVORE, C(HI_MON) },
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_MON) },
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_MON) },
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_MON) },
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_MON) },
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 | M1_FEM,
X	  M2_HUMAN | M2_STRONG, C(HI_MON) },
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_MON) },
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_MON) },
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_MON) },
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 | M1_FEM,
X	  M2_HUMAN | M2_STRONG, C(HI_MON) },
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_MAGIC | M1_COLLECT,
X	  M2_HUMAN | M2_STRONG, C(HI_MON) },
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 45809 -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 13 \(of 15\).
cp /dev/null ark13isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 15 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