[comp.sources.games.bugs] Repost: NetHack 2.3 Update Part 11

mike@genpyr.UUCP (Mike Stephenson) (04/29/88)

	The following is a reposting of Part 11 of 12 (actually 13 due to an
error on my part) of the NetHack 2.3 Update Kit.  I will also be postint the
final two parts today.

-------------------------------cut here---------------------------------------
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	Update.2.3.f
# This archive created: Mon Apr  4 08:52:38 1988
export PATH; PATH=/bin:$PATH
echo shar: extracting "'Update.2.3.f'" '(35693 characters)'
if test -f 'Update.2.3.f'
then
	echo shar: will not over-write existing file "'Update.2.3.f'"
else
cat << \SHAR_EOF > 'Update.2.3.f'
*** ./shk.c.orig	Mon Feb 22 08:40:15 1988
--- ./shk.c	Thu Mar 31 09:08:51 1988
***************
*** 1,4
! /*	SCCS Id: @(#)shk.c	2.1	87/08/23
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include "hack.h"

--- 1,4 -----
! /*	SCCS Id: @(#)shk.c	2.3	88/01/24
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include "hack.h"
***************
*** 4,10
  #include "hack.h"
  #ifdef QUEST
  int shlevel = 0;
! struct monst *shopkeeper = 0;
  struct	obj	*billobjs = 0;
  obfree(obj,merge) register struct obj *obj, *merge; {
  	free((char *) obj);

--- 4,10 -----
  #include "hack.h"
  #ifdef QUEST
  int shlevel = 0;
! struct monst *mkmon_at(), *shopkeeper = 0;
  struct	obj	*billobjs = 0;
  obfree(obj,merge) register struct obj *obj, *merge; {
  	free((char *) obj);
***************
*** 223,230
  		if(!ESHK(shopkeeper)->following) {
  		    boolean box, pick;
  
! 		    pline("Hello %s! Welcome%s to %s's %s!",
! 			plname,
  			ESHK(shopkeeper)->visitct++ ? " again" : "",
  			shkname(shopkeeper),
  			shtypes[rt - SHOPBASE].name);

--- 223,230 -----
  		if(!ESHK(shopkeeper)->following) {
  		    boolean box, pick;
  
! 		    pline("Hello %s%s! Welcome%s to %s's %s!",
! 			(Badged) ? "Officer " : "", plname,
  			ESHK(shopkeeper)->visitct++ ? " again" : "",
  			shkname(shopkeeper),
  			shtypes[rt - SHOPBASE].name);
***************
*** 547,552
  addtobill(obj) register struct obj *obj; {
  register struct bill_x *bp;
  char	buf[40];
  	if(!inshop() ||
  	(u.ux == ESHK(shopkeeper)->shk.x && u.uy == ESHK(shopkeeper)->shk.y) ||
  	(u.ux == ESHK(shopkeeper)->shd.x && u.uy == ESHK(shopkeeper)->shd.y) ||

--- 547,553 -----
  addtobill(obj) register struct obj *obj; {
  register struct bill_x *bp;
  char	buf[40];
+ extern char *typename();
  	if(!inshop() ||
  	(u.ux == ESHK(shopkeeper)->shk.x && u.uy == ESHK(shopkeeper)->shk.y) ||
  	(u.ux == ESHK(shopkeeper)->shd.x && u.uy == ESHK(shopkeeper)->shd.y) ||
***************
*** 572,578
  	strcpy(buf, "For you, ");
  	if (ANGRY(shopkeeper)) strcat(buf, "scum ");
  	else {
! 	    switch(rnd(4) + u.udemigod) {
  		case 1:	strcat(buf, "good");
  			break;
  		case 2:	strcat(buf, "honored");

--- 573,583 -----
  	strcpy(buf, "For you, ");
  	if (ANGRY(shopkeeper)) strcat(buf, "scum ");
  	else {
! 	    switch(rnd(4)
! #ifdef HARD
! 		   + u.udemigod
! #endif
! 				) {
  		case 1:	strcat(buf, "good");
  			break;
  		case 2:	strcat(buf, "honored");
***************
*** 589,595
  	}
  	pline("%s; only %d %s %s.", buf, bp->price,
  			(bp->bquan > 1) ? "per" : "for this",
! 			typename(obj->otyp));
  
  	ESHK(shopkeeper)->billct++;
  	obj->unpaid = 1;

--- 594,600 -----
  	}
  	pline("%s; only %d %s %s.", buf, bp->price,
  			(bp->bquan > 1) ? "per" : "for this",
! 			typename((int)obj->otyp));
  
  	ESHK(shopkeeper)->billct++;
  	obj->unpaid = 1;
***************
*** 915,922
  		}
  		if(ESHK(shkp)->following) {
  			if(strncmp(ESHK(shkp)->customer, plname, PL_NSIZ)){
! 				pline("Hello %s! I was looking for %s.",
! 					plname, ESHK(shkp)->customer);
  				ESHK(shkp)->following = 0;
  				return(0);
  			}

--- 920,928 -----
  		}
  		if(ESHK(shkp)->following) {
  			if(strncmp(ESHK(shkp)->customer, plname, PL_NSIZ)){
! 			pline("Hello %s%s! I was looking for %s.",
! 				(Badged) ? "Officer " : "", 
! 				plname, ESHK(shkp)->customer);
  				ESHK(shkp)->following = 0;
  				return(0);
  			}
***************
*** 925,932
  				return(0);
  			}
  			if(moves > followmsg+4) {
! 				pline("Hello %s! Didn't you forget to pay?",
! 					plname);
  				followmsg = moves;
  #ifdef HARD
  				if (!rn2(5)) {

--- 931,938 -----
  				return(0);
  			}
  			if(moves > followmsg+4) {
! 				pline("Hello %s%s! Didn't you forget to pay?",
! 					(Badged) ? "Officer " : "", plname);
  				followmsg = moves;
  				if (Badged)
  				    pline ("You should be upholding the law!");
***************
*** 928,933
  				pline("Hello %s! Didn't you forget to pay?",
  					plname);
  				followmsg = moves;
  #ifdef HARD
  				if (!rn2(5)) {
  	    pline ("%s doesn't like customers who don't pay.", Monnam(shkp));

--- 934,941 -----
  				pline("Hello %s%s! Didn't you forget to pay?",
  					(Badged) ? "Officer " : "", plname);
  				followmsg = moves;
+ 				if (Badged)
+ 				    pline ("You should be upholding the law!");
  #ifdef HARD
  				if (!rn2((Badged) ? 3 : 5)) {
  	    pline ("%s doesn't like customers who don't pay.", Monnam(shkp));
***************
*** 929,935
  					plname);
  				followmsg = moves;
  #ifdef HARD
! 				if (!rn2(5)) {
  	    pline ("%s doesn't like customers who don't pay.", Monnam(shkp));
  				    NOTANGRY(shkp) = 0;
  				}

--- 937,943 -----
  				if (Badged)
  				    pline ("You should be upholding the law!");
  #ifdef HARD
! 				if (!rn2((Badged) ? 3 : 5)) {
  	    pline ("%s doesn't like customers who don't pay.", Monnam(shkp));
  				    NOTANGRY(shkp) = 0;
  				}
***************
*** 971,978
  				u.uy == ESHK(shkp)->shd.y);
  		  if(uondoor) {
  		    if(ESHK(shkp)->billct)
! 			pline("Hello %s! Will you please pay before leaving?",
! 				plname);
  		    badinv = (carrying(PICK_AXE) || carrying(ICE_BOX));
  		    if(satdoor && badinv)
  			return(0);

--- 979,986 -----
  				u.uy == ESHK(shkp)->shd.y);
  		  if(uondoor) {
  		    if(ESHK(shkp)->billct)
! 			pline("Hello %s%s! Will you please pay before leaving?",
! 				(Badged) ? "Officer " : "", plname);
  		    badinv = (carrying(PICK_AXE) || carrying(ICE_BOX));
  		    if(satdoor && badinv)
  			return(0);
*** ./shknam.c.orig	Mon Feb 22 08:40:16 1988
--- ./shknam.c	Thu Mar 31 08:49:56 1988
***************
*** 1,4
! /*	SCCS Id: @(#)shknam.c	2.1	87/09/23
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  /* shknam.c -- initialize a shop */

