[comp.sources.games] v09i025: 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 25
Archive-name: NetHack3/Patch7y
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 25 (of 30)."
# Contents:  Install.dos src/monst.c1
# Wrapped by billr@saab on Wed Feb 21 10:04:47 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Install.dos' -a "${1}" != "-c" ; then 
  echo shar: Renaming existing file \"'Install.dos'\" to \"'Install.dos.orig'\"
  mv -f 'Install.dos' 'Install.dos.orig'
fi
echo shar: Extracting \"'Install.dos'\" \(16432 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: 17 Feb 1990
X
X    (Credit for a runnable full PC NetHack 3.0 goes to the overlay team of
X    Pierre Martineau, Stephen Spackman, Norm Meluch, and Kevin Smolkowski,
X    who built on the work of Steve Creps and Mike Threepoint.  Credit for
X    ST and OS/2 NetHack 3.0 goes to Eric Smith and Timo Hakulinen,
X    respectively.)
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. (TOS compilers generally don't have either
X    problem).
X
X2.  Move the .c files from the others directory to your src directory
X    based on the following decisions.  You will probably want to include
X    all of these files.
X
X    You will definitely need pc*.c and msdos.c.
X
X    The file termcap.uu is the fixed version of the Fred Fish termcap library.
X    You will need to run a uudecode utility on it to generate the file
X    termcap.arc.  termcap.arc contains several files of termcap routines.
X    Using them with NetHack involves very little knowledge of the UNIX concept
X    of a termcap database; mostly you need to know enough to set a TERM
X    environment variable.  You can unarc termcap.arc here in the others
X    directory, but if you are going to use it, it is probably best to unarc a
X    copy in the src directory.  That way you will not miss copying any
X    files over.  Wherever you unarc it, get rid of the included makefile
X    since a better version has been provided as Makefile.lib.
X
X    random.c is only needed if you want the high-quality random number
X    generation routines.
X
X    trampoli.c and ovlmgr.obj files are needed for the MS-DOS overlays.
X    The file ovlmgr.uu (MS-DOS overlay manager) is the uuencoded assembled
X    object module for the overlay manager in case you do not have MASM.
X    You will need to run a uudecode utility on this file too, to generate
X    ovlmgr.obj.  
X
X    TOS users should use others/lev_lex.c instead of src/lev_lex.c.
X    MS-DOS users should be able to use either, but the one in src
X    is smaller.  If you have flex or some other lex work-alike, use
X    that to produce lev_lex.c from lev_comp.l.
X
X    Obviously, TOS users don't need the MS-DOS overlay functions.
X    Moreover, the GCC "curses" library has termcap routines built
X    in, so if you have this you don't need termcap.arc.
X
X3.  Now look at Makefile.* in your others directory.  Consult the list below
X    and pick out the makefile 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
X	Microsoft C 4.0 	Makefile.pc
X	Turbo C 2.0		Makefile.tcc
X    OS/2:
X	Microsoft C 5.1 	Makefile.os2
X    TOS:
X	GCC 1.34		Makefile.st
X
X    The PC NetHack makefiles are set up for NDMAKE, a public domain
X    "make" utility.  Both Microsoft's and Borland's "make" leave much to
X    be desired.  It is worth the extra effort to get NDMAKE if you don't
X    already have it.  Among other things, NDMAKE automatically generates
X    link response files when the link command involves so many objects
X    that the command would become longer than DOS can handle.  If you must
X    use Microsoft's or Borland's "make", you'll need to edit the makefile
X    into a form your make can use, and add instructions to generate a link
X    response file.
X
X    The ST NetHack makefile should work with either the widely available
X    PD make, or (much better) GNU Make.
X
X    If you're using a different compiler, you will have to adapt one of
X    the makefiles to your needs.  In particular, change the CC and CFLAGS
X    macros to your C compiler's file name and the parameters to pass it.
X
X    For DOS users, if you are going to be constructing the Fred Fish termlib
X    you will need the Makefile.lib.  Copy this to your source directory too,
X    and do not change its name.
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.  Now go to the include subdirectory to edit a couple of the header files
X    there.
X
X    First edit config.h according to the comments to match your system and
X    desired set of features.  Mostly you need to check the WIZARD option,
X    make sure the HACKDIR is set properly, and check TERMLIB and COMPRESS.
X
X    Also edit pcconf.h for PC or OS/2 NetHack, or tosconf.h for ST NetHack.
X    pcconf.h should not need much editing if you are including termcap.uu,
X    random.c and ovlmgr.uu.  If you are not including any of these you will
X    need to comment out TERMLIB, RANDOM, and/or OVERLAY respectively.
X
X    Commenting out the #define TERMLIB in pcconf.h/tosconf.h to disable
X    use of termcap routines (relying on the ANSI_DEFAULT feature) will make
X    your job a bit easier.  However, you can compile with both and simply
X    not set your TERM variable if you do not wish to use the termcap file
X    settings.
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.
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 570 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		    0K
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    by typing make -f makefile.lib termlib.lib.
X    DOS users must set the TERMLIB option in Makefile.ovl(msc) to link in
X    the resulting termlib.lib.
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, although 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    Also, as of pl7 with OVERLAY you might need to use MAKE45L.EXE for your
X    compile.  The Makefile.ovl with all of its OVLx funness is a bit much
X    for even generic NDMAKE45.
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. Indeed, some files will not compile in
X	2 megabytes with the GCC 1.36; for these you'll either have to turn
X	off the -O option or use an earlier version of the GCC.
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, and run the program before
X    running NetHack (you can put the program in an AUTO folder if you want).
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.  Record (score) files
X    from before 3.0 patchlevel 7 will almost work, but you need to make one
X    change manually to them:  At the end of each line is a word or phrase
X    specifying what killed the player.  Change the string to start with the
X    words "killed by", "killed by a", or "killed by an" (whichever is
X    appropriate).  If the death was petrification, it should read "petrified
X    by" instead of "killed by".  Don't change "starvation", "quit", "escaped",
X    or "ascended".
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 where ever 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 segment 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    RAM requirement for the overlay version is about 550k.  You can load the
X    program in less RAM, but you will begin to experience a serious amount
X    of disk thrashing at 530k or less.  Absolute minimum will probably be in
X    the neighborhood of 400-425k.  You do not want to run the program like
X    that!  And, as always, the more free RAM the better.
X
X    As of patch level 7, version 3.0 has an added feature in the Makefile.  This
X    feature enables a structured break up of the object modules so that we
X    can link heavily used functions together without actual source code
X    movement.  This has provided a great speed improvement for this release.
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 16432 -ne `wc -c <'Install.dos'`; then
    echo shar: \"'Install.dos'\" unpacked with wrong size!
fi
# end of 'Install.dos'
if test -f 'src/monst.c1' -a "${1}" != "-c" ; then 
  echo shar: Renaming existing file \"'src/monst.c1'\" to \"'src/monst.c1.orig'\"
  mv -f 'src/monst.c1' 'src/monst.c1.orig'
