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