[comp.sources.games.bugs] NetHack 2.3 Update Pt. 05 of 12

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

-------------------------------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.a
# This archive created: Mon Apr  4 08:52:29 1988
export PATH; PATH=/bin:$PATH
echo shar: extracting "'Update.2.3.a'" '(36456 characters)'
if test -f 'Update.2.3.a'
then
	echo shar: will not over-write existing file "'Update.2.3.a'"
else
cat << \SHAR_EOF > 'Update.2.3.a'
*** ./Makefile.att.orig	Mon Feb 22 08:39:58 1988
--- ./Makefile.att	Thu Feb 18 16:37:42 1988
***************
*** 1,5
  #	Hack or Quest Makefile.
! #	SCCS Id: @(#)Makefile.att	2.2	87/11/11
  
  include $(MAKEINC)/Makepre.h
  

--- 1,5 -----
  #	Hack or Quest Makefile.
! #	SCCS Id: @(#)Makefile.att	2.3	88/02/12
  
  include $(MAKEINC)/Makepre.h
  
***************
*** 68,74
  	@echo "Done."
  
  makedefs:	makedefs.c alloc.o config.h
! 	cc -o makedefs alloc.o makedefs.c
  
  RUMORFILES= rumors.base rumors.kaa rumors.mrx
  

--- 68,74 -----
  	@echo "Done."
  
  makedefs:	makedefs.c alloc.o config.h
! 	cc ${CFLAGS} -o makedefs alloc.o makedefs.c
  
  RUMORFILES= rumors.base rumors.kaa rumors.mrx
  
***************
*** 129,134
  	mkdir $(GAMEDIR) $(GAMEDIR)/save
  	touch $(GAMEDIR)/perm
  	touch $(GAMEDIR)/record
  	chown $(GAMEUID) $(GAMEDIR) $(GAMEDIR)/*
  	chgrp $(GAMEGRP) $(GAMEDIR) $(GAMEDIR)/*
  	chmod 666 $(GAMEDIR)/*

--- 129,135 -----
  	mkdir $(GAMEDIR) $(GAMEDIR)/save
  	touch $(GAMEDIR)/perm
  	touch $(GAMEDIR)/record
+ 	touch $(GAMEDIR)/logfile
  	chown $(GAMEUID) $(GAMEDIR) $(GAMEDIR)/*
  	chgrp $(GAMEGRP) $(GAMEDIR) $(GAMEDIR)/*
  	chmod 666 $(GAMEDIR)/*
*** ./Makefile.unix.orig	Mon Feb 22 08:39:58 1988
--- ./Makefile.unix	Thu Mar 31 12:11:06 1988
***************
*** 1,5
  #	Hack or Quest Makefile.
! #	SCCS Id: @(#)Makefile.unix	2.1	87/10/08
  
  # if you are cross-compiling (eg. from Xenix into a Dos enviornment)
  # you will have to redefine these filenames.

--- 1,5 -----
  #	Hack or Quest Makefile.
! #	SCCS Id: @(#)Makefile.unix	2.3	88/02/12
  
  # if you are cross-compiling (eg. from Xenix into a Dos enviornment)
  # you will have to redefine these filenames.
***************
*** 72,78
  	nroff -mn Guidebook.mn > Guidebook
  
  makedefs:	makedefs.c alloc.o config.h
! 	cc -o makedefs alloc.o makedefs.c
  
  RUMORFILES= rumors.base rumors.kaa rumors.mrx
  

--- 72,78 -----
  	nroff -mn Guidebook.mn > Guidebook
  
  makedefs:	makedefs.c alloc.o config.h
! 	cc $(CFLAGS) -o makedefs alloc.o makedefs.c
  
  RUMORFILES= rumors.base rumors.kaa rumors.mrx
  
***************
*** 133,138
  	mkdir $(GAMEDIR) $(GAMEDIR)/save
  	touch $(GAMEDIR)/perm
  	touch $(GAMEDIR)/record
  	chown $(GAMEUID) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/*
  	chgrp $(GAMEGRP) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/*
  	chmod 666 $(GAMEDIR)/*

--- 133,139 -----
  	mkdir $(GAMEDIR) $(GAMEDIR)/save
  	touch $(GAMEDIR)/perm
  	touch $(GAMEDIR)/record
+ 	touch $(GAMEDIR)/logfile
  	chown $(GAMEUID) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/*
  	chgrp $(GAMEGRP) $(SHELLDIR)/$(GAME) $(GAMEDIR) $(GAMEDIR)/*
  	chmod 666 $(GAMEDIR)/*
***************
*** 139,144
  	chmod 777 $(GAMEDIR) $(GAMEDIR)/save
  
  install: $(VARAUX) $(GAME)
  	-mkdir $(GAMEDIR)
  	-mkdir $(GAMEDIR)/save
  	-rm -f $(GAMEDIR)/$(GAME)

--- 140,146 -----
  	chmod 777 $(GAMEDIR) $(GAMEDIR)/save
  
  install: $(VARAUX) $(GAME)
+ 	strip $(GAME)
  	-mkdir $(GAMEDIR)
  	-mkdir $(GAMEDIR)/save
  	-rm -f $(GAMEDIR)/$(GAME)
*** ./Makefile.xenix.orig	Mon Feb 22 08:39:59 1988
--- ./Makefile.xenix	Thu Feb 18 16:39:06 1988
***************
*** 138,143
  	mkdir $(GAMEDIR) $(GAMEDIR)/save
  	touch $(GAMEDIR)/perm
  	touch $(GAMEDIR)/record
  	chown $(GAMEUID) $(GAMEDIR) $(GAMEDIR)/*
  	chgrp $(GAMEGRP) $(GAMEDIR) $(GAMEDIR)/*
  	chmod 666 $(GAMEDIR)/*

--- 138,144 -----
  	mkdir $(GAMEDIR) $(GAMEDIR)/save
  	touch $(GAMEDIR)/perm
  	touch $(GAMEDIR)/record
+ 	touch $(GAMEDIR)/logfile
  	chown $(GAMEUID) $(GAMEDIR) $(GAMEDIR)/*
  	chgrp $(GAMEGRP) $(GAMEDIR) $(GAMEDIR)/*
  	chmod 666 $(GAMEDIR)/*
*** ./apply.c.orig	Mon Feb 22 08:39:59 1988
--- ./apply.c	Thu Mar 31 09:08:56 1988
***************
*** 1,4
! /*	SCCS Id: @(#)apply.c	2.1	87/09/23
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include	"hack.h"

--- 1,4 -----
! /*	SCCS Id: @(#)apply.c	2.3	88/01/21
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include	"hack.h"
***************
*** 12,17
  extern char quitchars[];
  extern char pl_character[];
  
  #ifdef KAA
  extern boolean unweapon;
  #endif

--- 12,20 -----
  extern char quitchars[];
  extern char pl_character[];
  
+ #ifdef DGKMOD
+ extern void set_occupation();
+ #endif
  #ifdef KAA
  extern boolean unweapon;
  #endif
***************
*** 23,28
  #ifdef RPH
  static use_mirror();
  #endif
  
  doapply() {
  	register struct obj *obj;

--- 26,32 -----
  #ifdef RPH
  static use_mirror();
  #endif
+ static use_lamp();
  
  doapply() {
  	register struct obj *obj;
***************
*** 54,59
  		use_mirror(obj);
  		break;
  #endif
  #ifdef WALKIES
  	case LEASH:
  		use_leash(obj);

--- 58,67 -----
  		use_mirror(obj);
  		break;
  #endif
+ 	case LAMP:
+ 	case MAGIC_LAMP:
+ 		use_lamp(obj);
+ 		break;
  #ifdef WALKIES
  	case LEASH:
  		use_leash(obj);
***************
*** 81,87
  		break;
  #endif
  	case BLINDFOLD:
! 		if (Blindfolded) {
  		    Blindfolded = 0;
  		    if (!Blinded)	Blinded = 1;	/* see on next move */
  		    else		pline("You still cannot see.");