--- 1,4 -----
! /*	SCCS Id: @(#)shknam.c	2.3	87/12/18
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  /* shknam.c -- initialize a shop */
***************
*** 8,13
  #include "eshk.h"
  
  extern struct monst *makemon();
  
  static char *shkliquors[] = {
      /* Ukraine */

--- 8,14 -----
  #include "eshk.h"
  
  extern struct monst *makemon();
+ extern struct obj *mkobj_at(), *mksobj_at();
  
  static char *shkliquors[] = {
      /* Ukraine */
***************
*** 155,161
  	{"jewelers", RING_SYM, 3, D_SHOP,
  	    {{90, RING_SYM}, {10, GEM_SYM}, {0, 0}}, shkrings},
  	{"quality apparel and accessories", WAND_SYM, 3, D_SHOP,
! 	    {{90, WAND_SYM}, {5, -PAIR_OF_GLOVES}, {5, -ELVEN_CLOAK}},
  	     shkwands},
  #ifdef SPELLS
  	{"rare books", SPBOOK_SYM, 3, D_SHOP,

--- 156,162 -----
  	{"jewelers", RING_SYM, 3, D_SHOP,
  	    {{90, RING_SYM}, {10, GEM_SYM}, {0, 0}}, shkrings},
  	{"quality apparel and accessories", WAND_SYM, 3, D_SHOP,
! 	    {{90, WAND_SYM}, {5, -PAIR_OF_GLOVES}, {5, -ELVEN_CLOAK}, {0, 0}},
  	     shkwands},
  #ifdef SPELLS
  	{"rare books", SPBOOK_SYM, 3, D_SHOP,
***************
*** 175,181
      int		atype;
  
      /* select an appropriate artifact type at random */
!     for(j = rn2(100), i = 0; j -= shp->iprobs[i].iprob; i++)
  	if (j < 0)
  	    break;
  

--- 176,182 -----
      int		atype;
  
      /* select an appropriate artifact type at random */
!     for(j = rnd(100), i = 0; j -= shp->iprobs[i].iprob; i++)
  	if (j < 0)
  	    break;
  
***************
*** 323,329
  	if(shtypes[nshop].symb == RANDOM_SYM) return(1);
  	else {
  	    for(i = 0; shtypes[nshop].iprobs[i].iprob; i++)
! 		if(shtypes[nshop].iprobs[i].itype == obj->olet) return(1);
  	}
  	return(0);
  }

--- 324,333 -----
  	if(shtypes[nshop].symb == RANDOM_SYM) return(1);
  	else {
  	    for(i = 0; shtypes[nshop].iprobs[i].iprob; i++)
! 		if(shtypes[nshop].iprobs[i].itype < 0) {
! 		   if(shtypes[nshop].iprobs[i].itype == - obj->otyp) return(1);
! 		}
! 	        else if(shtypes[nshop].iprobs[i].itype == obj->olet) return(1);
  	}
  	return(0);
  }
*** ./sit.c.orig	Mon Feb 22 08:40:16 1988
--- ./sit.c	Thu Feb 11 13:59:21 1988
***************
*** 1,4
! /*	SCCS Id: @(#)sit.c	2.1	87/11/09
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include "hack.h"

--- 1,4 -----
! /*	SCCS Id: @(#)sit.c	2.3	88/02/02
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include "hack.h"
***************
*** 40,47
  				gainstr(0);
  				break;
  			    case 3:
! 				pline("A massive charge of electricity shoots through your body!");
! 				losehp(rnd(30), "electric chair");
  				break;
  			    case 4:
  				pline("you feel much, much better!");

--- 40,50 -----
  				gainstr(0);
  				break;
  			    case 3:
! 				pline("A%s charge of electricity shoots through your body!",
! 				      (Shock_resistance) ? "" : " massive");
! 				if(Shock_resistance)
! 					losehp(rnd(6), "electric chair");
! 				else	losehp(rnd(30), "electric chair");
  				break;
  			    case 4:
  				pline("you feel much, much better!");
***************
*** 66,72
  				if(u.uluck + rn2(5) < 0) {
  
  				    pline("you feel your luck is changing.");
! 				    u.uluck++;
  				} else	    makewish();
  				break;
  			    case 7:

--- 69,75 -----
  				if(u.uluck + rn2(5) < 0) {
  
  				    pline("you feel your luck is changing.");
! 				    change_luck(1);
  				} else	    makewish();
  				break;
  			    case 7:
***************
*** 160,162
  	    }
  }
  #endif

--- 163,225 -----
  	    }
  }
  #endif
+ 
+ attrcurse() {			/* remove a random INTRINSIC ability */
+ 	switch(rnd(10)) {
+ 	case 1 : if (HFire_resistance & INTRINSIC) {
+ 			HFire_resistance &= ~INTRINSIC;
+ 			if (Inhell && !Fire_resistance) {
+ 			    pline("You burn to a crisp.");
+ 			    killer = "gremlin curse";
+ 			    done("died");
+ 			} else pline("You feel warmer!");
+ 			break;
+ 		}
+ 	case 2 : if (HTeleportation & INTRINSIC) {
+ 			HTeleportation &= ~INTRINSIC;
+ 			pline("You don't feel jumpy!");
+ 			break;
+ 		}
+ 	case 3 : if (HPoison_resistance & INTRINSIC) {
+ 			HPoison_resistance &= ~INTRINSIC;
+ 			pline("You feel a little sick!");
+ 			break;
+ 		}
+ 	case 4 : if (HTelepat & INTRINSIC) {
+ 			HTelepat &= ~INTRINSIC;
+ 			pline("Your senses fail!");
+ 			break;
+ 		}
+ 	case 5 : if (HCold_resistance & INTRINSIC) {
+ 			HCold_resistance &= ~INTRINSIC;
+ 			pline("You feel colder!");
+ 			break;
+ 		}
+ 	case 6 : if (HInvis & INTRINSIC) {
+ 			HInvis &= ~INTRINSIC;
+ 			pline("You feel paranoid!");
+ 			break;
+ 		}
+ 	case 7 : if (HSee_invisible & INTRINSIC) {
+ 			HSee_invisible &= ~INTRINSIC;
+ 			pline("You think you see something!");
+ 			break;
+ 		}
+ 	case 8 : if (Fast & INTRINSIC) {
+ 			Fast &= ~INTRINSIC;
+ 			pline("You feel slower!");
+ 			break;
+ 		}
+ 	case 9 : if (Stealth & INTRINSIC) {
+ 			Stealth &= ~INTRINSIC;
+ 			pline("You feel clumsy!");
+ 			break;
+ 		}
+ 	case 10: if (Protection & INTRINSIC) {
+ 			Protection &= ~INTRINSIC;
+ 			pline("You feel vulnerable!");
+ 			break;
+ 		}
+ 	default: break;
+ 	}
+ }
*** ./spell.c.orig	Mon Feb 22 08:40:16 1988
--- ./spell.c	Thu Mar 31 11:19:13 1988
***************
*** 1,4
! /*	SCCS Id: @(#)spell.c	2.1	87/10/07
   */
  
  #include "hack.h"

--- 1,4 -----
! /*	SCCS Id: @(#)spell.c	2.3	87/12/12
   */
  
  #include "hack.h"
***************
*** 304,313
  
  			mtmp = makedog();
  			if(mtmp) {
! 				/* make it into something else */
! 				(void) newcham(mtmp, &mons[dlevel+14+rn2(CMNUM-14-dlevel)]);
! 				if(confused)
! 					mtmp->mtame = mtmp->mpeaceful = 0;
  			}
  		}
  		break;

