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

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

Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
Posting-number: Volume 10, Issue 30
Archive-name: NetHack3/Patch8l
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 12 (of 24)."
# Contents:  patch8.01
# Wrapped by billr@saab on Mon Jun  4 15:27:23 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patch8.01' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patch8.01'\"
else
echo shar: Extracting \"'patch8.01'\" \(50042 characters\)
sed "s/^X//" >'patch8.01' <<'END_OF_FILE'
X*** src/Old/Makefile.src	Sun Jun  3 12:47:55 1990
X--- src/Makefile.src	Sun Jun  3 08:53:06 1990
X***************
X*** 17,23 ****
X  #
X  SHELL=/bin/sh
X  
X! # if you are cross-compiling (eg. from Xenix into a Dos enviornment) you will
X  # have to redefine this filename prefix (which is used to select the filenames
X  # *main.c, *tty.c, and *unix.c for the target environment)
X  #
X--- 17,23 ----
X  #
X  SHELL=/bin/sh
X  
X! # if you are cross-compiling (eg. from Xenix into a Dos environment) you will
X  # have to redefine this filename prefix (which is used to select the filenames
X  # *main.c, *tty.c, and *unix.c for the target environment)
X  #
X***************
X*** 25,34 ****
X  # Systos wants 'pc'; everything else normally wants 'unix'
X  TARG = unix
X  
X  # if you are using gcc as your compiler:
X- #	add -fwritable-strings to your other CFLAGS
X  #	uncomment the CC definition below if it's not in your environment
X- #	ignore warnings about initializing non-const *s from const *s
X  #	if you get setcgtty() warnings during execution, you are feeding gcc
X  #		a non-ANSI <sys/ioctl.h> -- either run fixincludes on it or use
X  #		-traditional in CFLAGS
X--- 25,33 ----
X  # Systos wants 'pc'; everything else normally wants 'unix'
X  TARG = unix
X  
X+ 
X  # if you are using gcc as your compiler:
X  #	uncomment the CC definition below if it's not in your environment
X  #	if you get setcgtty() warnings during execution, you are feeding gcc
X  #		a non-ANSI <sys/ioctl.h> -- either run fixincludes on it or use
X  #		-traditional in CFLAGS
X***************
X*** 38,46 ****
X--- 37,55 ----
X  # flags for 286 Xenix:
X  # CFLAGS = -Ml2t16 -O -LARGE -I../include
X  # LFLAGS = -Ml -F 4000 -SEG 512
X+ 
X  # flags for 286 Microport SysV-AT
X  # CFLAGS = -DDUMB -Ml -I../include
X  # LFLAGS = -Ml
X+ 
X+ # flags for Atari GCC
X+ # CFLAGS = -mshort -O -I../include
X+ # LFLAGS = -s -mshort
X+ 
X+ # flags for Apollos using their native cc
X+ # (as long as it claims to be __STDC__ but isn't)
X+ # CFLAGS = -DAPOLLO -O -I../include
X+ 
X  # flags for debugging:
X  # CFLAGS = -g -I../include
X  
X***************
X*** 47,59 ****
X--- 56,79 ----
X  CFLAGS = -O -I../include
X  LFLAGS =
X  
X+ 
X  # on some systems the termcap library is in -ltermcap or -lcurses
X  # on 386 Xenix, the -ltermlib tputs() seems not to work; use -lcurses instead
X  # Sysatt uses shared library in lieu of this option
X+ # Systos needs -lcurses16 if you use -mshort
X+ #
X  # TERMLIB = -ltermcap
X  # TERMLIB = -lcurses
X  TERMLIB = -ltermlib
X  
X+ # any other strange libraries your system needs (for Sysunix only -- the more
X+ # specialized targets should already be right)
X+ #
X+ # on HP-UX, the malloc(3x) routines in libmalloc.a seem to align things
X+ # better than the malloc(3) ones in libc.a
X+ # LIBS = -lmalloc
X+ LIBS =
X+ 
X  # yacc/lex programs to use to generate lev_comp.c, lev_comp.h, and lev_lex.c.
X  # if, instead of yacc/lex you have bison/flex, comment/uncomment the following.
X  YACC     = yacc
X***************
X*** 91,98 ****
X  # all .c that are part of the main NetHack program and are not system specific
X  
X  # now the other .c files, with duplicates commented out
X! MAKESRC = makedefs.c panic.c # monst.c objects.c
X! SPLEVSRC = lev_comp.c lev_lex.c lev_main.c # alloc.c monst.c objects.c panic.c
X  TARGSRC = $(TARG)main.c $(TARG)tty.c $(TARG)unix.c
X  
X  CSOURCES = $(HACKCSRC) $(TARGSRC) $(MAKESRC) $(SPLEVSRC)
X--- 111,118 ----
X  # all .c that are part of the main NetHack program and are not system specific
X  
X  # now the other .c files, with duplicates commented out
X! MAKESRC = makedefs.c # monst.c objects.c
X! SPLEVSRC = lev_comp.c lev_lex.c lev_main.c panic.c # alloc.c monst.c objects.c
X  TARGSRC = $(TARG)main.c $(TARG)tty.c $(TARG)unix.c
X  
X  CSOURCES = $(HACKCSRC) $(TARGSRC) $(MAKESRC) $(SPLEVSRC)
X***************
X*** 106,113 ****
X  	   youprop.h
X  
X  # all .h files except date.h, onames.h, pm.h & trap.h which would cause
X! # dependency loops if run through "make depend".
X! # and lev_comp.h, a special level file
X  
X  HSOURCES = $(HACKINCL) date.h onames.h pm.h trap.h lev_comp.h
X  
X--- 126,133 ----
X  	   youprop.h
X  
X  # all .h files except date.h, onames.h, pm.h & trap.h which would cause
X! # dependency loops if run through "make depend"
X! # and lev_comp.h, a special level file.
X  
X  HSOURCES = $(HACKINCL) date.h onames.h pm.h trap.h lev_comp.h
X  
X***************
X*** 114,120 ****
X  SOURCES = $(CSOURCES) $(HSOURCES)
X  
X  # object files for makedefs
X! MAKEOBJS = makedefs.o monst.o objects.o panic.o
X  
X  # object files for special levels compiler
X  SPLEVOBJS = lev_comp.o lev_lex.o lev_main.o alloc.o monst.o objects.o panic.o
X--- 134,140 ----
X  SOURCES = $(CSOURCES) $(HSOURCES)
X  
X  # object files for makedefs
X! MAKEOBJS = makedefs.o monst.o objects.o
X  
X  # object files for special levels compiler
X  SPLEVOBJS = lev_comp.o lev_lex.o lev_main.o alloc.o monst.o objects.o panic.o
X***************
X*** 138,144 ****
X  
X  Sysunix:	$(HOBJ) Makefile
X  	@echo "Loading ..."
X! 	@$(CC) $(LFLAGS) -o $(GAME) $(HOBJ) $(TERMLIB)
X  	@touch Sysunix
X  
X  Sys3B2:	$(HOBJ) Makefile
X--- 158,164 ----
X  
X  Sysunix:	$(HOBJ) Makefile
X  	@echo "Loading ..."
X! 	@$(CC) $(LFLAGS) -o $(GAME) $(HOBJ) $(TERMLIB) $(LIBS)
X  	@touch Sysunix
X  
X  Sys3B2:	$(HOBJ) Makefile
X***************
X*** 151,159 ****
X  	@$(LD) $(LFLAGS) /lib/crt0s.o /lib/shlib.ifile -o $(GAME) $(HOBJ)
X  	@touch Sysatt
X  
X! Systos:	$(HOBJ) oldtos.o Makefile
X  	@echo "Loading ..."
X! 	@$(CC) $(LFLAGS) -o $(GAME) $(HOBJ) oldtos.o $(TERMLIB)
X  	@touch Systos
X  
X  SysV-AT:	DUMB.Setup $(HOBJ) Makefile
X--- 171,179 ----
X  	@$(LD) $(LFLAGS) /lib/crt0s.o /lib/shlib.ifile -o $(GAME) $(HOBJ)
X  	@touch Sysatt
X  
X! Systos:	$(HOBJ) msdos.o Makefile
X  	@echo "Loading ..."
X! 	@$(CC) $(LFLAGS) -o $(GAME) $(HOBJ) msdos.o $(TERMLIB)
X  	@touch Systos
X  
X  SysV-AT:	DUMB.Setup $(HOBJ) Makefile
X***************
X*** 184,198 ****
X  all:	$(GAME)
X  
X  #
X! #	Please note:	The dependency lines for the modules here are
X! #			deliberately incorrect.  Including "hack.h" in
X! #			the dependency list would cause a dependency
X! #			loop.
X  #
X  makedefs:	$(MAKEOBJS)
X  	$(CC) $(LFLAGS) -o makedefs $(MAKEOBJS)
X  
X! makedefs.o:  ../include/config.h ../include/permonst.h
X  
X  lev_comp:  $(SPLEVOBJS)
X  	$(CC) $(LFLAGS) -o lev_comp $(SPLEVOBJS)
X--- 204,215 ----
X  all:	$(GAME)
X  
X  #
X! #	dependencies for auxiliary programs
X  #
X  makedefs:	$(MAKEOBJS)
X  	$(CC) $(LFLAGS) -o makedefs $(MAKEOBJS)
X  
X! makedefs.o:  ../include/config.h ../include/permonst.h ../include/objclass.h ../include/patchlevel.h
X  
X  lev_comp:  $(SPLEVOBJS)
X  	$(CC) $(LFLAGS) -o lev_comp $(SPLEVOBJS)
X***************
X*** 199,207 ****
X  
X  lev_comp.o:  ../include/hack.h ../include/sp_lev.h
X  
X! lev_lex.o:   ../include/lev_comp.h ../include/hack.h ../include/sp_lev.h
X  
X! lev_main.o:  ../include/hack.h ../include/sp_lev.h
X  
X  ../include/lev_comp.h: lev_comp.c
X  
X--- 216,224 ----
X  
X  lev_comp.o:  ../include/hack.h ../include/sp_lev.h
X  
X! lev_lex.o:   ../include/hack.h ../include/lev_comp.h ../include/sp_lev.h
X  
X! lev_main.o:  ../include/hack.h
X  
X  ../include/lev_comp.h: lev_comp.c
X  
X***************
X*** 216,222 ****
X  
X  #
X  #	The following include files depend on makedefs to be created.
X! #	As a result, they are not defined in HACKINCL, instead, their
X  #	dependencies are explicitly outlined here.
X  #
X  
X--- 233,239 ----
X  
X  #
X  #	The following include files depend on makedefs to be created.
X! #	As a result, they are not defined in HACKINCL; instead, their
X  #	dependencies are explicitly outlined here.
X  #
X  
X***************
X*** 230,236 ****
X  ../include/date.h:	$(HACKCSRC) $(TARGSRC) ../include/hack.h makedefs
X  	./makedefs -v
X  
X! ../include/trap.h:	../include/config.h makedefs
X  	./makedefs -t
X  
X  ../include/onames.h:	makedefs
X--- 247,253 ----
X  ../include/date.h:	$(HACKCSRC) $(TARGSRC) ../include/hack.h makedefs
X  	./makedefs -v
X  
X! ../include/trap.h:	makedefs
X  	./makedefs -t
X  
X  ../include/onames.h:	makedefs
X***************
X*** 241,247 ****
X  
X  #
X  #	The following programs vary depending on what OS you are using.
X! #	As a result, they are not defined in HACKSRC, and their dependancies
X  #	are explicitly outlined here.
X  #
X  main.o:	../include/hack.h $(TARG)main.c
X--- 258,264 ----
X  
X  #
X  #	The following programs vary depending on what OS you are using.
X! #	As a result, they are not defined in HACKSRC, and their dependencies
X  #	are explicitly outlined here.
X  #
X  main.o:	../include/hack.h $(TARG)main.c
X***************
X*** 281,289 ****
X  spotless: clean
X  	rm -f a.out core $(GAME) lev_comp makedefs
X  	rm -f ../include/onames.h ../include/pm.h
X- 	touch ../include/onames.h ../include/pm.h
X- 	touch makedefs.c
X- #(make sure files exist and have timestamps in the right order for next compile)
X  
X  
X  depend:
X--- 298,303 ----
X***************
X*** 331,337 ****
X  	@rm -f Makefile.bak
X  
X  # PC dependency for Systos that won't be made on a UNIX system
X! oldtos.o:  ../include/hack.h
X  
X  # DO NOT DELETE THIS LINE
X  
X--- 345,351 ----
X  	@rm -f Makefile.bak
X  
X  # PC dependency for Systos that won't be made on a UNIX system
X! msdos.o:  ../include/hack.h
X  
X  # DO NOT DELETE THIS LINE
X  
X***************
X*** 372,378 ****
X  mkmaze.o:  ../include/hack.h
X  mkobj.o:  ../include/hack.h
X  mkroom.o:  ../include/hack.h
X! mon.o:  ../include/hack.h ../include/mfndpos.h ../include/artifact.h ../include/wseg.h
X  mondata.o:  ../include/hack.h ../include/eshk.h ../include/epri.h
X  monmove.o:  ../include/hack.h ../include/mfndpos.h ../include/artifact.h
X  monst.o:  ../include/config.h ../include/permonst.h ../include/monsym.h ../include/eshk.h ../include/vault.h ../include/epri.h ../include/color.h
X--- 386,392 ----
X  mkmaze.o:  ../include/hack.h
X  mkobj.o:  ../include/hack.h
X  mkroom.o:  ../include/hack.h
X! mon.o:  ../include/hack.h ../include/mfndpos.h ../include/wseg.h
X  mondata.o:  ../include/hack.h ../include/eshk.h ../include/epri.h
X  monmove.o:  ../include/hack.h ../include/mfndpos.h ../include/artifact.h
X  monst.o:  ../include/config.h ../include/permonst.h ../include/monsym.h ../include/eshk.h ../include/vault.h ../include/epri.h ../include/color.h
X***************
X*** 430,438 ****
X  			touch ../include/decl.h
X  ../include/global.h:  ../include/coord.h ../include/vmsconf.h ../include/unixconf.h ../include/pcconf.h ../include/tosconf.h ../include/amiconf.h ../include/macconf.h
X  			touch ../include/global.h
X! ../include/hack.h:  ../include/config.h ../include/decl.h ../include/monsym.h ../include/mkroom.h ../include/objclass.h ../include/gold.h ../include/trap.h ../include/flag.h ../include/rm.h 
X  			touch ../include/hack.h
X! ../include/macconf.h:  ../include/msdos.h ../include/system.h 
X  			touch ../include/macconf.h
X  ../include/pcconf.h:  ../include/msdos.h ../include/system.h
X  			touch ../include/pcconf.h
X--- 444,452 ----
X  			touch ../include/decl.h
X  ../include/global.h:  ../include/coord.h ../include/vmsconf.h ../include/unixconf.h ../include/pcconf.h ../include/tosconf.h ../include/amiconf.h ../include/macconf.h
X  			touch ../include/global.h
X! ../include/hack.h:  ../include/config.h ../include/decl.h ../include/monsym.h ../include/mkroom.h ../include/objclass.h ../include/gold.h ../include/trap.h ../include/flag.h ../include/rm.h  ../include/trampoli.h 
X  			touch ../include/hack.h
X! ../include/macconf.h:  ../include/msdos.h ../include/system.h  ../include/MacAlert.h
X  			touch ../include/macconf.h
X  ../include/pcconf.h:  ../include/msdos.h ../include/system.h
X  			touch ../include/pcconf.h
X*** src/Old/allmain.c	Sun Jun  3 12:48:24 1990
X--- src/allmain.c	Tue Mar 27 20:26:15 1990
X***************
X*** 27,78 ****
X  
X  	for(;;) {
X  #ifdef MACOS
X- 	static	int old_dlevel = 0;
X- 	extern	xchar dlevel; 
X  	extern	Boolean	lowMem;
X  	extern	long	lowMemLimit;
X! 	if (!(moves % 20) || lowMem || FreeMem() < lowMemLimit || old_dlevel != dlevel) {
X! 		old_dlevel = dlevel;
X! 		UnloadSeg(ddocall);
X! 		UnloadSeg(castmu);
X! 		UnloadSeg(doforce);
X! 		UnloadSeg(doeat);
X! 		UnloadSeg(dozap);
X! 		UnloadSeg(initterm);
X! 		UnloadSeg(doapply);
X! 		UnloadSeg(dokick);
X! 		UnloadSeg(outrumor);
X! 		UnloadSeg(steal);
X! 		UnloadSeg(done1);
X! 		UnloadSeg(dodrink);
X! 		UnloadSeg(doturn);
X! #ifdef REINCARNATION
X! 		UnloadSeg(makeroguerooms);
X! #endif
X! #ifdef STRONGHOLD
X! 		UnloadSeg(load_special);
X! #endif
X! 		UnloadSeg(mklev);
X! #ifdef MUSIC
X! 		UnloadSeg(do_play_instrument);
X! #endif
X! #ifdef SPELLS
X! 		UnloadSeg(docast);
X! #endif
X! 		UnloadSeg(savebones);
X! 		UnloadSeg(expels);
X! 		UnloadSeg(attack);
X! 		UnloadSeg(doname);
X! 		if (FreeMem() < 36864)
X! 		{
X! 			long	space;
X! 			
X! 			UnloadSeg(newhp);
X! 			UnloadSeg(attack);
X  
X! 			space = 0x7FFFFFFFL;
X! 			MaxMem(&space);
X! 		}
X  	}
X  #endif
X  #ifdef CLIPPING
X--- 27,38 ----
X  
X  	for(;;) {
X  #ifdef MACOS
X  	extern	Boolean	lowMem;
X  	extern	long	lowMemLimit;
X! 	if (!(moves % 20) || lowMem || FreeMem() < lowMemLimit) {
X! 		long tmp = 0;
X  
X! 		freeSegs(&tmp);
X  	}
X  #endif
X  #ifdef CLIPPING
X*** src/Old/alloc.c	Sun Jun  3 12:48:39 1990
X--- src/alloc.c	Fri Mar 30 20:54:43 1990
X***************
X*** 5,11 ****
X  /* since this file is also used in auxiliary programs, don't include all the 
X   * function declarations for all of nethack
X   */
X! #define EXTERN_H
X  #include "config.h"
X  long *FDECL(alloc,(unsigned int));
X  
X--- 5,11 ----
X  /* since this file is also used in auxiliary programs, don't include all the 
X   * function declarations for all of nethack
X   */
X! #define EXTERN_H	/* comment line for pre-compiled headers */
X  #include "config.h"
X  long *FDECL(alloc,(unsigned int));
X  
X*** src/Old/apply.c	Sun Jun  3 12:48:54 1990
X--- src/apply.c	Sat Jun  2 19:44:47 1990
X***************
X*** 13,21 ****
X  
X  #ifdef OVLB
X  
X! static const char tools[] = { TOOL_SYM, 0 };
X  
X! static boolean did_dig_msg;
X  
X  static struct monst *FDECL(bchit, (int, int, int, CHAR_P));
X  static void FDECL(use_camera, (struct obj *));
X--- 13,21 ----
X  
X  #ifdef OVLB
X  
X! static const char NEARDATA tools[] = { TOOL_SYM, 0 };
X  
X! static boolean NEARDATA did_dig_msg;
X  
X  static struct monst *FDECL(bchit, (int, int, int, CHAR_P));
X  static void FDECL(use_camera, (struct obj *));
X***************
X*** 25,31 ****
X  #ifdef WALKIES
X  static void FDECL(use_leash, (struct obj *));
X  #endif
X! OSTATIC int NDECL(dig);
X  static boolean FDECL(wield_tool, (struct obj *));
X  static int FDECL(use_pick_axe, (struct obj *));
X  #ifdef MEDUSA
X--- 25,31 ----
X  #ifdef WALKIES
X  static void FDECL(use_leash, (struct obj *));
X  #endif
X! STATIC_DCL int NDECL(dig);
X  static boolean FDECL(wield_tool, (struct obj *));
X  static int FDECL(use_pick_axe, (struct obj *));
X  #ifdef MEDUSA
X***************
X*** 353,358 ****
X--- 353,361 ----
X  	return;
X  }
X  
X+ #endif /* OVLB */
X+ #ifdef OVL1
X+ 
X  boolean
X  next_to_u()
X  {
X***************
X*** 377,382 ****
X--- 380,387 ----
X  	return(TRUE);
X  }
X  
X+ #endif /* OVL1 */
X+ #ifdef OVLB
X  struct obj *
X  get_mleash(mtmp) 	/* assuming mtmp->mleashed has been checked */
X  register struct monst *mtmp;
X***************
X*** 391,399 ****
X  	}
X  	return((struct obj *)0);
X  }
X- #endif /* WALKIES */
X  #endif /* OVLB */
X  #ifdef OVL0
X  #ifdef WALKIES
X  void
X  check_leash(x, y)
X--- 396,406 ----
X  	}
X  	return((struct obj *)0);
X  }
X  #endif /* OVLB */
X+ 
X+ #endif /* WALKIES */
X  #ifdef OVL0
X+ 
X  #ifdef WALKIES
X  void
X  check_leash(x, y)
X***************
X*** 446,453 ****
X  #endif /* OVL0 */
X  #ifdef OVLB
X  
X! XSTATIC
X! int
X  dig() {
X  	register struct rm *lev;
X  	register int dpx = dig_pos.x, dpy = dig_pos.y;
X--- 453,459 ----
X  #endif /* OVL0 */
X  #ifdef OVLB
X  
X! STATIC_OVL int
X  dig() {
X  	register struct rm *lev;
X  	register int dpx = dig_pos.x, dpy = dig_pos.y;
X***************
X*** 632,637 ****
X--- 638,646 ----
X  				u.utraptype = 0;
X  			    }
X  			    unsee();
X+ #ifdef MACOS
X+ 			    segments |= SEG_APPLY;
X+ #endif
X  			    goto_level(dlevel+1, FALSE, TRUE);
X  #ifdef WALKIES
X  			}
X***************
X*** 1067,1073 ****
X  	return;
X  }
X  
X! static const char cuddly[] = { TOOL_SYM, 0 };
X  
X  int
X  dorub()
X--- 1076,1082 ----
X  	return;
X  }
X  
X! static const char NEARDATA cuddly[] = { TOOL_SYM, 0 };
X  
X  int
X  dorub()
X***************
X*** 1147,1153 ****
X  use_tinning_kit(obj)
X  register struct obj *obj;
X  {
X! 	register struct obj *corpse, *can;
X  
X  	/* This takes only 1 move.  If this is to be changed to take many
X  	 * moves, we've got to deal with decaying corpses...
X--- 1156,1162 ----
X  use_tinning_kit(obj)
X  register struct obj *obj;
X  {
X! 	register struct obj *corpse, *can = (struct obj *)0;
X  
X  	/* This takes only 1 move.  If this is to be changed to take many
X  	 * moves, we've got to deal with decaying corpses...
X***************
X*** 1172,1189 ****
X  		You("can't tin something that insubstantial!");
X  		return;
X  	}
X! 	can = mksobj(TIN,FALSE);
X! 	can->corpsenm = corpse->corpsenm;
X! 	can->quan = 1; /* Defeat the occasional creation of pairs of tins */
X! 	can->owt = weight(can);
X! 	can->known = 1;
X! 	can->spe = 0; /* No spinach allowed... */
X! 	can->cursed = obj->cursed;
X! 	can->blessed = obj->blessed;
X! 	can = addinv(can);
X! 	You("now have %s.", doname(can));
X! 	if (carried(corpse)) useup(corpse);
X! 	else useupf(corpse);
X  }
X  
X  int
X--- 1181,1199 ----
X  		You("can't tin something that insubstantial!");
X  		return;
X  	}
X! 	if(can = mksobj(TIN,FALSE)) {
X! 	    can->corpsenm = corpse->corpsenm;
X! 	    can->quan = 1; /*Defeat the occasional creation of pairs of tins */
X! 	    can->owt = weight(can);
X! 	    can->known = 1;
X! 	    can->spe = -1; /* Mark tinned tins. No spinach allowed... */
X! 	    can->cursed = obj->cursed;
X! 	    can->blessed = obj->blessed;
X! 	    can = addinv(can);
X! 	    You("now have %s.", doname(can));
X! 	    if (carried(corpse)) useup(corpse);
X! 	    else useupf(corpse);
X! 	} else pline("Tinning failed.");
X  }
X  
X  int
X***************
X*** 1222,1229 ****
X  		make_sick(0L, TRUE);
X  		did_something++;
X  	}
X! 	if (Blinded && (!did_something || blessed)) {
X! 		make_blinded(0L, TRUE);
X  		did_something++;
X  	}
X  	if (Hallucination && (!did_something || blessed)) {
X--- 1232,1239 ----
X  		make_sick(0L, TRUE);
X  		did_something++;
X  	}
X! 	if (Blinded > (long)(u.ucreamed+1) && (!did_something || blessed)) {
X! 		make_blinded(u.ucreamed ? (long)(u.ucreamed+1) : 0L, TRUE);
X  		did_something++;
X  	}
X  	if (Hallucination && (!did_something || blessed)) {
X*** src/Old/artifact.c	Sun Jun  3 12:49:44 1990
X--- src/artifact.c	Sat May 26 21:13:05 1990
X***************
X*** 10,21 ****
X  
X  #ifndef OVLB
X  
X! OSTATIC const struct artifact artilist[];
X  
X  #else /* OVLB */
X  
X  /* the artifacts (currently weapons only) */
X! XSTATIC const struct artifact artilist[] = {
X  
X  #define	    NO_ATTK	{ 0, 0, 0, 0 }
X  
X--- 10,21 ----
X  
X  #ifndef OVLB
X  
X! STATIC_DCL const struct artifact artilist[];
X  
X  #else /* OVLB */
X  
X  /* the artifacts (currently weapons only) */
X! STATIC_OVL const struct artifact NEARDATA artilist[] = {
X  
X  #define	    NO_ATTK	{ 0, 0, 0, 0 }
X  
X***************
X*** 110,117 ****
X  
X  #endif /* OVLB */
X  
X! OSTATIC const struct artifact *FDECL(get_artifact, (struct obj *));
X! OSTATIC int FDECL(spec_applies, (const struct artifact *, struct permonst *));
X  
X  #ifdef OVLB
X  
X--- 110,117 ----
X  
X  #endif /* OVLB */
X  
X! STATIC_DCL const struct artifact *FDECL(get_artifact, (struct obj *));
X! STATIC_DCL int FDECL(spec_applies, (const struct artifact *, struct permonst *));
X  
X  #ifdef OVLB
X  
X***************
X*** 158,164 ****
X  #endif /* OVLB */
X  #ifdef OVL0
X  
X! XSTATIC const struct artifact *
X  get_artifact(otmp)
X  struct obj *otmp;
X  {
X--- 158,164 ----
X  #endif /* OVLB */
X  #ifdef OVL0
X  
X! STATIC_OVL const struct artifact *
X  get_artifact(otmp)
X  struct obj *otmp;
X  {
X***************
X*** 174,180 ****
X  }
X  
X  #endif /* OVL0 */
X! #ifdef OVLB
X  
X  boolean
X  is_artifact(otmp)
X--- 174,180 ----
X  }
X  
X  #endif /* OVL0 */
X! #ifdef OVL2
X  
X  boolean
X  is_artifact(otmp)
X***************
X*** 183,188 ****
X--- 183,190 ----
X  	return(get_artifact(otmp) != (struct artifact *)0);
X  }
X  
X+ #endif /* OVL2 */
X+ #ifdef OVLB
X  boolean
X  exist_artifact(otmp, name)
X  register struct obj *otmp;
X***************
X*** 298,304 ****
X  	return(0);
X  }
X  
X! XSTATIC int
X  spec_applies(weap, ptr)
X  register const struct artifact *weap;
X  struct permonst *ptr;
X--- 300,309 ----
X  	return(0);
X  }
X  
X! #endif /* OVLB */
X! #ifdef OVL1
X! 
X! STATIC_OVL int
X  spec_applies(weap, ptr)
X  register const struct artifact *weap;
X  struct permonst *ptr;
X***************
X*** 327,335 ****
X  	}
X  	return(0);
X  }
X- 
X- #endif /* OVLB */
X- #ifdef OVL1
X  
X  int
X  spec_abon(otmp, ptr)
X--- 332,337 ----
X*** src/Old/attrib.c	Sun Jun  3 12:50:04 1990
X--- src/attrib.c	Fri Apr 13 18:46:30 1990
X***************
X*** 152,158 ****
X  		   {	20, 15, 15, 15, 20, 15 },
X  		     0,  0, 12, 10, 14,  1,  0 };
X  
X! static const struct clattr *NDECL(clx);
X  static void NDECL(init_align);
X  
X  void
X--- 152,158 ----
X  		   {	20, 15, 15, 15, 20, 15 },
X  		     0,  0, 12, 10, 14,  1,  0 };
X  
X! static const struct clattr NEARDATA *NDECL(clx);
X  static void NDECL(init_align);
X  
X  void
X***************
X*** 164,170 ****
X  	if(!incr) return;
X  
X  	if(incr > 0) {
X! 	    if((AMAX(ndx) >= attrmax.a[ndx]) && (ACURR(ndx) == AMAX(ndx))) {
X  
X  		if(!silent && flags.verbose)
X  		    pline("You're already as %s as you can get.",
X--- 164,170 ----
X  	if(!incr) return;
X  
X  	if(incr > 0) {
X! 	    if((AMAX(ndx) >= attrmax.a[ndx]) && (ACURR(ndx) >= AMAX(ndx))) {
X  
X  		if(!silent && flags.verbose)
X  		    pline("You're already as %s as you can get.",
X***************
X*** 255,261 ****
X  
X  	for(otmp = invent; otmp; otmp=otmp->nobj)
X  	    if(otmp->otyp == LUCKSTONE) {
X! 		if (otmp->cursed) bonchance -= otmp->quan;
X  		else if (otmp->blessed) bonchance += otmp->quan;
X  		else if (parameter) bonchance += otmp->quan;
X  	    }
X--- 255,261 ----
X  
X  	for(otmp = invent; otmp; otmp=otmp->nobj)
X  	    if(otmp->otyp == LUCKSTONE) {
X! 		if (otmp->cursed) bonchance -= (int)otmp->quan;
X  		else if (otmp->blessed) bonchance += otmp->quan;
X  		else if (parameter) bonchance += otmp->quan;
X  	    }
X*** src/Old/bones.c	Sun Jun  3 12:50:23 1990
X--- src/bones.c	Tue May 22 20:40:21 1990
X***************
X*** 19,25 ****
X  static void NDECL(compress_bones);
X  #endif
X  static boolean FDECL(no_bones_level, (int));
X! void FDECL(resetobjs,(struct obj *));
X  #ifdef TUTTI_FRUTTI
X  static void FDECL(goodfruit, (int));
X  #endif
X--- 19,25 ----
X  static void NDECL(compress_bones);
X  #endif
X  static boolean FDECL(no_bones_level, (int));
X! static void FDECL(resetobjs,(struct obj *,BOOLEAN_P));
X  #ifdef TUTTI_FRUTTI
X  static void FDECL(goodfruit, (int));
X  #endif
X***************
X*** 78,119 ****
X  }
X  #endif
X  
X! void
X! resetobjs(ochain)
X  struct obj *ochain;
X  {
X  	struct obj *otmp;
X  
X  	for (otmp = ochain; otmp; otmp = otmp->nobj) {
X- 		otmp->o_id = 0;
X  		if (((otmp->otyp != CORPSE && otmp->otyp != STATUE)
X  			|| otmp->corpsenm < PM_ARCHEOLOGIST)
X  #ifdef NAMED_ITEMS
X! 			&& !(is_artifact(otmp) && !exist_artifact(otmp,ONAME(otmp)))
X  #endif
X  		)
X  			otmp->onamelth = 0;
X  #ifdef NAMED_ITEMS
X! 		else if (is_artifact(otmp))
X  			artifact_exists(otmp,ONAME(otmp),TRUE);
X  #endif
X! 		if(objects[otmp->otyp].oc_uses_known) otmp->known = 0;
X  #ifdef TUTTI_FRUTTI
X! 		if(otmp->otyp == SLIME_MOLD) goodfruit(otmp->spe);
X  #endif
X- 		otmp->dknown = otmp->bknown = 0;
X- 		otmp->invlet = 0;
X  #ifdef MAIL
X! 		if (otmp->otyp == SCR_MAIL)
X! 			otmp->spe = 1;
X  #endif
X  #ifdef POLYSELF
X! 		if (otmp->otyp == EGG)
X! 			otmp->spe = 0;
X  #endif
X! 		if(otmp->otyp == AMULET_OF_YENDOR && !otmp->spe) {
X! 			otmp->spe = -1;      /* no longer the actual amulet */
X! 			curse(otmp);
X  		}
X  	}			
X  }
X--- 78,125 ----
X  }
X  #endif
X  
X! static void
X! resetobjs(ochain,restore)
X  struct obj *ochain;
X+ boolean restore;
X  {
X  	struct obj *otmp;
X  
X  	for (otmp = ochain; otmp; otmp = otmp->nobj) {
X  		if (((otmp->otyp != CORPSE && otmp->otyp != STATUE)
X  			|| otmp->corpsenm < PM_ARCHEOLOGIST)
X  #ifdef NAMED_ITEMS
X! 			&& (!is_artifact(otmp) ||
X! 			    (exist_artifact(otmp,ONAME(otmp)) && restore))
X  #endif
X  		)
X  			otmp->onamelth = 0;
X  #ifdef NAMED_ITEMS
X! 		else if (is_artifact(otmp) && restore)
X  			artifact_exists(otmp,ONAME(otmp),TRUE);
X  #endif
X! 		if (!restore) {
X! 			/* resetting the o_id's after getlev has carefully
X! 			 * created proper new ones via restobjchn is a Bad
X! 			 * Idea */
X! 			otmp->o_id = 0;
X! 			if(objects[otmp->otyp].oc_uses_known) otmp->known = 0;
X! 			otmp->dknown = otmp->bknown = 0;
X! 			otmp->invlet = 0;
X  #ifdef TUTTI_FRUTTI
X! 			if(otmp->otyp == SLIME_MOLD) goodfruit(otmp->spe);
X  #endif
X  #ifdef MAIL
X! 			if (otmp->otyp == SCR_MAIL) otmp->spe = 1;
X  #endif
X  #ifdef POLYSELF
X! 			if (otmp->otyp == EGG) otmp->spe = 0;
X  #endif
X! 			if(otmp->otyp == AMULET_OF_YENDOR && !otmp->spe) {
X! 				otmp->spe = -1;
X! 				/* no longer the actual amulet */
X! 				curse(otmp);
X! 			}
X  		}
X  	}			
X  }
X***************
X*** 218,224 ****
X  	mtmp->msleep = 1;
X  	if(u.ugold) mkgold(u.ugold, u.ux, u.uy);
X  	for(mtmp = fmon; mtmp; mtmp = mtmp->nmon){
X! 		resetobjs(mtmp->minvent);
X  		mtmp->m_id = 0;
X  		mtmp->mlstmv = 0L;
X  		if(mtmp->mtame) mtmp->mtame = mtmp->mpeaceful = 0;
X--- 224,230 ----
X  	mtmp->msleep = 1;
X  	if(u.ugold) mkgold(u.ugold, u.ux, u.uy);
X  	for(mtmp = fmon; mtmp; mtmp = mtmp->nmon){
X! 		resetobjs(mtmp->minvent,FALSE);
X  		mtmp->m_id = 0;
X  		mtmp->mlstmv = 0L;
X  		if(mtmp->mtame) mtmp->mtame = mtmp->mpeaceful = 0;
X***************
X*** 227,234 ****
X  	for(ttmp = ftrap; ttmp; ttmp = ttmp->ntrap)
X  		ttmp->tseen = 0;
X  
X! 	resetobjs(fobj);
X! 	resetobjs(fcobj);   /* let's (not) forget about these - KCD, 10/21/89 */
X  
X  	for(x=0; x<COLNO; x++) for(y=0; y<ROWNO; y++)
X  		levl[x][y].seen = levl[x][y].new = levl[x][y].scrsym = 0;
X--- 233,241 ----
X  	for(ttmp = ftrap; ttmp; ttmp = ttmp->ntrap)
X  		ttmp->tseen = 0;
X  
X! 	resetobjs(fobj,FALSE);
X! 	/* let's (not) forget about these - KCD, 10/21/89 */
X! 	resetobjs(fcobj,FALSE);
X  
X  	for(x=0; x<COLNO; x++) for(y=0; y<ROWNO; y++)
X  		levl[x][y].seen = levl[x][y].new = levl[x][y].scrsym = 0;
X***************
X*** 246,252 ****
X  		
X  		t = (term_info *)GetWRefCon(HackWindow);
X  		(void)GetVol(&fileName,&oldvolume);
X! 		(void)SetVol(0L, t->system.sysVRefNum);
X  		fileName[0] = (uchar)strlen(bones);
X  		Strcpy((char *)&fileName[1],bones);
X  		
X--- 253,259 ----
X  		
X  		t = (term_info *)GetWRefCon(HackWindow);
X  		(void)GetVol(&fileName,&oldvolume);
X! 		(void)SetVol(0L, t->recordVRefNum);
X  		fileName[0] = (uchar)strlen(bones);
X  		Strcpy((char *)&fileName[1],bones);
X  		
X***************
X*** 300,305 ****
X--- 307,332 ----
X  	bflush(fd);
X  #endif
X  	(void) close(fd);
X+ #ifdef MACOS
X+ 	{
X+ 		FInfo	fndrInfo;
X+ 		Str255	name;
X+ 		term_info	*t;
X+ 		short	oldVol, error;
X+ 		
X+ 		t = (term_info *)GetWRefCon(HackWindow);
X+ 		GetVol(name, &oldVol);
X+ 		SetVol(0L, t->recordVRefNum);  
X+ 		Strcpy((char *)name, bones);
X+ 		CtoPstr((char *)name);
X+ 		error = GetFInfo(name, (short)0, &fndrInfo);
X+ 		fndrInfo.fdCreator = CREATOR;
X+ 		fndrInfo.fdType = BONES_TYPE;
X+ 		if (error == noErr)
X+ 			SetFInfo(name, (short)0, &fndrInfo);
X+ 		SetVol(0L, oldVol);
X+ 	}
X+ #endif
X  #ifdef COMPRESS
X  	compress_bones();
X  #endif
X***************
X*** 309,315 ****
X  getbones() {
X  	register int fd;
X  	register int ok;
X! 
X  #ifdef EXPLORE_MODE
X  	if(discover)		/* save bones files for real games */
X  		return(0);
X--- 336,349 ----
X  getbones() {
X  	register int fd;
X  	register int ok;
X! #ifdef MACOS
X! 	Str255	name;
X! 	short	oldVol;
X! 	term_info *t;
X! 	extern WindowPtr	HackWindow;
X! 	
X! 	t = (term_info *)GetWRefCon(HackWindow);
X! #endif
X  #ifdef EXPLORE_MODE
X  	if(discover)		/* save bones files for real games */
X  		return(0);
X***************
X*** 322,327 ****
X--- 356,365 ----
X  		) return(0);
X  	if(no_bones_level(dlevel)) return(0);
X  	name_file(bones, dlevel);
X+ #ifdef MACOS
X+ 	GetVol(name, &oldVol);
X+ 	SetVol(0L, t->recordVRefNum);
X+ #endif
X  #ifdef COMPRESS
X  	if((fd = open(bones, OMASK)) >= 0) goto gotbones;
X  	Strcpy(proxy, bones);
X***************
X*** 339,345 ****
X  	    (void) system(cmd);
X  	}
X  #endif
X! 	if((fd = open(bones, OMASK)) < 0) return(0);
X  #ifdef COMPRESS
X  gotbones:
X  #endif
X--- 377,391 ----
X  	    (void) system(cmd);
X  	}
X  #endif
X! 	if((fd = open(bones, OMASK)) < 0) {
X! #ifdef MACOS
X! 		SetVol(0L, oldVol);
X! #endif
X! 		return(0);
X! 	}
X! #ifdef MACOS
X! 	SetVol(0L, oldVol);
X! #endif
X  #ifdef COMPRESS
X  gotbones:
X  #endif
X***************
X*** 368,376 ****
X  		register struct monst *mtmp;
X  
X  		for(mtmp = fmon; mtmp; mtmp = mtmp->nmon)
X! 			resetobjs(mtmp->minvent);
X! 		resetobjs(fobj);
X! 		resetobjs(fcobj);
X  	}
X  #endif
X  #ifdef WIZARD
X--- 414,422 ----
X  		register struct monst *mtmp;
X  
X  		for(mtmp = fmon; mtmp; mtmp = mtmp->nmon)
X! 			resetobjs(mtmp->minvent,TRUE);
X! 		resetobjs(fobj,TRUE);
X! 		resetobjs(fcobj,TRUE);
X  	}
X  #endif
X  #ifdef WIZARD
X***************
X*** 384,393 ****
X--- 430,449 ----
X  		}
X  	}
X  #endif
X+ #ifdef MACOS
X+ 	GetVol(name, &oldVol);
X+ 	SetVol(0L, t->recordVRefNum);
X+ #endif
X  	if(unlink(bones) < 0){
X  		pline("Cannot unlink %s.", bones);
X+ #ifdef MACOS
X+ 		SetVol(0L, oldVol);
X+ #endif
X  		return(0);
X  	}
X+ #ifdef MACOS
X+ 	SetVol(0L, oldVol);
X+ #endif
X  	return(ok);
X  }
X  
X*** src/Old/cmd.c	Sun Jun  3 12:50:45 1990
X--- src/cmd.c	Thu May 31 22:10:37 1990
X***************
X*** 83,115 ****
X  
X  #endif /* OVL1 */
X  
X! #ifndef OVERLAY
X! static int NDECL(timed_occupation);
X! static int NDECL(doextcmd);
X  # ifdef POLYSELF
X! static int NDECL(domonability);
X  # endif
X  # ifdef WIZARD
X! static int NDECL(wiz_wish);
X! static int NDECL(wiz_identify);
X! static int NDECL(wiz_map);
X! static int NDECL(wiz_genesis);
X! static int NDECL(wiz_where);
X! static int NDECL(wiz_detect);
X! static int NDECL(wiz_level_tele);
X  # endif
X  # ifdef EXPLORE_MODE
X! static int NDECL(enter_explore_mode);
X  # endif
X  # if defined(WIZARD) || defined(EXPLORE_MODE)
X! static int NDECL(wiz_attributes);
X  # endif
X- #endif /* OVERLAY */
X  
X- #ifdef REDO
X- static char NDECL(popch);
X- #endif
X- 
X  #ifdef STUPID_CPP
X  static char FDECL(unctrl, (CHAR_P));
X  static char FDECL(unmeta, (CHAR_P));
X--- 83,109 ----
X  
X  #endif /* OVL1 */
X  
X! STATIC_PTR int NDECL(timed_occupation);
X! STATIC_PTR int NDECL(doextcmd);
X  # ifdef POLYSELF
X! STATIC_PTR int NDECL(domonability);
X  # endif
X  # ifdef WIZARD
X! STATIC_PTR int NDECL(wiz_wish);
X! STATIC_PTR int NDECL(wiz_identify);
X! STATIC_PTR int NDECL(wiz_map);
X! STATIC_PTR int NDECL(wiz_genesis);
X! STATIC_PTR int NDECL(wiz_where);
X! STATIC_PTR int NDECL(wiz_detect);
X! STATIC_PTR int NDECL(wiz_level_tele);
X  # endif
X  # ifdef EXPLORE_MODE
X! STATIC_PTR int NDECL(enter_explore_mode);
X  # endif
X  # if defined(WIZARD) || defined(EXPLORE_MODE)
X! STATIC_PTR int NDECL(wiz_attributes);
X  # endif
X  
X  #ifdef STUPID_CPP
X  static char FDECL(unctrl, (CHAR_P));
X  static char FDECL(unmeta, (CHAR_P));
X***************
X*** 118,127 ****
X  #ifdef OVL1
X  
X  /* Count down by decrementing multi */
X! #ifndef OVERLAY
X! static 
X! #endif
X! int
X  timed_occupation() {
X  	(*timed_occ_fn)();
X  	if (multi > 0)
X--- 112,118 ----
X  #ifdef OVL1
X  
X  /* Count down by decrementing multi */
X! STATIC_PTR int
X  timed_occupation() {
X  	(*timed_occ_fn)();
X  	if (multi > 0)
X***************
X*** 169,174 ****
X--- 160,168 ----
X  }
X  
X  #ifdef REDO
X+ 
X+ static char NDECL(popch);
X+ 
X  /* Provide a means to redo the last command.  The flag `in_doagain' is set
X   * to true while redoing the command.  This flag is tested in commands that
X   * require additional input (like `throw' which requires a thing and a
X***************
X*** 177,183 ****
X   */
X  #define BSIZE 20
X  static char pushq[BSIZE], saveq[BSIZE];
X! static int phead, ptail, shead, stail;
X  
X  static char
X  popch() {
X--- 171,177 ----
X   */
X  #define BSIZE 20
X  static char pushq[BSIZE], saveq[BSIZE];
X! static int NEARDATA phead, NEARDATA ptail, NEARDATA shead, NEARDATA stail;
X  
X  static char
X  popch() {
X***************
X*** 232,241 ****
X  #endif /* OVL1 */
X  #ifdef OVLB
X  
X! #ifndef OVERLAY
X! static 
X! #endif
X! int
X  doextcmd()	/* here after # - now read a full-word command */
X  {
X  	char buf[BUFSZ];
X--- 226,232 ----
X  #endif /* OVL1 */
X  #ifdef OVLB
X  
X! STATIC_PTR int
X  doextcmd()	/* here after # - now read a full-word command */
X  {
X  	char buf[BUFSZ];
X***************
X*** 290,299 ****
X  }
X  
X  #ifdef POLYSELF
X! #ifndef OVERLAY
X! static 
X! #endif
X! int
X  domonability()
X  {
X  	if (can_breathe(uasmon)) return dobreathe();
X--- 281,287 ----
X  }
X  
X  #ifdef POLYSELF
X! STATIC_PTR int
X  domonability()
X  {
X  	if (can_breathe(uasmon)) return dobreathe();
X***************
X*** 312,321 ****
X  #endif
X  
X  #ifdef EXPLORE_MODE
X! #ifndef OVERLAY
X! static 
X! #endif
X! int
X  enter_explore_mode()
X  {
X  	if(!discover && !wizard) {
X--- 300,306 ----
X  #endif
X  
X  #ifdef EXPLORE_MODE
X! STATIC_PTR int
X  enter_explore_mode()
X  {
X  	if(!discover && !wizard) {
X***************
X*** 342,351 ****
X  #endif
X  
X  #ifdef WIZARD
X! #ifndef OVERLAY
X! static 
X! #endif
X! int
X  wiz_wish()	/* Unlimited wishes for wizard mode by Paul Polderman */
X  {
X  	if (wizard)	makewish();
X--- 327,333 ----
X  #endif
X  
X  #ifdef WIZARD
X! STATIC_PTR int
X  wiz_wish()	/* Unlimited wishes for wizard mode by Paul Polderman */
X  {
X  	if (wizard)	makewish();
X***************
X*** 353,362 ****
X  	return 0;
X  }
X  
X! #ifndef OVERLAY
X! static 
X! #endif
X! int
X  wiz_identify()
X  {
X  	struct obj *obj;
X--- 335,341 ----
X  	return 0;
X  }
X  
X! STATIC_PTR int
X  wiz_identify()
X  {
X  	struct obj *obj;
X***************
X*** 372,381 ****
X  	return 0;
X  }
X  
X! #ifndef OVERLAY
X! static 
X! #endif
X! int
X  wiz_map()
X  {
X  	if (wizard)	do_mapping();
X--- 351,357 ----
X  	return 0;
X  }
X  
X! STATIC_PTR int
X  wiz_map()
X  {
X  	if (wizard)	do_mapping();
X***************
X*** 383,392 ****
X  	return 0;
X  }
X  
X! #ifndef OVERLAY
X! static 
X! #endif
X! int
X  wiz_genesis()
X  {
X  	if (wizard)	(void) create_particular();
X--- 359,365 ----
X  	return 0;
X  }
X  
X! STATIC_PTR int
X  wiz_genesis()
X  {
X  	if (wizard)	(void) create_particular();
X***************
X*** 394,403 ****
X  	return 0;
X  }
X  
X! #ifndef OVERLAY
X! static 
X! #endif
X! int
X  wiz_where()
X  {
X  	if (wizard) {
X--- 367,373 ----
X  	return 0;
X  }
X  
X! STATIC_PTR int
X  wiz_where()
X  {
X  	if (wizard) {
X***************
X*** 422,431 ****
X  	return 0;
X  }
X  
X! #ifndef OVERLAY
X! static 
X! #endif
X! int
X  wiz_detect()
X  {
X  	if(wizard)  (void) findit();
X--- 392,398 ----
X  	return 0;
X  }
X  
X! STATIC_PTR int
X  wiz_detect()
X  {
X  	if(wizard)  (void) findit();
X***************
X*** 433,442 ****
X  	return 0;
X  }
X  
X! #ifndef OVERLAY
X! static 
X! #endif
X! int
X  wiz_level_tele()
X  {
X  	if (wizard)	level_tele();
X--- 400,406 ----
X  	return 0;
X  }
X  
X! STATIC_PTR int
X  wiz_level_tele()
X  {
X  	if (wizard)	level_tele();
X***************
X*** 484,491 ****
X--- 448,457 ----
X  	if (Protection) cornline(1, "You are protected.");
X  	if (Warning) cornline(1, "You are warned.");
X  	if (Teleport_control) cornline(1, "You have teleport control.");
X+ #ifdef POLYSELF
X  	if (Polymorph) cornline(1, "You are polymorphing.");
X  	if (Polymorph_control) cornline(1, "You have polymorph control.");
X+ #endif
X  	if (Telepat) cornline(1, "You are telepathic.");
X  	if (Fast) cornline(1, "You are fast.");
X  	/* if (Stunned) cornline(1, "You are stunned."); */
X***************
X*** 535,544 ****
X  }
X  
X  #if defined(WIZARD) || defined(EXPLORE_MODE)
X! #ifndef OVERLAY
X! static 
X! #endif
X! int
X  wiz_attributes()
X  {
X  	if (wizard || discover)
X--- 501,507 ----
X  }
X  
X  #if defined(WIZARD) || defined(EXPLORE_MODE)
X! STATIC_PTR int
X  wiz_attributes()
X  {
X  	if (wizard || discover)
X***************
X*** 860,869 ****
X  }
X  
X  /* 'rogue'-like direction commands */
X! const char sdir[] = "hykulnjb><";
X! const char ndir[] = "47896321><";
X! const schar xdir[10] = { -1,-1, 0, 1, 1, 1, 0,-1, 0, 0 };
X! const schar ydir[10] = {  0,-1,-1,-1, 0, 1, 1, 1, 0, 0 };
X  const schar zdir[10] = {  0, 0, 0, 0, 0, 0, 0, 0, 1,-1 };
X  
X  #ifdef WALKIES
X--- 823,832 ----
X  }
X  
X  /* 'rogue'-like direction commands */
X! const char NEARDATA sdir[] = "hykulnjb><";
X! const char NEARDATA ndir[] = "47896321><";
X! const schar NEARDATA xdir[10] = { -1,-1, 0, 1, 1, 1, 0,-1, 0, 0 };
X! const schar NEARDATA ydir[10] = {  0,-1,-1,-1, 0, 1, 1, 1, 0, 0 };
X  const schar zdir[10] = {  0, 0, 0, 0, 0, 0, 0, 0, 1,-1 };
X  
X  #ifdef WALKIES
X***************
X*** 911,919 ****
X  	return !u.dz;
X  }
X  
X- #endif /* OVL1 */
X- #ifdef OVLB
X- 
X  int
X  getdir(s)
X  boolean s;
X--- 874,879 ----
X***************
X*** 938,943 ****
X--- 898,906 ----
X  	if(!u.dz && (Stunned || (Confusion && !rn2(5)))) confdir();
X  	return 1;
X  }
X+ 
X+ #endif /* OVL1 */
X+ #ifdef OVLB
X  
X  void
X  confdir()
X*** src/Old/dbridge.c	Sun Jun  3 12:51:22 1990
X--- src/dbridge.c	Thu May 31 22:10:40 1990
X***************
X*** 13,18 ****
X--- 13,19 ----
X  #include "hack.h"
X  
X  #ifdef STRONGHOLD
X+ # ifdef OVLB
X  static void FDECL(redosym, (int, int));
X  static void FDECL(get_wall_for_db, (int *, int *));
X  static struct entity *FDECL(e_at, (int, int));
X***************
X*** 28,34 ****
X  static boolean FDECL(e_missed, (struct entity *, BOOLEAN_P));
X  static boolean FDECL(e_jumps, (struct entity *));
X  static void FDECL(do_entity, (struct entity *));
X! #endif
X  
X  #ifdef OVL0
X  
X--- 29,36 ----
X  static boolean FDECL(e_missed, (struct entity *, BOOLEAN_P));
X  static boolean FDECL(e_jumps, (struct entity *));
X  static void FDECL(do_entity, (struct entity *));
X! # endif /* OVLB */
X! #endif /* STRONGHOLD */
X  
X  #ifdef OVL0
X  
X***************
X*** 63,68 ****
X--- 65,73 ----
X  	crm->seen = oldseen;
X  }
X  
X+ #endif /* OVL1 */
X+ #ifdef OVLB
X+ 
X  static void
X  redosym(x,y)
X  int x,y;
X***************
X*** 76,81 ****
X--- 81,89 ----
X  	}
X  }
X  
X+ #endif /* OVLB */
X+ #ifdef OVL1
X+ 
X  /* 
X   * We want to know whether a wall (or a door) is the portcullis (passageway)
X   * of an eventual drawbridge.
X***************
X*** 113,121 ****
X  	return (-1);
X  }
X  
X- #endif /* OVL1 */
X- #ifdef OVL1
X- 
X  /*
X   * Use is_db_wall where you want to verify that a
X   * drawbridge "wall" is UP in the location x, y
X--- 121,126 ----
X***************
X*** 129,136 ****
X  		levl[x][y].diggable & W_GATEWAY);
X  }
X  
X- #endif /* OVL1 */
X- #ifdef OVLB
X  
X  /*
X   * Return true with x,y pointing to the drawbridge if x,y initially indicate
X--- 134,139 ----
X***************
X*** 157,162 ****
X--- 160,168 ----
X  	return FALSE;
X  }
X  
X+ #endif /* OVL1 */
X+ #ifdef OVLB
X+ 
X  /* 
X   * Find the drawbridge wall associated with a drawbridge.
X   */
X***************
X*** 234,240 ****
X  
X  #define ENTITIES 2
X  
X! static struct entity occupants[ENTITIES];
X  
X  static
X  struct entity *
X--- 240,246 ----
X  
X  #define ENTITIES 2
X  
X! static struct entity NEARDATA occupants[ENTITIES];
X  
X  static
X  struct entity *
X***************
X*** 414,425 ****
X  		else {
X  			coord xy;
X  
X  			done(how);
X  			/* So, you didn't die */
X  			if (!e_survives_at(etmp, etmp->ex, etmp->ey)) {
X  				pline("A %s force teleports you away...",
X  		      		      Hallucination ? "normal" : "strange");
X! 				enexto(&xy, etmp->ex, etmp->ey, etmp->edata);
X  				teleds(xy.x, xy.y);
X  			}
X  		}
X--- 420,434 ----
X  		else {
X  			coord xy;
X  
X+ 			killer_format = KILLED_BY_AN;
X+ 			killer = "falling drawbridge";
X  			done(how);
X  			/* So, you didn't die */
X  			if (!e_survives_at(etmp, etmp->ex, etmp->ey)) {
X  				pline("A %s force teleports you away...",
X  		      		      Hallucination ? "normal" : "strange");
X! 				(void) enexto(&xy, etmp->ex, etmp->ey,
X! 								etmp->edata);
X  				teleds(xy.x, xy.y);
X  			}
X  		}
X***************
X*** 876,883 ****
X  	lev2->typ = DOOR;
X  	lev2->doormask = D_NODOOR;
X  	set_entity(x, y, etmp1);
X- 	e_inview = e_boolean(etmp1, canseemon);
X  	if (etmp1->edata) {
X  		if (e_missed(etmp1, TRUE)) {
X  #ifdef D_DEBUG
X  			pline("%s spared!", E_phrase(etmp1, "are"));
X--- 885,892 ----
X  	lev2->typ = DOOR;
X  	lev2->doormask = D_NODOOR;
X  	set_entity(x, y, etmp1);
X  	if (etmp1->edata) {
X+ 		e_inview = e_boolean(etmp1, canseemon);
X  		if (e_missed(etmp1, TRUE)) {
X  #ifdef D_DEBUG
X  			pline("%s spared!", E_phrase(etmp1, "are"));
X*** src/Old/decl.c	Sun Jun  3 12:51:53 1990
X--- src/decl.c	Mon Mar 12 18:49:33 1990
X***************
X*** 4,18 ****
X  
X  #include	"hack.h"
X  
X! int multi = 0;
X! int warnlevel = 0;		/* used by movemon and dochugw */
X! int nroom = 0;
X! int occtime = 0;
X  
X  int x_maze_max, y_maze_max;	/* initialized in main, used in mkmaze.c */
X  
X  #ifdef REDO
X! int in_doagain = 0;
X  #endif
X  
X  /*
X--- 4,18 ----
X  
X  #include	"hack.h"
X  
X! int NEARDATA multi = 0;
X! int NEARDATA warnlevel = 0;		/* used by movemon and dochugw */
X! int NEARDATA nroom = 0;
X! int NEARDATA occtime = 0;
X  
X  int x_maze_max, y_maze_max;	/* initialized in main, used in mkmaze.c */
X  
X  #ifdef REDO
X! int NEARDATA in_doagain = 0;
X  #endif
X  
X  /*
X***************
X*** 21,63 ****
X   */
X  
X   int
X! 	medusa_level = 0,	/* level that the medusa lives on */
X! 	bigroom_level = 0,	/* level consisting of a single big room */
X  #ifdef REINCARNATION
X! 	rogue_level = 0,	/* level near which rogue level gen'd */
X  #endif
X  #ifdef ORACLE
X! 	oracle_level = 0,	/* level near which Oracle gen'd */
X  #endif
X  #ifdef STRONGHOLD
X! 	stronghold_level = 3,	/* level the castle is on */
X  	/* Not 0, otherwise they start the game in Hell and burn immediately */
X! 	tower_level = 0,	/* level of the top of Vlad's 3-level tower */
X  #endif
X! 	wiz_level = 0;		/* level that the wiz lives on */
X! boolean is_maze_lev = FALSE;    /* if this is a maze level */
X  
X! int smeq[MAXNROFROOMS+1] = DUMMY;
X! int doorindex = 0;
X! 
X! char *save_cm = 0;
X! int killer_format = 0;
X! const char *killer = 0;
X! const char *nomovemsg = 0;
X! const char nul[40] = DUMMY;		/* contains zeros */
X! char plname[PL_NSIZ] = DUMMY;		/* player name */
X! char pl_character[PL_CSIZ] = DUMMY;
X  
X  #ifdef TUTTI_FRUTTI
X! char pl_fruit[PL_FSIZ] = DUMMY;
X! int current_fruit = 0;
X! struct fruit *ffruit = 0;
X  #endif
X  
X  #ifdef STRONGHOLD
X! char tune[6] = DUMMY;
X  #  ifdef MUSIC
X! schar music_heard = 0;
X  #  endif
X  #endif
X  
X--- 21,63 ----
X   */
X  
X   int
X! 	NEARDATA medusa_level = 0,	/* level that the medusa lives on */
X! 	NEARDATA bigroom_level = 0,	/* level consisting of a single big room */
X  #ifdef REINCARNATION
X! 	NEARDATA rogue_level = 0,	/* level near which rogue level gen'd */
X  #endif
X  #ifdef ORACLE
X! 	NEARDATA oracle_level = 0,	/* level near which Oracle gen'd */
X  #endif
X  #ifdef STRONGHOLD
X! 	NEARDATA stronghold_level = 3,	/* level the castle is on */
X  	/* Not 0, otherwise they start the game in Hell and burn immediately */
X! 	NEARDATA tower_level = 0,	/* level of the top of Vlad's 3-level tower */
X  #endif
X! 	NEARDATA wiz_level = 0;		/* level that the wiz lives on */
X! boolean NEARDATA is_maze_lev = FALSE;    /* if this is a maze level */
X  
X! int NEARDATA smeq[MAXNROFROOMS+1] = DUMMY;
X! int NEARDATA doorindex = 0;
X! 
X! char NEARDATA *save_cm = 0;
X! int NEARDATA killer_format = 0;
X! const char NEARDATA *killer = 0;
X! const char NEARDATA *nomovemsg = 0;
X! const char NEARDATA nul[40] = DUMMY;		/* contains zeros */
X! char NEARDATA plname[PL_NSIZ] = DUMMY;		/* player name */
X! char NEARDATA pl_character[PL_CSIZ] = DUMMY;
X  
X  #ifdef TUTTI_FRUTTI
X! char NEARDATA pl_fruit[PL_FSIZ] = DUMMY;
X! int NEARDATA current_fruit = 0;
X! struct fruit NEARDATA *ffruit = 0;
X  #endif
X  
X  #ifdef STRONGHOLD
X! char NEARDATA tune[6] = DUMMY;
X  #  ifdef MUSIC
X! schar NEARDATA music_heard = 0;
X  #  endif
X  #endif
X  
X***************
X*** 64,77 ****
X  #ifdef SMALLDATA
X  const char *occtxt = 0;
X  #else
X! const char *occtxt = DUMMY;
X  #endif
X! const char quitchars[] = " \r\n\033";
X! const char vowels[] = "aeiouAEIOU";
X! const char ynchars[] = "yn";
X! const char ynqchars[] = "ynq";
X! const char ynaqchars[] = "ynaq";
X! const char nyaqchars[] = "nyaq";
X  
X  #ifdef SMALLDATA
X  char *HI = 0, *HE = 0, *AS = 0, *AE = 0, *CD = 0;
X--- 64,77 ----
X  #ifdef SMALLDATA
X  const char *occtxt = 0;
X  #else
X! const char NEARDATA *occtxt = DUMMY;
X  #endif
X! const char NEARDATA quitchars[] = " \r\n\033";
X! const char NEARDATA vowels[] = "aeiouAEIOU";
X! const char NEARDATA ynchars[] = "yn";
X! const char NEARDATA ynqchars[] = "ynq";
X! const char NEARDATA ynaqchars[] = "ynaq";
X! const char NEARDATA nyaqchars[] = "nyaq";
X  
X  #ifdef SMALLDATA
X  char *HI = 0, *HE = 0, *AS = 0, *AE = 0, *CD = 0;
X***************
X*** 83,90 ****
X  int CO = 0, LI = 0;	/* set up in termcap.c: usually COLNO and ROWNO+3 */
X  
X  #ifdef CLIPPING
X! boolean clipping;	/* clipping on? */
X! int clipx, clipy, clipxmax, clipymax;
X  #endif
X  
X  #ifdef TEXTCOLOR
X--- 83,90 ----
X  int CO = 0, LI = 0;	/* set up in termcap.c: usually COLNO and ROWNO+3 */
X  
X  #ifdef CLIPPING
X! boolean clipping = FALSE;	/* clipping on? */
X! int clipx = 0, clipy = 0, clipxmax = 0, clipymax = 0;
X  #endif
X  
X  #ifdef TEXTCOLOR
X***************
X*** 91,97 ****
X  # ifdef TOS
X  const char *hilites[MAXCOLORS];	/* terminal escapes for the various colors */
X  # else
X! char *hilites[MAXCOLORS];	/* terminal escapes for the various colors */
X  # endif
X  #endif
X  #ifdef MSDOS
X--- 91,97 ----
X  # ifdef TOS
X  const char *hilites[MAXCOLORS];	/* terminal escapes for the various colors */
X  # else
X! char NEARDATA *hilites[MAXCOLORS]; /* terminal escapes for the various colors */
X  # endif
X  #endif
X  #ifdef MSDOS
X***************
X*** 115,169 ****
X  # endif
X  #endif
X  
X! int dig_effort = 0;	/* effort expended on current pos */
X! uchar dig_level = 0;
X! coord dig_pos = DUMMY;
X! boolean dig_down = FALSE;
X  
X! xchar dlevel = 1;
X! xchar maxdlevel = 1;
X! int done_stopprint = 0;
X! int done_hup = 0;
X! xchar xupstair = 0, yupstair = 0, xdnstair = 0, ydnstair = 0;
X  #ifdef STRONGHOLD
X! xchar xupladder = 0, yupladder = 0, xdnladder = 0, ydnladder = 0;
X  #endif
X! xchar curx = 0, cury = 0;
X! xchar seelx = 0, seehx = 0, seely = 0, seehy = 0; /* corners of lit room */
X! xchar seelx2 = 0, seehx2 = 0, seely2 = 0, seehy2 = 0; /* corners of lit room */
X! xchar scrlx = 0, scrhx = 0, scrly = 0, scrhy = 0; /* corners of new scr. area*/
X! xchar fountsound = 0;
X! xchar sinksound = 0; /* numbers of other things that make noise */
X! 
X! boolean in_mklev = FALSE;
X! boolean	stoned = FALSE;			/* done to monsters hit by 'c' */
X! boolean	unweapon = FALSE;
X! boolean mrg_to_wielded = FALSE; /* weapon picked is merged with wielded one */
X  
X  #ifdef KOPS
X! boolean allow_kops = TRUE;
X  #endif
X  
X! coord bhitpos = DUMMY;
X! coord doors[DOORMAX] = DUMMY;
X  
X! struct mkroom rooms[MAXNROFROOMS+1] = DUMMY;
X  dlevel_t level;		/* level map */
X  struct trap *ftrap = 0;
X  struct gold *fgold = 0;
X! struct monst youmonst = DUMMY;	/* dummy; used as return value for boomhit */
X! struct flag flags = DUMMY;
X! struct you u = DUMMY;
X  
X! struct obj *fcobj = 0, *invent = 0, *uwep = 0, *uarm = 0,
X  #ifdef SHIRT
X! 	*uarmu = 0,		/* under-wear, so to speak */
X  #endif
X  #ifdef POLYSELF
X! 	*uskin = 0,		/* dragon armor, if a dragon */
X  #endif
X! 	*uarmc = 0, *uarmh = 0, *uarms = 0, *uarmg = 0, *uarmf = 0, *uamul = 0,
X! 	*uright = 0, *uleft = 0, *ublindf = 0, *uchain = 0, *uball = 0;
X  
X  symbol_array defsyms = {
X      ' ', /* stone */
X--- 115,178 ----
X  # endif
X  #endif
X  
X! int NEARDATA dig_effort = 0;	/* effort expended on current pos */
X! uchar NEARDATA dig_level = 0;
X! coord NEARDATA dig_pos = DUMMY;
X! boolean NEARDATA dig_down = FALSE;
X  
X! xchar NEARDATA dlevel = 1;
X! xchar NEARDATA maxdlevel = 1;
X! int NEARDATA done_stopprint = 0;
X! int NEARDATA done_hup = 0;
X! xchar NEARDATA xupstair = 0, NEARDATA yupstair = 0, 
X! 	NEARDATA xdnstair = 0, NEARDATA ydnstair = 0;
X  #ifdef STRONGHOLD
X! xchar NEARDATA xupladder = 0, NEARDATA yupladder = 0,
X! 	NEARDATA xdnladder = 0, NEARDATA ydnladder = 0;
X  #endif
X! xchar NEARDATA curx = 0, NEARDATA cury = 0;
X! xchar NEARDATA seelx = 0, NEARDATA seehx = 0, NEARDATA seely = 0,
X! 	NEARDATA seehy = 0; /* corners of lit room */
X! xchar NEARDATA seelx2 = 0, NEARDATA seehx2 = 0, NEARDATA seely2 = 0,
X! 	NEARDATA  seehy2 = 0; /* corners of lit room */
X! xchar NEARDATA scrlx = 0, NEARDATA scrhx = 0, NEARDATA scrly = 0,
X! 	NEARDATA scrhy = 0; /* corners of new scr. area*/
X! xchar NEARDATA fountsound = 0;
X! xchar NEARDATA sinksound = 0; /* numbers of other things that make noise */
X! 
X! boolean NEARDATA in_mklev = FALSE;
X! boolean	NEARDATA stoned = FALSE;	/* done to monsters hit by 'c' */
X! boolean	NEARDATA unweapon = FALSE;
X! boolean NEARDATA mrg_to_wielded = FALSE;
X! 			 /* weapon picked is merged with wielded one */
X  
X  #ifdef KOPS
X! boolean NEARDATA allow_kops = TRUE;
X  #endif
X  
X! coord NEARDATA bhitpos = DUMMY;
X! coord NEARDATA doors[DOORMAX] = DUMMY;
X  
X! struct mkroom NEARDATA rooms[MAXNROFROOMS+1] = DUMMY;
X  dlevel_t level;		/* level map */
X  struct trap *ftrap = 0;
X  struct gold *fgold = 0;
X! struct monst NEARDATA youmonst = DUMMY;	/* dummy; used as return value for boomhit */
X! struct flag NEARDATA flags = DUMMY;
X! struct you NEARDATA u = DUMMY;
X  
X! struct obj NEARDATA *fcobj = 0, NEARDATA *invent = 0, NEARDATA *uwep = 0,
X! 	NEARDATA *uarm = 0,
X  #ifdef SHIRT
X! 	NEARDATA *uarmu = 0,		/* under-wear, so to speak */
X  #endif
X  #ifdef POLYSELF
X! 	NEARDATA *uskin = 0,		/* dragon armor, if a dragon */
X  #endif
X! 	NEARDATA *uarmc = 0, NEARDATA *uarmh = 0, NEARDATA *uarms = 0,
X! 	NEARDATA *uarmg = 0, NEARDATA *uarmf = 0, NEARDATA *uamul = 0,
X! 	NEARDATA *uright = 0, NEARDATA *uleft = 0, NEARDATA *ublindf = 0,
X! 	NEARDATA *uchain = 0, NEARDATA *uball = 0;
X  
X  symbol_array defsyms = {
X      ' ', /* stone */
X***************
X*** 245,257 ****
X  };
X  
X  #ifdef SPELLS
X! struct spell spl_book[MAXSPELL + 1] = DUMMY;
X  #endif
X  
X! long moves = 1, monstermoves = 1; /* These diverge when player is Fast */
X! long wailmsg = 0;
X  
X! struct obj zeroobj = DUMMY;	/* used to zero all elements of a struct obj */
X  
X  struct obj *billobjs = 0;
X  
X--- 254,267 ----
X  };
X  
X  #ifdef SPELLS
X! struct spell NEARDATA spl_book[MAXSPELL + 1] = DUMMY;
X  #endif
X  
X! long NEARDATA moves = 1, NEARDATA monstermoves = 1;
X! 	 /* These diverge when player is Fast */
X! long NEARDATA wailmsg = 0;
X  
X! struct obj NEARDATA zeroobj = DUMMY;	/* used to zero all elements of a struct obj */
X  
X  struct obj *billobjs = 0;
X  
X*** src/Old/demon.c	Sun Jun  3 12:52:14 1990
X--- src/demon.c	Sun Apr 15 10:02:49 1990
X***************
X*** 122,127 ****
X--- 122,129 ----
X  		   plur(offer));
X  
X  	u.ugold -= offer;
X+ 	mtmp->mgold += offer;
X+ 	flags.botl = 1;
X  	return(offer);
X  }
X  #endif
X
END_OF_FILE
if test 50042 -ne `wc -c <'patch8.01'`; then
    echo shar: \"'patch8.01'\" unpacked with wrong size!
fi
# end of 'patch8.01'
fi
echo shar: End of archive 12 \(of 24\).
cp /dev/null ark12isdone
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 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 24 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