--- 89,96 -----
  		break;
  #endif
  	case BLINDFOLD:
! 		if (Blindfolded && obj->owornmask) {
! 		    pline("You remove the blindfold.");
  		    Blindfolded = 0;
  		    obj->owornmask = 0;
  		    if (!Blinded)	Blinded = 1;	/* see on nexte */
***************
*** 83,89
  	case BLINDFOLD:
  		if (Blindfolded) {
  		    Blindfolded = 0;
! 		    if (!Blinded)	Blinded = 1;	/* see on next move */
  		    else		pline("You still cannot see.");
  		} else {
  		    Blindfolded = 1;

--- 92,99 -----
  		if (Blindfolded && obj->owornmask) {
  		    pline("You remove the blindfold.");
  		    Blindfolded = 0;
! 		    obj->owornmask = 0;
! 		    if (!Blinded)	Blinded = 1;	/* see on nexte */
  		    else		pline("You still cannot see.");
  		} else if (!Blindfolded) {
  		    pline("You put the blindfold on.");
***************
*** 85,92
  		    Blindfolded = 0;
  		    if (!Blinded)	Blinded = 1;	/* see on next move */
  		    else		pline("You still cannot see.");
! 		} else {
! 		    Blindfolded = 1;
  		    seeoff(0);
  		}
  		break;

--- 95,104 -----
  		    obj->owornmask = 0;
  		    if (!Blinded)	Blinded = 1;	/* see on nexte */
  		    else		pline("You still cannot see.");
! 		} else if (!Blindfolded) {
! 		    pline("You put the blindfold on.");
! 		    Blindfolded = INTRINSIC;
! 		    obj->owornmask = W_TOOL;
  		    seeoff(0);
  		} else pline("You are already wearing a blindfold!");
  		break;
***************
*** 88,94
  		} else {
  		    Blindfolded = 1;
  		    seeoff(0);
! 		}
  		break;
  	default:
  		pline("Sorry, I don't know how to use that.");

--- 100,106 -----
  		    Blindfolded = INTRINSIC;
  		    obj->owornmask = W_TOOL;
  		    seeoff(0);
! 		} else pline("You are already wearing a blindfold!");
  		break;
  	case BADGE:
  		if (Badged && obj->owornmask) {
***************
*** 90,95
  		    seeoff(0);
  		}
  		break;
  	default:
  		pline("Sorry, I don't know how to use that.");
  	xit:

--- 102,118 -----
  		    seeoff(0);
  		} else pline("You are already wearing a blindfold!");
  		break;
+ 	case BADGE:
+ 		if (Badged && obj->owornmask) {
+ 		    pline("You remove the badge.");
+ 		    Badged = 0;
+ 		    obj->owornmask = 0;
+ 		} else if (!Badged) {
+ 		    pline("You pin the badge on your chest.");
+ 		    Badged = INTRINSIC;
+ 		    obj->owornmask = W_TOOL;
+ 		} else pline("You are already wearing a badge!");
+ 		break;
  	default:
  		pline("Sorry, I don't know how to use that.");
  	xit:
***************
*** 342,347
  static
  use_leash(obj) struct obj *obj; {
  register struct monst *mtmp = fmon;
  
  	while(mtmp && !mtmp->mleashed) mtmp = mtmp->nmon;
  

--- 365,371 -----
  static
  use_leash(obj) struct obj *obj; {
  register struct monst *mtmp = fmon;
+ extern char *lmonnam();
  
  	while(mtmp && !mtmp->mleashed) mtmp = mtmp->nmon;
  
***************
*** 732,734
  }/* use_mirror */
  
  #endif

--- 756,788 -----
  }/* use_mirror */
  
  #endif