--- 304,318 -----
  
  			mtmp = makedog();
  			if(mtmp) {
! 			    /* make it into something else */
! 			    (void) newcham(mtmp,
! #ifndef RPH
! 				&mons[dlevel+14+rn2(CMNUM-14-dlevel)]);
! #else
! 				(struct pemonst *)0);
! #endif
! 			    if(confused)
! 				mtmp->mtame = mtmp->mpeaceful = 0;
  			}
  		}
  		break;
***************
*** 376,381
  dovspell() {
  
  	register int max, i, side;
  	char     buf[BUFSZ],
  		 *spellname();
  

--- 381,387 -----
  dovspell() {
  
  	register int max, i, side;
+ 	extern	 char morc;
  	char     buf[BUFSZ],
  		 any[BUFSZ],
  		 *spellname();
***************
*** 377,382
  
  	register int max, i, side;
  	char     buf[BUFSZ],
  		 *spellname();
  
  	if (spl_book[0].sp_id == NO_SPELL)  {

--- 383,389 -----
  	register int max, i, side;
  	extern	 char morc;
  	char     buf[BUFSZ],
+ 		 any[BUFSZ],
  		 *spellname();
  
  	if (spl_book[0].sp_id == NO_SPELL)  {
***************
*** 383,389
  
  		pline("You don't know any spells right now.");
  		return(0);
! 	} else  {
  
  	    for(max = 1; (max < MAXSPELL) && (spl_book[max].sp_id != NO_SPELL); max++);
  	    if (max >= MAXSPELL)  {

--- 390,396 -----
  
  		pline("You don't know any spells right now.");
  		return(0);
! 	}
  
  	for(max = 1; (max < MAXSPELL) && (spl_book[max].sp_id != NO_SPELL); max++);
  	if (max >= MAXSPELL)  {
***************
*** 385,392
  		return(0);
  	} else  {
  
! 	    for(max = 1; (max < MAXSPELL) && (spl_book[max].sp_id != NO_SPELL); max++);
! 	    if (max >= MAXSPELL)  {
  
  		impossible("Too many spells memorized.");
  		return(0);

--- 392,399 -----
  		return(0);
  	}
  
! 	for(max = 1; (max < MAXSPELL) && (spl_book[max].sp_id != NO_SPELL); max++);
! 	if (max >= MAXSPELL)  {
  
  		impossible("Too many spells memorized.");
  		return(0);
***************
*** 390,396
  
  		impossible("Too many spells memorized.");
  		return(0);
- 	    }
  	}
  	set_pager(0);
  	side = (max + 1) / 2;

--- 397,402 -----
  
  		impossible("Too many spells memorized.");
  		return(0);
  	}
  	morc = 0;		/* just to be sure */
  	cornline(0, "Currently known spells:");
***************
*** 392,400
  		return(0);
  	    }
  	}
! 	set_pager(0);
! 	side = (max + 1) / 2;
! 	if(page_line("Currently known spells:") || page_line(""))  goto quit;
  
  	for(i = 1; i <= side; i++) {
  

--- 398,405 -----
  		impossible("Too many spells memorized.");
  		return(0);
  	}
! 	morc = 0;		/* just to be sure */
! 	cornline(0, "Currently known spells:");
  
  	for(i = 1; i <= max; i++) {
  
***************
*** 396,402
  	side = (max + 1) / 2;
  	if(page_line("Currently known spells:") || page_line(""))  goto quit;
  
! 	for(i = 1; i <= side; i++) {
  
  		if((i < side) || !(max % 2))  {
  

--- 401,407 -----
  	morc = 0;		/* just to be sure */
  	cornline(0, "Currently known spells:");
  
! 	for(i = 1; i <= max; i++) {
  
  		(void) sprintf(buf, "%c - %s (%d)", 
  			spellet(i),spellname(i),spellev(i));
***************
*** 398,404
  
  	for(i = 1; i <= side; i++) {
  
! 		if((i < side) || !(max % 2))  {
  
  		    (void) sprintf(buf, "%c - (%d) %22s          %c - (%d) %22s",
  				   spellet(i), spellev(i), spellname(i),

--- 403,415 -----
  
  	for(i = 1; i <= max; i++) {
  
! 		(void) sprintf(buf, "%c - %s (%d)", 
! 			spellet(i),spellname(i),spellev(i));
! 		cornline(1, buf);
! 		any[i-1] = spellet(i);
!   	}
! 	any[i-1] = 0;
! 	cornline(2, any);
  
  	return(0);
  }
***************
*** 400,419
  
  		if((i < side) || !(max % 2))  {
  
- 		    (void) sprintf(buf, "%c - (%d) %22s          %c - (%d) %22s",
- 				   spellet(i), spellev(i), spellname(i),
- 				   spellet(i + side), spellev(i + side), spellname(i + side));
- 		} else {
- 
- 		    (void) sprintf(buf, "%c - (%d) %22s", spellet(i), spellev(i), spellname(i));
- 		}
- 		if(page_line(buf)) goto quit;
- 	}
- 
- 	set_pager(1);
- 	return(0);
- quit:
- 	set_pager(2);
  	return(0);
  }
  

--- 411,416 -----
  	any[i-1] = 0;
  	cornline(2, any);
  
  	return(0);
  }
  
*** ./steal.c.orig	Mon Feb 22 08:40:17 1988
--- ./steal.c	Thu Jan 21 12:58:37 1988
***************
*** 1,4
! /*	SCCS Id: @(#)steal.c	1.4	87/08/08
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  /* steal.c - version 1.0.3 */
  

--- 1,4 -----
! /*	SCCS Id: @(#)steal.c	2.3	88/01/21
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include "hack.h"
***************
*** 1,6
  /*	SCCS Id: @(#)steal.c	1.4	87/08/08
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- /* steal.c - version 1.0.3 */
  
  #include "hack.h"
  

--- 1,5 -----
  /*	SCCS Id: @(#)steal.c	2.3	88/01/21
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include "hack.h"
  
***************
*** 103,110
  			otmp->cursed = 0;
  			stop_occupation();
  			if(flags.female)
! 				pline("%s charms you.  You gladly hand over your humble garments.",
! 				Monnam(mtmp));
  			else
  				pline("%s seduces you and %s off your %s.",
  				Amonnam(mtmp, Blind ? "gentle" : "beautiful"),

--- 102,116 -----
  			otmp->cursed = 0;
  			stop_occupation();
  			if(flags.female)
! 			    pline("%s charms you.  You gladly %s your %s.",
! 				  Monnam(mtmp),
! 				  curssv ? "hand over"
! 				         : "let her take",
! #ifdef SHIRT
! 				  (otmp == uarmu) ? "shirt" :
! #endif
! 				  (otmp == uarmg) ? "gloves" :
! 				  (otmp == uarmh) ? "helmet" : "armor");
  			else
  				pline("%s seduces you and %s off your %s.",
  				Amonnam(mtmp, Blind ? "gentle" : "beautiful"),
***************
*** 108,115
  			else
  				pline("%s seduces you and %s off your %s.",
  				Amonnam(mtmp, Blind ? "gentle" : "beautiful"),
! 				otmp->cursed ? "helps you to take"
! 					    : "you start taking",
  				(otmp == uarmg) ? "gloves" :
  				(otmp == uarmh) ? "helmet" : "armor");
  			named++;

--- 114,124 -----
  			else
  				pline("%s seduces you and %s off your %s.",
  				Amonnam(mtmp, Blind ? "gentle" : "beautiful"),
! 				curssv	? "helps you to take"
! 					: "you start taking",
! #ifdef SHIRT
! 				(otmp == uarmu) ? "shirt" :
! #endif
  				(otmp == uarmg) ? "gloves" :
  				(otmp == uarmh) ? "helmet" : "armor");
  			named++;
*** ./trap.c.orig	Mon Feb 22 08:40:18 1988
--- ./trap.c	Thu Mar 31 08:39:10 1988
***************
*** 1,4
! /*	SCCS Id: @(#)trap.c	2.1	87/10/18
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include	<stdio.h>

--- 1,4 -----
! /*	SCCS Id: @(#)trap.c	2.3	87/12/16
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include	<stdio.h>
***************
*** 5,10
  #include	"hack.h"
  
  extern struct monst *makemon();
  #ifdef KAA
  extern char *Xmonnam();
  extern char *nomovemsg;

--- 5,12 -----
  #include	"hack.h"
  
  extern struct monst *makemon();
+ extern struct obj *mksobj_at();
+ 
  #ifdef KAA
  extern char *Xmonnam();
  extern char *nomovemsg;
***************
*** 40,46
  #ifdef KAA
  	," rust trap"
  # ifdef RPH
! 	,"polymorph trap"
  # endif
  #endif
  };

--- 42,48 -----
  #ifdef KAA
  	," rust trap"
  # ifdef RPH
! 	," polymorph trap"
  # endif
  #endif
  #ifdef SAC
***************
*** 43,48
  	,"polymorph trap"
  # endif
  #endif
  };
  
  struct trap *

--- 45,53 -----
  	," polymorph trap"
  # endif
  #endif
+ #ifdef SAC
+ 	," land mine"
+ #endif
  };
  
  struct trap *
***************
*** 301,306
  			    }
  		       break;
  #endif
  		default:
  			impossible("You hit a trap of type %u", trap->ttyp);
  		}

--- 306,329 -----
  			    }
  		       break;
  #endif
+ #ifdef SAC
+ 		case LANDMINE: {
+ 			register struct monst *mtmp = fmon;
+ 
+ 			pline("KAABLAMM!!!  You stepped on a land mine!");
+ 			losehp(rnd(16), "land mine");
+ 			set_wounded_legs(LEFT_SIDE, 40 + rnd(35));
+ 			set_wounded_legs(RIGHT_SIDE, 40 + rnd(35));
+ 			/* wake everything on the level */
+ 			while(mtmp) {
+ 				if(mtmp->msleep)
+ 					mtmp->msleep = 0;
+ 				mtmp = mtmp->nmon;
+ 			}
+ 			deltrap(t_at(u.ux, u.uy)); /* mines only explode once */
+ 			break;
+ 		}
+ #endif /* SAC */
  		default:
  			impossible("You hit a trap of type %u", trap->ttyp);
  		}
***************
*** 450,455
  #ifdef SPELLS
  		case ANTI_MAGIC:	break;
  #endif
  		default:
  			impossible("Some monster encountered a strange trap of type %d.",tt);
  	    }

--- 473,500 -----
  #ifdef SPELLS
  		case ANTI_MAGIC:	break;
  #endif
+ #ifdef SAC
+ 		case LANDMINE: {
+ 			register struct monst *mntmp = fmon;
+ 
+ 			if(rn2(3))
+ 				break; /* monsters usually don't set it off */
+ 			if(in_sight)
+ 				pline("KAABLAMM!!! %s steps on a land mine!",
+ 				      Monnam(mtmp));
+ 			else
+ 				pline("Kaablamm! You hear an explosion in the distance!");
+ 			mtmp->mhp -= rn2(16);
+ 			deltrap(t_at(mtmp->mx, mtmp->my));
+ 			/* wake everything on the level */
+ 			while(mntmp) {
+ 				if(mntmp->msleep)
+ 					mntmp->msleep = 0;
+ 				mntmp = mntmp->nmon;
+ 			}
+ 			break;
+ 		}
+ #endif
  		default:
  			impossible("Some monster encountered a strange trap of type %d.",tt);
  	    }