fi
echo shar: Extracting \"'src/monst.c1'\" \(39815 characters\)
sed "s/^X//" >'src/monst.c1' <<'END_OF_FILE'
X/*	SCCS Id: @(#)monst.c	3.0	89/11/21
X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X/* NetHack may be freely redistributed.  See license for details. */
X
X/* since this file is also used in auxiliary programs, don't include all the
X * function declarations for all of nethack
X */
X#define EXTERN_H
X#include "config.h"
X#include "permonst.h"
X#include "monsym.h"
X#include "eshk.h"
X#include "vault.h"
X#include "epri.h"
X
X#define NO_ATTK 	{ 0, 0, 0, 0 }
X
X#ifdef C
X#undef C
X#endif
X#ifdef TEXTCOLOR
X#include "color.h"
X#define C(color)	color
X#define HI_DOMESTIC	WHITE		/* use for player + friendlies */
X#define HI_LORD 	MAGENTA
X#else
X#define C(color)
X#endif
X
X#ifndef SPLITMON_2
Xstruct permonst playermon = {		/* used by weapons bonus code */
X	"player", S_HUMAN, 1, 10, 10, 0, 0, G_GENO | G_NOGEN,
X	{ { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	45, 400, PL_NSIZ, MS_SILENT, MZ_HUMAN,
X	M1_NEEDPICK | M1_HUMANOID | M1_COLLECT,
X	M2_HUMAN | M2_STRONG, C(HI_DOMESTIC)
X},	*uasmon = &playermon;
X#endif /* SPLITMON_2 */
X
X/*
X *	Rule #1:	monsters of a given class are contiguous in the
X *			mons[] array.
X *
X *	Rule #2:	monsters of a given class are presented in ascending
X *			order of strength.
X *
X *	Rule #3:	monster frequency is included in the geno mask;
X *			the frequency can be from 0 to 7.  0's will also
X *			be skipped during generation.
X *
X * Guidelines for color assignment:
X *
X *	* Use the same color for all `growth stages' of a monster (ex.
X *	  little dog/big dog, baby naga/full-grown naga.
X *
X *	* Use colors given in names wherever possible. If the class has `real'
X *	  members with strong color associations, use those.
X *
X *	* Favor `cool' colors for cold-resistent monsters, `warm' ones for
X *	  fire-resistent ones.
X *
X *	* Try to reserve purple (magenta) for powerful `ruler' monsters (queen
X *	  bee, kobold lord, &c.).
X *
X *	* Subject to all these constraints, try to use color to make as many
X *	  distinctions as the / command (that is, within a monster letter
X *	  distinct names should map to distinct colors).
X *
X * The aim in assigning colors is to be consistent enough so a player can
X * become `intuitive' about them, deducing some or all of these rules
X * unconsciously. Use your common sense.
X */
X
X#if defined(SMALLDATA) && !defined(MAKEDEFS_C)
X		/* if it's for SMALLDATA, say so, right? (KL) */
Xstruct permonst *mons;	   /* for SMALLDATA - mons data stored in NetHack app */
X#else
X#ifndef SPLITMON_2
Xstruct permonst mons[] = {
X/*	ants	*/
X	{ "giant ant",	S_ANT, 2, 18, 3, 0, 0, (G_GENO | G_SGROUP | 3),
X	  { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  1, 10, 0, MS_SILENT, MZ_TINY, M1_ANIMAL | M1_NOHANDS,
X	  M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(BROWN) },
X	{ "soldier ant", S_ANT, 3, 18, 3, 0, 0, (G_GENO | G_SGROUP | 2),
X	  { { AT_BITE, AD_PHYS, 2, 4 }, { AT_STNG, AD_DRST, 3, 4 },
X	  NO_ATTK, NO_ATTK, NO_ATTK }, 2, 20, 0, MS_SILENT, MZ_TINY,
X	  M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(BLUE) },
X	{ "fire ant", S_ANT, 3, 18, 3, 10, 0, (G_GENO | G_SGROUP | 1),
X	  { { AT_BITE, AD_FIRE, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  3, 30, 0, MS_SILENT, MZ_TINY, M1_ANIMAL | M1_NOHANDS | M1_FIRE_RES,
X	  M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(RED) },
X	{ "giant beetle", S_ANT, 5, 6, 4, 0, 0, (G_GENO | 3),
X	  { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  1, 10, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_NOHANDS | M1_POIS |
X	  M1_POIS_RES, M2_HOSTILE | M2_CARNIVORE, C(BLACK) },
X	{ "killer bee", S_ANT, 1, 18, -1, 0, 0, (G_GENO | G_LGROUP | 2),
X	  { { AT_STNG, AD_DRST, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  1, 10, 0, MS_BUZZ, MZ_TINY, M1_ANIMAL | M1_FLY | M1_NOHANDS |
X	  M1_POIS | M1_POIS_RES, M2_HOSTILE, C(YELLOW) },
X	{ "queen bee", S_ANT, 9, 24, -4, 0, 0, (G_GENO | G_NOGEN),
X	  { { AT_STNG, AD_DRST, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  1, 10, 0, MS_BUZZ, MZ_TINY, M1_ANIMAL | M1_FLY | M1_NOHANDS |
X	  M1_POIS | M1_POIS_RES, M2_HOSTILE | M2_PRINCE, C(HI_LORD) },
X/*	blobs	*/
X	{ "acid blob", S_BLOB, 1, 3, 8, 0, 0, (G_GENO | 2),
X	  { { AT_NONE, AD_ACID, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  3, 30, 0, MS_SILENT, MZ_TINY,
X	  M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_SLEE_RES | M1_STON_RES |
X	  M1_ACID, M2_WANDER, C(GREEN) },
X	{ "quivering blob", S_BLOB, 5, 1, 8, 0, 0, (G_GENO | 2),
X	  { { AT_TUCH, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_SILENT, MZ_SMALL,
X	  M1_NOEYES | M1_NOLIMBS | M1_POIS_RES,
X	  M2_WANDER | M2_HOSTILE, C(WHITE) },
X	{ "gelatinous cube", S_BLOB, 6, 6, 8, 0, 0, (G_GENO | 2),
X	  { { AT_TUCH, AD_PLYS, 2, 4 }, { AT_NONE, AD_PLYS, 1, 4 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 300, 0, MS_SILENT, MZ_LARGE,
X	  M1_NOEYES | M1_NOLIMBS | M1_FIRE_RES | M1_COLD_RES | M1_ELEC_RES |
X	  M1_SLEE_RES, M2_WANDER | M2_HOSTILE | M2_OMNIVORE, C(CYAN) },
X/*	cockatrice	*/
X	{ "cockatrice", S_COCKATRICE, 5, 6, 6, 30, 0, (G_GENO | 5),
X	  { { AT_BITE, AD_PHYS, 1, 3 }, { AT_TUCH, AD_STON, 0, 0 },
X	    { AT_NONE, AD_STON, 0, 0 }, NO_ATTK, NO_ATTK },
X	  3, 30, 0, MS_HISS, MZ_SMALL,
X	  M1_ANIMAL | M1_NOHANDS | M1_POIS_RES | M1_STON_RES,
X	  M2_HOSTILE | M2_EGGS, C(YELLOW) },
X/*	dog	*/
X	{ "little dog", S_DOG, 2, 18, 6, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  15, 150, 0, MS_BARK, MZ_SMALL,
X	  M1_ANIMAL | M1_NOHANDS, M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
X	{ "dog", S_DOG, 4, 16, 5, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 1 ,6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_BARK, MZ_MEDIUM,
X	  M1_ANIMAL | M1_NOHANDS, M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
X	{ "large dog", S_DOG, 6, 15, 4, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  25, 250, 0, MS_BARK, MZ_MEDIUM,
X	  M1_ANIMAL | M1_NOHANDS, M2_STRONG | M2_CARNIVORE | M2_DOMESTIC,
X	  C(HI_DOMESTIC) },
X	{ "jackal", S_DOG, 0, 12, 7, 0, 0, (G_GENO | G_SGROUP | 3),
X	  { { AT_BITE, AD_PHYS, 1, 2 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  25, 250, 0, MS_BARK, MZ_SMALL,
X	  M1_ANIMAL | M1_NOHANDS, M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X	{ "jackalwere", S_DOG, 2, 12, 7, 10, -7, G_NOGEN | G_NOCORPSE,
X	  { { AT_BITE, AD_WERE, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  25, 250, 0, MS_BARK, MZ_SMALL,
X	  M1_NOPOLY | M1_NOHANDS | M1_POIS | M1_REGEN,
X	  M2_WERE | M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X	{ "wolf", S_DOG, 5, 12, 4, 0, 0, (G_GENO | G_SGROUP | 2),
X	  { { AT_BITE, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  25, 250, 0, MS_BARK, MZ_SMALL,
X	  M1_ANIMAL | M1_NOHANDS, M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X	{ "wolfwere", S_DOG, 5, 12, 4, 20, -7, G_NOGEN | G_NOCORPSE,
X	  { { AT_BITE, AD_WERE, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  25, 250, 0, MS_BARK, MZ_MEDIUM,
X	  M1_NOPOLY | M1_NOHANDS | M1_POIS | M1_REGEN,
X	  M2_WERE | M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X	{ "winter wolf", S_DOG, 7, 12, 4, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 2, 6 }, { AT_BREA, AD_COLD, 2, 6 },
X	  NO_ATTK, NO_ATTK, NO_ATTK, },
X	  30, 300, 0, MS_BARK, MZ_LARGE, M1_ANIMAL | M1_NOHANDS | M1_COLD_RES,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(CYAN) },
X	{ "warg", S_DOG, 7, 12, 4, 0, -5, (G_GENO | G_SGROUP | 2),
X	  { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  35, 350, 0, MS_BARK, MZ_MEDIUM, M1_ANIMAL | M1_NOHANDS,
X	  M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X	{ "hell hound pup", S_DOG, 7, 12, 4, 20, -5,
X	  (G_HELL | G_GENO | G_SGROUP | 1),
X	  { { AT_BITE, AD_PHYS, 2, 6 }, { AT_BREA, AD_FIRE, 2, 6 },
X	  NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_BARK, MZ_SMALL, M1_ANIMAL | M1_NOHANDS | M1_FIRE_RES,
X	  M2_HOSTILE | M2_CARNIVORE, C(RED) },
X	{ "hell hound", S_DOG, 12, 14, 2, 20, 0, (G_HELL | G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 3, 6 }, { AT_BREA, AD_FIRE, 3, 6 },
X	  NO_ATTK, NO_ATTK, NO_ATTK, },
X	  30, 300, 0, MS_BARK, MZ_MEDIUM, M1_ANIMAL | M1_NOHANDS | M1_FIRE_RES,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(RED) },
X#ifdef CHARON
X	{ "Cerberus", S_DOG, 12, 10, 2, 20, -7, (G_HELL | G_UNIQ | 1),
X	  { { AT_BITE, AD_PHYS, 3, 6 }, { AT_BITE, AD_PHYS, 3, 6 },
X	  { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK },
X	  50, 350, 0, MS_BARK, MZ_LARGE,
X	  M1_NOPOLY | M1_ANIMAL | M1_NOHANDS | M1_FIRE_RES,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_PNAME, C(RED) },
X#endif
X/*	eyes	*/
X	{ "floating eye", S_EYE, 2, 1, 9, 10, 0, (G_GENO | 5),
X	  { { AT_NONE, AD_PLYS, 0, 70 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  1, 10, 0, MS_SILENT, MZ_SMALL,
X	  M1_FLY | M1_NOLIMBS, M2_HOSTILE, C(BLUE) },
X	{ "freezing sphere", S_EYE, 6, 13, 4, 0, 0, (G_GENO | 2),
X	  { { AT_EXPL, AD_COLD, 4, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  1, 10, 0, MS_SILENT, MZ_SMALL,
X	  M1_FLY | M1_NOLIMBS | M1_COLD_RES, M2_HOSTILE, C(WHITE) },
X/*	felines 	*/
X	{ "kitten", S_FELINE, 2, 18, 6, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  15, 150, 0, MS_MEW, MZ_SMALL, M1_ANIMAL | M1_NOHANDS,
X	  M2_WANDER | M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
X	{ "housecat", S_FELINE, 4, 16, 5, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_MEW, MZ_SMALL, M1_ANIMAL | M1_NOHANDS,
X	  M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
X	{ "large cat", S_FELINE, 6, 15, 4, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  25, 250, 0, MS_MEW, MZ_SMALL, M1_ANIMAL | M1_NOHANDS,
X	  M2_STRONG | M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
X	{ "jaguar", S_FELINE, 4, 15, 6, 0, 0, (G_GENO | 2),
X	  { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
X	    { AT_BITE, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK },
X	  30, 300, 0, MS_GROWL, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
X	  M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X	{ "tiger", S_FELINE, 6, 12, 6, 0, 0, (G_GENO | 2),
X	  { { AT_CLAW, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 2, 4 },
X	    { AT_BITE, AD_PHYS, 1, 10 }, NO_ATTK, NO_ATTK },
X	  30, 300, 0, MS_GROWL, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
X	  M2_HOSTILE | M2_CARNIVORE, C(YELLOW) },
X/*	gremlins	*/
X	{ "gremlin", S_GREMLIN, 5, 12, 2, 25, -9, (G_GENO | 2),
X	  { { AT_CLAW, AD_PHYS, 1, 6 }, { AT_CLAW, AD_PHYS, 1, 6 },
X	    { AT_BITE, AD_PHYS, 1, 4 }, { AT_CLAW, AD_CURS, 0, 0 }, NO_ATTK },
X	  10, 30, 0, MS_LAUGH, MZ_SMALL,
X	  M1_SWIM | M1_HUMANOID | M1_POIS, M2_STALK, C(GREEN) },
X/*	humanoids	*/
X#ifdef TOLKIEN
X	{ "hobbit", S_HUMANOID, 1, 9, 7, 0, 6, (G_GENO | 2),
X	  { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_HUMANOID, MZ_SMALL,
X	  M1_HUMANOID | M1_COLLECT, 0, C(GREEN) },
X#endif
X	{ "bugbear", S_HUMANOID, 3, 9, 5, 0, -6, (G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  25, 250, 0, MS_GROWL, MZ_LARGE, M1_HUMANOID | M1_COLLECT,
X	  M2_STRONG, C(BROWN) },
X	{ "dwarf", S_HUMANOID,	2, 6, 4, 10, 4, (G_GENO | 3),
X	  { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 300, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_GREEDY | M1_JEWELS |
X	  M1_COLLECT, M2_DWARF | M2_STRONG, C(RED) },
X	{ "dwarf lord", S_HUMANOID,  4, 6, 4, 10, 5, (G_GENO | 2),
X	  { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_GREEDY | M1_JEWELS |
X	  M1_COLLECT, M2_DWARF | M2_STRONG | M2_LORD, C(BLUE) },
X	{ "dwarf king", S_HUMANOID,  6, 6, 4, 20, 6, (G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 6 }, { AT_WEAP, AD_PHYS, 2, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_HUMANOID, MZ_HUMAN,
X	  M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_GREEDY | M1_JEWELS |
X	  M1_COLLECT, M2_DWARF | M2_STRONG | M2_PRINCE, C(HI_LORD) },
X/*	imps & other minor demons/devils */
X	{ "manes", S_IMP, 1, 3, 7, 0, -7, (G_GENO | G_LGROUP | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_CLAW, AD_PHYS, 1, 3 },
X	    { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_CUSS, MZ_SMALL, M1_POIS, M2_STALK, C(RED) },
X	{ "homunculus", S_IMP, 2, 12, 6, 10, -7, (G_GENO | 2),
X	  { { AT_BITE, AD_SLEE, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_SILENT, MZ_TINY,
X	  M1_FLY | M1_POIS | M1_POIS_RES | M1_SLEE_RES, M2_STALK, C(GREEN) },
X	{ "lemure", S_IMP, 3, 3, 7, 0, -7,
X	  (G_HELL | G_GENO | G_LGROUP | G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_SILENT, MZ_MEDIUM, M1_POIS | M1_SLEE_RES | M1_REGEN,
X	  M2_HOSTILE | M2_WANDER | M2_STALK, C(BROWN) },
X	{ "imp", S_IMP, 3, 12, 2, 20, -7, (G_GENO | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  1, 10, 0, MS_CUSS, MZ_TINY, M1_REGEN, M2_WANDER | M2_STALK, C(RED) },
X	{ "quasit", S_IMP, 3, 15, 2, 20, -7, (G_GENO | 2),
X	  { { AT_CLAW, AD_DRDX, 1, 2 }, { AT_CLAW, AD_DRDX, 1, 2 },
X	    { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_SILENT, MZ_SMALL,
X	  M1_POIS_RES | M1_REGEN, M2_STALK, C(BLUE) },
X	{ "tengu", S_IMP, 6, 13, 5, 30, 7, (G_GENO | 3),
X	  { { AT_BITE, AD_PHYS, 1, 7 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 300, 0, MS_SQAWK, MZ_SMALL,
X	  M1_POIS_RES | M1_TPORT | M1_TPORT_CONTROL, M2_STALK, C(CYAN) },
X/*	jellies 	*/
X	{ "blue jelly", S_JELLY, 4, 0, 8, 10, 0, (G_GENO | 2),
X	  { { AT_NONE, AD_COLD, 0, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  2, 20, 0, MS_SILENT, MZ_MEDIUM,
X	  M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_COLD_RES | M1_POIS_RES,
X	  M2_HOSTILE | M2_OMNIVORE, C(BLUE) },
X	{ "spotted jelly", S_JELLY, 5, 0, 8, 10, 0, (G_GENO | 1),
X	  { { AT_NONE, AD_ACID, 0, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  2, 20, 0, MS_SILENT, MZ_MEDIUM,
X	  M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_STON_RES | M1_ACID,
X	  M2_HOSTILE | M2_OMNIVORE, C(GREEN) },
X	{ "ochre jelly", S_JELLY, 6, 3, 8, 20, 0, (G_GENO | 2),
X	  { { AT_ENGL, AD_ACID, 3, 6 }, { AT_NONE, AD_ACID, 0, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  2, 20, 0, MS_SILENT, MZ_MEDIUM,
X	  M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_STON_RES | M1_ACID,
X	  M2_HOSTILE | M2_OMNIVORE, C(BROWN) },
X/*	kobolds 	*/
X	{ "kobold", S_KOBOLD,  0, 6, 7, 0, -2, (G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_ORC, MZ_SMALL, M1_HUMANOID | M1_POIS | M1_COLLECT,
X	  M2_HOSTILE, C(BROWN) },
X	{ "large kobold", S_KOBOLD,  1, 6, 6, 0, -3, (G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  15, 150, 0, MS_ORC, MZ_SMALL, M1_HUMANOID | M1_POIS | M1_COLLECT,
X	  M2_HOSTILE, C(RED) },
X	{ "kobold lord", S_KOBOLD,  2, 6, 5, 0, -4, (G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_ORC, MZ_SMALL, M1_HUMANOID | M1_POIS | M1_COLLECT,
X	  M2_HOSTILE | M2_LORD, C(HI_LORD) },
X	{ "kobold shaman", S_KOBOLD, 1, 6, 6, 10, -4, (G_GENO | 1),
X	  { { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  15, 150, 0, MS_ORC, MZ_SMALL, M1_HUMANOID | M1_POIS | M1_MAGIC,
X	  M2_HOSTILE, C(HI_ZAP) },
X/*	leprechauns	*/
X	{ "leprechaun", S_LEPRECHAUN, 5, 15, 8, 20, 0, (G_GENO | 4),
X	  { { AT_CLAW, AD_SGLD, 1, 2 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 300, 0, MS_LAUGH, MZ_TINY, M1_HUMANOID | M1_TPORT | M1_GREEDY,
X	  M2_HOSTILE, C(GREEN) },
X/*	mimics	*/
X	{ "small mimic", S_MIMIC, 7, 3, 7, 0, 0, (G_GENO | 2),
X	  { { AT_CLAW, AD_PHYS, 3, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_SILENT, MZ_MEDIUM,
X	  M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
X	  M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X	{ "large mimic", S_MIMIC, 8, 3, 7, 10, 0, (G_GENO | 1),
X	  { { AT_CLAW, AD_STCK, 3, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  40, 400, 0, MS_SILENT, MZ_LARGE,
X	  M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(RED) },
X	{ "giant mimic", S_MIMIC, 9, 3, 7, 20, 0, (G_GENO | 1),
X	  { { AT_CLAW, AD_STCK, 3, 6 }, { AT_CLAW, AD_STCK, 3, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  60, 500, 0, MS_SILENT, MZ_LARGE,
X	  M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(HI_LORD) },
X/*	nymphs	*/
X	{ "wood nymph", S_NYMPH, 3, 12, 9, 20, 0, (G_GENO | 2),
X	  { { AT_CLAW, AD_SITM, 0, 0 }, { AT_CLAW, AD_SEDU, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_SEDUCE, MZ_HUMAN,
X	  M1_HUMANOID | M1_TPORT | M1_COLLECT, M2_HOSTILE | M2_FEM, C(GREEN) },
X	{ "water nymph", S_NYMPH, 3, 12, 9, 20, 0, (G_GENO | 2),
X	  { { AT_CLAW, AD_SITM, 0, 0 }, { AT_CLAW, AD_SEDU, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_SEDUCE, MZ_HUMAN,
X	  M1_HUMANOID | M1_TPORT | M1_COLLECT | M1_SWIM,
X	  M2_HOSTILE | M2_FEM, C(BLUE) },
X	{ "mountain nymph", S_NYMPH, 3, 12, 9, 20, 0, (G_GENO | 2),
X	  { { AT_CLAW, AD_SITM, 0, 0 }, { AT_CLAW, AD_SEDU, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_SEDUCE, MZ_HUMAN,
X	  M1_HUMANOID | M1_TPORT | M1_COLLECT, M2_HOSTILE | M2_FEM, C(BROWN) },
X/*	orcs	*/
X	{ "goblin", S_ORC,  0, 6, 6, 0, -3, (G_GENO | 2),
X	  { { AT_WEAP, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_ORC, MZ_SMALL,
X	  M1_HUMANOID | M1_COLLECT, M2_ORC, C(GRAY) },
X	{ "hobgoblin", S_ORC,  1, 9, 6, 0, -4, (G_GENO | 2),
X	  { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_ORC, MZ_HUMAN,
X	  M1_HUMANOID | M1_COLLECT, M2_ORC | M2_STRONG, C(BROWN) },
X	/* "orc" for zombie corpses only; they don't get created at random */
X	{ "orc", S_ORC,  1, 9, 6, 0, -3, (G_GENO | G_NOGEN | G_LGROUP),
X	  { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  15, 150, 0, MS_ORC, MZ_HUMAN,
X	  M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
X	  M2_ORC | M2_HOSTILE | M2_STRONG, C(RED) },
X	{ "hill orc", S_ORC, 2, 9, 6, 0, -4, (G_GENO | G_LGROUP | 2),
X	  { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_ORC, MZ_HUMAN,
X	  M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
X	  M2_ORC | M2_HOSTILE | M2_STRONG, C(YELLOW) },
X#ifdef TOLKIEN
X	{ "Mordor orc", S_ORC, 3, 5, 6, 0, -5, (G_GENO | G_LGROUP | 1),
X	  { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_ORC, MZ_HUMAN,
X	  M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
X	  M2_ORC | M2_HOSTILE | M2_STRONG, C(BLUE) },
X	{ "Uruk-hai", S_ORC, 3, 7, 5, 0, -4, (G_GENO | G_LGROUP | 1),
X	  { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 300, 0, MS_ORC, MZ_HUMAN,
X	  M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
X	  M2_ORC | M2_HOSTILE | M2_STRONG, C(BLACK) },
X#endif
X	{ "orc shaman", S_ORC, 3, 9, 5, 10, -5, (G_GENO | 1),
X	  { { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 300, 0, MS_ORC, MZ_HUMAN,
X	  M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X	  M2_ORC | M2_HOSTILE | M2_STRONG, C(HI_ZAP) },
X	{ "orc-captain", S_ORC, 5, 5, 4, 0, -5, (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_ORC, MZ_HUMAN,
X	  M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
X	  M2_ORC | M2_HOSTILE | M2_STRONG, C(HI_LORD) },
X/*	 piercers	*/
X	{ "rock piercer", S_PIERCER, 3, 1, 3, 0, 0, (G_GENO | 2),
X	  { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 200, 0, MS_SILENT, MZ_SMALL,
X	  M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
X	  M2_HOSTILE | M2_CARNIVORE, C(GRAY) },
X	{ "iron piercer", S_PIERCER, 5, 1, 0, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  40, 300, 0, MS_SILENT, MZ_MEDIUM,
X	  M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
X	  M2_HOSTILE | M2_CARNIVORE, C(CYAN) },
X/*	quadrupeds (generic)	*/
X	{ "rothe", S_QUADRUPED, 2, 9, 7, 0, 0, (G_GENO | G_SGROUP | 4),
X	  { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_BITE, AD_PHYS, 1, 3 },
X	    { AT_BITE, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
X	  M2_HOSTILE | M2_CARNIVORE, C(GRAY) },
X#ifdef TOLKIEN
X	{ "mumakil", S_QUADRUPED, 5, 9, 0, 0, -2, (G_GENO | 1),
X	  { { AT_BUTT, AD_PHYS, 4, 12 }, { AT_BITE, AD_PHYS, 2, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  70, 500, 0, MS_SILENT, MZ_LARGE,
X	  M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(GRAY) },
X#endif
X	{ "leocrotta", S_QUADRUPED, 6, 18, 4, 10, 0, (G_GENO | 2),
X	  { { AT_CLAW, AD_PHYS, 2, 6 }, { AT_BITE, AD_PHYS, 2, 6 },
X	    { AT_CLAW, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_IMITATE, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(RED) },
X	{ "wumpus", S_QUADRUPED, 8, 3, 2, 10, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(CYAN) },
X	{ "titanothere", S_QUADRUPED, 12, 12, 6, 0, 0, (G_GENO | 2),
X	  { { AT_CLAW, AD_PHYS, 2, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  65, 650, 0, MS_SILENT, MZ_LARGE,
X	  M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(GRAY) },
X	{ "baluchitherium", S_QUADRUPED, 14, 12, 5, 0, 0, (G_GENO | 2),
X	  { { AT_CLAW, AD_PHYS, 5, 4 }, { AT_CLAW, AD_PHYS, 5, 4 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  80, 800, 0, MS_SILENT, MZ_LARGE,
X	  M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS,
X	  M2_HOSTILE | M2_STRONG | M2_HERBIVORE, C(GRAY) },
X/*	rodents 	*/
X	{ "sewer rat",	S_RODENT, 0, 12, 7, 0, 0, (G_GENO | G_SGROUP | 1),
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(BROWN) },
X	{ "giant rat",	S_RODENT, 1, 10, 7, 0, 0, (G_GENO | G_SGROUP | 2),
X	  { { AT_BITE, AD_PHYS, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  3, 30, 0, MS_SQEEK, MZ_TINY, M1_ANIMAL | M1_NOHANDS,
X	  M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X	{ "rabid rat", S_RODENT, 2, 12, 6, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_DRCO, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  3, 10, 0, MS_SQEEK, MZ_TINY, M1_ANIMAL | M1_NOHANDS | M1_POIS,
X	  M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X	{ "ratwere", S_RODENT, 2, 12, 6, 10, -7, G_NOGEN | G_NOCORPSE,
X	  { { AT_BITE, AD_WERE, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  3, 30, 0, MS_SQEEK, MZ_TINY, M1_NOHANDS | M1_NOPOLY |
X	  M1_POIS | M1_REGEN, M2_WERE | M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X	{ "rock mole", S_RODENT, 3, 3, 0, 20, 0, (G_GENO | 2),
X	  { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  3, 30, 0, MS_SILENT, MZ_SMALL,
X	  M1_TUNNEL | M1_ANIMAL | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_COLLECT, M2_HOSTILE | M2_METALLIVORE, C(GRAY) },
X/*	spiders and scorpions	*/
X	{ "cave spider", S_SPIDER, 1, 12, 3, 0, 0, (G_GENO | G_SGROUP | 2),
X	  { { AT_BITE, AD_PHYS, 1, 2 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  5, 50, 0, MS_SILENT, MZ_TINY,
X	  M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_POIS_RES,
X	  M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(GRAY) },
X	{ "scorpion", S_SPIDER, 5, 15, 3, 0, 0, (G_GENO | 2),
X	  { { AT_CLAW, AD_PHYS, 1, 2 }, { AT_CLAW, AD_PHYS, 1, 2 },
X	    { AT_STNG, AD_DRST, 1, 4 }, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_SILENT, MZ_SMALL,
X	  M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_POIS,
X	  M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(RED) },
X	{ "giant spider", S_SPIDER, 5, 15, 4, 0, 0, (G_GENO | 1),
X	  { { AT_BITE, AD_DRST, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_SILENT, MZ_LARGE,
X	  M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_EGGS, C(MAGENTA) },
X/*	trappers, lurkers, &c.	*/
X	{ "lurker above", S_TRAPPER, 10, 3, 3, 0, 0, (G_GENO | 2),
X	  { { AT_ENGL, AD_DGST, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  40, 350, 0, MS_SILENT, MZ_HUGE,
X	  M1_HIDE | M1_FLY | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
X	  M2_HOSTILE | M2_STALK | M2_STRONG | M2_CARNIVORE, C(GRAY) },
X	{ "trapper", S_TRAPPER, 12, 3, 3, 0, 0, (G_GENO | 2),
X	  { { AT_ENGL, AD_DGST, 1, 10 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  40, 350, 0, MS_SILENT, MZ_HUGE,
X	  M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
X	  M2_HOSTILE | M2_STALK | M2_STRONG | M2_CARNIVORE, C(GREEN) },
X/*	unicorns	*/
X	{ "white unicorn", S_UNICORN, 4, 24, 2, 70, 7, (G_GENO | 2),
X	  { { AT_BUTT, AD_PHYS, 1, 12 }, { AT_KICK, AD_PHYS, 1, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 300, 0, MS_NEIGH, MZ_LARGE, M1_NOHANDS | M1_POIS_RES | M1_JEWELS,
X	  M2_WANDER | M2_STRONG | M2_HERBIVORE, C(WHITE) },
X	{ "gray unicorn", S_UNICORN, 4, 24, 2, 70, 0, (G_GENO | 1),
X	  { { AT_BUTT, AD_PHYS, 1, 12 }, { AT_KICK, AD_PHYS, 1, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 300, 0, MS_NEIGH, MZ_LARGE, M1_NOHANDS | M1_POIS_RES | M1_JEWELS,
X	  M2_WANDER | M2_STRONG | M2_HERBIVORE, C(GRAY) },
X	{ "black unicorn", S_UNICORN, 4, 24, 2, 70, -7, (G_GENO | 1),
X	  { { AT_BUTT, AD_PHYS, 1, 12 }, { AT_KICK, AD_PHYS, 1, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 300, 0, MS_NEIGH, MZ_LARGE, M1_NOHANDS | M1_POIS_RES | M1_JEWELS,
X	  M2_WANDER | M2_STRONG | M2_HERBIVORE, C(BLACK) },
X/*	vortices	*/
X	{ "fog cloud",	S_VORTEX, 3,  1, 0, 0, 0, (G_GENO | G_NOCORPSE | 2),
X	  { { AT_ENGL, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  10, 0, 0, MS_SILENT, MZ_HUGE,
X	  M1_FLY | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES,
X	  M2_HOSTILE, C(GRAY) },
X	{ "dust vortex", S_VORTEX, 4, 20, 2, 30, 0, (G_GENO | G_NOCORPSE | 2),
X	  { { AT_ENGL, AD_BLND, 2, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 0, 0, MS_SILENT, MZ_HUGE,
X	  M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES, M2_HOSTILE, C(BROWN) },
X	{ "energy vortex", S_VORTEX, 6, 20, 2, 30, 0, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_ENGL, AD_ELEC, 1, 6 }, { AT_ENGL, AD_DREN, 0, 0 },
X	    { AT_NONE, AD_ELEC, 0, 4 }, NO_ATTK, NO_ATTK },
X	  20, 0, 0, MS_SILENT, MZ_HUGE,
X	  M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_ELEC_RES,
X	  M2_HOSTILE, C(HI_ZAP) },
X	{ "ice vortex", S_VORTEX, 5, 20, 2, 30, 0, (G_GENO | G_NOCORPSE | 1),
X	  { { AT_ENGL, AD_COLD, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 0, 0, MS_SILENT, MZ_HUGE,
X	  M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_COLD_RES,
X	  M2_HOSTILE, C(CYAN) },
X	{ "steam vortex", S_VORTEX, 7, 22, 2, 30, 0,
X	  (G_HELL | G_GENO | G_NOCORPSE | 2),
X	  { { AT_ENGL, AD_FIRE, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 0, 0, MS_SILENT, MZ_HUGE,
X	  M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_FIRE_RES,
X	  M2_HOSTILE, C(BLUE) },
X	{ "fire vortex", S_VORTEX, 8, 22, 2, 30, 0,
X	  (G_HELL | G_GENO | G_NOCORPSE | 1),
X	  { { AT_ENGL, AD_FIRE, 1, 10 }, { AT_NONE, AD_FIRE, 0, 4 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 0, 0, MS_SILENT, MZ_HUGE,
X	  M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_FIRE_RES,
X	  M2_HOSTILE, C(YELLOW) },
X/*	worms	*/
X#ifdef WORM
X	{ "baby long worm", S_WORM, 8, 3, 5, 0, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  25, 250, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_SLITHY | M1_NOLIMBS,
X	  M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
X#endif
X	{ "baby purple worm", S_WORM, 8, 3, 5, 0, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  25, 250, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_SLITHY | M1_NOLIMBS,
X	  M2_HOSTILE | M2_CARNIVORE, C(MAGENTA) },
X#ifdef WORM
X	{ "long worm", S_WORM, 8, 3, 5, 10, 0, (G_GENO | 2),
X	  { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_SILENT, MZ_GIGANTIC,
X	  M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_NOPOLY,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
X	  C(BROWN) },
X#endif
X	{ "purple worm", S_WORM, 15, 9, 6, 20, 0, (G_GENO | 2),
X	  { { AT_BITE, AD_PHYS, 2, 8 }, { AT_ENGL, AD_DGST, 1, 10 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 70, 700, 0, MS_SILENT, MZ_GIGANTIC,
X	  M1_ANIMAL | M1_SLITHY | M1_NOLIMBS,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
X	  C(MAGENTA) },
X/*	xan, &c.	*/
X	{ "grid bug", S_XAN, 0, 12, 9, 0, 0,
X	  (G_GENO | G_SGROUP | G_NOCORPSE | 3),
X	  { { AT_BITE, AD_ELEC, 1, 1 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  5, 50, 0, MS_BUZZ, MZ_TINY, M1_ANIMAL | M1_ELEC_RES, M2_HOSTILE,
X	  C(MAGENTA) },
X	{ "xan", S_XAN, 7, 18, -4, 0, 0, (G_GENO | 3),
X	  { { AT_STNG, AD_LEGS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  30, 300, 0, MS_BUZZ, MZ_TINY, M1_FLY | M1_ANIMAL | M1_NOHANDS |
X	  M1_POIS | M1_POIS_RES, M2_HOSTILE, C(RED) },
X/*	yellow light	*/
X	{ "yellow light", S_YLIGHT,  3, 15, 0, 0, 0, (G_GENO | 4),
X	  { { AT_EXPL, AD_BLND, 10, 20 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  1, 10, 0, MS_SILENT, MZ_SMALL,
X	  M1_FLY | M1_NOLIMBS, M2_HOSTILE, C(BRIGHT|YELLOW) },
X/*	zruty	*/
X	{ "zruty", S_ZRUTY, 9, 8, 3, 0, 0, (G_GENO | 2),
X	  { { AT_CLAW, AD_PHYS, 3, 4 }, { AT_CLAW, AD_PHYS, 3, 4 },
X	    { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK },
X	  60, 600, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_HUMANOID,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(BROWN) },
X/*	Apes	*/
X	{ "ape", S_APE, 4, 12, 6, 0, 0, (G_GENO | G_SGROUP | 2),
X	  { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_CLAW, AD_PHYS, 1, 3 },
X	    { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_GROWL, MZ_LARGE, M1_ANIMAL | M1_HUMANOID,
X	  M2_STRONG | M2_CARNIVORE, C(BROWN) },
X	{ "carnivorous ape", S_APE, 5, 12, 6, 0, 0, (G_GENO | 1),
X	  { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
X	    { AT_HUGS, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK },
X	  55, 550, 0, MS_GROWL, MZ_LARGE, M1_ANIMAL | M1_HUMANOID,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(BROWN) },
X/*	Bats	*/
X	{ "bat", S_BAT, 0, 22, 8, 0, 0, (G_GENO | G_SGROUP | 1),
X	  { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  2, 20, 0, MS_SQEEK, MZ_TINY, M1_FLY | M1_ANIMAL | M1_NOHANDS,
X	  M2_WANDER | M2_CARNIVORE, C(BROWN) },
X	{ "giant bat", S_BAT, 2, 22, 7, 0, 0, (G_GENO | 2),
X	  { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  3, 30, 0, MS_SQEEK, MZ_MEDIUM, M1_FLY | M1_ANIMAL | M1_NOHANDS,
X	  M2_WANDER | M2_HOSTILE | M2_CARNIVORE, C(RED) },
X	{ "vampire bat", S_BAT, 5, 20, 6, 0, 0, (G_GENO | 2),
X	  { { AT_BITE, AD_PHYS, 1, 6 }, { AT_BITE, AD_DRST, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  3, 20, 0, MS_SQEEK, MZ_TINY,
X	  M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_REGEN,
X	  M2_UNDEAD | M2_HOSTILE, C(BLACK) },
X/*	Centaurs	*/
X	{ "plains centaur", S_CENTAUR, 4, 18, 4, 0, 0, (G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 1, 6 }, { AT_KICK, AD_PHYS, 1, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK},
X	  50, 500, 0, MS_SILENT, MZ_LARGE, M1_COLLECT | M1_GREEDY, M2_STRONG,
X	  C(BROWN)  },
X	{ "forest centaur", S_CENTAUR, 5, 18, 3, 10, -1, (G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 1, 8 }, { AT_KICK, AD_PHYS, 1, 6 },
X	    NO_ATTK, NO_ATTK, NO_ATTK},
X	  55, 600, 0, MS_SILENT, MZ_LARGE, M1_COLLECT | M1_GREEDY, M2_STRONG,
X	  C(GREEN)  },
X	{ "mountain centaur", S_CENTAUR, 6, 20, 2, 10, -3, (G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 1, 10 }, { AT_KICK, AD_PHYS, 1, 6 },
X	    { AT_KICK, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK },
X	  55, 500, 0, MS_SILENT, MZ_LARGE, M1_COLLECT | M1_GREEDY, M2_STRONG,
X	  C(CYAN) },
X/*	Dragons 	*/
X	{ "baby gray dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_ROAR, MZ_HUGE,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(GRAY) },
X	{ "baby red dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_ROAR, MZ_HUGE,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_FIRE_RES,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(RED) },
X	{ "baby white dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_ROAR, MZ_HUGE,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_COLD_RES,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(WHITE) },
X	{ "baby blue dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_ROAR, MZ_HUGE,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_ELEC_RES,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(BLUE) },
X	{ "baby green dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_ROAR, MZ_HUGE,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(GREEN) },
X	{ "baby orange dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_ROAR, MZ_HUGE,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_SLEE_RES,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(ORANGE_COLORED) },
X	{ "baby black dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_ROAR, MZ_HUGE,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(BLACK) },
X	{ "baby yellow dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
X	  { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 500, 0, MS_ROAR, MZ_HUGE,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_ACID | M1_STON_RES,
X	  M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(YELLOW) },
X	{ "gray dragon", S_DRAGON, 10, 9, -1, 20, 4, (G_GENO | 1),
X	  { { AT_BREA, AD_MAGM, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X	  150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_MAGIC | M1_SEE_INVIS,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS, C(GRAY) },
X	{ "red dragon", S_DRAGON, 10, 9, -1, 20, -4, (G_GENO | 1),
X	  { { AT_BREA, AD_FIRE, 6, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X	  150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_MAGIC | M1_SEE_INVIS | M1_FIRE_RES,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS, C(RED) },
X	{ "orange dragon", S_DRAGON, 10, 9, -1, 20, 5, (G_GENO | 1),
X	  { { AT_BREA, AD_SLEE, 4, 25 }, { AT_BITE, AD_PHYS, 3, 8 },
X	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X	  150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_MAGIC | M1_SEE_INVIS | M1_SLEE_RES,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
X	  C(ORANGE_COLORED) },
X	{ "white dragon", S_DRAGON, 10, 9, -1, 20, -5, (G_GENO | 1),
X	  { { AT_BREA, AD_COLD, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X	  150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_MAGIC | M1_SEE_INVIS | M1_COLD_RES,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
X	  C(WHITE) },
X	{ "black dragon", S_DRAGON, 10, 9, -1, 20, -6, (G_GENO | 1),
X	  { { AT_BREA, AD_DISN, 4, 10 }, { AT_BITE, AD_PHYS, 3, 8 },
X	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X	  150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_MAGIC | M1_SEE_INVIS,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
X	  C(BLACK) },
X	{ "blue dragon", S_DRAGON, 10, 9, -1, 20, -7, (G_GENO | 1),
X	  { { AT_BREA, AD_ELEC, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X	  150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_MAGIC | M1_SEE_INVIS | M1_ELEC_RES,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
X	  C(BLUE) },
X	{ "green dragon", S_DRAGON, 10, 9, -1, 20, 6, (G_GENO | 1),
X	  { { AT_BREA, AD_DRST, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X	  150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_MAGIC | M1_SEE_INVIS | M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
X	  C(GREEN) },
X	{ "yellow dragon", S_DRAGON, 10, 9, -1, 20, 7, (G_GENO | 1),
X	  { { AT_BREA, AD_ACID, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X	  150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
X	  M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
X	  M1_MAGIC | M1_SEE_INVIS | M1_ACID | M1_STON_RES,
X	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
X	  C(YELLOW) },
X/*	Elementals	*/
X	{ "air elemental", S_ELEMENTAL, 8, 36, 2, 30, 0, (G_NOCORPSE | 1),
X	  { { AT_ENGL, AD_PHYS, 2, 10 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  5, 0, 0, MS_SILENT, MZ_HUGE,
X	  M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES, M2_STRONG, C(CYAN) },
X	{ "fire elemental", S_ELEMENTAL, 8, 12, 2, 30, 0, (G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_FIRE, 3, 6 }, { AT_NONE, AD_FIRE, 0, 4 },
X	    NO_ATTK, NO_ATTK, NO_ATTK },
X	  5, 0, 0, MS_SILENT, MZ_HUGE,
X	  M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_FIRE_RES,
X	  M2_STRONG, C(YELLOW) },
X	{ "earth elemental", S_ELEMENTAL, 8, 6, 2, 30, 0, (G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 4, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 0, 0, MS_SILENT, MZ_HUGE,
X	  M1_WALLWALK | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_THICK_HIDE |
X	  M1_STON_RES,
X	  M2_STRONG, C(BROWN) },
X	{ "water elemental", S_ELEMENTAL, 8, 6, 2, 30, 0, (G_NOCORPSE | 1),
X	  { { AT_CLAW, AD_PHYS, 5, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  50, 0, 0, MS_SILENT, MZ_HUGE,
X	  M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_SWIM, M2_STRONG, C(BLUE) },
X/*	Fungi	*/
X	{ "violet fungus", S_FUNGUS, 3, 1, 7, 0, 0, (G_GENO | 2),
X	  { { AT_TUCH, AD_PHYS, 1, 4 }, { AT_TUCH, AD_STCK, 0, 0 },
X	    NO_ATTK, NO_ATTK, NO_ATTK }, 10, 100, 0, MS_SILENT, MZ_SMALL,
X	  M1_NOEYES | M1_NOLIMBS | M1_POIS_RES,
X	  M2_HOSTILE | M2_OMNIVORE, C(MAGENTA) },
X	{ "brown mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 1),
X	  { { AT_NONE, AD_COLD, 0, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  5, 30, 0, MS_SILENT, MZ_SMALL,
X	  M1_NOEYES | M1_NOLIMBS | M1_COLD_RES | M1_POIS_RES,
X	  M2_HOSTILE | M2_OMNIVORE, C(BROWN) },
X	{ "yellow mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 2),
X	  { { AT_NONE, AD_STUN, 0, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  5, 30, 0, MS_SILENT, MZ_SMALL,
X	  M1_NOEYES | M1_NOLIMBS | M1_POIS | M1_POIS_RES,
X	  M2_HOSTILE | M2_OMNIVORE, C(YELLOW) },
X	{ "green mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 1),
X	  { { AT_NONE, AD_ACID, 0, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  5, 30, 0, MS_SILENT, MZ_SMALL,
X	  M1_NOEYES | M1_NOLIMBS | M1_ACID | M1_STON_RES,
X	  M2_HOSTILE | M2_OMNIVORE, C(GREEN) },
X	{ "red mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 1),
X	  { { AT_NONE, AD_FIRE, 0, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  5, 30, 0, MS_SILENT, MZ_SMALL,
X	  M1_NOEYES | M1_NOLIMBS | M1_FIRE_RES | M1_POIS_RES,
X	  M2_HOSTILE | M2_OMNIVORE, C(RED) },
X/*	Gnomes	*/
X	{ "gnome", S_GNOME, 1, 6, 5, 4, 0, (G_GENO | G_SGROUP | 1),
X	  { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  10, 100, 0, MS_ORC, MZ_SMALL,
X	  M1_HUMANOID | M1_COLLECT, 0, C(BROWN) },
X	{ "gnome lord", S_GNOME, 3, 8, 4, 4, 0, (G_GENO | 2),
X	  { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  15, 120, 0, MS_ORC, MZ_SMALL,
X	  M1_HUMANOID | M1_COLLECT, M2_LORD, C(BLUE) },
X	{ "gnome king", S_GNOME, 5, 10, 2, 20, 0, (G_GENO | 1),
X	  { { AT_WEAP, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  20, 150, 0, MS_ORC, MZ_SMALL,
X	  M1_HUMANOID | M1_COLLECT, M2_PRINCE, C(HI_LORD) },
X	{ "gnomish wizard", S_GNOME, 3, 10, 4, 10, 0, (G_GENO | 1),
X	  { { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X	  15, 120, 0, MS_ORC, MZ_SMALL,
X	  M1_HUMANOID | M1_MAGIC, 0, C(HI_ZAP) },
X#ifdef SPLITMON_1
X};
X#endif
X#endif /* !SPLITMON_2 */
END_OF_FILE
if test 39815 -ne `wc -c <'src/monst.c1'`; then
    echo shar: \"'src/monst.c1'\" unpacked with wrong size!
fi
# end of 'src/monst.c1'
echo shar: End of archive 25 \(of 30\).
cp /dev/null ark25isdone
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