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

billr@saab.CNA.TEK.COM (Bill Randle) (02/24/90)

Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
Posting-number: Volume 9, Issue 20
Archive-name: NetHack3/Patch7t
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 20 (of 30)."
# Contents:  patch7.16
# Wrapped by billr@saab on Wed Feb 21 10:04:41 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patch7.16' -a "${1}" != "-c" ; then 
  echo shar: Renaming existing file \"'patch7.16'\" to \"'patch7.16.orig'\"
  mv -f 'patch7.16' 'patch7.16.orig'
fi
echo shar: Extracting \"'patch7.16'\" \(53275 characters\)
sed "s/^X//" >'patch7.16' <<'END_OF_FILE'
X*** include/Old/artifact.h	Mon Feb 19 22:05:53 1990
X--- include/artifact.h	Tue Jan 16 18:10:46 1990
X***************
X*** 26,32 ****
X  
X  struct artifact {
X  	unsigned    otyp;
X! 	char	    *name;
X  	unsigned    spfx;
X  	unsigned long mtype;	/* monster type, symbol, or flag */
X  	struct attack attk, defn;
X--- 26,32 ----
X  
X  struct artifact {
X  	unsigned    otyp;
X! 	const char  *name;
X  	unsigned    spfx;
X  	unsigned long mtype;	/* monster type, symbol, or flag */
X  	struct attack attk, defn;
X*** include/Old/color.h	Mon Feb 19 22:06:15 1990
X--- include/color.h	Thu Feb  8 17:39:31 1990
X***************
X*** 12,26 ****
X  #define BLUE		4
X  #define MAGENTA 	5
X  #define CYAN		6
X- #define WHITE		7
X  #define GRAY		7	/* lo-intensity white */
X  #define BRIGHT		8
X  #define ORANGE_COLORED	9
X  #define YELLOW		11
X  #define MAXCOLORS	16	/* 8 basic + 8 bright */
X  
X  /* these can be configured */
X- #define HI_MON		RED + BRIGHT	/* default flesh - red slaps! */
X  #define HI_OBJ		MAGENTA
X  #define HI_METAL	CYAN
X  #define HI_COPPER	YELLOW
X--- 12,25 ----
X  #define BLUE		4
X  #define MAGENTA 	5
X  #define CYAN		6
X  #define GRAY		7	/* lo-intensity white */
X  #define BRIGHT		8
X  #define ORANGE_COLORED	9
X  #define YELLOW		11
X+ #define WHITE		15
X  #define MAXCOLORS	16	/* 8 basic + 8 bright */
X  
X  /* these can be configured */
X  #define HI_OBJ		MAGENTA
X  #define HI_METAL	CYAN
X  #define HI_COPPER	YELLOW
X***************
X*** 33,38 ****
X  #define HI_PAPER	WHITE
X  #define HI_GLASS	CYAN + BRIGHT
X  #define HI_MINERAL	GRAY
X! #define HI_ZAP		BLUE + BRIGHT	/* blue zaps! */
X  
X  #endif /* COLOR_H */
X--- 32,37 ----
X  #define HI_PAPER	WHITE
X  #define HI_GLASS	CYAN + BRIGHT
X  #define HI_MINERAL	GRAY
X! #define HI_ZAP		BLUE + BRIGHT
X  
X  #endif /* COLOR_H */
X*** include/Old/config.h	Mon Feb 19 22:06:27 1990
X--- include/config.h	Mon Feb 19 18:16:29 1990
X***************
X*** 20,26 ****
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		/* define for Atari 1040ST */
X  
X  /* #define STUPID	/* avoid some complicated expressions if
X--- 20,34 ----
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! 			/* DO NOT define for AMIGA - MSDOS will be
X! 			 * automatically defined at the right place. */
X! # ifdef AZTEC_C 	/* Manx 3.6 auto-defines this */
X! #  ifdef MCH_AMIGA	/* Manx 3.6 auto-defines this for AMIGA */
X! #   ifndef AMIGA
X! #define AMIGA		/* define for Commodore-Amiga */
X! #   endif		/* (Lattice auto-defines AMIGA) */
X! #  endif
X! # endif
X  /* #define TOS		/* define for Atari 1040ST */
X  
X  /* #define STUPID	/* avoid some complicated expressions if
X***************
X*** 34,53 ****
X  			 * library in the makefile */
X  /* #define MINIMAL_TERM	/* if a terminal handles highlighting or tabs poorly,
X  			   try this define, used in pager.c and termcap.c */
X! /* #define MACOS 1 	/* define for Apple Macintosh */
X  #endif
X  
X  #ifdef MACOS
X! #define KR1ED 1		/* for compilers which can't handle defined() */
X! #define LSC 1		/* for the Lighspeed 3.01p4 C compiler on the Mac */
X! /* #define AZTEC 1	/* for the Manx Aztec C 3.6c compiler */
X! /* #define THINKC4	/* for the Think C 4 compiler */
X  #define NEED_VARARGS	/* if you're using precompiled headers */
X! #define SMALLDATA 1	/* for Mac compilers with 32K global data limit */
X!  
X! # ifdef KR1ED
X! #define defined(x) (x<<1) /* Lightspeed & Aztec can't handle defined() yet */
X  # endif
X  #endif
X  
X  
X--- 42,88 ----
X  			 * library in the makefile */
X  /* #define MINIMAL_TERM	/* if a terminal handles highlighting or tabs poorly,
X  			   try this define, used in pager.c and termcap.c */
X! /* #define MACOS 	/* define for Apple Macintosh */
X! #endif
X! 
X! #ifdef AMIGA
X! #define NEED_VARARGS
X! # ifdef AZTEC_C
X! #  define KR1ED		/* Aztec 3.6 needs extra help for defined() */
X! # endif
X  #endif
X  
X  #ifdef MACOS
X! /* #define KR1ED	/* for compilers which can't handle defined() */
X! 			/* Lightspeed & Aztec can't handle defined() yet */
X! /* #define LSC		/* for the Lightspeed 3.01p4 C compiler on the Mac */
X! /* #define AZTEC	/* for the Manx Aztec C 3.6c compiler */
X! #define THINKC4	/* for the Think C 4 compiler */
X! /* #define MAKEDEFS_C	/* uncomment this ONLY while compiling makedefs */
X! /* #define CUSTOM_IO	/* uncomment only while compiling Nethack */
X! # ifndef MAKEDEFS_C
X! #  ifndef NEED_VARARGS
X  #define NEED_VARARGS	/* if you're using precompiled headers */
X! #  endif
X  # endif
X+ #define SMALLDATA	/* for Mac compilers with 32K global data limit */
X+ #endif
X+ 
X+ 
X+ #ifdef KR1ED		/* For compilers which cannot handle defined() */
X+ #define defined(x) (-x-1 != -1)
X+ /* Because:
X+  * #define FOO => FOO={} => defined( ) => (-1 != - - 1) => 1
X+  * #define FOO 1 or on command-line -DFOO
X+  *      => defined(1) => (-1 != - 1 - 1) => 1
X+  * if FOO isn't defined, FOO=0. But some compilers default to 0 instead of 1
X+  * for -DFOO, oh well.
X+  *      => defined(0) => (-1 != - 0 - 1) => 0
X+  *
X+  * But:
X+  * defined("") => (-1 != - "" - 1)
X+  *   [which is an unavoidable catastrophe.]
X+  */
X  #endif
X  
X  
X***************
X*** 63,69 ****
X  # ifndef KR1ED
X  #define WIZARD  "izchak" /* the person allowed to use the -D option */
X  # else
X! #define WIZARD 1
X  #define WIZARD_NAME "johnny"
X  # endif
X  #endif
X--- 98,104 ----
X  # ifndef KR1ED
X  #define WIZARD  "izchak" /* the person allowed to use the -D option */
X  # else
X! #define WIZARD
X  #define WIZARD_NAME "johnny"
X  # endif
X  #endif
X***************
X*** 78,90 ****
X   *	smaller bones/level/save files, but require additional code and time.
X   */
X  
X  #define COMPRESS "/usr/local/compress"  /* path name for 'compress' */
X! #ifndef COMPRESS
X  #define ZEROCOMP	/* Use only if COMPRESS is not used -- Olaf Seibert */
X  #endif
X  
X! 
X  #define CHDIR		/* delete if no chdir() available */
X  
X  #ifdef CHDIR
X  /*
X--- 113,128 ----
X   *	smaller bones/level/save files, but require additional code and time.
X   */
X  
X+ #ifndef MACOS
X  #define COMPRESS "/usr/local/compress"  /* path name for 'compress' */
X! # ifndef COMPRESS
X  #define ZEROCOMP	/* Use only if COMPRESS is not used -- Olaf Seibert */
X+ # endif
X  #endif
X  
X! #ifndef MACOS
X  #define CHDIR		/* delete if no chdir() available */
X+ #endif
X  
X  #ifdef CHDIR
X  /*
X***************
X*** 173,218 ****
X   */ 
X  
X  /* game features */
X! #define POLYSELF      1 /* Polymorph self code by Ken Arromdee */
X! #define THEOLOGY      1 /* Smarter gods - The Unknown Hacker */
X! #define SOUNDS        1 /* Add more life to the dungeon */
X! #define KICK          1 /* Allow kicking things besides doors -Izchak Miller */
X  /* dungeon features */
X! #define THRONES       1 /* Thrones and Courts by M. Stephenson */
X! #define FOUNTAINS     1 /* Fountain code by SRT (+ GAN + EB) */
X! #define SINKS         1 /* Kitchen sinks - Janet Walz */
X! #define ALTARS        1 /* Sacrifice sites - Jean-Christophe Collet */
X  /* dungeon levels */
X! #define WALLIFIED_MAZE 1 /* Fancy mazes - Jean-Christophe Collet */
X! #define REINCARNATION 1 /* Rogue-like levels */
X! #define STRONGHOLD    1 /* Challenging special levels - Jean-Christophe Collet*/
X  /* monsters & objects */
X! #define ORACLE        1 /* Include another source of information */
X! #define MEDUSA        1 /* Mirrors and the Medusa by Richard P. Hughey */
X! #define KOPS          1 /* Keystone Kops by Scott R. Turner */
X! #define ARMY          1 /* Soldiers, barracks by Steve Creps */
X! #define WORM          1 /* Long worms */
X! #define GOLEMS        1 /* Golems, by KAA */
X! #define INFERNO       1 /* Demons & Demonlords */
X  #ifdef INFERNO
X! #define SEDUCE        1 /* Succubi/incubi additions, by KAA, suggested by IM */
X  #endif
X! #define TOLKIEN       1 /* More varieties of objects and monsters */
X! #define PROBING       1 /* Wand of probing code by Gil Neiger */
X! #define WALKIES       1 /* Leash code by M. Stephenson */
X! #define SHIRT         1 /* Hawaiian shirt code by Steve Linhart */
X! #define MUSIC         1 /* Musical instruments - Jean-Christophe Collet */
X! #define TUTTI_FRUTTI  1 /* Fruits as in Rogue, but which work... -KAA */
X! #define SPELLS        1 /* Spell casting by M. Stephenson */
X! #define NAMED_ITEMS   1 /* Special named items handling */
X  /* difficulty */
X! #define ELBERETH      1 /* Allow for disabling the E word - Mike 3point */
X! #define EXPLORE_MODE  1 /* Allow non-scoring play with additional powers */
X! #define HARD          1 /* Enhanced wizard code by M. Stephenson */
X  /* I/O */
X! #define REDO          1 /* support for redoing last command - DGK */
X! #define COM_COMPL     1 /* Command line completion by John S. Bien */
X! #define CLIPPING      1 /* allow smaller screens -- ERS */
X  
X  #ifdef REDO
X  #define DOAGAIN '\001'		/* The "redo" key used in tty.c and cmd.c */
X--- 211,258 ----
X   */ 
X  
X  /* game features */
X! #define POLYSELF      /* Polymorph self code by Ken Arromdee */
X! #define THEOLOGY      /* Smarter gods - The Unknown Hacker */
X! #define SOUNDS        /* Add more life to the dungeon */
X! #define KICK          /* Allow kicking things besides doors -Izchak Miller */
X  /* dungeon features */
X! #define THRONES       /* Thrones and Courts by M. Stephenson */
X! #define FOUNTAINS     /* Fountain code by SRT (+ GAN + EB) */
X! #define SINKS         /* Kitchen sinks - Janet Walz */
X! #define ALTARS        /* Sacrifice sites - Jean-Christophe Collet */
X  /* dungeon levels */
X! #define WALLIFIED_MAZE /* Fancy mazes - Jean-Christophe Collet */
X! #define REINCARNATION /* Rogue-like levels */
X! #define STRONGHOLD    /* Challenging special levels - Jean-Christophe Collet*/
X  /* monsters & objects */
X! #define ORACLE        /* Include another source of information */
X! #define MEDUSA        /* Mirrors and the Medusa by Richard P. Hughey */
X! #define KOPS          /* Keystone Kops by Scott R. Turner */
X! #define ARMY          /* Soldiers, barracks by Steve Creps */
X! #define WORM          /* Long worms */
X! #define GOLEMS        /* Golems, by KAA */
X! #define INFERNO       /* Demons & Demonlords */
X  #ifdef INFERNO
X! #define SEDUCE        /* Succubi/incubi additions, by KAA, suggested by IM */
X  #endif
X! #define TOLKIEN       /* More varieties of objects and monsters */
X! #define PROBING       /* Wand of probing code by Gil Neiger */
X! #define WALKIES       /* Leash code by M. Stephenson */
X! #define SHIRT         /* Hawaiian shirt code by Steve Linhart */
X! #define MUSIC         /* Musical instruments - Jean-Christophe Collet */
X! #define TUTTI_FRUTTI  /* Fruits as in Rogue, but which work... -KAA */
X! #define SPELLS        /* Spell casting by M. Stephenson */
X! #define NAMED_ITEMS   /* Special named items handling */
X  /* difficulty */
X! #define ELBERETH      /* Allow for disabling the E word - Mike 3point */
X! #define EXPLORE_MODE  /* Allow non-scoring play with additional powers */
X! #define HARD          /* Enhanced wizard code by M. Stephenson */
X  /* I/O */
X! #define REDO          /* support for redoing last command - DGK */
X! #define COM_COMPL     /* Command line completion by John S. Bien */
X! #ifndef AMIGA
X! #define CLIPPING      /* allow smaller screens -- ERS */
X! #endif
X  
X  #ifdef REDO
X  #define DOAGAIN '\001'		/* The "redo" key used in tty.c and cmd.c */
X*** include/Old/decl.h	Mon Feb 19 22:06:55 1990
X--- include/decl.h	Mon Feb 19 18:16:33 1990
X***************
X*** 20,26 ****
X  E char *catmore;
X  #endif	/* DEF_PAGER */
X  E char SAVEF[];
X! E char *hname;
X  E const char *hu_stat[];	/* defined in eat.c */
X  E int medusa_level;
X  E int bigroom_level;
X--- 20,26 ----
X  E char *catmore;
X  #endif	/* DEF_PAGER */
X  E char SAVEF[];
X! E const char *hname;
X  E const char *hu_stat[];	/* defined in eat.c */
X  E int medusa_level;
X  E int bigroom_level;
X***************
X*** 73,91 ****
X  E int smeq[];
X  E int doorindex;
X  E char *save_cm;
X! E char *killer;
X  E char inv_order[];
X  E char plname[PL_NSIZ];
X  E char dogname[];
X  E char catname[];
X  E const char sdir[], ndir[];	/* defined in hack.c */
X! E char *occtxt;		/* defined when occupation != NULL */
X! E char *nomovemsg;
X  E const char nul[];
X  E char *HI, *HE, *AS, *AE;	/* set up in termcap.c */
X  E char *CD;			/* set up in termcap.c */
X  E int CO, LI;			/* set up in termcap.c: COLNO and ROWNO+3 */
X! E char *traps[];
X  #ifndef MAKEDEFS_C  /* avoid conflict with lock() */
X  E char lock[];
X  #endif
X--- 73,95 ----
X  E int smeq[];
X  E int doorindex;
X  E char *save_cm;
X! #define KILLED_BY_AN 0
X! #define KILLED_BY 1
X! #define NO_KILLER_PREFIX 2
X! E int killer_format;
X! E const char *killer;
X  E char inv_order[];
X  E char plname[PL_NSIZ];
X  E char dogname[];
X  E char catname[];
X  E const char sdir[], ndir[];	/* defined in hack.c */
X! E const char *occtxt;		/* defined when occupation != NULL */
X! E const char *nomovemsg;
X  E const char nul[];
X  E char *HI, *HE, *AS, *AE;	/* set up in termcap.c */
X  E char *CD;			/* set up in termcap.c */
X  E int CO, LI;			/* set up in termcap.c: COLNO and ROWNO+3 */
X! E const char *traps[];
X  #ifndef MAKEDEFS_C  /* avoid conflict with lock() */
X  E char lock[];
X  #endif
X***************
X*** 130,136 ****
X--- 134,144 ----
X  #ifndef COLOR_H
X  #include "color.h"
X  #endif
X+ # ifdef TOS
X+ E const char *hilites[MAXCOLORS];
X+ # else
X  E char *hilites[MAXCOLORS];
X+ # endif
X  #endif
X  
X  #ifndef OBJ_H
X***************
X*** 189,194 ****
X--- 197,210 ----
X  
X  E const char nothing_happens[];
X  E const char thats_enough_tries[];
X+ 
X+ E const char monsyms[], objsyms[];
X+ E const char *monexplain[], *objexplain[];
X+ 
X+ #ifdef NAMED_ITEMS
X+ E const int artifact_num;
X+ E boolean artiexist[];
X+ #endif
X  
X  #undef E
X  
X*** include/Old/def_os2.h	Mon Feb 19 22:07:10 1990
X--- include/def_os2.h	Tue Nov 28 20:50:49 1989
X***************
X*** 106,108 ****
X--- 106,109 ----
X  USHORT APIENTRY DosFindNext(HDIR, PFILEFINDBUF, USHORT, PUSHORT);
X  USHORT APIENTRY DosSelectDisk(USHORT);
X  USHORT APIENTRY VioGetMode(PVIOMODEINFO, HVIO);
X+ USHORT APIENTRY VioSetCurPos(USHORT, USHORT, HVIO);
X*** include/Old/flag.h	Mon Feb 19 22:08:59 1990
X--- include/flag.h	Wed Jan 10 19:21:58 1990
X***************
X*** 62,67 ****
X--- 62,70 ----
X  #endif
X  	boolean  rawio;		/* Whether can use rawio (IOCTL call) */
X  #endif
X+ #ifdef MACOS
X+ 	boolean  wantspace;		/* Waiting for a space (as in --More--) */
X+ #endif
X  };
X  
X  extern struct flag flags;
X*** include/Old/func_tab.h	Mon Feb 19 22:09:13 1990
X--- include/func_tab.h	Tue Jan 16 18:11:08 1990
X***************
X*** 8,22 ****
X  
X  struct func_tab {
X  	char f_char;
X! 	int (*f_funct)();
X! 	char *f_text;
X  };
X  
X  extern const struct func_tab cmdlist[];
X  
X  struct ext_func_tab {
X! 	char *ef_txt, *ef_desc;
X! 	int (*ef_funct)();
X  };
X  
X  extern const struct ext_func_tab extcmdlist[];
X--- 8,22 ----
X  
X  struct func_tab {
X  	char f_char;
X! 	int NDECL((*f_funct));
X! 	const char *f_text;
X  };
X  
X  extern const struct func_tab cmdlist[];
X  
X  struct ext_func_tab {
X! 	const char *ef_txt, *ef_desc;
X! 	int NDECL((*ef_funct));
X  };
X  
X  extern const struct ext_func_tab extcmdlist[];
X*** include/Old/global.h	Mon Feb 19 22:09:24 1990
X--- include/global.h	Mon Feb 19 18:16:29 1990
X***************
X*** 5,23 ****
X  #ifndef GLOBAL_H
X  #define	GLOBAL_H
X  
X! #include <stdio.h>
X  
X  
X  /* #define BETA		/* if a beta-test copy  [MRS] */
X! #define VERSION "3.0h"  /* version number. */
X  
X  /*
X   * Files expected to exist in the playground directory.
X   */
X  
X! #define RECORD	"record"  /* the file containing the list of topscorers */
X! #define	HELP	"help"	  /* the file containing command descriptions */
X! #define	SHELP	"hh"	  /* abbreviated form of the same */
X  #define	RUMORFILE	"rumors"	/* a file with fortune cookies */
X  #define ORACLEFILE	"oracles"	/* a file with oracular information */
X  #define	DATAFILE	"data"	/* a file giving the meaning of symbols used */
X--- 5,25 ----
X  #ifndef GLOBAL_H
X  #define	GLOBAL_H
X  
X! #ifndef VMS
X! # include <stdio.h>
X! #endif
X  
X  
X  /* #define BETA		/* if a beta-test copy  [MRS] */
X! #define VERSION "3.0i"  /* version number. */
X  
X  /*
X   * Files expected to exist in the playground directory.
X   */
X  
X! #define RECORD		"record"  /* a file containing list of topscorers */
X! #define	HELP		"help"	  /* a file containing command descriptions */
X! #define	SHELP		"hh"	  	/* abbreviated form of the same */
X  #define	RUMORFILE	"rumors"	/* a file with fortune cookies */
X  #define ORACLEFILE	"oracles"	/* a file with oracular information */
X  #define	DATAFILE	"data"	/* a file giving the meaning of symbols used */
X***************
X*** 25,31 ****
X  #define HISTORY		"history"	/* a file giving nethack's history */
X  #define LICENSE		"license"	/* file with license information */
X  #define OPTIONFILE	"opthelp"	/* a file explaining runtime options */
X! 
X  
X  
X  /* Assorted definitions that may depend on selections in config.h. */
X--- 27,35 ----
X  #define HISTORY		"history"	/* a file giving nethack's history */
X  #define LICENSE		"license"	/* file with license information */
X  #define OPTIONFILE	"opthelp"	/* a file explaining runtime options */
X! #ifdef MACOS
X! #define MACHELP		"MacHelp"	/* file with Macintosh information */
X! #endif
X  
X  
X  /* Assorted definitions that may depend on selections in config.h. */
X***************
X*** 55,64 ****
X  typedef schar	xchar;
X  typedef	xchar	boolean;		/* 0 or 1 */
X  
X! #ifndef MACOS	/* defined in MacTypes.h(LSC) or Types.h(Aztec & MPW) */
X  #define	TRUE	((boolean)1)
X  #define	FALSE	((boolean)0)
X  #endif
X  
X  #ifdef BITFIELDS
X  #define	Bitfield(x,n)	unsigned x:n
X--- 59,70 ----
X  typedef schar	xchar;
X  typedef	xchar	boolean;		/* 0 or 1 */
X  
X! #ifndef MACOS
X! #ifndef TRUE		/* defined in some systems' native include files */
X  #define	TRUE	((boolean)1)
X  #define	FALSE	((boolean)0)
X  #endif
X+ #endif
X  
X  #ifdef BITFIELDS
X  #define	Bitfield(x,n)	unsigned x:n
X***************
X*** 74,80 ****
X   * prototypes for the ANSI compilers so people quit trying to fix the prototypes
X   * to match the standard and thus lose the typechecking.
X   */
X! #if defined(MSDOS) || defined(THINKC4) && !(defined(AMIGA) || defined(TOS))
X  # define CHAR_P char
X  # define SCHAR_P schar
X  # define UCHAR_P uchar
X--- 80,86 ----
X   * prototypes for the ANSI compilers so people quit trying to fix the prototypes
X   * to match the standard and thus lose the typechecking.
X   */
X! #if (defined(MSDOS) && !defined(TOS)) || defined (AMIGA) || defined(THINKC4)
X  # define CHAR_P char
X  # define SCHAR_P schar
X  # define UCHAR_P uchar
X***************
X*** 122,127 ****
X--- 128,134 ----
X  
X  #if defined(VMS) && !defined(VMSCONF_H)
X  # include "vmsconf.h"
X+ # include <stdio.h>
X  #endif
X  
X  #if defined(UNIX) && !defined(UNIXCONF_H)
X*** include/Old/hack.h	Mon Feb 19 22:09:46 1990
X--- include/hack.h	Mon Feb 19 18:16:34 1990
X***************
X*** 75,80 ****
X--- 75,85 ----
X  #include	"rm.h"
X  #endif
X  
X+ #ifdef OVERLAY	/* This doesn't belong here, but we have little choice */
X+ #undef NDECL
X+ #define NDECL(f) f()
X+ #endif
X+ 
X  #ifndef EXTERN_H
X  #include	"extern.h"
X  #endif
X***************
X*** 117,121 ****
X--- 122,151 ----
X  #define getuid() 1
X  #define getlogin() ((char *) NULL)
X  #endif /* MSDOS */
X+ 
X+ /* Macro for a few items that are only static if we're not overlaid.... */
X+ #if defined(OVERLAY) && (defined(OVL0) || defined(OVL1) || defined(OVL2) || defined(OVLB))
X+ # define OSTATIC extern
X+ # define XSTATIC
X+ # define OVERLAY_SPLIT
X+ # ifdef OVLB
X+ #  define VSTATIC
X+ # else
X+ #  define VSTATIC extern
X+ # endif
X+ #else
X+ # define OSTATIC static
X+ # define XSTATIC static
X+ # define VSTATIC static
X+ #endif
X+ 
X+ /* Unless explicit control is being taken of what is linked where, */
X+ /* always compile everything */
X+ #if !defined(OVERLAY) || (!defined(OVL0) && !defined(OVL1) && !defined(OVL2) && !defined(OVLB))
X+ # define OVL0	/* Highest priority */
X+ # define OVL1
X+ # define OVL2	/* Lowest specified priority */
X+ # define OVLB	/* The base overlay segment */
X+ #endif
X  
X  #endif /* HACK_H /**/
X*** include/Old/macconf.h	Mon Feb 19 22:10:17 1990
X--- include/macconf.h	Fri Feb 16 19:15:36 1990
X***************
X*** 10,16 ****
X   *  The following options are configurable:
X   */
X  
X! #define RANDOM		1 /* have Berkeley random(3) */
X  
X  #define PATHLEN	220	/* maximum pathlength */
X  #define FILENAME	31	/* maximum filename length (conservative) */
X--- 10,16 ----
X   *  The following options are configurable:
X   */
X  
X! #define RANDOM		/* have Berkeley random(3) */
X  
X  #define PATHLEN	220	/* maximum pathlength */
X  #define FILENAME	31	/* maximum filename length (conservative) */
X***************
X*** 18,24 ****
X  #define glo(x)	name_file(lock, x)	/* name_file used for bones */
X  #include "msdos.h"	/* contains necessary externs for [os_name].c */
X  extern char *configfile;
X! #define NO_SIGNAL	1
X  #define	perror(x)
X  
X  /*
X--- 18,24 ----
X  #define glo(x)	name_file(lock, x)	/* name_file used for bones */
X  #include "msdos.h"	/* contains necessary externs for [os_name].c */
X  extern char *configfile;
X! #define NO_SIGNAL
X  #define	perror(x)
X  
X  /*
X***************
X*** 55,60 ****
X--- 55,62 ----
X  #include	<types.h>
X  #include	<io.h>
X  #define	memcpy(x,y,j)	movmem(y,x,j)
X+ #define memset(x,y,j)	setmem(x,j,y)
X+ extern char *malloc();
X  extern char	*calloc();
X  #else
X  #include	<Fcntl.h>
X***************
X*** 70,75 ****
X--- 72,78 ----
X  #endif
X  #endif
X  
X+ #include	<pascal.h>
X  #include	<Quickdraw.h>
X  #include	<FontMgr.h>
X  #include	<EventMgr.h>
X***************
X*** 101,108 ****
X--- 104,117 ----
X  #ifdef AZTEC
X  #include	<utime.h>	/* AZTEC 3.6c */
X  #define	curs(x,y)	tcurs(x,y)
X+ #include	<Types.h>
X+ #define	CtoPstr	ctop
X+ #define	PtoCstr	ptoc
X  #else
X  #include	<Time.h>	/* MPW 3.0 */
X+ #include	<Strings.h>
X+ #define	CtoPstr	c2pstr
X+ #define	PtoCstr	p2cstr
X  #endif
X  
X  
X***************
X*** 141,151 ****
X  	SysEnvRec	system;
X  	char	*keyMap;
X  	short	color[8];
X  	Handle	shortMBarHandle,
X  			fullMBarHandle;
X  } term_info;
X  
X! #define TEXTCOLOR	1
X  
X  #define	appleMenu	101
X  #define	fileMenu	102
X--- 150,161 ----
X  	SysEnvRec	system;
X  	char	*keyMap;
X  	short	color[8];
X+ 	CursHandle	cursor[8];
X  	Handle	shortMBarHandle,
X  			fullMBarHandle;
X  } term_info;
X  
X! #define TEXTCOLOR
X  
X  #define	appleMenu	101
X  #define	fileMenu	102
X***************
X*** 172,177 ****
X--- 182,192 ----
X  #define	LEFT_OFFSET	10
X  
X  /* for macflags variable */
X+ #define	fScreenKluges		0x3000
X+ #define	fFullScrKluge		0x2000
X+ #define	fCornScrKluge		0x1000
X+ #define	fDisplayKluge		0x800
X+ #define	fMoveWRTMouse		0x400
X  #define	fZoomOnContextSwitch		0x200
X  #define	fUseCustomFont		0x100
X  #define	fToggleNumPad		0x80
X***************
X*** 189,199 ****
X--- 204,220 ----
X  #define	BONES_TYPE	'BONE'
X  #define	LEVEL_TYPE	'LEVL'
X  #define	HACK_DATA	'HDTA'
X+ #define AUXIL_TYPE	'AUXL'
X+ #define TEXT_TYPE	'TEXT'
X  #define MONST_DATA	101
X  #define OBJECT_DATA	104
X  #define	DEFAULT_DATA	100
X  
X  #include "extern.h"
X+ 
X+ # ifndef MACALERT_H
X+ #  include "MacAlert.h"
X+ # endif
X  
X  #endif /* MACCONF_H /* */
X  #endif /* MACOS / */
X*** include/Old/mfndpos.h	Mon Feb 19 22:10:31 1990
X--- include/mfndpos.h	Tue Nov 28 21:10:41 1989
X***************
X*** 1,4 ****
X! /*	SCCS Id: @(#)mfndpos.h	3.0	88/10/15
X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X  /* NetHack may be freely redistributed.  See license for details. */
X  /* mfndpos.h - version 1.0.2 */
X--- 1,4 ----
X! /*	SCCS Id: @(#)mfndpos.h	3.0	89/11/22
X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X  /* NetHack may be freely redistributed.  See license for details. */
X  /* mfndpos.h - version 1.0.2 */
X***************
X*** 6,26 ****
X  #ifndef MFNDPOS_H
X  #define MFNDPOS_H
X  
X! /* changed by GAN 02/06/87 to add nine extra bits for traps -
X!  * this because new traps make nine for traps insufficient
X!  */
X!  
X! #define ALLOW_TRAPS     0777777L
X! #define ALLOW_U         01000000L	/* can attack you */
X! #define ALLOW_M         02000000L	/* can attack other monsters */
X! #define ALLOW_TM        04000000L
X! #define ALLOW_ALL       (ALLOW_U | ALLOW_M | ALLOW_TM | ALLOW_TRAPS)
X! #define ALLOW_SSM       010000000L	/* ignores scare monster */
X! #define ALLOW_ROCK      020000000L	/* pushes rocks */
X! #define NOTONL          040000000L	/* stays off direct line to player */
X! #define NOGARLIC        0100000000L	/* hates garlic */
X! #define ALLOW_WALL      0200000000L	/* walks through walls */
X! #define ALLOW_DIG       0400000000L	/* digs */
X! #define ALLOW_SANCT	01000000000L	/* enters a temple */
X  
X  #endif /* MFNDPOS_H /**/
X--- 6,25 ----
X  #ifndef MFNDPOS_H
X  #define MFNDPOS_H
X  
X! #define ALLOW_TRAPS	0x0002FFFFL	/* can enter 18 kinds of traps */
X! #define ALLOW_U 	0x00040000L	/* can attack you */
X! #define ALLOW_M 	0x00080000L	/* can attack other monsters */
X! #define ALLOW_TM	0x00100000L	/* can attack tame monsters */
X! #define ALLOW_ALL	(ALLOW_U | ALLOW_M | ALLOW_TM | ALLOW_TRAPS)
X! #define NOTONL		0x00200000L	/* avoids direct line to player */
X! #define OPENDOOR	0x00400000L	/* opens closed doors */
X! #define UNLOCKDOOR	0x00800000L	/* unlocks locked doors */
X! #define BUSTDOOR	0x01000000L	/* breaks any doors */
X! #define ALLOW_ROCK	0x02000000L	/* pushes rocks */
X! #define ALLOW_WALL	0x04000000L	/* walks thru walls */
X! #define ALLOW_DIG	0x08000000L	/* digs */
X! #define ALLOW_SANCT	0x20000000L	/* enters temples */
X! #define ALLOW_SSM	0x40000000L	/* ignores scare monster */
X! #define NOGARLIC	0x80000000L	/* hates garlic */
X  
X  #endif /* MFNDPOS_H /**/
X*** include/Old/mkroom.h	Mon Feb 19 22:10:42 1990
X--- include/mkroom.h	Thu Jan 18 20:28:09 1990
X***************
X*** 13,19 ****
X  };
X  
X  struct shclass {
X! 	char	*name;	/* name of the shop type */
X  	char	symb;	/* this identifies the shop type */
X  	int	prob;	/* the shop type probability in % */
X  	schar	dist;	/* artifact placement type */
X--- 13,19 ----
X  };
X  
X  struct shclass {
X! 	const char	*name;	/* name of the shop type */
X  	char	symb;	/* this identifies the shop type */
X  	int	prob;	/* the shop type probability in % */
X  	schar	dist;	/* artifact placement type */
X*** include/Old/monattk.h	Mon Feb 19 22:10:54 1990
X--- include/monattk.h	Mon Nov 20 20:44:37 1989
X***************
X*** 1,4 ****
X! /*	SCCS Id: @(#)monattk.h	3.0	89/06/15
X  /* NetHack may be freely redistributed.  See license for details. */
X  /* Copyright 1988, M. Stephenson */
X  
X--- 1,4 ----
X! /*	SCCS Id: @(#)monattk.h	3.0	89/11/20
X  /* NetHack may be freely redistributed.  See license for details. */
X  /* Copyright 1988, M. Stephenson */
X  
X***************
X*** 72,77 ****
X  
X  #define AD_SAMU		252		/* hits, may steal Amulet (Wizard) */
X  #define AD_CURS		253		/* random curse (ex. gremlin) */
X- #define AD_CUSS		255		/* says nasty things about you */
X  
X  #endif /* MONATTK_H /**/
X--- 72,76 ----
X*** include/Old/monst.h	Mon Feb 19 22:11:43 1990
X--- include/monst.h	Fri Feb  2 18:24:36 1990
X***************
X*** 18,26 ****
X  #define	MTSZ	4
X  	coord mtrack[MTSZ];	/* monster track */
X  	int mhp, mhpmax;
X! 	char mappearance;	/* nonzero for undetected 'M's and the Wizard */
X! 	int mspec_used; 	/* monster's special ability attack timeout */
X  	schar mtame;		/* level of tameness, implies peaceful */
X  
X  	Bitfield(mimic,1);	/* undetected mimic */
X  	Bitfield(mdispl,1);	/* mdx,mdy valid */
X--- 18,33 ----
X  #define	MTSZ	4
X  	coord mtrack[MTSZ];	/* monster track */
X  	int mhp, mhpmax;
X! 	unsigned mappearance;	/* for undetected mimics and the wiz */
X! 	uchar	 m_ap_type;	/* what mappearance is describing: */
X! #define M_AP_NOTHING	0	/* mappearance is unused */
X! #define M_AP_FURNITURE	1	/* stairs, a door, an altar, etc. */
X! #define M_AP_OBJECT	2	/* an object */
X! #define M_AP_MONSTER	3	/* a monster */
X! #define M_AP_GOLD	4	/* a quantity (mappearance holds it) of gold */
X! 
X  	schar mtame;		/* level of tameness, implies peaceful */
X+ 	int mspec_used; 	/* monster's special ability attack timeout */
X  
X  	Bitfield(mimic,1);	/* undetected mimic */
X  	Bitfield(mdispl,1);	/* mdx,mdy valid */
X***************
X*** 33,59 ****
X  	Bitfield(mflee,1);	/* fleeing */
X  	Bitfield(mfleetim,7);	/* timeout for mflee */
X  
X  	Bitfield(msleep,1);	/* sleeping */
X- 	Bitfield(mfroz,1);	/* frozen */
X  	Bitfield(mstun,1);	/* stunned (off balance) */
X  	Bitfield(mconf,1);	/* confused */
X  	Bitfield(mcan,1);	/* has been cancelled */
X  	Bitfield(mpeaceful,1);	/* does not attack unprovoked */
X- 	Bitfield(mcansee,1);	/* cansee 1, temp.blinded 0, blind 0 */
X- 
X- 	Bitfield(mblinded,7);	/* cansee 0, temp.blinded n, blind 0 */
X  	Bitfield(mtrapped,1);	/* trapped in a pit or bear trap */
X! 
X  	Bitfield(isshk,1);	/* is shopkeeper */
X  	Bitfield(isgd,1);	/* is guard */
X  #if defined(ALTARS) && defined(THEOLOGY)
X  	Bitfield(ispriest,1);	/* is a priest */
X  #endif
X  	Bitfield(iswiz,1);	/* is the Wizard of Yendor */
X- 	Bitfield(mleashed,1);	/* monster is on a leash */
X  #ifdef WORM
X  	Bitfield(wormno,5);	/* at most 31 worms on any level */
X  #endif
X  	long mtrapseen;		/* bitmap of traps we've been trapped in */
X  	long mlstmv;		/* prevent two moves at once */
X  	struct obj *minvent;
X--- 40,69 ----
X  	Bitfield(mflee,1);	/* fleeing */
X  	Bitfield(mfleetim,7);	/* timeout for mflee */
X  
X+ 	Bitfield(mcansee,1);	/* cansee 1, temp.blinded 0, blind 0 */
X+ 	Bitfield(mblinded,7);	/* cansee 0, temp.blinded n, blind 0 */
X+ 
X+ 	Bitfield(mcanmove,1);	/* paralysis, similar to mblinded */
X+ 	Bitfield(mfrozen,7);
X+ 
X  	Bitfield(msleep,1);	/* sleeping */
X  	Bitfield(mstun,1);	/* stunned (off balance) */
X  	Bitfield(mconf,1);	/* confused */
X  	Bitfield(mcan,1);	/* has been cancelled */
X  	Bitfield(mpeaceful,1);	/* does not attack unprovoked */
X  	Bitfield(mtrapped,1);	/* trapped in a pit or bear trap */
X! 	Bitfield(mleashed,1);	/* monster is on a leash */
X  	Bitfield(isshk,1);	/* is shopkeeper */
X+ 
X  	Bitfield(isgd,1);	/* is guard */
X  #if defined(ALTARS) && defined(THEOLOGY)
X  	Bitfield(ispriest,1);	/* is a priest */
X  #endif
X  	Bitfield(iswiz,1);	/* is the Wizard of Yendor */
X  #ifdef WORM
X  	Bitfield(wormno,5);	/* at most 31 worms on any level */
X  #endif
X+ 
X  	long mtrapseen;		/* bitmap of traps we've been trapped in */
X  	long mlstmv;		/* prevent two moves at once */
X  	struct obj *minvent;
X*** include/Old/msdos.h	Mon Feb 19 22:12:06 1990
X--- include/msdos.h	Fri Dec 29 21:38:04 1989
X***************
X*** 10,15 ****
X--- 10,18 ----
X  #endif
X  extern const char *alllevels, *allbones;
X  extern char levels[], bones[], permbones[], SAVEF[], hackdir[];
X+ #ifdef MSDOS
X+ extern char SAVEP[];
X+ #endif
X  extern int ramdisk;
X  #if defined(DGK) && !defined(OLD_TOS)
X  extern int count_only;
X*** include/Old/obj.h	Mon Feb 19 22:12:17 1990
X--- include/obj.h	Thu Feb  8 17:17:26 1990
X***************
X*** 94,100 ****
X  #define is_sword(otmp)	(otmp->otyp >= SHORT_SWORD && otmp->otyp <= KATANA)
X  #define bimanual(otmp)	(otmp->olet == WEAPON_SYM && objects[otmp->otyp].oc_bimanual)
X  
X- #define is_flammable(otmp)	(objects[otmp->otyp].oc_material == WOOD || objects[otmp->otyp].oc_material == 0)
X  #define is_rustprone(otmp)	(objects[otmp->otyp].oc_material == METAL)
X  #define is_corrodeable(otmp)	(objects[otmp->otyp].oc_material == COPPER)
X  # endif /* STUPID_CPP */
X--- 94,99 ----
X*** include/Old/objclass.h	Mon Feb 19 22:12:33 1990
X--- include/objclass.h	Thu Jan 18 20:28:13 1990
X***************
X*** 8,16 ****
X  /* definition of a class of objects */
X  
X  struct objclass {
X! 	char *oc_name;		/* actual name */
X! 	char *oc_descr;		/* description when name unknown */
X! 	char *oc_uname;		/* called by user */
X  	Bitfield(oc_name_known,1);
X  	Bitfield(oc_merge,1);	/* merge otherwise equal objects */
X  	Bitfield(oc_uses_known,1); /* obj->known affects full decription */
X--- 8,16 ----
X  /* definition of a class of objects */
X  
X  struct objclass {
X! 	const char *oc_name;		/* actual name */
X! 	const char *oc_descr;		/* description when name unknown */
X! 	char *oc_uname;			/* called by user */
X  	Bitfield(oc_name_known,1);
X  	Bitfield(oc_merge,1);	/* merge otherwise equal objects */
X  	Bitfield(oc_uses_known,1); /* obj->known affects full decription */
X***************
X*** 79,85 ****
X  /* definitions of all object-symbols */
X  
X  #define	RANDOM_SYM	'\0'	/* used for generating random objects */
X! #define	ILLOBJ_SYM	'\\'
X  #define	AMULET_SYM	'"'
X  #define	FOOD_SYM	'%'
X  #define	WEAPON_SYM	')'
X--- 79,85 ----
X  /* definitions of all object-symbols */
X  
X  #define	RANDOM_SYM	'\0'	/* used for generating random objects */
X! #define	ILLOBJ_SYM	']'	/* should be same as S_MIMIC_DEF      */
X  #define	AMULET_SYM	'"'
X  #define	FOOD_SYM	'%'
X  #define	WEAPON_SYM	')'
X*** include/Old/patchlevel.h	Mon Feb 19 22:12:47 1990
X--- include/patchlevel.h	Mon Feb 19 21:53:08 1990
X***************
X*** 66,69 ****
X   *  teach '/' about configurable symbols
X   */
X  
X! #define PATCHLEVEL	6
X--- 66,87 ----
X   *  teach '/' about configurable symbols
X   */
X  
X! /*
X!  *  Patch 7, February 19, 1990
X!  *  refine overlay support to handle portions of .c files through OVLx
X!  *	(courtesy above plus Kevin Smolkowski)
X!  *  update and extend Amiga port and documentation (courtesy Richard Addison,
X!  *	Jochen Erwied, Mark Gooderum, Ken Lorber, Greg Olson, Mike Passaretti,
X!  *	and Gregg Wonderly)
X!  *  refine and extend Macintosh port and documentation (courtesy Johnny Lee,
X!  *	Kevin Sitze, Michael Sokolov, Andy Swanson, Jon Watte, and Tom West)
X!  *  refine VMS documentation
X!  *  continuing ANSIfication, this time of const usage
X!  *  teach '/' about differences within monster classes
X!  *  smarter eating code (yet again), death messages, and treatment of
X!  *	non-animal monsters, monster unconsciousness, and naming
X!  *  extended version command to give compilation options
X!  *  and the usual bug fixes and hole plugs
X!  */
X! 
X! #define PATCHLEVEL	7
X*** include/Old/pcconf.h	Mon Feb 19 22:12:59 1990
X--- include/pcconf.h	Thu Feb 15 19:05:44 1990
X***************
X*** 6,16 ****
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! #ifndef TOS
X  /*
X   *  The following options are configurable:
X   */
X--- 6,18 ----
X  #ifndef PCCONF_H
X  #define PCCONF_H
X  
X! #if !defined(TOS) && !defined(AMIGA)
X  
X! /* #define MSC		/* define for pre-ANSI Microsoft C compilers (ver. < 5.0). */
X! 
X! /* #define OS2		/* define for OS/2 (Timo Hakulinen) */
X! /* #define OS2_CODEVIEW	/* define for OS/2 CodeView debugger versions earlier
X! 			   than 2.3, otherwise path searches may fail */
X  /*
X   *  The following options are configurable:
X   */
X***************
X*** 61,67 ****
X--- 63,71 ----
X  #define index	strchr
X  #define rindex	strrchr
X  
X+ #ifndef AMIGA
X  #include <time.h>
X+ #endif
X  
X  #ifdef RANDOM
X  /* Use the high quality random number routines. */
X***************
X*** 95,101 ****
X  #define Getchar tgetch
X  #endif
X  
X! #ifndef TOS
X  #  define TEXTCOLOR /* */
X  #endif
X  
X--- 99,105 ----
X  #define Getchar tgetch
X  #endif
X  
X! #if !defined(TOS) && !defined(AMIGA)
X  #  define TEXTCOLOR /* */
X  #endif
X  
X*** include/Old/permonst.h	Mon Feb 19 22:13:17 1990
X--- include/permonst.h	Tue Jan 16 18:11:23 1990
X***************
X*** 16,23 ****
X   *	are set, they may have a special meaning.  For example, if set
X   *	for a blinding attack, they determine the amount of time blinded.
X   */
X- struct attack {
X  
X  	uchar           aatyp;
X  	uchar           adtyp, damn, damd;
X  };
X--- 16,23 ----
X   *	are set, they may have a special meaning.  For example, if set
X   *	for a blinding attack, they determine the amount of time blinded.
X   */
X  
X+ struct attack {
X  	uchar           aatyp;
X  	uchar           adtyp, damn, damd;
X  };
X***************
X*** 35,41 ****
X  #if defined(SMALLDATA) && !defined(MAKEDEFS_C)
X  	char		mname[24], mlet;		/* full name and sym */
X  #else
X! 	char		*mname, mlet;		/* full name and sym */
X  #endif
X  	schar		mlevel,			/* base monster level */
X  			mmove,			/* move speed */
X--- 35,42 ----
X  #if defined(SMALLDATA) && !defined(MAKEDEFS_C)
X  	char		mname[24], mlet;		/* full name and sym */
X  #else
X! 	const char	*mname;			/* full name */
X! 	char		mlet;			/* symbol */
X  #endif
X  	schar		mlevel,			/* base monster level */
X  			mmove,			/* move speed */
X*** include/Old/rm.h	Mon Feb 19 22:13:44 1990
X--- include/rm.h	Sat Feb  3 22:42:58 1990
X***************
X*** 68,74 ****
X  #define IS_STWALL(typ)	((typ) <= TRWALL)	/* STONE <= (typ) <= TRWALL */
X  #define IS_ROCK(typ)	((typ) < POOL)		/* absolutely nonaccessible */
X  #define IS_DOOR(typ)	((typ) == DOOR)
X- #define IS_FLOOR(typ)	((typ) == ROOM)
X  #define ACCESSIBLE(typ)	((typ) >= DOOR)		/* good position */
X  #define IS_ROOM(typ)	((typ) >= ROOM)		/* ROOM, STAIRS, furniture.. */
X  #define ZAP_POS(typ)	((typ) >= POOL)
X--- 68,73 ----
X***************
X*** 128,134 ****
X  typedef uchar symbol_array[MAXPCHARS];
X  
X  extern symbol_array showsyms;
X! extern char *explainsyms[MAXPCHARS];  /* tells what the characters are */
X  #ifdef REINCARNATION
X  extern symbol_array savesyms;
X  #endif
X--- 127,133 ----
X  typedef uchar symbol_array[MAXPCHARS];
X  
X  extern symbol_array showsyms;
X! extern const char *explainsyms[MAXPCHARS];  /* tells what the characters are */
X  #ifdef REINCARNATION
X  extern symbol_array savesyms;
X  #endif
X*** include/Old/tosconf.h	Mon Feb 19 22:15:04 1990
X--- include/tosconf.h	Thu Feb 15 19:09:29 1990
X***************
X*** 8,36 ****
X  
X  #define MSDOS		/* must be defined to allow some inclusions */
X  
X! /* NOTE: if your TOS compiler is dumb, #define OLD_TOS and compile with
X!    oldtos.c to get a minimal configuration (you may need to do some
X!    tweaking); otherwise (e.g. GCC) don't do it. OLD_TOS corresponds
X!    most closely to LATTICE C, I think */
X  
X! /* #define OLD_TOS 		/* primitive C library */
X! /* #define NO_SIGNAL 		/* compiler doesn't support signals */
X  
X! #ifdef __GNUC__
X  #define FCMASK	0666
X  #define O_BINARY 0
X- #else
X- #define FCMASK	0x8000
X  #endif
X  
X  #ifdef UNIXDEBUG
X- #define O_BINARY	0
X  #define remove(x)	unlink(x)
X- #endif
X- 
X- #ifdef OLD_TOS
X- #define Rand() rand()
X- #define Srand() srand()
X  #endif
X  
X  /* configurable options */
X--- 8,30 ----
X  
X  #define MSDOS		/* must be defined to allow some inclusions */
X  
X! /*
X!    Adjust these options to suit your compiler. The default here is for
X!    GNU C with the latest version of the library.
X! */
X  
X! /*#define NO_SIGNAL 		/* library doesn't support signals	*/
X! /*#define NO_FSTAT		/* library doesn't have fstat() call	*/
X  
X! #ifdef O_BINARY
X! #define FCMASK 	O_BINARY
X! #else
X  #define FCMASK	0666
X  #define O_BINARY 0
X  #endif
X  
X  #ifdef UNIXDEBUG
X  #define remove(x)	unlink(x)
X  #endif
X  
X  /* configurable options */
X*** include/Old/tradstdc.h	Mon Feb 19 22:15:20 1990
X--- include/tradstdc.h	Tue Feb  6 18:45:05 1990
X***************
X*** 10,15 ****
X--- 10,19 ----
X  #define void	int
X  #endif
X  
X+ #ifdef APOLLO	/* the Apollo C compiler claims to be __STDC__, but isn't */
X+ #undef __STDC__
X+ #endif
X+ 
X  /*
X   * ANSI X3J11 detection.
X   * Makes substitutes for compatibility with the old C standard.
X***************
X*** 18,25 ****
X  /* Decide how to handle variable parameter lists:
X   * USE_STDARG means use the ANSI <stdarg.h> facilities (only ANSI compilers
X   * should do this, and only if the library supports it).
X!  * USE_VARARGS means use the <varargs.h> facilities. Again, this should only
X!  * be done if the library supports it. ANSI is *not* required for this.
X   * Otherwise, the kludgy old methods are used.
X   * The defaults are USE_STDARG for ANSI compilers, and USE_OLDARGS for
X   * others.
X--- 22,29 ----
X  /* Decide how to handle variable parameter lists:
X   * USE_STDARG means use the ANSI <stdarg.h> facilities (only ANSI compilers
X   * should do this, and only if the library supports it).
X!  * USE_VARARGS means use the <varargs.h> facilities.  Again, this should only
X!  * be done if the library supports it.  ANSI is *not* required for this.
X   * Otherwise, the kludgy old methods are used.
X   * The defaults are USE_STDARG for ANSI compilers, and USE_OLDARGS for
X   * others.
X***************
X*** 28,35 ****
X  /* #define USE_VARARGS		/* use <varargs.h> instead of <stdarg.h> */
X  /* #define USE_OLDARGS		/* don't use any variable argument facilites */
X  
X! #ifdef __STDC__
X! # if !(defined(AMIGA) || defined(USE_VARARGS) || defined(USE_OLDARGS))
X  #   define USE_STDARG
X  # endif
X  #endif
X--- 32,39 ----
X  /* #define USE_VARARGS		/* use <varargs.h> instead of <stdarg.h> */
X  /* #define USE_OLDARGS		/* don't use any variable argument facilites */
X  
X! #if defined(__STDC__) || defined(VMS)
X! # if !(defined(AMIGA) && defined(AZTEC_C) || defined(USE_VARARGS) || defined(USE_OLDARGS))
X  #   define USE_STDARG
X  # endif
X  #endif
X***************
X*** 71,88 ****
X  #endif
X  #endif /* NEED_VARARGS */
X  
X! #if (defined(__STDC__) || defined(MSDOS) || defined(THINKC4)) && !defined(AMIGA)
X  
X  /* Used for robust ANSI parameter forward declarations:
X   * int VDECL(sprintf, (char *, const char *, ...));
X   *
X   * FDECL() is used for functions with a fixed number of arguments;
X   * VDECL() is used for functions with a variable number of arguments.
X   * Separate macros are needed because ANSI will mix old-style declarations
X!  * with prototypes, except in the case of varargs.
X   */
X  
X  # define FDECL(f,p)	f p
X  # if defined(MSDOS) || defined(USE_STDARG)
X  #  define VDECL(f,p)	f p
X  # else
X--- 75,98 ----
X  #endif
X  #endif /* NEED_VARARGS */
X  
X! 
X! #if defined(__STDC__) || defined(MSDOS) || defined(THINKC4)
X  
X  /* Used for robust ANSI parameter forward declarations:
X   * int VDECL(sprintf, (char *, const char *, ...));
X   *
X+  * NDECL() is used for functions with zero arguments;
X   * FDECL() is used for functions with a fixed number of arguments;
X   * VDECL() is used for functions with a variable number of arguments.
X   * Separate macros are needed because ANSI will mix old-style declarations
X!  * with prototypes, except in the case of varargs, and the OVERLAY-specific
X!  * trampoli.* mechanism conflicts with the ANSI <<f(void)>> syntax.
X   */
X  
X+ # define NDECL(f)	f(void)	/* Must be overridden if OVERLAY set later */
X+ 
X  # define FDECL(f,p)	f p
X+ 
X  # if defined(MSDOS) || defined(USE_STDARG)
X  #  define VDECL(f,p)	f p
X  # else
X***************
X*** 102,112 ****
X  
X  #else /* __STDC__ */	/* a "traditional" C  compiler */
X  
X  # define FDECL(f,p)	f()
X  # define VDECL(f,p)	f()
X  
X  # ifndef genericptr_t
X! #  ifdef AMIGA
X  typedef void *		genericptr_t;
X  #  else
X  typedef char *		genericptr_t;
X--- 112,123 ----
X  
X  #else /* __STDC__ */	/* a "traditional" C  compiler */
X  
X+ # define NDECL(f)	f()
X  # define FDECL(f,p)	f()
X  # define VDECL(f,p)	f()
X  
X  # ifndef genericptr_t
X! #  if defined(AMIGA) || defined(HPUX)
X  typedef void *		genericptr_t;
X  #  else
X  typedef char *		genericptr_t;
X*** include/Old/trampoli.h	Mon Feb 19 22:15:37 1990
X--- include/trampoli.h	Mon Feb  5 18:45:30 1990
X***************
X*** 20,25 ****
X--- 20,28 ----
X  #ifdef POLYSELF
X  #define domonability()     domonability_()
X  #endif /* POLYSELF */
X+ #ifdef EXPLORE_MODE
X+ #define enter_explore_mode() enter_explore_mode_()
X+ #endif /* EXPLORE_MODE */
X  #define timed_occupation() timed_occupation_()
X  #if defined(WIZARD) || defined(EXPLORE_MODE)
X  #define wiz_attributes()   wiz_attributes_()
X***************
X*** 87,92 ****
X--- 90,96 ----
X  
X  
X  /* ### end.c ### */
X+ #define done1() done1_()
X  #define done2() done2_()
X  
X  
X***************
X*** 130,135 ****
X--- 134,143 ----
X  #define picklock()  picklock_()
X  
X  
X+ /* ### mondata.c ### */
X+ #define canseemon(x)	canseemon_(x)
X+ 
X+ 
X  /* ### o_init.c ### */
X  #define dodiscovered() dodiscovered_()
X  
X***************
X*** 156,162 ****
X  
X  
X  /* ### pickup.c ### */
X! #define ck_bag()         ck_bag_()
X  #define ck_container(x)  ck_container_(x)
X  #define doloot()         doloot_()
X  #define in_container(x)  in_container_(x)
X--- 164,170 ----
X  
X  
X  /* ### pickup.c ### */
X! #define ck_bag(x)        ck_bag_(x)
X  #define ck_container(x)  ck_container_(x)
X  #define doloot()         doloot_()
X  #define in_container(x)  in_container_(x)
X***************
X*** 227,232 ****
X--- 235,241 ----
X  
X  /* ### version.c ### */
X  #define doversion() doversion_()
X+ #define doextversion() doextversion_()
X  
X  /* ### wield.c ### */
X  #define dowield() dowield_()
X*** include/Old/unixconf.h	Mon Feb 19 22:16:11 1990
X--- include/unixconf.h	Sat Feb  3 16:30:26 1990
X***************
X*** 16,33 ****
X   * index		strchr
X   * rindex		strrchr
X   *
X-  * Also, the code for suspend is only given for BSD
X   */
X  
X  /* #define BSD		/* define for 4.n BSD  */
X! 			/* also for relatives like SunOS */
X  #define ULTRIX		/* define for Ultrix v3.0 or higher (but not lower) */
X  			/* Use BSD for < v3.0 */
X  			/* "ULTRIX" not to be confused with "ultrix" */
X  /* #define SYSV		/* define for System V */
X  /* #define NETWORK	/* if running on a networked system */
X  			/* e.g. Suns sharing a playground through NFS */
X- 
X  /* #define GENIX	/* Yet Another Unix Clone */
X  /* #define HISX		/* Bull Unix for XPS Machines */
X  /* #define UNIXPC	/* use in addition to SYSV for AT&T 7300/3B1 */
X--- 16,37 ----
X   * index		strchr
X   * rindex		strrchr
X   *
X   */
X  
X+ /* define one of the following */
X  /* #define BSD		/* define for 4.n BSD  */
X! 			/* also for relatives like SunOS and DG/UX */
X  #define ULTRIX		/* define for Ultrix v3.0 or higher (but not lower) */
X  			/* Use BSD for < v3.0 */
X  			/* "ULTRIX" not to be confused with "ultrix" */
X  /* #define SYSV		/* define for System V */
X+ /* #define HPUX		/* Hewlett-Packard's Unix, version 6.5 or higher */
X+ 			/* use SYSV for < v6.5 */
X+ 
X+ 
X+ /* define any of the following that are appropriate */
X  /* #define NETWORK	/* if running on a networked system */
X  			/* e.g. Suns sharing a playground through NFS */
X  /* #define GENIX	/* Yet Another Unix Clone */
X  /* #define HISX		/* Bull Unix for XPS Machines */
X  /* #define UNIXPC	/* use in addition to SYSV for AT&T 7300/3B1 */
X***************
X*** 36,41 ****
X--- 40,46 ----
X  
X  /* #define PYRAMID_BUG 	/* avoid a bug on the Pyramid */
X  /* #define APOLLO	/* same for the Apollo */
X+ /* #define BSD_43_BUG	/* for real 4.3BSD cc's without schain botch fix */
X  /* #define MICROPORT_BUG /* problems with large arrays in structs */
X  /* #define MICROPORT_286_BUG /* Changes needed in termcap.c to get it to
X  			   run with Microport Sys V/AT version 2.4.
X***************
X*** 66,99 ****
X   * #define DEF_PAGER	".../mydir/mypager"
X   */
X  
X  /*
X   * If you define MAIL, then the player will be notified of new mail
X!  * when it arrives. If you also define DEF_MAILREADER then this will
X   * be the default mail reader, and can be overridden by the environment
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		/* Deliver mail during the game */
X! #ifdef MAIL
X  
X  # if defined(BSD) || defined(ULTRIX)
X  #define	DEF_MAILREADER	"/usr/ucb/Mail"
X! # else
X! #  if defined(SYSV) || defined(DGUX)
X! #   ifdef M_XENIX
X  #define	DEF_MAILREADER	"/usr/bin/mail"
X- #   else
X- #define	DEF_MAILREADER	"/usr/bin/mailx"
X- #   endif
X  #  else
X! #define	DEF_MAILREADER	"/bin/mail"
X  #  endif
X  # endif
X  
X  #define	MAILCKFREQ	50
X  #endif	/* MAIL */
X  
X  #ifdef COMPRESS
X  /* Some implementations of compress need a 'quiet' option.
X   * If you've got one of these versions, put -q here.
X--- 71,133 ----
X   * #define DEF_PAGER	".../mydir/mypager"
X   */
X  
X+ 
X+ 
X  /*
X   * If you define MAIL, then the player will be notified of new mail
X!  * when it arrives.  If you also define DEF_MAILREADER then this will
X   * be the default mail reader, and can be overridden by the environment
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			/* Deliver mail during the game */
X! 
X! /* The Andrew Message System does mail a little differently from normal
X!  * UNIX.  Mail is deposited in the user's own directory in ~/Mailbox 
X!  * (another directory).  MAILBOX is the element that will be added on to 
X!  * the user's home directory path to generate the Mailbox path - just in 
X!  * case other Andrew sites do it differently from CMU.
X!  *
X!  *		dan lovinger
X!  *		dl2n+@andrew.cmu.edu (dec 19 1989)
X!  */
X! 
X! /* #define AMS			/* use Andrew message system for mail */
X! 
X! /* NO_MAILREADER is for kerberos authentcating filesystems where it is
X!  * essentially impossible to securely exec child proccesses, like mail
X!  * readers, when the game is running under a special token.
X!  *
X!  *             dan
X!  */
X! 
X! /* #define NO_MAILREADER 	/* have mail daemon just tell player of mail */
X  
X+ #ifdef	MAIL
X  # if defined(BSD) || defined(ULTRIX)
X+ #  ifdef AMS
X+ #define AMS_MAILBOX	"/Mailbox"
X+ #  else
X  #define	DEF_MAILREADER	"/usr/ucb/Mail"
X! #  endif
X! #else
X! # if defined(SYSV) || defined(DGUX) || defined(HPUX)
X! #  ifdef M_XENIX
X  #define	DEF_MAILREADER	"/usr/bin/mail"
X  #  else
X! #define	DEF_MAILREADER	"/usr/bin/mailx"
X  #  endif
X+ # else
X+ #define	DEF_MAILREADER	"/bin/mail"
X  # endif
X+ #endif
X  
X  #define	MAILCKFREQ	50
X  #endif	/* MAIL */
X  
X+ 
X+ 
X  #ifdef COMPRESS
X  /* Some implementations of compress need a 'quiet' option.
X   * If you've got one of these versions, put -q here.
X***************
X*** 110,116 ****
X   * The remainder of the file should not need to be changed.
X   */
X  
X! #if (defined(BSD) || defined(ULTRIX)) && !defined(MSDOS)
X  #include	<sys/time.h>
X  #else
X  #include	<time.h>
X--- 144,161 ----
X   * The remainder of the file should not need to be changed.
X   */
X  
X! /*
X!  * BSD/ULTRIX systems are normally the only ones that can suspend processes.
X!  * Suspending NetHack processes cleanly should be easy to add to other systems
X!  * that have SIGTSTP.  Currently the only such system known to work is HPUX;
X!  * other systems will probably require tweaks to unixtty.c and ioctl.c.
X!  */
X! #if defined(BSD) || defined(ULTRIX) || defined (HPUX)
X! #define	SUSPEND		/* let ^Z suspend the game */
X! #endif
X! 
X! 
X! #if defined(BSD) || defined(ULTRIX)
X  #include	<sys/time.h>
X  #else
X  #include	<time.h>
X***************
X*** 130,138 ****
X  #include "system.h"
X  
X  #if defined(BSD) || defined(ULTRIX)
X! #define	SUSPEND		/* let ^Z suspend the game */
X  #define memcpy(d, s, n)		bcopy(s, d, n)
X  #define memcmp(s1, s2, n)	bcmp(s2, s1, n)
X  #else	/* therefore SYSV */
X  #define index	strchr
X  #define rindex	strrchr
X--- 175,184 ----
X  #include "system.h"
X  
X  #if defined(BSD) || defined(ULTRIX)
X! # ifndef DGUX
X  #define memcpy(d, s, n)		bcopy(s, d, n)
X  #define memcmp(s1, s2, n)	bcmp(s2, s1, n)
X+ # endif
X  #else	/* therefore SYSV */
X  #define index	strchr
X  #define rindex	strrchr
X*** include/Old/vault.h	Mon Feb 19 22:16:28 1990
X--- include/vault.h	Sun Feb  4 09:47:28 1990
X***************
X*** 13,22 ****
X  struct egd {
X  	int fcbeg, fcend;	/* fcend: first unused pos */
X  	xchar gdx, gdy;		/* goal of guard's walk */
X  	unsigned gddone:1;
X  	struct fakecorridor fakecorr[FCSIZ];
X  };
X  
X! #define	EGD	((struct egd *)(&(guard->mextra[0])))
X  
X  #endif /* VAULT_H /* */
X--- 13,25 ----
X  struct egd {
X  	int fcbeg, fcend;	/* fcend: first unused pos */
X  	xchar gdx, gdy;		/* goal of guard's walk */
X+ 	xchar ogx, ogy;		/* guard's last position */
X+ 	xchar gdlevel;		/* level guard was created on */
X+ 	xchar warncnt;		/* number of warnings to follow */
X  	unsigned gddone:1;
X  	struct fakecorridor fakecorr[FCSIZ];
X  };
X  
X! #define	EGD(mon)	((struct egd *)(&(mon->mextra[0])))
X  
X  #endif /* VAULT_H /* */
X*** include/Old/vmsconf.h	Mon Feb 19 22:16:40 1990
X--- include/vmsconf.h	Tue Feb  6 18:45:10 1990
X***************
X*** 31,36 ****
X--- 31,42 ----
X   * The remainder of the file should not need to be changed.
X   */
X  
X+ /* GCC 1.36 (or maybe GAS) for VMS has a bug with extern const declarations.
X+    Until it is fixed, eliminate const. */
X+ #ifdef __GNUC__
X+ # define const
X+ #endif
X+ 
X  #include <time.h>
X  #include <file.h>
X  
X***************
X*** 59,69 ****
X--- 65,79 ----
X  #define Srand(seed) srand(seed)
X  #endif
X  
X+ #define bcopy(s1,s2,sz) memcpy(s2,s1,sz)
X  #define unlink(x) delete(x)
X  #define exit(x) vms_exit(x)
X  #define getuid() vms_getuid()
X  #define abort() vms_abort()
X  #define creat(f,m) vms_creat(f,m)
X+ 
X+ /* VMS global names are case insensitive... */
X+ #define An vms_an
X  
X  #endif
X  #endif /* VMS /* */
X*** include/Old/you.h	Mon Feb 19 22:17:00 1990
X--- include/you.h	Mon Feb 19 18:16:33 1990
X***************
X*** 67,73 ****
X  	struct prop uprops[LAST_PROP+1];
X  
X  	unsigned umconf;
X! 	char *usick_cause;
X  /* For messages referring to hands, eyes, feet, etc... when polymorphed */
X  #define ARM 0
X  #define EYE 1
X--- 67,73 ----
X  	struct prop uprops[LAST_PROP+1];
X  
X  	unsigned umconf;
X! 	const char *usick_cause;
X  /* For messages referring to hands, eyes, feet, etc... when polymorphed */
X  #define ARM 0
X  #define EYE 1
X***************
X*** 81,87 ****
X  #define LEG 9
X  #define LIGHT_HEADED 10
X  #define NECK 11
X! #define TOE 12
X  #ifdef POLYSELF
X  	int mh, mhmax, mtimedone, umonnum;	/* for polymorph-self */
X  	struct attribs	macurr,			/* for monster attribs */
X--- 81,88 ----
X  #define LEG 9
X  #define LIGHT_HEADED 10
X  #define NECK 11
X! #define SPINE 12
X! #define TOE 13
X  #ifdef POLYSELF
X  	int mh, mhmax, mtimedone, umonnum;	/* for polymorph-self */
X  	struct attribs	macurr,			/* for monster attribs */
X
END_OF_FILE
if test 53275 -ne `wc -c <'patch7.16'`; then
    echo shar: \"'patch7.16'\" unpacked with wrong size!
fi
# end of 'patch7.16'
echo shar: End of archive 20 \(of 30\).
cp /dev/null ark20isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 30 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0