***************
*** 684,690
  	    newlevel = atoi(buf);
  	} else {
  #ifdef DGKMOD
! 	    newlevel = rn2(5) | !Fire_resistance ? rnz(dlevel + 3) : 30;
  #else
  	    newlevel = rnz(dlevel + 3);			/* 5 - 24 */
  #endif

--- 729,735 -----
  	    newlevel = atoi(buf);
  	} else {
  #ifdef DGKMOD
! 	    newlevel = rn2(5) | !Fire_resistance ? rnd(dlevel + 3) : 30;
  #else
  	    newlevel = rnd(dlevel + 3);			/* 5 - 24 */
  #endif
***************
*** 686,692
  #ifdef DGKMOD
  	    newlevel = rn2(5) | !Fire_resistance ? rnz(dlevel + 3) : 30;
  #else
! 	    newlevel = rnz(dlevel + 3);			/* 5 - 24 */
  #endif
  	    if(dlevel == newlevel)
  		if(!xdnstair) newlevel--; else newlevel++;

--- 731,737 -----
  #ifdef DGKMOD
  	    newlevel = rn2(5) | !Fire_resistance ? rnd(dlevel + 3) : 30;
  #else
! 	    newlevel = rnd(dlevel + 3);			/* 5 - 24 */
  #endif
  	    if(dlevel == newlevel)
  		if(!xdnstair) newlevel--; else newlevel++;
*** ./u_init.c.orig	Mon Feb 22 08:40:18 1988
--- ./u_init.c	Thu Feb 11 11:09:40 1988
***************
*** 1,4
! /*	SCCS Id: @(#)u_init.c	2.0	87/09/15
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include <stdio.h>

--- 1,4 -----
! /*	SCCS Id: @(#)u_init.c	2.3	88/01/21
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include <stdio.h>
***************
*** 123,128
  };
  #endif
  
  #ifdef WALKIES
  struct trobj Leash[] = {
  	{ LEASH, 0, TOOL_SYM, 1, 0 },

--- 123,133 -----
  };
  #endif
  
+ struct trobj Lamp[] = {
+ 	{ LAMP, 5, TOOL_SYM, 1, 0 },
+ 	{ 0, 0, 0, 0, 0 }
+ };
+ 
  #ifdef WALKIES
  struct trobj Leash[] = {
  	{ LEASH, 0, TOOL_SYM, 1, 0 },
***************
*** 141,146
  	{ POT_EXTRA_HEALING, 0, POTION_SYM, 2, 0 },
  	{ EXPENSIVE_CAMERA, 0, TOOL_SYM, 1, 1 },
  	{ DART, 2, WEAPON_SYM, 25, 1 },	/* quan is variable */
  	{ 0, 0, 0, 0, 0 }
  };
  