+ 
+ static
+ use_lamp(obj)
+ struct obj *obj;
+ {
+ 	if(obj->spe <= 0 || obj->otyp == MAGIC_LAMP ) {
+ 		pline("This lamp has no oil.");
+ 		return;
+ 	}
+ 	litroom(TRUE);
+ 	obj->spe -= 1;
+ }
+ 
+ dorub() {
+ 
+      if (!(carrying(LAMP) || carrying(MAGIC_LAMP))) {
+ 	  pline("You do not have a lamp!");
+ 	  return;
+      }
+      if (!(uwep->otyp == LAMP || uwep->otyp == MAGIC_LAMP)) {
+ 	  pline("You must wield the lamp to rub it!");
+ 	  return;
+      }
+      if (uwep->otyp == MAGIC_LAMP && uwep->spe > 0 && !rn2(3)) {
+ 	  uwep->spe = 0;
+ 	  djinni_from_bottle();
+      } else if (uwep->otyp == MAGIC_LAMP && rn2(2) && !Blind)
+ 		pline("You see a puff of smoke.");
+ 	else pline("Nothing happens.");
+ }
*** ./cmd.c.orig	Mon Feb 22 08:39:59 1988
--- ./cmd.c	Fri Feb 19 07:53:14 1988
***************
*** 1,4
! /*	SCCS Id: @(#)cmd.c	2.0	87/09/15
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include	"hack.h"

--- 1,4 -----
! /*	SCCS Id: @(#)cmd.c	2.3	88/01/21
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include	"hack.h"
***************
*** 10,16
  doengrave(),dotele(),dohelp(),doeat(),doddrop(),do_mname(),doidtrap(),
  doprwep(),doprarm(),doprring(),doprgold(),dodiscovered(),dotypeinv(),dolook(),
  doset(),doup(), dodown(), done1(), donull(), dothrow(), doextcmd(), dodip(),
! dopray(), doextlist();
  #ifdef WIZARD
  int wiz_wish(), wiz_identify();
  #endif

--- 10,21 -----
  doengrave(),dotele(),dohelp(),doeat(),doddrop(),do_mname(),doidtrap(),
  doprwep(),doprarm(),doprring(),doprgold(),dodiscovered(),dotypeinv(),dolook(),
  doset(),doup(), dodown(), done1(), donull(), dothrow(), doextcmd(), dodip(),
! dopray(), doextlist(), dorub();
! 
! #ifdef THEOLOGY
! int dosacrifice ();
! #endif;
! 
  #ifdef WIZARD
  int wiz_wish(), wiz_identify(), wiz_map(), wiz_detect(), wiz_attributes();
  #endif
***************
*** 12,18
  doset(),doup(), dodown(), done1(), donull(), dothrow(), doextcmd(), dodip(),
  dopray(), doextlist();
  #ifdef WIZARD
! int wiz_wish(), wiz_identify();
  #endif
  #ifdef NEWCLASS
  int dosit(), doturn();

--- 17,23 -----
  #endif;
  
  #ifdef WIZARD
! int wiz_wish(), wiz_identify(), wiz_map(), wiz_detect(), wiz_attributes();
  #endif
  #ifdef NEWCLASS
  int dosit(), doturn();
***************
*** 125,130
  #endif /* REDO */
  
  struct func_tab cmdlist[]={
  #ifdef WIZARD
  	{'\011', wiz_identify},
  #endif

--- 130,138 -----
  #endif /* REDO */
  
  struct func_tab cmdlist[]={
+ #if defined(DGKMOD) && defined(DEBUG_DOESNT_WORK)
+ 	{'\004', /* ^D */ dodebug},	/* generic debug function */
+ #endif
  #ifdef WIZARD
  	{'\005', /* ^E */ wiz_detect},
  	{'\006', /* ^F */ wiz_map},
***************
*** 126,132
  
  struct func_tab cmdlist[]={
  #ifdef WIZARD
! 	{'\011', wiz_identify},
  #endif
  	{'\020', doredotopl},
  	{'\022', doredraw},

--- 134,142 -----
  	{'\004', /* ^D */ dodebug},	/* generic debug function */
  #endif
  #ifdef WIZARD
! 	{'\005', /* ^E */ wiz_detect},
! 	{'\006', /* ^F */ wiz_map},
! 	{'\011', /* ^I */ wiz_identify},
  #endif
  	{'\020', /* ^P */ doredotopl},
  	{'\022', /* ^R */ doredraw},
***************
*** 128,136
  #ifdef WIZARD
  	{'\011', wiz_identify},
  #endif
! 	{'\020', doredotopl},
! 	{'\022', doredraw},
! 	{'\024', dotele},
  #ifdef WIZARD
  	{'\027', wiz_wish},
  #endif

--- 138,146 -----
  	{'\006', /* ^F */ wiz_map},
  	{'\011', /* ^I */ wiz_identify},
  #endif
! 	{'\020', /* ^P */ doredotopl},
! 	{'\022', /* ^R */ doredraw},
! 	{'\024', /* ^T */ dotele},
  #ifdef WIZARD
  	{'\027', /* ^W */ wiz_wish},
  	{'\030', /* ^X */ wiz_attributes},
***************
*** 132,138
  	{'\022', doredraw},
  	{'\024', dotele},
  #ifdef WIZARD
! 	{'\027', wiz_wish},
  #endif
  #ifdef SUSPEND
  	{'\032', dosuspend},

--- 142,149 -----
  	{'\022', /* ^R */ doredraw},
  	{'\024', /* ^T */ dotele},
  #ifdef WIZARD
! 	{'\027', /* ^W */ wiz_wish},
! 	{'\030', /* ^X */ wiz_attributes},
  #endif
  #ifdef SUSPEND
  	{'\032', /* ^Z */ dosuspend},
***************
*** 135,141
  	{'\027', wiz_wish},
  #endif
  #ifdef SUSPEND
! 	{'\032', dosuspend},
  #endif
  	{'a', doapply},
  	{'A', doddoremarm},

--- 146,152 -----
  	{'\030', /* ^X */ wiz_attributes},
  #endif
  #ifdef SUSPEND
! 	{'\032', /* ^Z */ dosuspend},
  #endif
  	{'a', doapply},
  	{'A', doddoremarm},
***************
*** 196,204
  #ifdef DGKMOD
  	{'@', dotogglepickup},
  	{'V', doMSCversion},
- # ifdef DEBUG_DOESNT_WORK
- 	{'\004', dodebug},	/* generic debug function */
- # endif
  #endif
  	{WEAPON_SYM,  doprwep},
  	{ARMOR_SYM,  doprarm},

--- 207,212 -----
  #ifdef DGKMOD
  	{'@', dotogglepickup},
  	{'V', doMSCversion},
  #endif
  	{WEAPON_SYM,  doprwep},
  	{ARMOR_SYM,  doprarm},
***************
*** 210,216
  
  struct ext_func_tab extcmdlist[] = {
  #ifdef KAA
! 	"breathe", "breathe like a dragon", dobreathe,
  #endif
  #ifdef SPELLS
  	"cast", "cast a spell", docast,

--- 218,224 -----
  
  struct ext_func_tab extcmdlist[] = {
  #ifdef KAA
! 	"breathe", "breathe fire like a red dragon", dobreathe,
  #endif
  #ifdef SPELLS
  	"cast", "cast a spell", docast,
***************
*** 216,221
  	"cast", "cast a spell", docast,
  #endif
  	"dip", "dip an object into something", dodip,
  	"pray", "pray to the gods for help", dopray,
  #ifdef KAA
  	"remove", "remove a cursed item", doremove,

--- 224,233 -----
  	"cast", "cast a spell", docast,
  #endif
  	"dip", "dip an object into something", dodip,
+ #ifdef PRAYERS
+ #ifdef THEOLOGY
+ 	"sacrifice", "offer a sacrifice to the gods", dosacrifice,
+ #endif
  	"pray", "pray to the gods for help", dopray,
  #endif
  #ifdef KAA
***************
*** 217,222
  #endif
  	"dip", "dip an object into something", dodip,
  	"pray", "pray to the gods for help", dopray,
  #ifdef KAA
  	"remove", "remove a cursed item", doremove,
  #endif

--- 229,235 -----
  	"sacrifice", "offer a sacrifice to the gods", dosacrifice,
  #endif
  	"pray", "pray to the gods for help", dopray,
+ #endif
  #ifdef KAA
  	"remove", "remove a cursed item", doremove,
  #endif
***************
*** 221,226
  	"remove", "remove a cursed item", doremove,
  #endif
  #ifdef NEWCLASS
  	"sit", "sit down", dosit,
  	"turn", "turn undead", doturn,
  #endif

--- 234,240 -----
  	"remove", "remove a cursed item", doremove,
  #endif
  #ifdef NEWCLASS
+ 	"rub", "rub a lamp", dorub,
  	"sit", "sit down", dosit,
  	"turn", "turn undead", doturn,
  #endif
***************
*** 527,532
  			if (!objects[obj->otyp].oc_name_known || !obj->known)
  				identify(obj);
  	}
  	return(0);
  }
  #endif /* WIZARD */

--- 541,720 -----
  			if (!objects[obj->otyp].oc_name_known || !obj->known)
  				identify(obj);
  	}
+ 	return(0);
+ }
+ 
+ int wiz_map()
+ {
+ 	if (wizard)	do_mapping();
+ 	else		pline("If you want a map, you'll have to make one yourself!");
+ }
+ 
+ int wiz_detect()
+ {
+ 	if(wizard) {
+ 		if(!findit()) return;
+ 	} else	pline("Don't ask me where anything is, I only work here!");
+ }
+ 
+ int wiz_attributes()
+ {
+ 	char buf[BUFSZ];
+ 
+ 	if (!wizard) {
+ 		pline("Alas! You are not allowed see attributes.");
+ 		pline("Nice try though...");
+ 		return;
+ 	}
+ 
+ 	set_pager(0);
+ 	if(page_line("Current Attributes:") || page_line(""))  goto quit;
+ 
+ 	if (Adornment) {
+ 		(void) sprintf(buf, "You are adorned.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Teleportation) {
+ 		(void) sprintf(buf, "You can teleport.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Regeneration) {
+ 		(void) sprintf(buf, "You regenerate.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Searching) {
+ 		(void) sprintf(buf, "You have searching.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (See_invisible) {
+ 		(void) sprintf(buf, "You see invisible.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Stealth) {
+ 		(void) sprintf(buf, "You have stealth.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Levitation) {
+ 		(void) sprintf(buf, "You are levitated.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Poison_resistance) {
+ 		(void) sprintf(buf, "You are poison resistant.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Aggravate_monster) {
+ 		(void) sprintf(buf, "You aggravate monsters.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Hunger) {
+ 		(void) sprintf(buf, "You have hunger.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Fire_resistance) {
+ 		(void) sprintf(buf, "You are fire resistant.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Cold_resistance) {
+ 		(void) sprintf(buf, "You are cold resistant.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Protection_from_shape_changers) {
+ 		(void) sprintf(buf, "You are protected from shape changers.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Conflict) {
+ 		(void) sprintf(buf, "You cause conflict.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Gain_strength) {
+ 		(void) sprintf(buf, "You have extra strength.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Increase_damage) {
+ 		(void) sprintf(buf, "You cause extra damage.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Protection) {
+ 		(void) sprintf(buf, "You are protected.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Warning) {
+ 		(void) sprintf(buf, "You are warned.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Teleport_control) {
+ 		(void) sprintf(buf, "You have teleport control.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Polymorph) {
+ 		(void) sprintf(buf, "You are polymorphing.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Polymorph_control) {
+ 		(void) sprintf(buf, "You have polymorph control.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Shock_resistance) {
+ 		(void) sprintf(buf, "You are shock resistant.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Telepat) {
+ 		(void) sprintf(buf, "You have telepathy.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Fast) {
+ 		(void) sprintf(buf, "You are fast.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Confusion) {
+ 		(void) sprintf(buf, "You are confused.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Invisible) {
+ 		(void) sprintf(buf, "You are invisible.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Glib) {
+ 		(void) sprintf(buf, "You are glib.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Punished) {
+ 		(void) sprintf(buf, "You are punished.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Sick) {
+ 		(void) sprintf(buf, "You are sick.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Blinded) {
+ 		(void) sprintf(buf, "You are blinded.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Wounded_legs) {
+ 		(void) sprintf(buf, "You have wounded legs.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Stoned) {
+ 		(void) sprintf(buf, "You are stoned.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Hallucination) {
+ 		(void) sprintf(buf, "You are hallucinated.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Blindfolded) {
+ 		(void) sprintf(buf, "You are blindfolded.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 	if (Badged) {
+ 		(void) sprintf(buf, "You are badged.");
+ 		if(page_line(buf)) goto quit;
+ 		}
+ 
+ 	set_pager(1);
+ 	return(0);
+ quit:
+ 	set_pager(2);
  	return(0);
  }
  #endif /* WIZARD */
*** ./config.h.orig	Mon Feb 22 08:40:00 1988
--- ./config.h	Thu Mar 31 13:16:31 1988
***************
*** 1,4
! /*	SCCS Id: @(#)config.h	2.2	87/11/11
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #ifndef CONFIG	/* make sure the compiler does not see the typedefs twice */

--- 1,4 -----
! /*	SCCS Id: @(#)config.h	2.3	87/12/12
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #ifndef CONFIG	/* make sure the compiler does not see the typedefs twice */
***************
*** 17,23
   * rindex		strrchr
   * Also, the code for suspend and various ioctls is only given for BSD4.2
   */
! /* #define MSDOS 	/* define for MS-DOS (actually defined by compiler) */
  #define	UNIX		/* delete if no fork(), exec() available */
  /* #define	GENIX		/* Yet Another Unix Clone */
  #define BSD		/* defind for 4.n BSD  */

--- 17,25 -----
   * rindex		strrchr
   * Also, the code for suspend and various ioctls is only given for BSD4.2
   */
! #ifdef __MSDOS__	/* Turbo C auto-defines __MSDOS__, others MSDOS */
! /* # define MSDOS 	/* define for MS-DOS (actually defined by compiler) */
! #endif
  #define	UNIX		/* delete if no fork(), exec() available */
  /* #define	GENIX		/* Yet Another Unix Clone */
  #define BSD		/* defind for 4.n BSD  */
***************
*** 22,27
  /* #define	GENIX		/* Yet Another Unix Clone */
  #define BSD		/* defind for 4.n BSD  */
  /* #define SYSV		/* define for System V */
  
  /* #define BETA		/* if a beta-test copy  [MRS] */
  #define VERSION	"2.2a"	/* version number. */

--- 24,30 -----
  /* #define	GENIX		/* Yet Another Unix Clone */
  #define BSD		/* defind for 4.n BSD  */
  /* #define SYSV		/* define for System V */
+ /* #define NETWORK	/* if running on a networked system */
  
  /* #define BETA		/* if a beta-test copy  [MRS] */
  #define VERSION	"2.3e"	/* version number. */
***************
*** 24,30
  /* #define SYSV		/* define for System V */
  
  /* #define BETA		/* if a beta-test copy  [MRS] */
! #define VERSION	"2.2a"	/* version number. */
  
  #define PYRAMID_BUG 	/* avoid a bug on the Pyramid */
  /* #define APOLLO		/* same for the Apollo */

--- 27,33 -----
  /* #define NETWORK	/* if running on a networked system */
  
  /* #define BETA		/* if a beta-test copy  [MRS] */
! #define VERSION	"2.3e"	/* version number. */
  
  #define PYRAMID_BUG 	/* avoid a bug on the Pyramid */
  /* #define APOLLO		/* same for the Apollo */
***************
*** 37,47
  #define	signal	ssignal
  #endif
  
! #define WIZARD  "mike"	/* the person allowed to use the -D option */
! #define RECORD	"record"/* the file containing the list of topscorers */
! #define	NEWS	"news"	/* the file containing the latest hack news */
! #define	HELP	"help"	/* the file containing a description of the commands */
! #define	SHELP	"hh"	/* abbreviated form of the same */
  #define	RUMORFILE	"rumors"	/* a file with fortune cookies */
  #define	DATAFILE	"data"	/* a file giving the meaning of symbols used */
  #define	FMASK	0660	/* file creation mask */

--- 40,54 -----
  #define	signal	ssignal
  #endif
  
! #ifndef WIZARD		/* allow for compile-time or Makefile changes */
! # define WIZARD  "mike"	/* the person allowed to use the -D option */
! #endif
! 
! #define RECORD	"record"  /* the file containing the list of topscorers */
! #define	LOGFILE	"logfile" /* larger file for debugging purposes */
! #define	NEWS	"news"	  /* the file containing the latest hack news */
! #define	HELP	"help"	  /* the file containing command descriptions */
! #define	SHELP	"hh"	  /* abbreviated form of the same */
  #define	RUMORFILE	"rumors"	/* a file with fortune cookies */
  #define	DATAFILE	"data"	/* a file giving the meaning of symbols used */
  #define	FMASK	0660	/* file creation mask */
***************
*** 149,154
   */
  typedef schar	xchar;
  typedef	xchar	boolean;		/* 0 or 1 */
  #define	TRUE	1
  #define	FALSE	0
  

--- 156,162 -----
   */
  typedef schar	xchar;
  typedef	xchar	boolean;		/* 0 or 1 */
+ /* #define void	int			/* define if no "void" data type. */
  #define	TRUE	1
  #define	FALSE	0
  
***************
*** 219,224
  #define KJSMODS		/* Various changes made by Kevin Sweet */
  #define	BVH		/* Additions by Bruce Holloway */
  #define SAC		/* Soldiers, barracks by Steve Creps */
  
  #if defined(MSDOS) && defined(GRAPHICS)
  #define MSDOSCOLOR

--- 227,236 -----
  #define KJSMODS		/* Various changes made by Kevin Sweet */
  #define	BVH		/* Additions by Bruce Holloway */
  #define SAC		/* Soldiers, barracks by Steve Creps */
+ #define	SHIRT		/* Hawaiian shirt code by Steve Linhart */
+ #define THEOLOGY	/* Smarter gods - The Unknown Hacker */
+ #define	STOOGES		/* Three wild and crazy guys - Bruce Mewborne */
+ #define SINKS		/* Kitchen sinks - Janet Walz */
  
  #ifdef MSDOS
  #define TERMLIB		/* enable use of termcap file c:\etc\termcap	*/
***************
*** 220,227
  #define	BVH		/* Additions by Bruce Holloway */
  #define SAC		/* Soldiers, barracks by Steve Creps */
  
! #if defined(MSDOS) && defined(GRAPHICS)
! #define MSDOSCOLOR
  #endif
  
  /*

--- 232,243 -----
  #define	STOOGES		/* Three wild and crazy guys - Bruce Mewborne */
  #define SINKS		/* Kitchen sinks - Janet Walz */
  
! #ifdef MSDOS
! #define TERMLIB		/* enable use of termcap file c:\etc\termcap	*/
! 			/* or .\termcap.cnf for MSDOS (SAC)		*/
! # ifdef GRAPHICS
! #  define MSDOSCOLOR
! # endif
  #endif
  
  /*
***************
*** 230,235
  
  #define	GOLD_ON_BOTL
  #define	EXP_ON_BOTL
  	 
  #ifdef REDO
  #define DOAGAIN	'\001'		/* Used in tty.c and cmd.c */

--- 246,252 -----
  
  #define	GOLD_ON_BOTL
  #define	EXP_ON_BOTL
+ #define SCORE_ON_BOTL		/* added by Gary Erickson (erickson@ucivax) */
  	 
  #ifdef REDO
  #define DOAGAIN	'\001'		/* Used in tty.c and cmd.c */
*** ./do.c.orig	Mon Feb 22 08:40:01 1988
--- ./do.c	Tue Mar 29 08:33:59 1988
***************
*** 1,4
! /*	SCCS Id: @(#)do.c	2.0	87/09/15
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  /* Contains code for 'd', 'D' (drop), '>', '<' (up, down) and 't' (throw) */

--- 1,4 -----
! /*	SCCS Id: @(#)do.c	2.3	88/02/11
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  /* Contains code for 'd', 'D' (drop), '>', '<' (up, down) and 't' (throw) */
***************
*** 47,53
  		free((char *) obj);
  		return(1);
  	}
! 	if(obj->owornmask & (W_ARMOR | W_RING)){
  		pline("You cannot drop something you are wearing.");
  		return(0);
  	}

--- 47,53 -----
  		free((char *) obj);
  		return(1);
  	}
! 	if(obj->owornmask & (W_ARMOR | W_RING | W_TOOL)){
  		pline("You cannot drop something you are wearing.");
  		return(0);
  	}
***************
*** 68,73
              }
          }
  #endif
  	pline("You dropped %s.", doname(obj));
  	dropx(obj);
  	return(1);

--- 68,85 -----
              }
          }
  #endif
+ #ifdef SINKS
+ 	if((obj->olet == RING_SYM) && IS_SINK(levl[u.ux][u.uy].typ))
+ 	    if (u.uswallow) {
+ 		freeinv(obj);
+ 		mpickobj(u.ustuck,obj);
+ 		return(1);
+ 	    }
+ 	    else {
+ 		dosinkring(obj);
+ 		return(1);
+ 	    }
+ #endif
  	pline("You dropped %s.", doname(obj));
  	dropx(obj);
  	return(1);
***************
*** 401,403
  		Wounded_legs = 0;
  	}
  }

--- 413,525 -----
  		Wounded_legs = 0;
  	}
  }
+ 
+ #ifdef SINKS
+ trycall(obj)
+ register struct obj *obj;
+ {
+ 	if(!objects[obj->otyp].oc_name_known &&
+ 	   !objects[obj->otyp].oc_uname)
+ 	   docall(obj);
+ }
+ 
+ dosinkring(obj)  /* obj is a ring being dropped over a kitchen sink */
+ register struct obj *obj;
+ {
+ register struct obj *otmp,*otmp2;
+ register short eaten;
+ 	pline("You drop %s down the drain.", doname(obj));
+ 	switch(obj->otyp) {
+ 	    case RIN_ADORNMENT:  {
+ 		pline("The faucets flash brightly for a moment.");
+ 		trycall(obj);
+ 		break;
+ 		}
+ 	    case RIN_REGENERATION:  {
+ 		pline("The sink looks as good as new.");
+ 		trycall(obj);
+ 		break;
+ 		}
+ 	    case RIN_SEARCHING:
+ 		break;
+ 	    case RIN_SEE_INVISIBLE:
+ 		break;
+ 	    case RIN_STEALTH:  {
+ 		pline("The sink seems to blend into the floor for a moment.");
+ 		trycall(obj);
+ 		break;
+ 		}
+ 	    case RIN_LEVITATION:  {
+ 		pline("The sink quivers upward for a moment.");
+ 		trycall(obj);
+ 		break;
+ 		}
+ 	    case RIN_POISON_RESISTANCE:
+ 		break;
+ 	    case RIN_AGGRAVATE_MONSTER:
+ 		break;
+ 	    case RIN_HUNGER:  {
+ 		eaten = 0;
+ 		for(otmp=fobj; otmp; otmp=otmp2) {
+ 		    otmp2 = otmp->nobj;
+ 		    if(otmp->ox == u.ux && otmp->oy == u.uy)
+ 			if(!Punished ||
+ 			    (otmp->otyp != HEAVY_IRON_BALL && otmp->otyp != IRON_CHAIN)) {
+ 			    eaten++;
+ 			    pline("Suddenly, %s vanishes from the sink!",doname(otmp));
+ 			    delobj(otmp);
+ 			}
+ 		}
+ 		if(eaten)
+ 		    trycall(obj);
+ 		break;
+ 		}
+ 	    case RIN_FIRE_RESISTANCE:  {
+ 		pline("The hot water faucet flashes brightly for a moment.");
+ 		trycall(obj);
+ 		break;
+ 		}
+ 	    case RIN_COLD_RESISTANCE:  {
+ 		pline("The cold water faucet flashes brightly for a moment.");
+ 		trycall(obj);
+ 		break;
+ 		}
+ 	    case RIN_PROTECTION_FROM_SHAPE_CHAN:  {
+ 		pline("The sink momentarily looks nothing like a fountain.");
+ 		trycall(obj);
+ 		break;
+ 		}
+ 	    case RIN_CONFLICT:
+ 		break;
+ 	    case RIN_GAIN_STRENGTH:
+ 		break;
+ 	    case RIN_INCREASE_DAMAGE:
+ 		break;
+ 	    case RIN_PROTECTION:
+ 		break;
+ 	    case RIN_WARNING:  {
+ 		pline("The sink glows white for a moment.");
+ 		trycall(obj);
+ 		break;
+ 		}
+ 	    case RIN_TELEPORTATION:	/* fall through */
+ 	    case RIN_TELEPORT_CONTROL:  {
+ 		pline("The sink momentarily vanishes.");
+ 		trycall(obj);
+ 		break;
+ 		}
+ 	    case RIN_POLYMORPH:		/* fall through */
+ 	    case RIN_POLYMORPH_CONTROL:  {
+ 		pline("The sink momentarily looks like a fountain.");
+ 		trycall(obj);
+ 		break;
+ 		}
+ 	}
+ 	if (!rn2(20)) {
+ 		pline("The sink backs up, leaving %s.", doname(obj));
+ 		dropx(obj);
+ 	}
+ 	else
+ 		useup(obj);
+ }
+ #endif
*** ./do_name.c.orig	Mon Feb 22 08:40:02 1988
--- ./do_name.c	Thu Mar 31 09:08:57 1988
***************
*** 1,4
! /*	SCCS Id: @(#)do_name.c	2.1	87/11/09
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include <stdio.h>

--- 1,4 -----
! /*	SCCS Id: @(#)do_name.c	2.3	88/02/11
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include <stdio.h>
***************
*** 5,10
  #include "hack.h"
  extern char plname[];
  extern char *rndmonnam();
  
  getpos(cc,force,goal)
  coord	*cc;

--- 5,11 -----
  #include "hack.h"
  extern char plname[];
  extern char *rndmonnam();
+ extern void savech();
  
  getpos(cc,force,goal)
  coord	*cc;
***************
*** 255,260
  			(void) strcpy(buf, shkname(mtmp));
  			break;
  		}
  		/* fall into next case */
  	default:
  		(void) sprintf(buf, "the %s%s",

--- 256,267 -----
  			(void) strcpy(buf, shkname(mtmp));
  			break;
  		}
+ #ifdef STOOGES
+ 		if(mtmp->isstooge) {
+ 			(void) strcpy(buf, mtmp->data->mname);
+ 			break;
+ 		}
+ #endif
  		/* fall into next case */
  	default:
  		(void) sprintf(buf, "the %s%s",
*** ./do_wear.c.orig	Mon Feb 22 08:40:02 1988
--- ./do_wear.c	Thu Jan 21 12:24:14 1988
***************
*** 1,4
! /*	SCCS Id: @(#)do_wear.c	2.0	87/09/15
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include <stdio.h>

--- 1,4 -----
! /*	SCCS Id: @(#)do_wear.c	2.3	88/01/21
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include <stdio.h>
***************
*** 13,19
  
  doremarm() {
  	register struct obj *otmp;
! 	if(!uarm && !uarmh && !uarms && !uarmg) {
  		pline("Not wearing any armor.");
  		return(0);
  	}

--- 13,23 -----
  
  doremarm() {
  	register struct obj *otmp;
! 	if(!uarm && !uarmh && !uarms && !uarmg
! #ifdef SHIRT
!            && !uarmu
! #endif
!         ) {
  		pline("Not wearing any armor.");
  		return(0);
  	}
***************
*** 17,22
  		pline("Not wearing any armor.");
  		return(0);
  	}
  	otmp = (!uarmh && !uarms && !uarmg) ? uarm :
  		(!uarms && !uarm && !uarmg) ? uarmh :
  		(!uarmh && !uarm && !uarmg) ? uarms :

--- 21,32 -----
  		pline("Not wearing any armor.");
  		return(0);
  	}
+ #ifdef SHIRT
+         otmp = (!uarmh && !uarms && !uarmg) ? (uarm ? uarm : uarmu) :
+                 (!uarm && !uarms && !uarmg && !uarmu) ? uarmh :
+                 (!uarm && !uarmh && !uarmg && !uarmu) ? uarms :
+                 (!uarm && !uarmh && !uarms && !uarmu) ? uarmg :
+ #else
  	otmp = (!uarmh && !uarms && !uarmg) ? uarm :
  		(!uarms && !uarm && !uarmg) ? uarmh :
  		(!uarmh && !uarm && !uarmg) ? uarms :
***************
*** 21,26
  		(!uarms && !uarm && !uarmg) ? uarmh :
  		(!uarmh && !uarm && !uarmg) ? uarms :
  		(!uarmh && !uarm && !uarms) ? uarmg :
  		getobj("[", "take off");
  	if(!otmp) return(0);
  	if(!(otmp->owornmask & (W_ARMOR - W_ARM2))) {

--- 31,37 -----
  		(!uarms && !uarm && !uarmg) ? uarmh :
  		(!uarmh && !uarm && !uarmg) ? uarms :
  		(!uarmh && !uarm && !uarms) ? uarmg :
+ #endif
  		getobj("[", "take off");
  	if(!otmp) return(0);
  	if(!(otmp->owornmask & (W_ARMOR - W_ARM2))) {
***************
*** 94,100
  			nomovemsg = "You finished taking off your helmet.";
  			break;
  		case PAIR_OF_GLOVES:
! 			nomovemsg = "You finished taking off your gloves";
  			break;
  		default:
  			nomovemsg = "You finished taking off your suit.";

--- 105,111 -----
  			nomovemsg = "You finished taking off your helmet.";
  			break;
  		case PAIR_OF_GLOVES:
! 			nomovemsg = "You finished taking off your gloves.";
  			break;
  		default:
  			nomovemsg = "You finished taking off your suit.";
***************
*** 144,149
  			err++;
  		} else
  			mask = W_ARMG;
  	} else {
  #ifdef KAA
  		if(cantweararm(u.usym)) {

--- 155,178 -----
  			err++;
  		} else
  			mask = W_ARMG;
+ #ifdef SHIRT
+ 	} else if( otmp->otyp == HAWAIIAN_SHIRT ) {
+ # ifdef KAA
+                 if(cantweararm(u.usym)) {
+                         pline("You can't wear a shirt!");
+                         return(0);
+                 }
+ # endif
+                 if (uarm || uarmu) {
+                         if(!uarm) /* then uarmu */
+                            pline("You are already wearing a shirt.");
+                         else
+                            pline("You can't wear that over your %s.",
+                                  uarm->otyp != ELVEN_CLOAK ? "armor" : "cloak" );
+                         err++;
+                 } else
+                         mask = W_ARMU;
+ #endif
  	} else {
  #ifdef KAA
  		if(cantweararm(u.usym)) {
***************
*** 299,304
  	if(uarmh) uac -= ARM_BONUS(uarmh);
  	if(uarms) uac -= ARM_BONUS(uarms);
  	if(uarmg) uac -= ARM_BONUS(uarmg);
  	if(uleft && uleft->otyp == RIN_PROTECTION) uac -= uleft->spe;
  	if(uright && uright->otyp == RIN_PROTECTION) uac -= uright->spe;
  #ifdef PRAYERS

--- 328,334 -----
  	if(uarmh) uac -= ARM_BONUS(uarmh);
  	if(uarms) uac -= ARM_BONUS(uarms);
  	if(uarmg) uac -= ARM_BONUS(uarmg);
+ 	if(uarmu) uac -= ARM_BONUS(uarmu);
  	if(uleft && uleft->otyp == RIN_PROTECTION) uac -= uleft->spe;
  	if(uright && uright->otyp == RIN_PROTECTION) uac -= uright->spe;
  #ifdef PRAYERS
***************
*** 352,357
  	if(uarmh && (!otmph || !rn2(4))) otmph = uarmh;
  	if(uarmg && (!otmph || !rn2(4))) otmph = uarmg;
  	if(uarms && (!otmph || !rn2(4))) otmph = uarms;
  	return(otmph);
  }
  

--- 382,388 -----
  	if(uarmh && (!otmph || !rn2(4))) otmph = uarmh;
  	if(uarmg && (!otmph || !rn2(4))) otmph = uarmg;
  	if(uarms && (!otmph || !rn2(4))) otmph = uarms;
+ 	if(!uarm && uarmu && (!otmph || !rn2(4))) otmph = uarmu;
  	return(otmph);
  }
  
***************
*** 361,366
  		if(otmph->rustfree ||
  		   otmph->otyp == CRYSTAL_PLATE_MAIL ||
  		   otmph->otyp == ELVEN_CLOAK ||
  		   otmph->otyp == LEATHER_ARMOR ||
  		   otmph->otyp == STUDDED_LEATHER_ARMOR) {
  			pline("Your %s not affected!",

--- 392,400 -----
  		if(otmph->rustfree ||
  		   otmph->otyp == CRYSTAL_PLATE_MAIL ||
  		   otmph->otyp == ELVEN_CLOAK ||
+ #ifdef SHIRT
+ 		   otmph->otyp == HAWAIIAN_SHIRT ||
+ #endif
  		   otmph->otyp == LEATHER_ARMOR ||
  		   otmph->otyp == STUDDED_LEATHER_ARMOR) {
  			pline("Your %s not affected!",
*** ./dog.c.orig	Tue Mar 29 08:56:11 1988
--- ./dog.c	Tue Mar 29 08:58:11 1988
***************
*** 1,4
! /*	SCCS Id: @(#)dog.c	1.4	87/08/08
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  /* dog.c - version 1.0.3 */
  

--- 1,4 -----
! /*	SCCS Id: @(#)dog.c	2.3	88/03/29
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include	"hack.h"
***************
*** 1,6
  /*	SCCS Id: @(#)dog.c	1.4	87/08/08
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- /* dog.c - version 1.0.3 */
  
  #include	"hack.h"
  extern struct monst *makemon();

--- 1,5 -----
  /*	SCCS Id: @(#)dog.c	2.3	88/03/29
  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  
  #include	"hack.h"
  extern struct monst *makemon();
***************
*** 31,36
  		strcpy(NAME(mtmp2), dogname);
  		replmon(mtmp, mtmp2);
  		mtmp = mtmp2;
  	}
  #endif	/* DOGNAME */
  	initedog(mtmp);

--- 30,36 -----
  		strcpy(NAME(mtmp2), dogname);
  		replmon(mtmp, mtmp2);
  		mtmp = mtmp2;
+ 		dogname[0] = '\0';	/* name only first dog */
  	}
  #endif	/* DOGNAME */
  	initedog(mtmp);
SHAR_EOF
if test 36456 -ne "`wc -c < 'Update.2.3.a'`"
then
	echo shar: error transmitting "'Update.2.3.a'" '(should have been 36456 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