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

billr@saab.CNA.TEK.COM (Bill Randle) (08/18/89)

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

	[Here's the second set of official patches to NetHack3
	 (in 7 parts). See the file UPDATE2 for the list of changes
	 that have been made. Unpack this and all the other parts
	 in your top level NetHack directory and execute the
	 'do_patch2.sh' shell script (if you're on Unix) to auto-
	 matically apply the patches using 'patch'.  If Patch2b
	 unpacked with two control characters missing they are
	 control-G's at the end of the two "echo " statements in
	 Makefile.tcc.  -br]

#! /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 1 (of 7)."
# Contents:  UPDATE2 do_patch2.sh patch02a
# Wrapped by billr@saab on Fri Aug 18 08:32:41 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'UPDATE2' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'UPDATE2'\"
else
echo shar: Extracting \"'UPDATE2'\" \(2893 characters\)
sed "s/^X//" >'UPDATE2' <<'END_OF_FILE'
X--------------
XUPDATE2
X--------------
XThis patch kit upgrades NetHack to version 3.0f.  The kit should
Xbe applied to the original release, patched with patchlevel 1.
X
XMany of the diffs included here are bugfixes to bugs reported to 
Xus by players.  We are very grateful for these reports.
X  
XThere were questions about our netnews usage.  We use the good
Xoffices of comp.sources.games because, unlike rec.games.hack, it 
Xis archived.  It is the only way to secure the availability of 
Xthe source code and the official patches for future users.  For 
Xthis reason, comp.sources.games will remain the only place where 
Xthe official NetHack patches are posted.
X
XOccasionally we may see a need to post a semi-official stopgap patch 
Xsuch as the one for the 'killer' bug posted just after Patch 1 in
Xrec.games.hack and in comp.sources.games.bugs.  These stopgap patches
Xwill always be included in the next official patch kit.  The 'killer'
Xbugfix is, indeed, included here.
X
XThe above two newsgroups often contain many bug reports and unofficial
Xfixes.  We read these groups, and thus we get the reports.  But it
Xwill be helpful if you mailed nethack-bugs a copy of your posting.
XIf your site gets these newsgroups, you may want to check them for 
Xmentions of bugs before reporting the same bug to nethack-bugs (or
Xto the same newsgroups, for that matter -- unless you have additional 
Xinformation).
X
X
X
XNow, on to the main changes.
X
XObjects were rearranged slightly, so the cautious may want to throw 
Xout saved games and bones files.
X
XTimo Hakulinen provided an OS/2 port.
X
XVarious people convinced various OS versions to be better about 
Xsensing the available screen size at start-up.
X
XThe game tries now to be smarter about guessing defaults for players 
Xwho don't set environment variables of interest to NetHack.
X
XEric Raymond extended the PC color code slightly to allow its use by 
XSVR3.2 machines with color information from terminfo, and also allowed 
Xmany extended commands to be available via a meta key under SYSV.
X
XPaul Gyugyi provided a better makefile for MicroSoft C.
X
XThe MSDOS terminal problems, including always needing TERMLIB, are
X(hopefully) fixed.
X
XThe '/' command now allows multiple identifications, and more things 
Xmay be usefully identified.
X
XMore code was shuffled and rewritten to satisfy compiler and preprocessor
Xconstraints.
X
XStarving dogs again eat people food.
X
XCredit cards can no longer lock things.
X
XDoors have been toned down slightly, but are in no danger of being removed.
X
XThe gods' ranking of player troubles was revised.
X
XWizards can no longer start with certain useless items.
X
XVarious code, including game ending, seduction, and monster attack, is
Xconsiderably cleaner.
X
XAbove all: scores of bugs were fixed.
X
X
XPlease continue testing the game and reporting to nethack-bugs.  Your
Xresponse has been wonderful, and it has made this effort worth while.
X
X
END_OF_FILE
if test 2893 -ne `wc -c <'UPDATE2'`; then
    echo shar: \"'UPDATE2'\" unpacked with wrong size!
fi
# end of 'UPDATE2'
fi
if test -f 'do_patch2.sh' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'do_patch2.sh'\"
else
echo shar: Extracting \"'do_patch2.sh'\" \(496 characters\)
sed "s/^X//" >'do_patch2.sh' <<'END_OF_FILE'
X#! /bin/sh
X# script to call patch to apply diff files
X# make sure all of the patch files (and this file) are in your top level
X# NetHack directory
X#
Xecho "applying patch2a"
Xpatch -p <patch02a
Xecho "applying patch2b"
Xpatch -p <patch02b
Xecho "applying patch2c"
Xpatch -p <patch02c
Xecho "applying patch2d"
Xpatch -p <patch02d
Xecho "applying patch2e"
Xpatch -p <patch02e
Xecho "applying patch2f"
Xpatch -p <patch02f
Xecho "applying patch2g"
Xpatch -p <patch02g
Xecho "all patches applied, check for rejects"
END_OF_FILE
if test 496 -ne `wc -c <'do_patch2.sh'`; then
    echo shar: \"'do_patch2.sh'\" unpacked with wrong size!
fi
chmod +x 'do_patch2.sh'
# end of 'do_patch2.sh'
fi
if test -f 'patch02a' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patch02a'\"
else
echo shar: Extracting \"'patch02a'\" \(47487 characters\)
sed "s/^X//" >'patch02a' <<'END_OF_FILE'
X*** include/Old/patchlevel.h	Wed Aug 16 14:09:33 1989
X--- include/patchlevel.h	Wed Aug 16 14:03:09 1989
X***************
X*** 9,12 ****
X   *  add more instructions for new environments and things commonly done wrong
X   */
X  
X! #define PATCHLEVEL	1
X--- 9,23 ----
X   *  add more instructions for new environments and things commonly done wrong
X   */
X  
X! /*
X!  *  Patch 2, August 16, 1989
X!  *  add support for OS/2 (courtesy Timo Hakulinen)
X!  *  add a better makefile for MicroSoft C (courtesy Paul Gyugyi)
X!  *  more accomodation of compilers and preprocessors
X!  *  add better screen-size sensing
X!  *  expand color use for PCs and introduce it for SVR3 UNIX machines
X!  *  extend '/' to multiple identifications
X!  *  fix various minor bugs, and do further code cleaning
X!  */
X! 
X! #define PATCHLEVEL	2
X*** ./Old/Files	Wed Aug 16 11:58:20 1989
X--- ./Files	Wed Aug 16 10:25:13 1989
X***************
X*** 27,34 ****
X  
X  others:
X  (files for MSDOS version)
X! Make.ini        Makefile.pc     Makefile.tcc    Maketcc.ini     NetHack.cnf
X! termcap         termcap.uu
X  (files for MSDOS, Amiga, and Atari versions)
X  pcmain.c        pctty.c         pcunix.c
X  (file for MSDOS and new Atari versions)
X--- 27,34 ----
X  
X  others:
X  (files for MSDOS version)
X! Make.ini        Makefile.msc    Makefile.os2    Makefile.tcc    Maketcc.ini
X! NetHack.cnf     termcap         termcap.uu
X  (files for MSDOS, Amiga, and Atari versions)
X  pcmain.c        pctty.c         pcunix.c
X  (file for MSDOS and new Atari versions)
X***************
X*** 44,57 ****
X  include:
X  (files for all versions)
X  amiconf.h       artifact.h      attrib.h        config.h        coord.h
X! decl.h          edog.h          epri.h          eshk.h          extern.h
X! flag.h          func_tab.h      global.h        gold.h          hack.h
X! lev.h           mfndpos.h       mkroom.h        monattk.h       mondata.h
X! monflag.h       monst.h         monsym.h        msdos.h         obj.h
X! objclass.h      patchlevel.h    pcconf.h        permonst.h      prop.h
X! rm.h            sp_lev.h        spell.h         system.h        tosconf.h
X! tradstdc.h      trap.h          trapname.h      unixconf.h      vault.h
X! wseg.h          you.h           youprop.h
X  (file for special level compiler (STRONGHOLD option))
X  lev_comp.h
X  
X--- 44,57 ----
X  include:
X  (files for all versions)
X  amiconf.h       artifact.h      attrib.h        config.h        coord.h
X! decl.h          def_os2.h       edog.h          epri.h          eshk.h
X! extern.h        flag.h          func_tab.h      global.h        gold.h
X! hack.h          lev.h           mfndpos.h       mkroom.h        monattk.h
X! mondata.h       monflag.h       monst.h         monsym.h        msdos.h
X! obj.h           objclass.h      patchlevel.h    pcconf.h        permonst.h
X! prop.h          rm.h            sp_lev.h        spell.h         system.h
X! tosconf.h       tradstdc.h      trap.h          trapname.h      unixconf.h
X! vault.h         wseg.h          you.h           youprop.h
X  (file for special level compiler (STRONGHOLD option))
X  lev_comp.h
X  
X*** ./Old/Makefile.top	Wed Aug 16 11:58:50 1989
X--- ./Makefile.top	Wed Aug 16 11:45:21 1989
X***************
X*** 55,61 ****
X  #	(don't yank the old version out from under people who're playing it)
X  	mv $(GAMEDIR)/$(GAME) $(GAMEDIR)/$(GAME).old
X  	cp src/$(GAME) $(GAMEDIR)
X! 	cp auxil/$(GAME).sh $(SHELLDIR)/$(GAME)
X  # correct the permissions on the new versions
X  	-( cd $(GAMEDIR) ; chown $(GAMEUID) $(AUX) $(GAME) ; \
X  			chgrp $(GAMEGRP) $(AUX) $(GAME) ; \
X--- 55,63 ----
X  #	(don't yank the old version out from under people who're playing it)
X  	mv $(GAMEDIR)/$(GAME) $(GAMEDIR)/$(GAME).old
X  	cp src/$(GAME) $(GAMEDIR)
X! 	sed -e 's;/usr/games/lib/nethackdir;$(GAMEDIR);' \
X! 		< auxil/nethack.sh \
X! 		> $(SHELLDIR)/$(GAME)
X  # correct the permissions on the new versions
X  	-( cd $(GAMEDIR) ; chown $(GAMEUID) $(AUX) $(GAME) ; \
X  			chgrp $(GAMEGRP) $(AUX) $(GAME) ; \
X***************
X*** 79,85 ****
X  # copy over the game files
X  	( cd auxil ; cp $(AUX) $(GAMEDIR) )
X  	cp src/$(GAME) $(GAMEDIR)
X! 	cp auxil/$(GAME).sh $(SHELLDIR)/$(GAME)
X  # set up the permissions
X  	-chown $(GAMEUID) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/*
X  	chgrp $(GAMEGRP) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/*
X--- 81,89 ----
X  # copy over the game files
X  	( cd auxil ; cp $(AUX) $(GAMEDIR) )
X  	cp src/$(GAME) $(GAMEDIR)
X! 	sed -e 's;/usr/games/lib/nethackdir;$(GAMEDIR);' \
X! 		< auxil/nethack.sh \
X! 		> $(SHELLDIR)/$(GAME)
X  # set up the permissions
X  	-chown $(GAMEUID) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/*
X  	chgrp $(GAMEGRP) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/*
X***************
X*** 91,98 ****
X  	-$(GAMEMANCREATE) $(MANDIR)/$(GAME).$(MANEXT)
X  	-$(LEVMANCREATE) $(MANDIR)/lev_comp.$(MANEXT)
X  
X  clean:
X! 	( cd src ; make clean)
X  
X  spotless:
X! 	( cd src ; make spotless)
X--- 95,107 ----
X  	-$(GAMEMANCREATE) $(MANDIR)/$(GAME).$(MANEXT)
X  	-$(LEVMANCREATE) $(MANDIR)/lev_comp.$(MANEXT)
X  
X+ # 'make clean' removes all the .o files, but leaves around all the executables
X+ # and compiled data files
X  clean:
X! 	( cd src ; make clean )
X  
X+ # 'make spotless' returns the source tree to near-distribution condition.
X+ # it removes .o files, executables, and compiled data files
X  spotless:
X! 	( cd src ; make spotless )
X! 	( cd auxil ; make spotless )
X*** amiga/Old/amitcap.c	Wed Aug 16 12:00:51 1989
X--- amiga/amitcap.c	Fri Aug 11 17:06:35 1989
X***************
X*** 16,22 ****
X  static char MR[] = "\2337m";        /* Reverse on   CSI 7 m */
X  static char ME[] = "\2330m";        /* Reverse off  CSI 0 m */
X  
X! #ifdef MSDOSCOLOR    /* creps@silver.bacs.indiana.edu */
X  static char SO[] = "\23333m";       /* Standout: Color #3 (orange) */
X  static char SE[] = "\2330m";
X  #else
X--- 16,22 ----
X  static char MR[] = "\2337m";        /* Reverse on   CSI 7 m */
X  static char ME[] = "\2330m";        /* Reverse off  CSI 0 m */
X  
X! #ifdef TEXTCOLOR
X  static char SO[] = "\23333m";       /* Standout: Color #3 (orange) */
X  static char SE[] = "\2330m";
X  #else
X***************
X*** 24,33 ****
X--- 24,42 ----
X  static char SE[] = "\2330m";
X  #endif
X  
X+ #ifdef TEXTCOLOR
X+ /* color maps */
X+ static int foreg[8] = { 2, 3, 1, 3, 3, 3, 3, 0 };
X+ static int backg[8] = { 1, 2, 2, 0, 1, 1, 1, 1 };
X+ #endif
X  
X  void
X  startup()
X  {
X+ #ifdef TEXTCOLOR
X+     register int c;
X+ #endif  
X+ 
X      (void) Initialize();        /* This opens screen, window, console, &c */
X  
X      CO = COLNO;
X***************
X*** 37,43 ****
X  
X      CD = "\233J";               /* used in pager.c */
X  
X! #ifdef MSDOSCOLOR
X      /*
X       * We need 5 different 'colors', but in a 4-color screen we really
X       * cannot make these available, even more so because we use the user's
X--- 46,52 ----
X  
X      CD = "\233J";               /* used in pager.c */
X  
X! #ifdef TEXTCOLOR
X      /*
X       * We need 5 different 'colors', but in a 4-color screen we really
X       * cannot make these available, even more so because we use the user's
X***************
X*** 44,55 ****
X       * preferred Workbench colors. Instead, we use different combinations
X       * of the 4 possible colors. For orientation: default colors are
X       * white (1) on blue (0), and a orange (3) cursor on a black (2) character.
X       */
X!     HI_GREEN  = "\23331;42m";   /* White on Black */
X!     HI_RED    = "\23333;42m";   /* Orange on Black */
X!     HI_YELLOW = "\23333;40m";   /* Orange on Blue */
X!     HI_BLUE   = "\23333;41m";   /* Orange on White */
X!     HI_WHITE  = "\23330;41m";   /* Blue on White */
X  
X      HI = "\2331m";              /* Bold (hilight) */
X      HE = "\2330m";              /* Plain */
X--- 53,72 ----
X       * preferred Workbench colors. Instead, we use different combinations
X       * of the 4 possible colors. For orientation: default colors are
X       * white (1) on blue (0), and a orange (3) cursor on a black (2) character.
X+      *
X+      * "Black": Black on White
X+      * "Red":	Orange on Black
X+      * "Green": White on Black
X+      * "Yellow": Orange on Blue
X+      * "Blue":	Orange on White
X+      * "Magenta": White on Black
X+      * "Cyan":	White on Black
X+      * "White": Blue on White
X       */
X!     for (c = 0; c < SIZE(HI_COLOR); c++) {
X! 	HI_COLOR[c] = (char *) alloc(sizeof("E0;33;44m"));
X! 	Sprintf(HI_COLOR[c], "\2333%d;4%dm", foreg[c], backg[c]);
X!     }
X  
X      HI = "\2331m";              /* Bold (hilight) */
X      HE = "\2330m";              /* Plain */
X*** auxil/Old/Guidebook.mn	Wed Aug 16 12:02:09 1989
X--- auxil/Guidebook.mn	Tue Aug 15 22:59:21 1989
X***************
X*** 4,10 ****
X  .ds vr "NetHack Version 3.0
X  .ds f0 "\*(vr
X  .ds f1
X! .ds f2 "July 22, 1989
X  .mt
X  A Guide to the Mazes of Menace
X  .au
X--- 4,10 ----
X  .ds vr "NetHack Version 3.0
X  .ds f0 "\*(vr
X  .ds f1
X! .ds f2 "August 13, 1989
X  .mt
X  A Guide to the Mazes of Menace
X  .au
X***************
X*** 500,520 ****
X  commands.  You may obtain a list of them by entering `?'.  What
X  extended commands are available depend on what features the game was
X  compiled with.  Most extended commands are used only under limited
X! circumstances.
X  .pg
X  If the
X  .op number_pad
X  option is on, some additional letter commands are available:
X  .lp j
X! jump to another location.  Same as ``#jump''.
X  .lp k
X  kick something (usually a door).  Same as `^D'.
X  .lp l
X! loot a box on the floor.  Same as ``#loot''.
X  .lp N
X! name an object or type of object.  Same as ``#name''.
X  .lp u
X! untrap a trapped object or door.  Same as ``#untrap''.
X  
X  .hn 1
X  Rooms and corridors
X--- 500,523 ----
X  commands.  You may obtain a list of them by entering `?'.  What
X  extended commands are available depend on what features the game was
X  compiled with.  Most extended commands are used only under limited
X! circumstances. Note that if your keyboard has a meta key (that is, one which
X! when pressed in combination with another key modified it by turning on
X! the 'meta' or 0x80 bit) these extended commands can be invoked by meta-ing the
X! first letter of the command.
X  .pg
X  If the
X  .op number_pad
X  option is on, some additional letter commands are available:
X  .lp j
X! jump to another location.  Same as ``#jump'' or meta-j.
X  .lp k
X  kick something (usually a door).  Same as `^D'.
X  .lp l
X! loot a box on the floor.  Same as ``#loot'' or meta-l.
X  .lp N
X! name an object or type of object.  Same as ``#name'' or meta-n.
X  .lp u
X! untrap a trapped object or door.  Same as ``#untrap'' or meta-u.
X  
X  .hn 1
X  Rooms and corridors
X***************
X*** 836,846 ****
X  .pg
X  You may encounter chests or boxes in your travels.  These can be
X  opened with the ``#loot'' extended command when they are on the floor,
X! or with the `a' (apply) command when you are carrying one.
X! Chests are unwieldy objects, and must be set down to be unlocked
X! (which can be accomplished by kicking them,
X! using a key or lock picking tool with the `a' (apply) command, or
X! by using a weapon to force the lock with the ``#force'' extended command).
X  .pg
X  Some chests are trapped, causing nasty things to happen when you
X  unlock or open them.  You can check for and try to deactivate traps
X--- 839,851 ----
X  .pg
X  You may encounter chests or boxes in your travels.  These can be
X  opened with the ``#loot'' extended command when they are on the floor,
X! or with the `a' (apply) command when you are carrying one.  However,
X! chests are often locked, and require you to either use a key to unlock
X! it, a tool to pick the lock, or to break it open with brute force.
X! Chests are unwieldy objects, and must be set down to be unlocked (by
X! kicking them, using a key or lock picking tool with the `a' (apply)
X! command, or by using a weapon to force the lock with the ``#force''
X! extended command).
X  .pg
X  Some chests are trapped, causing nasty things to happen when you
X  unlock or open them.  You can check for and try to deactivate traps
X***************
X*** 969,975 ****
X  set.  If it doesn't work, your terminal may not support alternate
X  character sets, or the termcap entry for your terminal doesn't have
X  the appropriate escape sequences.  For the record, the sequences to
X! add to the termcap entry are ``:as=^O:ae=^N:ti=\\E)0:''.
X  
X  The order of the symbols is:  solid rock, vertical wall, horizontal
X  wall, upper left corner, upper right corner, lower left corner, lower
X--- 974,980 ----
X  set.  If it doesn't work, your terminal may not support alternate
X  character sets, or the termcap entry for your terminal doesn't have
X  the appropriate escape sequences.  For the record, the sequences to
X! add to the termcap entry are ``:as=^N:ae=^O:ti=\\E)0:''.
X  
X  The order of the symbols is:  solid rock, vertical wall, horizontal
X  wall, upper left corner, upper right corner, lower left corner, lower
X***************
X*** 1119,1124 ****
X--- 1124,1131 ----
X  .pg
X  \fBEric R. Smith\fP ported NetHack 3.0 to the Atari.
X  .pg
X+ \fBTimo Hakulinen\fP ported NetHack 3.0 to OS/2.
X+ .pg
X  The following folks have made significant contributions to the playability
X  of the game:
X  
X***************
X*** 1126,1138 ****
X  .TS S
X  center;
X  c c c.
X! Tom Almy	Eric Hendrickson	Izchak Miller
X! Ken Arromdee	Bruce Holloway		Gil Neiger
X! Eric Backus	Richard P. Hughey	Eric S. Raymond
X! John S. Bien	Greg Laskin		John Rupley
X! Ralf Brown	Steve Linhart		Kevin Sweet
X! Jean-Christophe Collet	Roland McGrath	Scott R. Turner
X! Steve Creps	Bruce Mewborne		Janet Walz
X  .TE
X  .ed
X  
X--- 1133,1146 ----
X  .TS S
X  center;
X  c c c.
X! Tom Almy	Bruce Holloway	Izchak Miller
X! Ken Arromdee	Richard P. Hughey	Gil Neiger
X! Eric Backus	Del Lamb	Eric S. Raymond
X! John S. Bien	Greg Laskin	John Rupley
X! Ralf Brown	Steve Linhart	Kevin Sweet
X! Jean-Christophe Collet	Benson I. Margulies	Scott R. Turner
X! Steve Creps	Roland McGrath	Janet Walz
X! Eric Hendrickson	Bruce Mewborne
X  .TE
X  .ed
X  
X*** auxil/Old/Makefile.auxil	Wed Aug 16 12:03:10 1989
X--- auxil/Makefile.auxil	Wed Aug 16 11:39:13 1989
X***************
X*** 24,26 ****
X--- 24,29 ----
X  	../src/lev_comp castle.des
X  	../src/lev_comp endgame.des
X  	../src/lev_comp tower.des
X+ 
X+ spotless:
X+ 	-rm -f Guidebook data rumors castle endgame tower1 tower2 tower3
X*** auxil/Old/help	Wed Aug 16 12:04:08 1989
X--- auxil/help	Tue Aug 15 22:59:07 1989
X***************
X*** 139,145 ****
X  		the commands you can use with "#" type "#?".  The extended
X  		commands you can use depends upon what options the game was
X  		compiled with, along with your class and what type of monster
X! 		you most closely resemble at a given moment.
X  
X  	If the "number_pad" option is on, some additional letter commands
X  	are available:
X--- 139,149 ----
X  		the commands you can use with "#" type "#?".  The extended
X  		commands you can use depends upon what options the game was
X  		compiled with, along with your class and what type of monster
X! 		you most closely resemble at a given moment. If your keyboard
X! 		has a meta key (that is, one which when pressed in combination
X! 		with another key modified it by turning on the 'meta' or 0x80
X! 		bit) these extended commands can be invoked by meta-ing the
X! 		first letter of the command.
X  
X  	If the "number_pad" option is on, some additional letter commands
X  	are available:
X*** auxil/Old/hh	Wed Aug 16 12:04:20 1989
X--- auxil/hh	Tue Aug 15 22:59:11 1989
X***************
X*** 27,33 ****
X  
X  Game commands:
X  ^T	'port	teleport (if you can)
X! ^D	kick	kick a door
X  a	apply	apply or use a tool (pick-axe, key, camera, etc.)
X  A	remove	take off all armor
X  c	close	close a door
X--- 27,33 ----
X  
X  Game commands:
X  ^T	'port	teleport (if you can)
X! ^D	kick	kick (a door, or something else)
X  a	apply	apply or use a tool (pick-axe, key, camera, etc.)
X  A	remove	take off all armor
X  c	close	close a door
X***************
X*** 73,75 ****
X--- 73,78 ----
X  l	loot	loot a box on the floor
X  N	name	name an object or type of object
X  u	untrap	untrap a trapped object
X+ 
X+ If your keyboard has a meta key, 'jump' 'loot', 'name' and 'untrap' are
X+ available as M-j, M-l, M-N or M-u respectively.
X*** auxil/Old/history	Wed Aug 16 12:04:32 1989
X--- auxil/history	Wed Aug 16 10:15:34 1989
X***************
X*** 20,32 ****
X  coordinated a cast of thousands in enhancing and debugging NetHack 1.4 and 
X  released NetHack versions 2.2 and 2.3.  Later, he coordinated a major rewrite
X  of the game, heading a team which included Ken Arromdee, Jean-Christophe
X! Collet, Steve Creps, Eric Hendrickson, Izchak Miller, John Rupley, Mike
X! Threepoint, and Janet Walz, to produce NetHack 3.0. 
X  
X  Olaf Seibert ported NetHack 2.3 and 3.0 to the Amiga.
X  
X  Eric R. Smith ported NetHack 3.0 to the Atari.
X  
X   
X  From time to time, some depraved individual out there in netland sends a
X  particularly intriguing modification to help out with the game.  The Gods of
X--- 20,34 ----
X  coordinated a cast of thousands in enhancing and debugging NetHack 1.4 and 
X  released NetHack versions 2.2 and 2.3.  Later, he coordinated a major rewrite
X  of the game, heading a team which included Ken Arromdee, Jean-Christophe
X! Collet, Steve Creps, Eric Hendrickson, Izchak Miller, Eric S. Raymond, John 
X! Rupley, Mike Threepoint, and Janet Walz, to produce NetHack 3.0. 
X  
X  Olaf Seibert ported NetHack 2.3 and 3.0 to the Amiga.
X  
X  Eric R. Smith ported NetHack 3.0 to the Atari.
X  
X+ Timo Hakulinen ported NetHack 3.0 to OS/2.
X+ 
X   
X  From time to time, some depraved individual out there in netland sends a
X  particularly intriguing modification to help out with the game.  The Gods of
X***************
X*** 33,44 ****
X  the Dungeon sometimes make note of the names of the worst of these miscreants
X  in this, the list of Dungeoneers:
X  
X!     Tom Almy                  Eric Hendrickson       Izchak Miller
X!     Ken Arromdee              Bruce Holloway         Gil Neiger
X!     Eric Backus               Richard P. Hughey      Eric S. Raymond
X      John S. Bien              Greg Laskin            John Rupley
X      Ralf Brown                Steve Linhart          Kevin Sweet
X!     Jean-Christophe Collet    Roland McGrath         Scott R. Turner
X!     Steve Creps               Bruce Mewborne         Janet Walz
X!     and...                    The Unknown Hacker
X! 
X--- 35,45 ----
X  the Dungeon sometimes make note of the names of the worst of these miscreants
X  in this, the list of Dungeoneers:
X  
X!     Tom Almy                  Bruce Holloway         Izchak Miller
X!     Ken Arromdee              Richard P. Hughey      Gil Neiger
X!     Eric Backus               Del Lamb               Eric S. Raymond
X      John S. Bien              Greg Laskin            John Rupley
X      Ralf Brown                Steve Linhart          Kevin Sweet
X!     Jean-Christophe Collet    Benson I. Margulies    Scott R. Turner
X!     Steve Creps               Roland McGrath         Janet Walz
X!     Eric Hendrickson          Bruce Mewborne
X*** auxil/Old/lev_comp.6	Wed Aug 16 12:04:49 1989
X--- auxil/lev_comp.6	Tue Aug  8 20:19:18 1989
X***************
X*** 1,4 ****
X! .TH LEV_COMP 6 "5 JULY 1989"
X  .UC 4
X  .SH NAME
X  lev_comp \- NetHack special levels compiler
X--- 1,4 ----
X! .TH LEV_COMP 6 "5 July 1989"
X  .UC 4
X  .SH NAME
X  lev_comp \- NetHack special levels compiler
X***************
X*** 7,27 ****
X  [
X  .I files
X  ]
X  .SH DESCRIPTION
X  .PP
X  .I Lev_comp
X! is a special level compiler for NetHack version 3.0 and higher.
X! It takes description files as arguments and produces level files that can be
X! loaded by NetHack at runtime.
X! If no arguments are given, it reads standard input.
X  .PP
X! The purpose of this tool is to provide NetHack administrators and implementors
X! with a convenient way for adding special levels to the game,
X! or modifying existing ones,
X! without having to recompile the entire world.
X! At this time, the special levels code is not fully implemented,
X! as the decision to load the special levels is hard-coded in the game.
X! In a future release, it is expected to be a run-time decision.
X  .SH GRAMMAR
X  .PP
X  .LP
X--- 7,28 ----
X  [
X  .I files
X  ]
X+ .PP
X+ If no arguments are given, it reads standard input.
X  .SH DESCRIPTION
X  .PP
X  .I Lev_comp
X! is a special level compiler for NetHack version 3.0 and higher.  It
X! takes description files as arguments and produces level files that can
X! be loaded by NetHack at runtime.
X  .PP
X! The purpose of this tool is to provide NetHack administrators and
X! implementors with a convenient way for adding special levels to the
X! game, or modifying existing ones, without having to recompile the
X! entire world.  At this time, the special levels code is not fully
X! implemented, as the decision to load the special levels is hard-coded
X! in the game.  In a future release, it is expected to be a run-time
X! decision.
X  .SH GRAMMAR
X  .PP
X  .LP
X***************
X*** 183,211 ****
X  MAZE : "fortress"
X  GEOMETRY : center , center
X  MAP
X! }}}}}}}}}}}}}
X! }}}|-----|}}}
X! }}}|.....|}}}
X! }|--.....--|}
X! }|.........|}
X! }|--.....--|}
X! }}}|.....|}}}
X! }}}|-----|}}}
X! }}}}}}}}}}}}}
X  ENDMAP
X! MONSTER: '@',"wizard of yendor", (6,4)
X  # a random dragon somewhere
X  MONSTER: 'D', random, random
X! # a random trap in the EAST part
X! TRAP: random, (10,4)
X  .fi
X  .PP
X  This example will produce a file named "fortress" that can be integrated into
X! one of the numerous mazes of the game...
X  
X  .SH AUTHOR
X  .PP
X! Jean-christophe Collet.
X  .SH BUGS
X  .PP
X  Probably infinite.
X--- 184,222 ----
X  MAZE : "fortress"
X  GEOMETRY : center , center
X  MAP
X! }}}}}}}}}
X! }}}|-|}}}
X! }}|-.-|}}
X! }|-...-|}
X! }|.....|}
X! }|-...-|}
X! }}|-.-|}}
X! }}}|-|}}}
X! }}}}}}}}}
X  ENDMAP
X! MONSTER: '@', "Wizard of Yendor", (4,4)
X! OBJECT: '"', "Amulet of Yendor", (4,4)
X! # a hell hound flanking the Wiz on a random side
X! RANDOM_PLACES: (4,3), (4,5), (3,4), (5,4)
X! MONSTER: 'd', "hell hound", place[0]
X! # a chest on another random side
X! OBJECT: '(', "chest", place[1]
X  # a random dragon somewhere
X  MONSTER: 'D', random, random
X! # a random trap in the EAST end
X! TRAP: random, (6,4)
X! # an electric eel below the SOUTH end
X! MONSTER: ';', "electric eel", (4,8)
X! # make the walls non-diggable
X! NON_DIGGABLE: (0,0,8,8)
X  .fi
X  .PP
X  This example will produce a file named "fortress" that can be integrated into
X! one of the numerous mazes of the game.
X  
X  .SH AUTHOR
X  .PP
X! Jean-Christophe Collet.
X  .SH BUGS
X  .PP
X  Probably infinite.
X*** auxil/Old/nethack.sh	Wed Aug 16 12:05:31 1989
X--- auxil/nethack.sh	Fri Aug 11 14:43:01 1989
X***************
X*** 1,8 ****
X  #!/bin/sh
X! #	SCCS Id: @(#)nethack.sh	1.4	87/08/08
X  HACKDIR=/usr/games/lib/nethackdir
X  HACK=$HACKDIR/nethack
X  MAXNROFPLAYERS=4
X  
X  cd $HACKDIR
X  case $1 in
X--- 1,35 ----
X  #!/bin/sh
X! #	SCCS Id: @(#)nethack.sh	3.0	89/08/11
X! 
X  HACKDIR=/usr/games/lib/nethackdir
X  HACK=$HACKDIR/nethack
X  MAXNROFPLAYERS=4
X+ 
X+ # see if we can find the full path name of PAGER, so help files work properly
X+ # ideas from brian@radio.astro.utoronto.ca
X+ if test $PAGER
X+ then
X+ 	if test ! -x $PAGER
X+ 	then
X+ 		IFS=:
X+ 		for i in $PATH
X+ 		do
X+ 			if test -x $i/$PAGER
X+ 			then
X+ 				PAGER=$i/$PAGER
X+ 				export PAGER
X+ 				break
X+ 			fi
X+ 		done
X+ 		IFS=' 	'
X+ 	fi
X+ 	if test ! -x $PAGER
X+ 	then
X+ 		echo Cannot find $PAGER -- unsetting PAGER.
X+ 		unset PAGER
X+ 	fi
X+ fi
X+ 
X  
X  cd $HACKDIR
X  case $1 in
X*** auxil/Old/oracles	Wed Aug 16 12:05:51 1989
X--- auxil/oracles	Wed Aug 16 10:19:56 1989
X***************
X*** 1,10 ****
X! If thy wand hath run out of charges, thou mayest zap it again and again; though
X! nothing will happen at first, thy persistence shall surely be rewarded, as
X! one last charge shall be wrested from it!
X  -----
X! To complete thy quest, thou needest enter the infernal regions.  If thou hast
X! not immunity to fire, such a trip will surely prove to be thy last; prepare
X! thyself in advance.
X  -----
X  Though the shopkeepers be wary, thieves have nevertheless stolen much by using
X  their digging wands to hasten exits through the pavement.
X--- 1,10 ----
X! If thy wand hath run out of charges, thou mayst zap it again and again; though
X! naught will happen at first, verily, thy persistence shall be rewarded, as
X! one last charge may yet be wrested from it!
X  -----
X! To complete thy quest, thou needs must enter the infernal regions.  If thou
X! hast not immunity to fire, such a trip will surely prove to be thy last;
X! prepare thyself in advance.
X  -----
X  Though the shopkeepers be wary, thieves have nevertheless stolen much by using
X  their digging wands to hasten exits through the pavement.
X***************
X*** 13,21 ****
X  that thou canst prevent this by, while in a confused state, reading the magical
X  parchments which normally are used to cause their enchantment.
X  -----
X! Behold the cockatrice, a mighty creature which can petrify anything normal it
X! comes across--save the wise adventurer who eats a dead lizard or blob of acid
X! when he feels himself slowly turning to stone.
X  -----
X  While some armor protects against magical attacks, few types compare to the
X  items which come from the elven regions, though iron or crystalline plate
X--- 13,22 ----
X  that thou canst prevent this by, while in a confused state, reading the magical
X  parchments which normally are used to cause their enchantment.
X  -----
X! Behold the cockatrice, whose diminutive stature belies its hidden might.  The
X! cockatrice can petrify any ordinary being it contacts--save those wise
X! adventurers who eat a dead lizard or blob of acid when they feel themselves
X! slowly turning to stone.
X  -----
X  While some armor protects against magical attacks, few types compare to the
X  items which come from the elven regions, though iron or crystalline plate
X***************
X*** 33,43 ****
X  around on the level.  Daring adventurers have also performed the same feat
X  sans need for scrolls or potions by stepping on the correct type of trap.
X  -----
X! Most all adventurers who come this way hope to pass the medusa.  To do this,
X! the best advice is to keep thine eyes blindfolded and to cause the creature
X! to espy its own reflection in a mirror.
X  -----
X! And when it is written, "ad aerarium," diligent searching will often reveal
X  the way to a trap which sends one to the Magic Memory Vault, where the riches
X  of Croesus are stored; however, escaping from the vault with its gold is much
X  harder than getting in.
X--- 34,44 ----
X  around on the level.  Daring adventurers have also performed the same feat
X  sans need for scrolls or potions by stepping on the correct type of trap.
X  -----
X! Almost all adventurers who come this way hope to pass the dread Medusa.  To
X! do this, the best advice is to keep thine eyes blindfolded and to cause the
X! creature to espy its own reflection in a mirror.
X  -----
X! And where it is written "ad aerarium", diligent searching will often reveal
X  the way to a trap which sends one to the Magic Memory Vault, where the riches
X  of Croesus are stored; however, escaping from the vault with its gold is much
X  harder than getting in.
X***************
X*** 44,61 ****
X  -----
X  It is well known that wily shopkeepers doth raise their prices whene'er they
X  espy the garish apparel of the approaching tourist or the countenance of a
X! disfavored patron.  Prices favor the gentle of manner and the fair of face.
X! The boor mayst expect unprofitable transactions.
X  -----
X  The cliche of the kitchen sink swallowing any unfortunate rings that contact
X! its pernicious surface doth reflect greater truth as many homilies, yet
X  even so, few hath developed the skill to identify enchanted rings by the
X  transfigurations effected upon the voracious device's frame.
X  -----
X  The meat of enchanted creatures will ofttimes convey magical properties
X  unto the consumer.  A fresh corpse of floating eye doth fetch a high
X! price among wizards for its utility for to develop Telepathy, by which
X! the sightless mayst locate surrounding minds.
X  -----
X  The detection of blessings and curses is in the domain of the gods.  They will
X  make this information available to mortals who request it at their places of
X--- 45,62 ----
X  -----
X  It is well known that wily shopkeepers doth raise their prices whene'er they
X  espy the garish apparel of the approaching tourist or the countenance of a
X! disfavored patron.  They favor the gentle of manner and the fair of face.
X! The boor may expect unprofitable transactions.
X  -----
X  The cliche of the kitchen sink swallowing any unfortunate rings that contact
X! its pernicious surface reflecteth greater truth than many homilies, yet
X  even so, few hath developed the skill to identify enchanted rings by the
X  transfigurations effected upon the voracious device's frame.
X  -----
X  The meat of enchanted creatures will ofttimes convey magical properties
X  unto the consumer.  A fresh corpse of floating eye doth fetch a high
X! price among wizards for its utility in conferring Telepathy, by which
X! the sightless may locate surrounding minds.
X  -----
X  The detection of blessings and curses is in the domain of the gods.  They will
X  make this information available to mortals who request it at their places of
X*** auxil/Old/rumors.fal	Wed Aug 16 12:06:04 1989
X--- auxil/rumors.fal	Fri Aug  4 18:36:27 1989
X***************
X*** 54,60 ****
X  Engrave your wishes with a wand of wishing.
X  Eventually you will come to admire the swift elegance of a retreating nymph.
X  Ever heard hissing outside?  I *knew* you hadn't!
X! Ever lifted a dead dragon?
X  Ever seen your weapon glow plaid?
X  Ever seen a leocrotta dancing the tengu?
X  Ever tamed a shopkeeper?
X--- 54,60 ----
X  Engrave your wishes with a wand of wishing.
X  Eventually you will come to admire the swift elegance of a retreating nymph.
X  Ever heard hissing outside?  I *knew* you hadn't!
X! Ever lifted a dragon corpse?
X  Ever seen your weapon glow plaid?
X  Ever seen a leocrotta dancing the tengu?
X  Ever tamed a shopkeeper?
X***************
X*** 108,113 ****
X--- 108,114 ----
X  Never play leapfrog with a unicorn.
X  Never step on a cursed engraving.
X  Never swim with a camera:  there's nothing to take pictures of.
X+ Never teach your pet rust monster to fetch.
X  Never trust a random generator in magic fields.
X  Never use a wand of death.
X  No level contains two shops.  The maze is no level.  So...
X*** include/Old/amiconf.h	Wed Aug 16 14:03:39 1989
X--- include/amiconf.h	Fri Aug 11 17:13:35 1989
X***************
X*** 27,33 ****
X   *  Configurable Amiga options:
X   */
X  
X! #define MSDOSCOLOR              /* Use colored monsters and objects */
X  #define HACKFONT                /* Use special hack.font */
X  #define SHELL                   /* Have a shell escape command (!) */
X  #define MAIL                    /* Get mail at unexpected occasions */
X--- 27,33 ----
X   *  Configurable Amiga options:
X   */
X  
X! #define TEXTCOLOR              /* Use colored monsters and objects */
X  #define HACKFONT                /* Use special hack.font */
X  #define SHELL                   /* Have a shell escape command (!) */
X  #define MAIL                    /* Get mail at unexpected occasions */
X*** include/Old/config.h	Wed Aug 16 14:04:12 1989
X--- include/config.h	Tue Aug 15 21:58:18 1989
X***************
X*** 14,24 ****
X  
X  #define	UNIX		/* delete if no fork(), exec() available */
X  
X! #ifdef __MSDOS__	/* Turbo C auto-defines __MSDOS__, others MSDOS */
X! #define MSDOS	 	/* define for MS-DOS (actually defined by compiler) */
X  #else
X! /* # define MSDOS	/* define for MS-DOS and most other micros */
X! /* # define AMIGA	/* define for Commodore-Amiga */
X  /* #define TOS		/* for Atari 520/1040 */
X  
X  /* #define STUPID	/* avoid some complicated expressions if
X--- 14,24 ----
X  
X  #define	UNIX		/* delete if no fork(), exec() available */
X  
X! #ifdef __MSDOS__	/* Turbo C auto-defines __MSDOS__, MSC defines MSDOS */
X! #define MSDOS		/* define for MS-DOS (in case compiler doesn't) */
X  #else
X! /* #define MSDOS	/* define for MS-DOS and most other micros */
X! /* #define AMIGA	/* define for Commodore-Amiga */
X  /* #define TOS		/* for Atari 520/1040 */
X  
X  /* #define STUPID	/* avoid some complicated expressions if
X*** include/Old/decl.h	Wed Aug 16 14:04:38 1989
X--- include/decl.h	Tue Aug 15 21:58:26 1989
X***************
X*** 120,127 ****
X  E int in_doagain;
X  #endif
X  
X! #ifdef MSDOSCOLOR
X! E char *HI_RED, *HI_YELLOW, *HI_GREEN, *HI_BLUE, *HI_WHITE; /* termcap.c */
X  #endif
X  
X  #ifndef OBJ_H
X--- 120,134 ----
X  E int in_doagain;
X  #endif
X  
X! #ifdef TEXTCOLOR
X! #define RED		1
X! #define GREEN		2
X! #define YELLOW		3
X! #define BLUE		4
X! #define MAGENTA 	5
X! #define CYAN		6
X! #define WHITE		7
X! E char *HI_COLOR[8];	/* termcap.c */
X  #endif
X  
X  #ifndef OBJ_H
X*** include/Old/extern.h	Wed Aug 16 14:05:24 1989
X--- include/extern.h	Wed Aug 16 10:16:11 1989
X***************
X*** 76,81 ****
X--- 76,82 ----
X  
X  /* ### cmd.c ### */
X  
X+ E void reset_occupations ();
X  E void set_occupation P((int(*)(),char *,int));
X  #ifdef REDO
X  E char pgetchar();
X***************
X*** 189,195 ****
X--- 190,198 ----
X  E void glibr();
X  E struct obj *some_armor();
X  E void corrode_armor();
X+ E void reset_remarm();
X  E int doddoremarm();
X+ E int destroy_arm P((struct obj *));
X  E void adj_abon P((struct obj *,schar));
X  
X  /* ### dog.c ### */
X***************
X*** 240,246 ****
X  E int done2();
X  E void done_in_by P((struct monst *));
X  E void panic P((char *,...));
X! E void done P((char *));
X  E void clearlocks();
X  #ifdef NOSAVEONHANGUP
X  E void hangup();
X--- 243,249 ----
X  E int done2();
X  E void done_in_by P((struct monst *));
X  E void panic P((char *,...));
X! E void done P((int));
X  E void clearlocks();
X  #ifdef NOSAVEONHANGUP
X  E void hangup();
X***************
X*** 322,329 ****
X  E int weight_cap();
X  E int inv_weight();
X  E int inv_cnt();
X! E int little_to_big P((int));
X! E int big_to_little P((int));     
X  #ifdef STUPID_CPP	/* otherwise these functions are macros in hack.h */
X  E char yn();
X  E char ynq();
X--- 325,331 ----
X  E int weight_cap();
X  E int inv_weight();
X  E int inv_cnt();
X! E int identify P((struct obj *));
X  #ifdef STUPID_CPP	/* otherwise these functions are macros in hack.h */
X  E char yn();
X  E char ynq();
X***************
X*** 380,385 ****
X--- 382,388 ----
X  
X  /* ### lock.c ### */
X  
X+ E void reset_pick();
X  E int pick_lock P((struct obj *));
X  E int doforce();
X  E int boxlock P((struct obj *,struct obj *));
X***************
X*** 434,448 ****
X  /* ### mhitu.c ### */
X  
X  #ifdef POLYSELF
X- E boolean incompatible P((struct monst *));
X  E struct monst *cloneu();
X  #endif
X- E boolean is_nymph P((struct monst *));
X- E boolean sp_melee P((struct monst *));
X  E int mattacku P((struct monst *));
X  E void mdamageu P((struct monst *,int));
X  #ifdef SEDUCE
X! E void doseduce P((struct monst *));
X  #endif
X  
X  /* ### mklev.c ### */
X--- 437,449 ----
X  /* ### mhitu.c ### */
X  
X  #ifdef POLYSELF
X  E struct monst *cloneu();
X  #endif
X  E int mattacku P((struct monst *));
X  E void mdamageu P((struct monst *,int));
X+ E int could_seduce P((struct monst *,struct monst *,struct attack *));
X  #ifdef SEDUCE
X! E int doseduce P((struct monst *));
X  #endif
X  
X  /* ### mklev.c ### */
X***************
X*** 564,572 ****
X--- 565,576 ----
X  E int gender P((struct monst *));
X  E boolean levl_follower P((struct monst *));
X  E struct permonst *player_mon();
X+ E int little_to_big P((int));
X+ E int big_to_little P((int));     
X  
X  /* ### monmove.c ### */
X  
X+ E boolean mb_trapped P((struct monst *));
X  E int dochugw P((struct monst *));
X  E boolean onscary P((int,int,struct monst *));
X  E int dochug P((struct monst *));
X***************
X*** 582,587 ****
X--- 586,592 ----
X  E void flushout();
X  E int tgetch();
X  E int dosh();
X+ # ifdef DGK
X  E long freediskspace P((char *));
X  E long filesize P((char *));
X  E void eraseall P((char *,char *));
X***************
X*** 589,594 ****
X--- 594,600 ----
X  E void playwoRAMdisk();
X  E int saveDiskPrompt P((int));
X  E void gameDiskPrompt();
X+ # endif
X  E void read_config_file();
X  E void set_lock_and_bones();
X  E void append_slash P((char *));
X***************
X*** 595,605 ****
X--- 601,622 ----
X  E void getreturn P((char *));
X  E void msmsg P((char *,...));
X  E void chdrive P((char *));
X+ # ifndef TOS
X  E void disable_ctrlP();
X  E void enable_ctrlP();
X+ # endif
X+ # ifdef DGK
X  E FILE *fopenp P((char *,char *));
X+ # endif
X  E void msexit P((int));
X+ # ifdef DGK
X+ E void get_scr_size();
X+ # endif
X  #endif /* MSDOS */
X+ #ifdef TOS
X+ E int _copyfile P((int, int));
X+ E int kbhit();
X+ #endif /* TOS */
X  
X  /* ### mthrowu.c ### */
X  
X***************
X*** 681,687 ****
X  E void askname();
X  E void impossible P((char *,...));
X  #ifdef CHDIR
X! E void chdirx P((char *,char));
X  #endif /* CHDIR */
X  E void stop_occupation();
X  #endif /* MSDOS */
X--- 698,704 ----
X  E void askname();
X  E void impossible P((char *,...));
X  #ifdef CHDIR
X! E void chdirx P((char *,boolean));
X  #endif /* CHDIR */
X  E void stop_occupation();
X  #endif /* MSDOS */
X***************
X*** 845,856 ****
X  
X  E int doread();
X  E int seffects P((struct obj *));
X- E int identify P((struct obj *));
X  E void litroom P((boolean));
X  E void do_genocide P((int));
X  E void do_mapping();
X  E void do_vicinity_map();
X- E int destroy_arm P((struct obj *));
X  E int gold_detect P((struct obj *));
X  E int food_detect P((struct obj *));
X  E void punish P((struct obj *));
X--- 862,871 ----
X***************
X*** 1043,1048 ****
X--- 1058,1064 ----
X  E void cmore P((char *));
X  E void clrlin();
X  E void pline P((const char *,...));
X+ E void Norep P((const char *,...));
X  E void You P((const char *,...));
X  E void Your P((const char *,...));
X  E void putsym P((char));
X***************
X*** 1099,1107 ****
X  
X  E struct monst *clone_mon P((struct monst *));
X  E boolean special_case P((struct monst *));
X  E boolean attack P((struct monst *));
X  E boolean hmon P((struct monst *,struct obj *,int));
X! E int passive P((struct monst *,boolean,int));
X  
X  /* ### unixmain.c ### */
X  
X--- 1115,1127 ----
X  
X  E struct monst *clone_mon P((struct monst *));
X  E boolean special_case P((struct monst *));
X+ E schar find_roll_to_hit P((struct monst *));
X  E boolean attack P((struct monst *));
X  E boolean hmon P((struct monst *,struct obj *,int));
X! E int damageum P((struct monst *, struct attack *));
X! E void missum P((struct monst *, struct attack *));
X! E int passive P((struct monst *,boolean,int,boolean));
X! E void stumble_onto_mimic P((struct monst *));
X  
X  /* ### unixmain.c ### */
X  
X*** include/Old/global.h	Wed Aug 16 14:06:34 1989
X--- include/global.h	Tue Aug 15 21:58:18 1989
X***************
X*** 9,15 ****
X  
X  
X  /* #define BETA		/* if a beta-test copy  [MRS] */
X! #define VERSION	"3.0e"	/* version number. */
X  
X  /*
X   * Files expected to exist in the playground directory.
X--- 9,15 ----
X  
X  
X  /* #define BETA		/* if a beta-test copy  [MRS] */
X! #define VERSION	"3.0f"	/* version number. */
X  
X  /*
X   * Files expected to exist in the playground directory.
X*** include/Old/hack.h	Wed Aug 16 14:06:59 1989
X--- include/hack.h	Tue Aug 15 21:58:27 1989
X***************
X*** 26,31 ****
X--- 26,50 ----
X  #define NULL  ((genericptr_t)0)
X  #define DUMMY { 0 }
X  
X+ /* this is the way the game ends */
X+ /* if these are rearranged, the arrays in end.c will need to be changed */
X+ #define DIED		0
X+ #define CHOKING 	1
X+ #define POISONING	2
X+ #define STARVING	3
X+ #define DROWNING	4
X+ #define BURNING 	5
X+ #define CRUSHING	6
X+ #define STONING 	7
X+ #define GENOCIDED	8
X+ #define PANICKED	9
X+ #define TRICKED 	10
X+ #define QUIT		11
X+ #define ESCAPED 	12
X+ #ifdef ENDGAME
X+ #define ASCENDED	13
X+ #endif
X+ 
X  #ifndef DECL_H
X  #include "decl.h"
X  #endif
X*** include/Old/mondata.h	Wed Aug 16 14:08:14 1989
X--- include/mondata.h	Wed Aug  9 20:31:42 1989
X***************
X*** 77,84 ****
X  #define can_breathe(ptr)	attacktype(ptr, AT_BREA)
X  #define cantwield(ptr)		(nohands(ptr) || verysmall(ptr))
X  #define cantweararm(ptr)	(breakarm(ptr) || sliparm(ptr))
X- #define nolimbs(ptr)		(((ptr)->mflags2 & M2_NOLIMBS) != 0L)
X  #endif /* POLYSELF */
X  #define carnivorous(ptr)	(((ptr)->mflags2 & M2_CARNIVORE) != 0L)
X  #define herbivorous(ptr)	(((ptr)->mflags2 & M2_HERBIVORE) != 0L)
X  #define thick_skinned(ptr)	(((ptr)->mflags2 & M2_THICK_HIDE) != 0L)
X--- 77,84 ----
X  #define can_breathe(ptr)	attacktype(ptr, AT_BREA)
X  #define cantwield(ptr)		(nohands(ptr) || verysmall(ptr))
X  #define cantweararm(ptr)	(breakarm(ptr) || sliparm(ptr))
X  #endif /* POLYSELF */
X+ #define nolimbs(ptr)		(((ptr)->mflags2 & M2_NOLIMBS) != 0L)
X  #define carnivorous(ptr)	(((ptr)->mflags2 & M2_CARNIVORE) != 0L)
X  #define herbivorous(ptr)	(((ptr)->mflags2 & M2_HERBIVORE) != 0L)
X  #define thick_skinned(ptr)	(((ptr)->mflags2 & M2_THICK_HIDE) != 0L)
X*** include/Old/pcconf.h	Wed Aug 16 14:09:50 1989
X--- include/pcconf.h	Tue Aug 15 21:57:19 1989
X***************
X*** 6,11 ****
X--- 6,15 ----
X  #ifndef PCCONF_H
X  #define PCCONF_H
X  
X+ /* #define OS2		/* define for OS/2 (Timo Hakulinen) */
X+ /* #define OS2_CODEVIEW /* define for OS/2 CodeView debugger,
X+ 			   otherwise path searches may fail (TH) */
X+ 
X  /*
X   *  The following options are configurable:
X   */
X***************
X*** 86,97 ****
X  #endif
X  
X  #ifndef TOS
X! #  define MSDOSCOLOR /* */
X  /* configurable colors */
X! #  define HI_MON  HI_RED	/* red slaps! */
X! #  define HI_OBJ  HI_GREEN
X! #  define HI_GOLD HI_YELLOW
X! #  define HI_ZAP  HI_BLUE	/* blue zaps! */
X  #endif
X  
X  #ifndef EXTERN_H
X--- 90,106 ----
X  #endif
X  
X  #ifndef TOS
X! #  define TEXTCOLOR /* */
X! #endif
X! 
X! #ifdef TEXTCOLOR
X  /* configurable colors */
X! #  define HI_MON	RED	/* red slaps! */
X! #  define HI_OBJ	MAGENTA
X! #  define HI_METAL	CYAN
X! #  define HI_ORGANIC	GREEN
X! #  define HI_GOLD	YELLOW
X! #  define HI_ZAP	BLUE	/* blue zaps! */
X  #endif
X  
X  #ifndef EXTERN_H
X*** include/Old/rm.h	Wed Aug 16 14:10:22 1989
X--- include/rm.h	Tue Aug 15 20:32:25 1989
X***************
X*** 122,128 ****
X  
X  #define	ERRCHAR	']'
X  
X! #define MAXPCHARS	28	/* maximum number of mapped characters */
X  
X  /*
X   * The 5 possible states of doors
X--- 122,128 ----
X  
X  #define	ERRCHAR	']'
X  
X! #define MAXPCHARS	32	/* maximum number of mapped characters */
X  
X  /*
X   * The 5 possible states of doors
X***************
X*** 185,194 ****
X   * at() display character types, in order of precedence.
X   */
X  #define AT_APP		(uchar)0
X! /* specific overrides */
X! #define AT_RED		(uchar)1	/* flame */
X! #define AT_BLUE 	(uchar)4	/* water */
X! #define AT_WHITE	(uchar)7	/* lightning */
X  /* non-specific */
X  #define AT_ZAP		(uchar)8
X  #define AT_MON		(uchar)9
X--- 185,191 ----
X   * at() display character types, in order of precedence.
X   */
X  #define AT_APP		(uchar)0
X! /* 1-7 are specific overrides, see decl.h */
X  /* non-specific */
X  #define AT_ZAP		(uchar)8
X  #define AT_MON		(uchar)9
X*** include/Old/unixconf.h	Wed Aug 16 14:12:01 1989
X--- include/unixconf.h	Fri Aug 11 17:10:55 1989
X***************
X*** 42,48 ****
X--- 42,50 ----
X  			   run with Microport Sys V/AT version 2.4.
X  			   By Jay Maynard */
X  
X+ /* #define TEXTCOLOR	/* Use System V r3.2 terminfo color support */
X  
X+ 
X  /*
X   * The next two defines are intended mainly for the Andrew File System,
X   * which does not allow hard links.  If NO_FILE_LINKS is defined, lock files
X***************
X*** 70,79 ****
X   * variable MAILREADER; otherwise an internal pager will be used.
X   * A stat system call is done on the mailbox every MAILCKFREQ moves.
X   */
X  
X! #define	MAIL
X! #define	DEF_MAILREADER	"/usr/ucb/Mail"		/* or e.g. /bin/mail */
X! #define	MAILCKFREQ	50
X  
X  #ifdef COMPRESS
X  /* Some implementations of compress need a 'quiet' option.
X--- 72,89 ----
X   * variable MAILREADER; otherwise an internal pager will be used.
X   * A stat system call is done on the mailbox every MAILCKFREQ moves.
X   */
X  
X! #define	MAIL
X! #if defined(BSD) || defined(ULTRIX)
X! #define	DEF_MAILREADER	"/usr/ucb/Mail"
X! #else
X! # ifdef SYSV
X! #define	DEF_MAILREADER	"/usr/bin/mailx"
X! # else
X! #define	DEF_MAILREADER	"/bin/mail"
X! # endif
X! #endif
X! #define	MAILCKFREQ	50
X  
X  #ifdef COMPRESS
X  /* Some implementations of compress need a 'quiet' option.
X***************
X*** 133,144 ****
X  #ifdef hc	/* older versions of the MetaWare High-C compiler define this */
X  # ifdef __HC__
X  #  undef __HC__
X! # endif __HC__
X  # define __HC__ hc
X  # undef hc
X! #endif hc
X  
X  #include "extern.h"
X  
X  #endif /* UNIXCONF_H /* */
X  #endif /* UNIX /* */
X--- 141,164 ----
X  #ifdef hc	/* older versions of the MetaWare High-C compiler define this */
X  # ifdef __HC__
X  #  undef __HC__
X! # endif
X  # define __HC__ hc
X  # undef hc
X! #endif
X! 
X! #ifdef TEXTCOLOR
X! /* configurable colors */
X! #  define HI_MON	RED	/* red slaps! */
X! #  define HI_OBJ	MAGENTA
X! #  define HI_METAL	CYAN
X! #  define HI_ORGANIC	GREEN
X! #  define HI_GOLD	YELLOW
X! #  define HI_ZAP	BLUE	/* blue zaps! */
X! #endif
X  
X+ #ifndef EXTERN_H
X  #include "extern.h"
X+ #endif
X  
X  #endif /* UNIXCONF_H /* */
X  #endif /* UNIX /* */
X*** /dev/null	Tue Aug 15 10:53:49 1989
X--- include/def_os2.h	Tue Aug 15 20:49:24 1989
X***************
X*** 0 ****
X--- 1,108 ----
X+ /*	SCCS Id: @(#)def_os2.h	3.0	89/08/13
X+ 
X+ /*  OS/2 defines based on MSC 5.1 OS/2 include files.
X+     Only a small portion of all OS/2 defines are needed,
X+     so the actual include files are not used.
X+ 
X+     Timo Hakulinen
X+  */
X+ 
X+ #define APIENTRY pascal far
X+ 
X+ #define CHAR	char		/* ch  */
X+ #define SHORT	int		/* s   */
X+ #define LONG	long		/* l   */
X+ #define INT	int		/* i   */
X+ 
X+ typedef unsigned char UCHAR;	/* uch */
X+ typedef unsigned int  USHORT;	/* us  */
X+ typedef unsigned long ULONG;	/* ul  */
X+ typedef unsigned int  UINT;	/* ui  */
X+ 
X+ typedef unsigned char BYTE;	/* b   */
X+ typedef BYTE   far *PBYTE;
X+ 
X+ typedef unsigned short	SHANDLE;
X+ typedef SHANDLE 	HKBD;
X+ typedef SHANDLE 	HVIO;
X+ typedef SHANDLE 	HDIR;	/* hdir */
X+ typedef HDIR far *PHDIR;
X+ 
X+ typedef USHORT far *PUSHORT;
X+ typedef char far *PSZ;
X+ 
X+ typedef struct {
X+ 	UCHAR  chChar;
X+ 	UCHAR  chScan;
X+ 	UCHAR  fbStatus;
X+ 	UCHAR  bNlsShift;
X+ 	USHORT fsState;
X+ 	ULONG  time;
X+ } KBDKEYINFO;
X+ typedef KBDKEYINFO far *PKBDKEYINFO;
X+ 
X+ /* File time and date types */
X+ 
X+ typedef struct _FTIME { 	/* ftime */
X+     unsigned twosecs : 5;
X+     unsigned minutes : 6;
X+     unsigned hours   : 5;
X+ } FTIME;
X+ typedef FTIME far *PFTIME;
X+ 
X+ typedef struct _FDATE { 	/* fdate */
X+     unsigned day     : 5;
X+     unsigned month   : 4;
X+     unsigned year    : 7;
X+ } FDATE;
X+ typedef FDATE far *PFDATE;
X+ 
X+ typedef struct _FILEFINDBUF {	/* findbuf */
X+ 	FDATE  fdateCreation;
X+ 	FTIME  ftimeCreation;
X+ 	FDATE  fdateLastAccess;
X+ 	FTIME  ftimeLastAccess;
X+ 	FDATE  fdateLastWrite;
X+ 	FTIME  ftimeLastWrite;
X+ 	ULONG  cbFile;
X+ 	ULONG  cbFileAlloc;
X+ 	USHORT attrFile;
X+ 	UCHAR  cchName;
X+ 	CHAR   achName[13];
X+ } FILEFINDBUF;
X+ typedef FILEFINDBUF far *PFILEFINDBUF;
X+ 
X+ /* KBDINFO structure, for KbdSet/GetStatus */
X+ typedef struct _KBDINFO {	/* kbst */
X+ 	USHORT cb;
X+ 	USHORT fsMask;
X+ 	USHORT chTurnAround;
X+ 	USHORT fsInterim;
X+ 	USHORT fsState;
X+ } KBDINFO;
X+ typedef KBDINFO far *PKBDINFO;
X+ 
X+ /* VIOMODEINFO structure, for VioGetMode */
X+ typedef struct _VIOMODEINFO {
X+ 	USHORT cb;
X+ 	UCHAR  fbType;
X+ 	UCHAR  color;
X+ 	USHORT col;
X+ 	USHORT row;
X+ 	USHORT hres;
X+ 	USHORT vres;
X+ 	UCHAR  fmt_ID;
X+ 	UCHAR  attrib;
X+ } VIOMODEINFO;
X+ typedef VIOMODEINFO far *PVIOMODEINFO;
X+ 
X+ /* OS2 API functions */
X+ 
X+ USHORT APIENTRY KbdGetStatus(PKBDINFO, HKBD);
X+ USHORT APIENTRY KbdSetStatus(PKBDINFO, HKBD);
X+ USHORT APIENTRY KbdCharIn(PKBDKEYINFO, USHORT, HKBD );
X+ USHORT APIENTRY DosQFSInfo(USHORT, USHORT, PBYTE, USHORT);
X+ USHORT APIENTRY DosFindFirst(PSZ, PHDIR, USHORT, PFILEFINDBUF, USHORT, PUSHORT, ULONG);
X+ USHORT APIENTRY DosFindNext(HDIR, PFILEFINDBUF, USHORT, PUSHORT);
X+ USHORT APIENTRY DosSelectDisk(USHORT);
X+ USHORT APIENTRY VioGetMode(PVIOMODEINFO, HVIO);
END_OF_FILE
if test 47487 -ne `wc -c <'patch02a'`; then
    echo shar: \"'patch02a'\" unpacked with wrong size!
fi
# end of 'patch02a'
fi
echo shar: End of archive 1 \(of 7\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 6 7 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 7 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0