--- 146,154 -----
  	{ POT_EXTRA_HEALING, 0, POTION_SYM, 2, 0 },
  	{ EXPENSIVE_CAMERA, 0, TOOL_SYM, 1, 1 },
  	{ DART, 2, WEAPON_SYM, 25, 1 },	/* quan is variable */
+ #ifdef SHIRT
+ 	{ HAWAIIAN_SHIRT, 0, ARMOR_SYM, 1, 1 },
+ #endif
  	{ 0, 0, 0, 0, 0 }
  };
  
***************
*** 281,286
  	u = zerou;
  	u.usym = '@';
  	u.ulevel = 1;
  	init_uhunger();
  	uarm = uarm2 = uarmh = uarms = uarmg = uwep =
  	uball = uchain = uleft = uright = 0;

--- 289,295 -----
  	u = zerou;
  	u.usym = '@';
  	u.ulevel = 1;
+ 	u.uluck  = 0;
  	init_uhunger();
  	uarm = uarm2 = uarmh = uarms = uarmg = uwep =
  #ifdef SHIRT
***************
*** 283,288
  	u.ulevel = 1;
  	init_uhunger();
  	uarm = uarm2 = uarmh = uarms = uarmg = uwep =
  	uball = uchain = uleft = uright = 0;
  
  #ifdef SPELLS

