billr@saab.CNA.TEK.COM (Bill Randle) (11/23/89)
Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
Posting-number: Volume 8, Issue 67
Archive-name: NetHack3/Patch6n
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 14 (of 15)."
# Contents: others/Makefile.tcc src/monst.c1
# Wrapped by billr@saab on Wed Nov 22 10:50:21 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'others/Makefile.tcc' -a "${1}" != "-c" ; then
echo shar: clobbering existing file \"'others/Makefile.tcc'\"
fi
echo shar: Extracting \"'others/Makefile.tcc'\" \(15148 characters\)
sed "s/^X//" >'others/Makefile.tcc' <<'END_OF_FILE'
X# SCCS Id: @(#)Makefile.tcc 3.0 89/11/18
X# PC NetHack 3.0 Makefile for Turbo C 2.0
X# Perpetrator: Mike Threepoint, 890707
X
X###
X### Directories
X###
X# makedefs.c hardcodes the include and auxil directories, don't change them.
XOBJ = o
XINCL = ..\include
XAUX = ..\auxil
XSRC = ..\src
XOTHERS = ..\others
X
X
X###
X### Locals
X###
X
X# the name of the game
XGAME = nethack
X
X# the place of the game
XGAMEDIR = \games\$(GAME)
X
X# the filename of the game
XGAMEFILE = $(GAMEDIR)\$(GAME).exe
X
X
X###
X### Compiler
X###
XCC = tcc
X
X# must use Huge model; Large is limited to 64K total global data.
XMODEL = h
X
X# signed chars, jump optimize, strict ANSI, register optimize, no stack frame
XCFLAGS = -c -no -m$(MODEL) -I$(INCL) -K- -O -A -Z -k- -w-pia -w-pro $(WIZARD)
X## Note: Turbo C 2.0's -Z is bugged. If you have weird problems, try -Z-.
X
X# wizardly defines
XWIZARD = -DDEBUG
X
X# linkers
XTLINK = tlink
XLINK = link
X## There is a bug in TLINK and huge model:
X##
X## TLINK 1.0 treated huge like large, with 64K data limit.
X## TLINK 1.1 fixed that, but chokes over huge data segments anyway.
X## TLINK 2.0 links and is smaller than LINK /EXEPACK, but for some
X## reason with too many objects it produces a file that freaks out
X## and hangs the system.
X##
X## Also note:
X##
X## Using /EXEPACK with LINK will greatly reduce the size of the
X## executable (about 50K), it will also greatly increase the memory
X## required to load it (about 20K).
X
XLIBS = $(LIB)\c$(MODEL)
X# no need to link in the floating point library
XC0 = $(LIB)\c0$(MODEL).obj
X
XLFLAGS = /noi /seg:1024
XTLFLAGS = /x/c
X
X# assembler
XASM = tasm
XAFLAGS = /MX
X
X
X###
X### Rules
X###
X# search order
X.SUFFIXES: .exe .obj .c .asm .y .l
X# .c -> .obj
X.c.obj:
X $(CC) $(CFLAGS) -c $<
X# .asm -> .obj
X.asm.obj:
X $(ASM) $< $(AFLAGS);
X# .obj -> .exe (for tlink)
X.obj.exe:
X $(TLINK) $(TLFLAGS) $(C0) $<, $@,, $(LIBS);
X## Note: .y -> .c or .l -> .c rules are missing, because none of the developers
X## had a yacc or lex for the PC to write rules for.
X
X
X###
X### Optional features (see pcconf.h)
X###
X# uncomment the blank definitions if not used
X
X# overlays
X#OVERLAY = $(OBJ)\trampoli.obj ovlmgr.obj
X#OVERLAY_H = $(INCL)\trampoli.h
X#LINK_LIST = $(OVERLAYS)
XOVERLAY =
XOVERLAY_H =
XLINK_LIST = $(HOBJ)
X
X# Fish's TERMLIB termcap library (see the rule below)
X#TERMLIB = $(LIB)\termlib.lib
XTERMLIB =
X
X# high-quality BSD random number generation routines
X#RANDOM = $(OBJ)\random.obj
XRANDOM =
X
X
X###
X### Dependencies
X###
X# nothing below this line should have to be changed
X# other things that must be reconfigured are in config.h and $(TARG)conf.h
X
X# target prefix
XTARG = pc
X
X# object files for makedefs.exe
XMAKEOBJS = $(OBJ)\makedefs.obj $(OBJ)\monst.obj $(OBJ)\objects.obj
X
X# object files for lev_comp.exe
XSPLEVOBJS = $(OBJ)\lev_comp.obj $(OBJ)\lev_lex.obj $(OBJ)\lev_main.obj \
X $(OBJ)\monst.obj $(OBJ)\objects.obj
X
X# object files for termlib.lib
XTERMOBJS = $(OBJ)\tgetent.obj $(OBJ)\tgetflag.obj $(OBJ)\tgetnum.obj \
X $(OBJ)\tgetstr.obj $(OBJ)\tgoto.obj $(OBJ)\tputs.obj \
X $(OBJ)\isdigit.obj $(OBJ)\fgetlr.obj
XTERMLIST = -+ $(OBJ)\tgetent.obj -+ $(OBJ)\tgetflag.obj -+ $(OBJ)\tgetnum.obj \
X -+ $(OBJ)\tgetstr.obj -+ $(OBJ)\tgoto.obj -+ $(OBJ)\tputs.obj \
X -+ $(OBJ)\isdigit.obj -+ $(OBJ)\fgetlr.obj
X
X# alloc.c is completely unnecessary for any PC NetHack executable.
X# panic.c is unnecessary for makedefs.exe and lev_comp.exe.
X# ioctl.c is unnecessary for nethack.exe.
X
XROOT = $(OBJ)\main.obj $(OBJ)\allmain.obj $(OBJ)\termcap.obj \
X $(OBJ)\cmd.obj $(OBJ)\hack.obj $(OBJ)\msdos.obj \
X $(OVERLAY)
X
X# the overlays -- the Microsoft Overlay Linker is limited to 63
X
XOVL01 = $(OBJ)\decl.obj
XOVL02 = $(OBJ)\topl.obj
XOVL03 = $(OBJ)\pri.obj $(OBJ)\prisym.obj
XOVL04 = $(OBJ)\rnd.obj $(RANDOM)
XOVL05 = $(OBJ)\timeout.obj
XOVL06 = $(OBJ)\mon.obj $(OBJ)\exper.obj $(OBJ)\attrib.obj
XOVL07 = $(OBJ)\monst.obj $(OBJ)\mondata.obj
XOVL08 = $(OBJ)\monmove.obj $(OBJ)\track.obj
XOVL09 = $(OBJ)\dog.obj $(OBJ)\dogmove.obj
XOVL10 = $(OBJ)\makemon.obj
XOVL11 = $(OBJ)\do_name.obj $(OBJ)\getline.obj
XOVL12 = $(OBJ)\weapon.obj
XOVL13 = $(OBJ)\wield.obj
XOVL14 = $(OBJ)\invent.obj
XOVL15 = $(OBJ)\objects.obj
XOVL16 = $(OBJ)\mkobj.obj $(OBJ)\o_init.obj
XOVL17 = $(OBJ)\objnam.obj
XOVL18 = $(OBJ)\worn.obj
XOVL19 = $(OBJ)\do_wear.obj
XOVL20 = $(OBJ)\trap.obj
XOVL21 = $(OBJ)\dothrow.obj
XOVL22 = $(OBJ)\dokick.obj
XOVL23 = $(OBJ)\uhitm.obj
XOVL24 = $(OBJ)\mhitu.obj
XOVL25 = $(OBJ)\mcastu.obj
XOVL26 = $(OBJ)\mhitm.obj
XOVL27 = $(OBJ)\mthrowu.obj
XOVL28 = $(OBJ)\steal.obj
XOVL29 = $(OBJ)\priest.obj
XOVL30 = $(OBJ)\vault.obj
XOVL31 = $(OBJ)\shk.obj $(OBJ)\shknam.obj
XOVL32 = $(OBJ)\wizard.obj
XOVL33 = $(OBJ)\worm.obj
XOVL34 = $(OBJ)\were.obj
XOVL35 = $(OBJ)\demon.obj
XOVL36 = $(OBJ)\artifact.obj
XOVL37 = $(OBJ)\music.obj $(OBJ)\dbridge.obj
XOVL38 = $(OBJ)\sit.obj $(OBJ)\fountain.obj
XOVL39 = $(OBJ)\sounds.obj
XOVL40 = $(OBJ)\spell.obj
XOVL41 = $(OBJ)\read.obj
XOVL42 = $(OBJ)\potion.obj
XOVL43 = $(OBJ)\zap.obj
XOVL44 = $(OBJ)\eat.obj $(OBJ)\rumors.obj
XOVL45 = $(OBJ)\do.obj
XOVL46 = $(OBJ)\search.obj
XOVL47 = $(OBJ)\lock.obj
XOVL48 = $(OBJ)\apply.obj
XOVL49 = $(OBJ)\engrave.obj
XOVL50 = $(OBJ)\write.obj
XOVL51 = $(OBJ)\pray.obj
XOVL52 = $(OBJ)\options.obj
XOVL53 = $(OBJ)\pickup.obj
XOVL54 = $(OBJ)\polyself.obj
XOVL55 = $(OBJ)\u_init.obj
XOVL56 = $(OBJ)\extralev.obj
XOVL57 = $(OBJ)\mklev.obj $(OBJ)\mkroom.obj
XOVL58 = $(OBJ)\mkmaze.obj $(OBJ)\sp_lev.obj
XOVL59 = $(OBJ)\restore.obj $(OBJ)\save.obj $(OBJ)\bones.obj
XOVL60 = $(OBJ)\rip.obj $(OBJ)\topten.obj $(OBJ)\end.obj
XOVL61 = $(OBJ)\unix.obj $(OBJ)\tty.obj $(OBJ)\mail.obj
XOVL62 = $(OBJ)\pager.obj
XOVL63 = $(OBJ)\version.obj
X
X# date.h dependencies
XVOBJ = $(ROOT) $(OVL01) $(OVL02) $(OVL03) $(OVL04) $(OVL05) $(OVL06) $(OVL07) \
X $(OVL08) $(OVL09) $(OVL10) $(OVL11) $(OVL12) $(OVL13) $(OVL14) $(OVL15) \
X $(OVL16) $(OVL17) $(OVL18) $(OVL19) $(OVL20) $(OVL21) $(OVL22) $(OVL23) \
X $(OVL24) $(OVL25) $(OVL26) $(OVL27) $(OVL28) $(OVL29) $(OVL30) $(OVL31) \
X $(OVL32) $(OVL33) $(OVL34) $(OVL35) $(OVL36) $(OVL37) $(OVL38) $(OVL39) \
X $(OVL40) $(OVL41) $(OVL42) $(OVL43) $(OVL44) $(OVL45) $(OVL46) $(OVL47) \
X $(OVL48) $(OVL49) $(OVL50) $(OVL51) $(OVL52) $(OVL53) $(OVL54) $(OVL55) \
X $(OVL56) $(OVL57) $(OVL58) $(OVL59) $(OVL60) $(OVL61) $(OVL62)
X
X# nethack.exe dependencies, non-overlay link list
XHOBJ = $(VOBJ) $(OVL63)
X
X# overlay link list
XOVERLAYS = $(ROOT) ($(OVL01)) ($(OVL02)) ($(OVL03)) ($(OVL04)) ($(OVL05)) \
X ($(OVL06)) ($(OVL07)) ($(OVL08)) ($(OVL09)) ($(OVL10)) ($(OVL11)) \
X ($(OVL12)) ($(OVL13)) ($(OVL14)) ($(OVL15)) ($(OVL16)) ($(OVL17)) \
X ($(OVL18)) ($(OVL19)) ($(OVL20)) ($(OVL21)) ($(OVL22)) ($(OVL23)) \
X ($(OVL24)) ($(OVL25)) ($(OVL26)) ($(OVL27)) ($(OVL28)) ($(OVL29)) \
X ($(OVL30)) ($(OVL31)) ($(OVL32)) ($(OVL33)) ($(OVL34)) ($(OVL35)) \
X ($(OVL36)) ($(OVL37)) ($(OVL38)) ($(OVL39)) ($(OVL40)) ($(OVL41)) \
X ($(OVL42)) ($(OVL43)) ($(OVL44)) ($(OVL45)) ($(OVL46)) ($(OVL47)) \
X ($(OVL48)) ($(OVL49)) ($(OVL50)) ($(OVL51)) ($(OVL52)) ($(OVL53)) \
X ($(OVL54)) ($(OVL55)) ($(OVL56)) ($(OVL57)) ($(OVL58)) ($(OVL59)) \
X ($(OVL60)) ($(OVL61)) ($(OVL62)) ($(OVL63))
X
X# header dependencies
X
XPCCONF_H = $(INCL)\$(TARG)conf.h $(INCL)\msdos.h $(INCL)\system.h
XGLOBAL_H = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H)
XCONFIG_H = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H)
XTRAP_H = $(INCL)\trap.h
XPERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h
XYOU_H = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) \
X $(INCL)\mondata.h $(INCL)\monst.h $(INCL)\youprop.h
XDECL_H = $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) \
X $(INCL)\onames.h $(INCL)\pm.h
XHACK_H = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h \
X $(INCL)\mkroom.h $(INCL)\objclass.h $(INCL)\gold.h \
X $(INCL)\trap.h $(INCL)\flag.h $(INCL)\rm.h \
X $(OVERLAY_H)
X
X## extern.h, and decl.h contain only external declarations.
X##
X## If anything in them changes, all other files involving the changed routines
X## should be changed to reflect them. Including them in their respective
X## dependency lists will make sure everything is correct, but causes frequent
X## near-total recompiles. By leaving them out, we allow quicker testing of
X## changes, but we presume the wiz knows to be circumspect.
X
X
X###
X### Main targets
X###
X
X$(GAME): $(GAMEFILE) $(GAMEDIR)\data $(GAMEDIR)\rumors
X
X$(GAMEFILE): $(GAMEDIR) $(OBJ) $(HOBJ) $(TERMLIB) Makefile
X @echo Linking...
X if exist $@ del $@
X $(LINK) $(C0) $(LINK_LIST),$@,,$(LIBS) $(TERMLIB) $(LFLAGS);
X @echo NetHack is up to date.
X
Xall: $(GAME) install
X @echo Done.
X
X$(OBJ):
X mkdir $(OBJ)
X
X$(GAMEDIR):
X mkdir $(GAMEDIR)
X mkdir $(GAMEDIR)\bones
X
X
X###
X### makedefs.exe
X###
X
Xmakedefs.exe: $(MAKEOBJS)
X @$(TLINK) $(TLFLAGS) $(C0) $(MAKEOBJS),$@,,$(LIBS);
X
X$(OBJ)\makedefs.obj: $(INCL)\config.h $(INCL)\permonst.h $(INCL)\objclass.h
X
X
X###
X### makedefs-generated files
X###
X
X# date.h should be remade any time any of the source is modified
X$(INCL)\date.h: makedefs.exe $(VOBJ)
X makedefs -v
X
X$(INCL)\trap.h: makedefs.exe
X makedefs -t
X
X$(INCL)\onames.h: makedefs.exe
X makedefs -o
X
X$(INCL)\pm.h: makedefs.exe
X makedefs -p
X
X$(GAMEDIR)\data: makedefs.exe $(AUX)\data.base
X makedefs -d
X xcopy $(AUX)\data $(GAMEDIR)
X del $(AUX)\data
X
X$(GAMEDIR)\rumors: makedefs.exe $(AUX)\rumors.tru $(AUX)\rumors.fal
X makedefs -r
X xcopy $(AUX)\rumors $(GAMEDIR)
X del $(AUX)\rumors
X
X
X###
X### lev_comp.exe
X###
X
Xlev_comp.exe: $(SPLEVOBJS)
X $(TLINK) $(TLFLAGS) $(C0) $(SPLEVOBJS),$@,,$(LIBS);
X
X## Note: UNIX yacc may generate a line reading "#", which Turbo C 2.0, despite
X## the manual's claims that it should be ignored, treats as an error.
X## You may have to remove such a line to compile lev_comp.c.
X$(OBJ)\lev_comp.obj: $(HACK_H) $(INCL)\sp_lev.h
X $(CC) $(CFLAGS) -A- $*.c
X$(OBJ)\lev_lex.obj: $(INCL)\lev_comp.h $(HACK_H) $(INCL)\sp_lev.h
X$(OBJ)\lev_main.obj: $(HACK_H) $(INCL)\sp_lev.h
X
X# If you have yacc or lex programs, and make any changes,
X# add some .y.c and .l.c rules to your Make.ini.
X#
X#lev_comp.c: lev_comp.y
X#lev_lex.c: lev_comp.l
X
X
X###
X### termlib.lib
X###
X
X#$(TERMLIB): $(TERMOBJS)
X# tlib $(TERMLIB) /C $(TERMLIST);
X
X
X###
X### Secondary targets
X###
X
Xinstall: $(GAMEDIR)\NetHack.cnf $(GAMEDIR)\record $(GAMEDIR)\termcap spec_levs
X xcopy $(AUX)\*. $(GAMEDIR)
X @echo Auxiliary files installed.
X
X$(GAMEDIR)\NetHack.cnf:
X xcopy $(OTHERS)\NetHack.cnf $(GAMEDIR)
X$(GAMEDIR)\record:
X touch $(GAMEDIR)\record
X$(GAMEDIR)\termcap:
X xcopy $(OTHERS)\termcap $(GAMEDIR)
X
Xspec_levs: $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des lev_comp.exe
X lev_comp $(AUX)\castle.des
X lev_comp $(AUX)\endgame.des
X lev_comp $(AUX)\tower.des
X chdir $(AUX)
X xcopy castle $(GAMEDIR)
X del castle
X xcopy endgame $(GAMEDIR)
X del endgame
X xcopy tower? $(GAMEDIR)
X del tower?
X chdir $(SRC)
X @echo Special levels compiled.
X
Xclean:
X del $(OBJ)\*.obj
X rmdir $(OBJ)
X
Xspotless: clean
X del $(INCL)\date.h
X del $(INCL)\onames.h
X del $(INCL)\pm.h
X del makedefs.exe
X if exist lev_comp.exe del lev_comp.exe
X
X
X###
X### Other dependencies
X###
X
X# OS-dependent filenames
X$(OBJ)\main.obj: $(HACK_H) $(TARG)main.c
X $(CC) $(CFLAGS) -o$@ $(TARG)main.c
X
X$(OBJ)\tty.obj: $(HACK_H) $(INCL)\func_tab.h $(TARG)tty.c
X $(CC) $(CFLAGS) -o$@ $(TARG)tty.c
X
X$(OBJ)\unix.obj: $(HACK_H) $(TARG)unix.c
X $(CC) $(CFLAGS) -o$@ $(TARG)unix.c
X
X# GO AHEAD, DELETE THIS LINE
X
X$(OBJ)\allmain.obj: $(HACK_H)
X$(OBJ)\alloc.obj: $(CONFIG_H)
X$(OBJ)\apply.obj: $(HACK_H) $(INCL)\edog.h
X$(OBJ)\artifact.obj: $(HACK_H) $(INCL)\artifact.h
X$(OBJ)\attrib.obj: $(HACK_H)
X$(OBJ)\bones.obj: $(HACK_H)
X$(OBJ)\cmd.obj: $(HACK_H) $(INCL)\func_tab.h
X$(OBJ)\dbridge.obj: $(HACK_H)
X$(OBJ)\decl.obj: $(HACK_H)
X$(OBJ)\demon.obj: $(HACK_H)
X$(OBJ)\do.obj: $(HACK_H)
X$(OBJ)\do_name.obj: $(HACK_H)
X$(OBJ)\do_wear.obj: $(HACK_H)
X$(OBJ)\dog.obj: $(HACK_H) $(INCL)\edog.h
X$(OBJ)\dogmove.obj: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
X$(OBJ)\dokick.obj: $(HACK_H)
X$(OBJ)\dothrow.obj: $(HACK_H)
X$(OBJ)\eat.obj: $(HACK_H)
X$(OBJ)\end.obj: $(HACK_H) $(INCL)\eshk.h
X$(OBJ)\engrave.obj: $(HACK_H)
X$(OBJ)\exper.obj: $(HACK_H)
X$(OBJ)\extralev.obj: $(HACK_H)
X$(OBJ)\fountain.obj: $(HACK_H)
X$(OBJ)\getline.obj: $(HACK_H) $(INCL)\func_tab.h
X$(OBJ)\hack.obj: $(HACK_H)
X$(OBJ)\invent.obj: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
X$(OBJ)\ioctl.obj: $(HACK_H)
X$(OBJ)\lev_comp.obj: $(HACK_H) $(INCL)\sp_lev.h
X$(OBJ)\lev_lex.obj: $(HACK_H) $(INCL)\sp_lev.h $(INCL)\lev_comp.h
X$(OBJ)\lev_main.obj: $(HACK_H) $(INCL)\sp_lev.h
X$(OBJ)\lock.obj: $(HACK_H)
X$(OBJ)\makemon.obj: $(HACK_H)
X$(OBJ)\mail.obj: $(HACK_H)
X$(OBJ)\mcastu.obj: $(HACK_H)
X$(OBJ)\mhitm.obj: $(HACK_H) $(INCL)\artifact.h
X$(OBJ)\mhitu.obj: $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
X$(OBJ)\mklev.obj: $(HACK_H)
X$(OBJ)\mkmaze.obj: $(HACK_H)
X$(OBJ)\mkobj.obj: $(HACK_H)
X$(OBJ)\mkroom.obj: $(HACK_H)
X$(OBJ)\mon.obj: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\wseg.h
X$(OBJ)\mondata.obj: $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h
X$(OBJ)\monmove.obj: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
X$(OBJ)\monst.obj: $(CONFIG_H) $(PERMONST_H) $(INCL)\eshk.h \
X $(INCL)\vault.h $(INCL)\epri.h
X$(OBJ)\msdos.obj: $(HACK_H) msdos.c
X $(CC) $(CFLAGS) -A- $*.c
X# set ANSI only off -- many MS-DOS specific things.
X$(OBJ)\mthrowu.obj: $(HACK_H)
X$(OBJ)\music.obj: $(HACK_H)
X$(OBJ)\o_init.obj: $(HACK_H) $(INCL)\onames.h
X$(OBJ)\objects.obj: $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h \
X $(INCL)\prop.h
X$(OBJ)\objnam.obj: $(HACK_H)
X$(OBJ)\options.obj: $(HACK_H)
X$(OBJ)\pager.obj: $(HACK_H)
X$(OBJ)\panic.obj: $(CONFIG_H)
X$(OBJ)\pickup.obj: $(HACK_H)
X$(OBJ)\polyself.obj: $(HACK_H)
X$(OBJ)\potion.obj: $(HACK_H)
X$(OBJ)\pray.obj: $(HACK_H)
X$(OBJ)\pri.obj: $(HACK_H) $(INCL)\epri.h $(INCL)\termcap.h
X$(OBJ)\priest.obj: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h \
X $(INCL)\epri.h
X$(OBJ)\prisym.obj: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
X$(OBJ)\random.obj:
X$(OBJ)\read.obj: $(HACK_H)
X$(OBJ)\restore.obj: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
X$(OBJ)\rip.obj:
X $(CC) $(CFLAGS) -d- $*.c
X# must not merge strings, or the tombstone lines will overlap
X$(OBJ)\rnd.obj: $(HACK_H)
X$(OBJ)\rumors.obj: $(HACK_H)
X$(OBJ)\save.obj: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
X$(OBJ)\search.obj: $(HACK_H) $(INCL)\artifact.h
X$(OBJ)\shk.obj: $(HACK_H) $(INCL)\eshk.h
X$(OBJ)\shknam.obj: $(HACK_H) $(INCL)\eshk.h
X$(OBJ)\sit.obj: $(HACK_H)
X$(OBJ)\sounds.obj: $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h
X$(OBJ)\sp_lev.obj: $(HACK_H) $(INCL)\sp_lev.h
X$(OBJ)\spell.obj: $(HACK_H)
X$(OBJ)\steal.obj: $(HACK_H)
X$(OBJ)\termcap.obj: $(HACK_H) $(INCL)\termcap.h
X$(OBJ)\timeout.obj: $(HACK_H)
X$(OBJ)\topl.obj: $(HACK_H)
X$(OBJ)\topten.obj: $(HACK_H)
X$(OBJ)\track.obj: $(HACK_H)
X$(OBJ)\trampoli.obj: $(HACK_H)
X$(OBJ)\trap.obj: $(HACK_H) $(INCL)\edog.h $(INCL)\trapname.h
X$(OBJ)\u_init.obj: $(HACK_H)
X$(OBJ)\uhitm.obj: $(HACK_H) $(INCL)\artifact.h
X$(OBJ)\vault.obj: $(HACK_H) $(INCL)\vault.h
X$(OBJ)\version.obj: $(HACK_H) $(INCL)\date.h
X$(OBJ)\weapon.obj: $(HACK_H)
X$(OBJ)\were.obj: $(HACK_H)
X$(OBJ)\wield.obj: $(HACK_H)
X$(OBJ)\wizard.obj: $(HACK_H)
X$(OBJ)\worm.obj: $(HACK_H) $(INCL)\wseg.h
X$(OBJ)\worn.obj: $(HACK_H)
X$(OBJ)\write.obj: $(HACK_H)
X$(OBJ)\zap.obj: $(HACK_H)
END_OF_FILE
if test 15148 -ne `wc -c <'others/Makefile.tcc'`; then
echo shar: \"'others/Makefile.tcc'\" unpacked with wrong size!
fi
# end of 'others/Makefile.tcc'
if test -f 'src/monst.c1' -a "${1}" != "-c" ; then
echo shar: clobbering existing file \"'src/monst.c1'\"
fi
echo shar: Extracting \"'src/monst.c1'\" \(39921 characters\)
sed "s/^X//" >'src/monst.c1' <<'END_OF_FILE'
X/* SCCS Id: @(#)monst.c 3.0 89/11/09
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/* #define MAKEDEFS_C 1 /* define for Macs when compiling makedefs */
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 BLUE
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, M1_HUMANOID | M1_COLLECT,
X M2_HUMAN | M2_STRONG | M2_NEEDPICK, C(HI_MON)
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 described color 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 * 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(MACOS) && !defined(MAKEDEFS_C)
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 | M1_EGGS,
X M2_HOSTILE | M2_CARNIVORE, C(BLACK) },
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_EGGS | M1_POIS | M1_POIS_RES,
X M2_HOSTILE | M2_CARNIVORE, 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_EGGS |
X M1_FIRE_RES, M2_HOSTILE | M2_CARNIVORE, 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 | M1_PRINCE, M2_HOSTILE, 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_NOEYES | M1_NOHANDS | M1_POIS | M1_SLEE_RES | M1_STON_RES,
X M2_WANDER | M2_NOLIMBS | M2_AMORPHOUS, 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, M1_NOEYES | M1_NOHANDS | M1_POIS_RES,
X M2_WANDER | M2_HOSTILE | M2_NOLIMBS, C(WHITE) },
X { "gelatinous cube", S_BLOB, 6, 6, 8, 0, 0, (G_GENO | 2),
X { { AT_TUCH, AD_PLYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X 30, 300, 0, MS_SILENT, MZ_LARGE, M1_NOEYES | M1_NOHANDS |
X M1_FIRE_RES | M1_COLD_RES | M1_ELEC_RES | M1_SLEE_RES,
X M2_WANDER | M2_HOSTILE | M2_NOLIMBS | 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 NO_ATTK, NO_ATTK, NO_ATTK }, 3, 30, 0, MS_HISS, MZ_SMALL,
X M1_ANIMAL | M1_NOHANDS | M1_EGGS | M1_POIS_RES | M1_STON_RES,
X M2_HOSTILE, 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, 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, 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, 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_WERE | M1_NOHANDS | M1_POIS | M1_REGEN,
X 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_WERE | M1_NOHANDS | M1_POIS | M1_REGEN,
X 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(WHITE) },
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, 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, M1_FLY | M1_NOHANDS,
X M2_HOSTILE | M2_NOLIMBS, 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, M1_FLY | M1_NOHANDS | M1_COLD_RES,
X M2_HOSTILE | M2_NOLIMBS, 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, 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, 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, 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(YELLOW) },
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 | M1_STALK, 0, 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(HI_MON) },
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_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
X M2_DWARF | M2_TUNNEL | M2_NEEDPICK | M2_STRONG, C(HI_MON)},
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_HUMANOID | M1_LORD | M1_GREEDY | M1_JEWELS | M1_COLLECT,
X M2_DWARF | M2_TUNNEL | M2_NEEDPICK | M2_STRONG, C(HI_MON) },
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_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT | M1_PRINCE,
X M2_DWARF | M2_TUNNEL | M2_NEEDPICK | M2_STRONG, 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_JEER, MZ_SMALL, M1_POIS | M1_STALK, 0, 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, M1_FLY | M1_POIS |
X M1_POIS_RES | M1_SLEE_RES | M1_STALK, 0, 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 M1_STALK, M2_HOSTILE | M2_WANDER, C(RED) },
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_JEER, MZ_TINY, M1_REGEN | M1_STALK, M2_WANDER, 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 | M1_STALK, 0, C(RED) },
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 | M1_STALK, 0, 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_NOEYES | M1_NOHANDS | M1_POIS_RES | M1_COLD_RES,
X M2_HOSTILE | M2_NOLIMBS | M2_OMNIVORE | M2_AMORPHOUS, 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_NOEYES | M1_NOHANDS | M1_POIS | M1_STON_RES,
X M2_HOSTILE | M2_NOLIMBS | M2_OMNIVORE | M2_AMORPHOUS, C(GREEN) },
X { "ochre jelly", S_JELLY, 6, 3, 8, 20, 0, (G_GENO | 2),
X { { AT_ENGL, AD_ACID, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X 2, 20, 0, MS_SILENT, MZ_MEDIUM,
X M1_NOEYES | M1_NOHANDS | M1_POIS | M1_STON_RES,
X M2_HOSTILE | M2_OMNIVORE | M2_NOLIMBS | M2_AMORPHOUS, C(HI_GOLD)},
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(BROWN) },
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 M1_LORD, M2_HOSTILE, 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(BROWN) },
X/* leprechauns */
X { "leprechaun", S_LEPRECHAUN, 5, 15, 8, 20, 0, (G_GENO | 4),
X { { AT_CLAW, AD_PHYS, 1, 2 }, { AT_CLAW, AD_SGLD, 0, 0 },
X 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, M1_ANIMAL | M1_NOEYES | M1_NOHANDS,
X M2_HOSTILE | M2_HIDE | M2_NOLIMBS | 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, M1_ANIMAL | M1_NOEYES | M1_NOHANDS,
X M2_HOSTILE | M2_STRONG | M2_HIDE | M2_NOLIMBS | M2_CARNIVORE,
X C(BROWN) },
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, M1_ANIMAL | M1_NOEYES | M1_NOHANDS,
X M2_HOSTILE | M2_STRONG | M2_HIDE | M2_NOLIMBS | M2_CARNIVORE,
X C(BROWN) },
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 | M1_FEM, M2_HOSTILE, 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_FEM | M1_SWIM,
X M2_HOSTILE, 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 | M1_FEM, M2_HOSTILE, 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(YELLOW) },
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(RED) },
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(BROWN) },
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(BROWN) },
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(BROWN) },
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(BROWN) },
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(BROWN) },
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(BROWN) },
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, M1_ANIMAL | M1_NOEYES | M1_NOHANDS,
X M2_HOSTILE | M2_HIDE | M2_NOLIMBS | 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, M1_ANIMAL | M1_NOEYES | M1_NOHANDS,
X M2_HOSTILE | M2_HIDE | M2_NOLIMBS | M2_CARNIVORE, C(GRAY) },
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(WHITE) },
X { "osquip", S_QUADRUPED, 3, 12, 7, 0, 0, (G_GENO | G_SGROUP | 3),
X { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X 20, 200, 0, MS_SQEEK, MZ_SMALL, M1_ANIMAL | M1_NOHANDS,
X M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
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, M1_ANIMAL | M1_NOHANDS,
X M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_THICK_HIDE, 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(HI_MON) },
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, M1_ANIMAL | M1_NOHANDS,
X M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_THICK_HIDE, 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, M1_ANIMAL | M1_NOHANDS,
X M2_HOSTILE | M2_STRONG | M2_HERBIVORE | M2_THICK_HIDE, 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_WERE | M1_NOHANDS | M1_NOPOLY |
X M1_POIS | M1_REGEN, 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, M1_ANIMAL | M1_NOHANDS |
X M1_GREEDY | M1_JEWELS | M1_COLLECT, M2_HOSTILE | M2_TUNNEL, C(BROWN)},
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_ANIMAL | M1_NOHANDS | M1_EGGS | M1_POIS_RES,
X M2_HOSTILE | M2_CONCEAL | M2_CARNIVORE, C(WHITE) },
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_ANIMAL | M1_NOHANDS | M1_EGGS | M1_POIS,
X M2_HOSTILE | M2_CONCEAL | M2_CARNIVORE, 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_EGGS | M1_POIS | M1_POIS_RES,
X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, 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_ANIMAL | M1_NOEYES | M1_NOHANDS | M1_STALK | M1_FLY,
X M2_HOSTILE | M2_STRONG | M2_NOLIMBS | 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_ANIMAL | M1_NOEYES | M1_NOHANDS | M1_STALK,
X M2_HOSTILE | M2_STRONG | M2_NOLIMBS | M2_CARNIVORE, C(GRAY) },
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_NOEYES | M1_NOHANDS | M1_POIS_RES,
X M2_HOSTILE | M2_NOLIMBS, 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_NOHANDS | M1_POIS_RES,
X M2_HOSTILE | M2_NOLIMBS, 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 NO_ATTK, NO_ATTK, NO_ATTK }, 20, 0, 0, MS_SILENT, MZ_HUGE,
X M1_FLY | M1_NOEYES | M1_NOHANDS | M1_POIS_RES | M1_ELEC_RES,
X M2_HOSTILE | M2_NOLIMBS, C(BRIGHT|BLUE) },
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_NOHANDS | M1_POIS_RES | M1_COLD_RES,
X M2_HOSTILE | M2_NOLIMBS, 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_NOHANDS | M1_POIS_RES | M1_FIRE_RES,
X M2_HOSTILE | M2_NOLIMBS, 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 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X 30, 0, 0, MS_SILENT, MZ_HUGE,
X M1_FLY | M1_NOEYES | M1_NOHANDS | M1_POIS_RES | M1_FIRE_RES,
X M2_HOSTILE | M2_NOLIMBS, 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_NOHANDS,
X M2_HOSTILE | M2_NOLIMBS | 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_NOHANDS,
X M2_HOSTILE | M2_NOLIMBS | 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_NOHANDS | M1_NOPOLY | M1_EGGS,
X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_NOLIMBS | M2_CARNIVORE,
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_NOHANDS | M1_EGGS,
X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_NOLIMBS | M2_CARNIVORE,
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, M1_FLY | M1_NOHANDS,
X M2_HOSTILE | M2_NOLIMBS, 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(BLACK) },
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(BLACK) },
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, M1_FLY | M1_ANIMAL | M1_UNDEAD |
X M1_NOHANDS | M1_POIS | M1_REGEN, 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(BROWN)},
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_NOHANDS | M1_GREEDY | M1_JEWELS,
X M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_THICK_HIDE, 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_NOHANDS | M1_GREEDY | M1_JEWELS | M1_FIRE_RES,
X M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_THICK_HIDE, 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_NOHANDS | M1_GREEDY | M1_JEWELS | M1_COLD_RES,
X M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_THICK_HIDE, 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_NOHANDS | M1_GREEDY | M1_JEWELS | M1_ELEC_RES,
X M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_THICK_HIDE, 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_NOHANDS | M1_GREEDY | M1_JEWELS | M1_POIS |
X M1_POIS_RES, M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_THICK_HIDE,
X 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_NOHANDS | M1_GREEDY | M1_JEWELS | M1_SLEE_RES,
X M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_THICK_HIDE,
X 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_NOHANDS | M1_GREEDY | M1_JEWELS,
X M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_THICK_HIDE, 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_NOHANDS | M1_GREEDY | M1_JEWELS,
X M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_THICK_HIDE, 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, M1_FLY | M1_SEE_INVIS |
X M1_NOHANDS | M1_EGGS | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE,
X 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, M1_FLY | M1_SEE_INVIS |
X M1_NOHANDS | M1_EGGS | M1_FIRE_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE,
X 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, M1_FLY | M1_SEE_INVIS |
X M1_NOHANDS | M1_EGGS | M1_SLEE_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE,
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, M1_FLY | M1_SEE_INVIS |
X M1_NOHANDS | M1_EGGS | M1_COLD_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE,
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, M1_FLY | M1_SEE_INVIS |
X M1_NOHANDS | M1_EGGS | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE,
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, M1_FLY | M1_SEE_INVIS |
X M1_NOHANDS | M1_EGGS | M1_ELEC_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE,
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_SEE_INVIS | M1_NOHANDS | M1_EGGS | M1_POIS | M1_POIS_RES |
X M1_GREEDY | M1_JEWELS | M1_MAGIC,
X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE,
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_SEE_INVIS | M1_NOHANDS | M1_EGGS | M1_POIS | M1_STON_RES |
X M1_GREEDY | M1_JEWELS | M1_MAGIC,
X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE,
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_NOEYES | M1_NOHANDS | M1_POIS_RES | M1_FLY,
X M2_STRONG | M2_NOLIMBS, C(CYAN) },
X { "fire elemental", S_ELEMENTAL, 8, 12, 2, 30, 0, (G_NOCORPSE | 1),
X { { AT_CLAW, AD_FIRE, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
X 5, 0, 0, MS_SILENT, MZ_HUGE,
X M1_NOEYES | M1_NOHANDS | M1_POIS_RES | M1_FLY | M1_FIRE_RES,
X M2_STRONG | M2_NOLIMBS, 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_NOHANDS | M1_POIS_RES |
X M1_STON_RES, M2_STRONG | M2_NOLIMBS | M2_THICK_HIDE, 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_NOHANDS | M1_POIS_RES | M1_SWIM,
X M2_STRONG | M2_NOLIMBS, 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_NOHANDS | M1_POIS_RES,
X M2_HOSTILE | M2_NOLIMBS | 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, M1_NOEYES | M1_NOHANDS |
X M1_POIS_RES | M1_COLD_RES, M2_HOSTILE | M2_NOLIMBS | M2_OMNIVORE,
X 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, M1_NOEYES | M1_NOHANDS |
X M1_POIS | M1_POIS_RES, M2_HOSTILE | M2_NOLIMBS | M2_OMNIVORE,
X 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, M1_NOEYES | M1_NOHANDS |
X M1_POIS | M1_STON_RES, M2_HOSTILE | M2_NOLIMBS | M2_OMNIVORE,
X 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, M1_NOEYES | M1_NOHANDS |
X M1_POIS_RES | M1_FIRE_RES, M2_HOSTILE | M2_NOLIMBS | M2_OMNIVORE,
X 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(HI_MON) },
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 | M1_LORD, 0, C(HI_MON) },
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 | M1_PRINCE, 0, 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_MON) },
X#ifdef SPLITMON_1
X};
X#endif
X#endif /* !SPLITMON_2 */
END_OF_FILE
if test 39921 -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 14 \(of 15\).
cp /dev/null ark14isdone
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