--- 292,300 -----
  	u.uluck  = 0;
  	init_uhunger();
  	uarm = uarm2 = uarmh = uarms = uarmg = uwep =
+ #ifdef SHIRT
+ 	uarmu =
+ #endif
  	uball = uchain = uleft = uright = 0;
  
  #ifdef SPELLS
***************
*** 322,327
  		u.ustr = u.ustrmax = 8;
  		ini_inv(Tourist);
  		if(!rn2(25)) ini_inv(Tinopener);
  #ifdef MARKER
  		else if(!rn2(25)) ini_inv(Magicmarker);
  #endif

--- 334,340 -----
  		u.ustr = u.ustrmax = 8;
  		ini_inv(Tourist);
  		if(!rn2(25)) ini_inv(Tinopener);
+ 		else if(!rn2(4)) ini_inv(Lamp);
  #ifdef MARKER
  		else if(!rn2(25)) ini_inv(Magicmarker);
  #endif
***************
*** 368,373
  		u.ustr = u.ustrmax = 16;
  		ini_inv(Elf);
  		if(!rn2(5)) ini_inv(Blindfold);
  		break;
  	case 'v':
  	case 'V':

--- 381,387 -----
  		u.ustr = u.ustrmax = 16;
  		ini_inv(Elf);
  		if(!rn2(5)) ini_inv(Blindfold);
+ 		else if(!rn2(6)) ini_inv(Lamp);
  		break;
  	case 'v':
  	case 'V':
***************
*** 377,382
  		u.uhp = u.uhpmax = 16;
  		u.ustr = u.ustrmax = 17;
  		ini_inv(Valkyrie);
  		break;
  	case 'h':
  	case 'H':

--- 391,397 -----
  		u.uhp = u.uhpmax = 16;
  		u.ustr = u.ustrmax = 17;
  		ini_inv(Valkyrie);
+ 		if(!rn2(6)) ini_inv(Lamp);
  		break;
  	case 'h':
  	case 'H':
***************
*** 386,391
  		u.uhp = u.uhpmax = 16;
  		u.ustr = u.ustrmax = 15;
  		ini_inv(Healer);
  		break;
  #endif
  	case 'k':

--- 401,407 -----
  		u.uhp = u.uhpmax = 16;
  		u.ustr = u.ustrmax = 15;
  		ini_inv(Healer);
+ 		if(!rn2(25)) ini_inv(Lamp);
  		break;
  #endif
  	case 'k':
***************
*** 399,404
  		u.uhp = u.uhpmax = 14;
  		u.ustr = u.ustrmax = 17;
  		ini_inv(Barbarian);
  		break;
  #ifdef NEWCLASS
  	case 's':

--- 415,421 -----
  		u.uhp = u.uhpmax = 14;
  		u.ustr = u.ustrmax = 17;
  		ini_inv(Barbarian);
+ 		if(!rn2(6)) ini_inv(Lamp);
  		break;
  #ifdef NEWCLASS
  	case 's':
***************
*** 433,438
  # ifdef MARKER
  		if(!rn2(10)) ini_inv(Magicmarker);
  # endif
  		objects[POT_HOLY_WATER].oc_name_known = 1;
  		break;
  #endif /* NEWCLASS /**/

--- 450,456 -----
  # ifdef MARKER
  		if(!rn2(10)) ini_inv(Magicmarker);
  # endif
+ 		else if(!rn2(10)) ini_inv(Lamp);
  		objects[POT_HOLY_WATER].oc_name_known = 1;
  		break;
  #endif /* NEWCLASS /**/
***************
*** 494,499
  			case PAIR_OF_GLOVES:
  				if(!uarmg) setworn(obj, W_ARMG);
  				break;
  			case ELVEN_CLOAK:
  				if(!uarm2)
  					setworn(obj, W_ARM);

--- 512,522 -----
  			case PAIR_OF_GLOVES:
  				if(!uarmg) setworn(obj, W_ARMG);
  				break;
+ #ifdef SHIRT
+ 			case HAWAIIAN_SHIRT:
+ 				if(!uarmu) setworn(obj, W_ARMU);
+ 				break;
+ #endif
  			case ELVEN_CLOAK:
  				if(!uarm2)
  					setworn(obj, W_ARM);
*** ./unixmain.c.orig	Mon Feb 22 08:40:18 1988
--- ./unixmain.c	Thu Mar 31 11:19:13 1988
***************
*** 1,4
! /*	SCCS Id: @(#)unixmain.c	2.1	87/10/18
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  /* main.c - (Unix) version */
  

--- 1,4 -----
! /*	SCCS Id: @(#)unixmain.c	2.3	88/01/21
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  /* main.c - (Unix) version */
  
***************
*** 232,238
  		(void) fflush(stdout);
  		if(!dorecover(fd))
  			goto not_recovered;
! 		pline("Hello %s, welcome to %s!", plname, gamename);
  		flags.move = 0;
  	} else {
  not_recovered:

--- 232,239 -----
  		(void) fflush(stdout);
  		if(!dorecover(fd))
  			goto not_recovered;
! 		pline("Hello %s%s, welcome to %s!", 
! 			(Badged) ? "Officer " : "", plname, gamename);
  		flags.move = 0;
  	} else {
  not_recovered:
***************
*** 239,245
  		newgame();
  		/* give welcome message before pickup messages */
  		pline("Hello %s, welcome to %s!", plname, gamename);
! 
  		pickup(1);
  		read_engr_at(u.ux,u.uy);
  		flags.move = 1;

--- 240,255 -----
  		newgame();
  		/* give welcome message before pickup messages */
  		pline("Hello %s, welcome to %s!", plname, gamename);
! #ifdef WIZARD
! 		if (wizard && dlevel == 1)
! # ifdef STOOGES
! pline ("The wiz is at %d, the medusa is at %d, and the stooges are at %d",
! 			u.wiz_level, u.medusa_level, u.stooge_level);
! # else
! 	            pline ("The wiz is at %d, and the medusa at %d",
! 			   u.wiz_level, u.medusa_level);
! # endif
! #endif
  		pickup(1);
  		read_engr_at(u.ux,u.uy);
  		flags.move = 1;
***************
*** 248,254
  	flags.moonphase = phase_of_the_moon();
  	if(flags.moonphase == FULL_MOON) {
  		pline("You are lucky! Full moon tonight.");
! 		if(!u.uluck) u.uluck++;
  	} else if(flags.moonphase == NEW_MOON) {
  		pline("Be careful! New moon tonight.");
  	}

--- 258,264 -----
  	flags.moonphase = phase_of_the_moon();
  	if(flags.moonphase == FULL_MOON) {
  		pline("You are lucky! Full moon tonight.");
! 		if(!u.uluck) change_luck(1);
  	} else if(flags.moonphase == NEW_MOON) {
  		pline("Be careful! New moon tonight.");
  	}
***************
*** 512,517
  
  stop_occupation()
  {
  	if(occupation) {
  		pline("You stop %s.", occtxt);
  		occupation = 0;

--- 522,529 -----
  
  stop_occupation()
  {
+ 	extern void pushch();
+ 
  	if(occupation) {
  		pline("You stop %s.", occtxt);
  		occupation = 0;
***************
*** 548,553
  }
  
  newgame() {
  	fobj = fcobj = invent = 0;
  	fmon = fallen_down = 0;
  	ftrap = 0;

--- 560,567 -----
  }
  
  newgame() {
+ 	extern struct monst *makedog();
+ 
  	fobj = fcobj = invent = 0;
  	fmon = fallen_down = 0;
  	ftrap = 0;
*** ./unixtty.c.orig	Thu Mar 31 08:57:18 1988
--- ./unixtty.c	Thu Mar 31 08:58:06 1988
***************
*** 1,4
! /*	SCCS Id: @(#)unixtty.c	2.1	87/11/09
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  /* tty.c - (Unix) version */
  

--- 1,4 -----
! /*	SCCS Id: @(#)unixtty.c	2.3	88/03/31
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  /* tty.c - (Unix) version */
  
***************
*** 10,15
  #include	"extern.h"
  #include	"hack.h"
  #include	"func_tab.h"
  
  #define	ON	1
  #define OFF	0

--- 10,17 -----
  #include	"extern.h"
  #include	"hack.h"
  #include	"func_tab.h"
+ 
+ extern void savech();
  
  #define	ON	1
  #define OFF	0
*** ./unixunix.c.orig	Mon Feb 22 08:40:19 1988
--- ./unixunix.c	Fri Feb 12 11:06:03 1988
***************
*** 1,4
! /*	SCCS Id: @(#)unixunix.c	1.4	87/08/08
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  /* hack.unix.c - version 1.0.3 */
  

--- 1,4 -----
! /*	SCCS Id: @(#)unixunix.c	2.3	87/12/12
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  /* This file collects some Unix dependencies; pager.c contains some more */
***************
*** 1,6
  /*	SCCS Id: @(#)unixunix.c	1.4	87/08/08
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- /* hack.unix.c - version 1.0.3 */
  
  /* This file collects some Unix dependencies; pager.c contains some more */
  

--- 1,5 -----
  /*	SCCS Id: @(#)unixunix.c	2.3	87/12/12
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  /* This file collects some Unix dependencies; pager.c contains some more */
  
***************
*** 165,171
  		/* From: Rick Adams <seismo!rick>
  		/* This will work on 4.1cbsd, 4.2bsd and system 3? & 5.
  		/* It will do nothing on V7 or 4.1bsd. */
! 		if(!(kill(lockedpid, 0) == -1 && errno == ESRCH))
  			return(0);
  	}
  	(void) close(fd);

--- 164,174 -----
  		/* From: Rick Adams <seismo!rick>
  		/* This will work on 4.1cbsd, 4.2bsd and system 3? & 5.
  		/* It will do nothing on V7 or 4.1bsd. */
! #ifndef NETWORK
! 		/* It will do a VERY BAD THING if the playground is shared
! 		   by more than one machine! -pem */
!   		if(!(kill(lockedpid, 0) == -1 && errno == ESRCH))
! #endif
  			return(0);
  	}
  	(void) close(fd);
***************
*** 333,339
  	if(md = makemon(&pm_mail_daemon, u.ux, u.uy)) /* always succeeds */
  		mdrush(md,0);
  
! 	pline("\"Hello, %s! I have some mail for you.\"", plname);
  	if(md) {
  		if(dist(md->mx,md->my) > 2)
  			pline("\"Catch!\"");

--- 336,343 -----
  	if(md = makemon(&pm_mail_daemon, u.ux, u.uy)) /* always succeeds */
  		mdrush(md,0);
  
! 	pline("\"Hello, %s%s! I have some mail for you.\"", 
! 		(Badged) ? "Officer " : "", plname);
  	if(md) {
  		if(dist(md->mx,md->my) > 2)
  			pline("\"Catch!\"");
*** ./version.c.orig	Mon Feb 22 08:40:19 1988
--- ./version.c	Fri Feb 12 11:18:05 1988
***************
*** 1,4
! /*	SCCS Id: @(#)version.c	2.1	87/11/09
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include	"hack.h"

--- 1,4 -----
! /*	SCCS Id: @(#)version.c	2.3	88/02/11
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include	"hack.h"
***************
*** 72,77
  	pg_line("    Gil Neiger         Ralf Brown         Eric S. Raymond");
  	pg_line("    Eric Backus        Roland McGrath     Greg Laskin");
  	pg_line("    Bruce Holloway     Richard P. Hughey  Kevin Sweet");
  	set_pager(1);
  	return(0);
  quit:

--- 72,79 -----
  	pg_line("    Gil Neiger         Ralf Brown         Eric S. Raymond");
  	pg_line("    Eric Backus        Roland McGrath     Greg Laskin");
  	pg_line("    Bruce Holloway     Richard P. Hughey  Kevin Sweet");
+ 	pg_line("    Steve Linhart      Bruce Mewborne     Janet Walz");
+ 	pg_line("    and...             The Unknown Hacker");
  	set_pager(1);
  	return(0);
  quit:
*** ./wizard.c.orig	Mon Feb 22 08:40:19 1988
--- ./wizard.c	Thu Mar 31 08:39:44 1988
***************
*** 1,4
! /*	SCCS Id: @(#)wizard.c	2.2	87/11/29
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  /* wizard code - inspired by rogue code from Merlyn Leroy (digi-g!brian) */

--- 1,4 -----
! /*	SCCS Id: @(#)wizard.c	2.3	88/02/11
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  /* wizard code - inspired by rogue code from Merlyn Leroy (digi-g!brian) */
***************
*** 7,13
  #include "hack.h"
  extern struct permonst pm_wizard;
  extern struct monst *makemon();
! extern struct obj *carrying();
  
  #if defined(HARD) || defined(DGKMOD)
  # ifdef SAC

--- 7,13 -----
  #include "hack.h"
  extern struct permonst pm_wizard;
  extern struct monst *makemon();
! extern struct obj *carrying(), *mksobj_at();
  
  #if defined(HARD) || defined(DGKMOD)
  # ifdef SAC
***************
*** 237,242
  			range = 0;
  		}
  		tmp_at(bhitpos.x, bhitpos.y);
  	}
  	tmp_at(-1, -1);
  }

--- 237,246 -----
  			range = 0;
  		}
  		tmp_at(bhitpos.x, bhitpos.y);
+ #ifdef SINKS
+ 		if(IS_SINK(levl[bhitpos.x][bhitpos.y].typ))
+ 			break;	/* thrown objects fall on sink */
+ #endif
  	}
  	tmp_at(-1, -1);
  }
***************
*** 317,323
  #endif
  	    case 'D':
  		/* spit fire in the direction of @ (not nec. hitting) */
! 		buzz(-1,mtmp->mx,mtmp->my,sgn(tx),sgn(ty));
  		break;
  #ifdef HARD
  	    case '&':

--- 321,328 -----
  #endif
  	    case 'D':
  		/* spit fire in the direction of @ (not nec. hitting) */
! 		buzz((int) - 10 - (mtmp->dragon),
! 			mtmp->mx,mtmp->my,sgn(tx),sgn(ty));
  		break;
  #ifdef HARD
  	    case '&':
***************
*** 387,393
  			/* Only if not Invisible */
  			pline("You hear a clap of thunder!");
  			/* shoot a bolt of fire or cold, or a sleep ray */
! 			buzz(-rnd(3),mtmp->mx,mtmp->my,sgn(tx),sgn(ty));
  			break;
  		    }
  		}

--- 392,399 -----
  			/* Only if not Invisible */
  			pline("You hear a clap of thunder!");
  			/* shoot a bolt of fire or cold, or a sleep ray */
! 			/* or death, or lightning, but not  magic missile */
! 			buzz(-rnd(5),mtmp->mx,mtmp->my,sgn(tx),sgn(ty));
  			break;
  		    }
  		}
*** ./worn.c.orig	Mon Feb 22 08:40:19 1988
--- ./worn.c	Thu Jan 21 13:03:24 1988
***************
*** 1,4
! /*	SCCS Id: @(#)worn.c	1.4	87/08/08
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  /* worn.c - version 1.0.2 */
  

--- 1,4 -----
! /*	SCCS Id: @(#)worn.c	2.3	88/01/21
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include "hack.h"
***************
*** 1,6
  /*	SCCS Id: @(#)worn.c	1.4	87/08/08
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- /* worn.c - version 1.0.2 */
  
  #include "hack.h"
  

--- 1,5 -----
  /*	SCCS Id: @(#)worn.c	2.3	88/01/21
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include "hack.h"
  
***************
*** 13,18
  	{ W_ARMH, &uarmh },
  	{ W_ARMS, &uarms },
  	{ W_ARMG, &uarmg },
  	{ W_RINGL, &uleft },
  	{ W_RINGR, &uright },
  	{ W_WEP, &uwep },

--- 12,18 -----
  	{ W_ARMH, &uarmh },
  	{ W_ARMS, &uarms },
  	{ W_ARMG, &uarmg },
+ 	{ W_ARMU, &uarmu },
  	{ W_RINGL, &uleft },
  	{ W_RINGR, &uright },
  	{ W_WEP, &uwep },
SHAR_EOF
if test 35693 -ne "`wc -c < 'Update.2.3.f'`"
then
	echo shar: error transmitting "'Update.2.3.f'" '(should have been 35693 characters)'
fi
fi # end of overwriting check
#	End of shell archive
exit 0
-- 
						Mike Stephenson

Mail:	Genamation Inc.		Phone:	(416) 475-9434
	351 Steelcase Rd. W
	Markham, Ontario.	UUCP:	uunet!{mnetor,utzoo}!genat!genpyr!mike
	Canada   L3R 3W1		uunet!{mnetor,utzoo}!genat!mike