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

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

Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
Posting-number: Volume 8, Issue 19
Archive-name: NetHack3/Patch3d
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 4 (of 6)."
# Contents:  patch03d
# Wrapped by billr@saab on Thu Sep  7 14:39:04 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patch03d' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patch03d'\"
else
echo shar: Extracting \"'patch03d'\" \(44912 characters\)
sed "s/^X//" >'patch03d' <<'END_OF_FILE'
X*** src/Old/mklev.c	Wed Sep  6 16:33:09 1989
X--- src/mklev.c	Sat Aug 26 18:36:04 1989
X***************
X*** 790,796 ****
X  		for (tryct = rn1(1,3); tryct; tryct--) {
X  			x = somex(croom); y = somey(croom);
X  			if (goodpos(x,y,(struct permonst *)0))
X! 				(void) mk_tt_statue(x, y);
X  		}
X  	}
X  #endif
X--- 790,796 ----
X  		for (tryct = rn1(1,3); tryct; tryct--) {
X  			x = somex(croom); y = somey(croom);
X  			if (goodpos(x,y,(struct permonst *)0))
X! 				(void) mk_tt_object(STATUE, x, y);
X  		}
X  	}
X  #endif
X***************
X*** 920,929 ****
X  #ifdef MEDUSA
X  		if(!rn2(dlevel == medusa_level ? 1 : 20)) {
X  			if (!rn2(dlevel == medusa_level ? 2 : 50))
X! 				(void) mk_tt_statue(somex(croom), somey(croom));
X  			else {
X  				struct obj *otmp =
X! 					mkstatue((struct permonst *)0,
X  						somex(croom), somey(croom));
X  				if (dlevel == medusa_level && otmp) 
X  					otmp->spe = 0;
X--- 920,930 ----
X  #ifdef MEDUSA
X  		if(!rn2(dlevel == medusa_level ? 1 : 20)) {
X  			if (!rn2(dlevel == medusa_level ? 2 : 50))
X! 				(void) mk_tt_object(STATUE,
X! 						somex(croom), somey(croom));
X  			else {
X  				struct obj *otmp =
X! 					mkcorpstat(STATUE, (struct permonst *)0,
X  						somex(croom), somey(croom));
X  				if (dlevel == medusa_level && otmp) 
X  					otmp->spe = 0;
X***************
X*** 932,938 ****
X  		}
X  #else
X  		if(!rn2(20))
X! 				(void) mkstatue((struct permonst *)0,
X  						somex(croom), somey(croom));
X  #endif
X  
X--- 933,939 ----
X  		}
X  #else
X  		if(!rn2(20))
X! 				(void) mkcorpstat(STATUE, (struct permonst *)0,
X  						somex(croom), somey(croom));
X  #endif
X  
X*** src/Old/mkobj.c	Wed Sep  6 16:33:57 1989
X--- src/mkobj.c	Sat Sep  2 15:05:24 1989
X***************
X*** 81,91 ****
X  	 * Yes, this is a horrible kludge...
X  	 */
X  	otmp = mkobj(let,TRUE);
X- 	otmp->ox = x;
X- 	otmp->oy = y;
X  	otmp->nobj = fobj;
X  	fobj = otmp;
X! 	levl[x][y].omask = 1;
X  	mksx = mksy = 0;
X  	return(otmp);
X  }
X--- 81,89 ----
X  	 * Yes, this is a horrible kludge...
X  	 */
X  	otmp = mkobj(let,TRUE);
X  	otmp->nobj = fobj;
X  	fobj = otmp;
X! 	place_object(otmp, x, y);
X  	mksx = mksy = 0;
X  	return(otmp);
X  }
X***************
X*** 98,107 ****
X  
X  	mksx = x; mksy = y;
X  	otmp = mksobj(otyp,TRUE);
X- 	otmp->ox = x;
X- 	otmp->oy = y;
X  	otmp->nobj = fobj;
X! 	levl[x][y].omask = 1;
X  	mksx = mksy = 0;
X  	return((fobj = otmp));
X  }
X--- 96,103 ----
X  
X  	mksx = x; mksy = y;
X  	otmp = mksobj(otyp,TRUE);
X  	otmp->nobj = fobj;
X! 	place_object(otmp, x, y);
X  	mksx = mksy = 0;
X  	return((fobj = otmp));
X  }
X***************
X*** 244,250 ****
X  		break;
X  	case FOOD_SYM:
X  		if(otmp->otyp == CORPSE) {
X! 		    /* overridden by mkcorpse_at() */
X  		    do otmp->corpsenm = rndmonnum();
X  		    while (mons[otmp->corpsenm].geno & G_NOCORPSE);
X  		    break;
X--- 240,246 ----
X  		break;
X  	case FOOD_SYM:
X  		if(otmp->otyp == CORPSE) {
X! 		    /* overridden by mkcorpstat() */
X  		    do otmp->corpsenm = rndmonnum();
X  		    while (mons[otmp->corpsenm].geno & G_NOCORPSE);
X  		    break;
X***************
X*** 306,314 ****
X  					break;
X  		case BAG_OF_TRICKS:	otmp->spe = rnd(20);
X  					break;
X! 		case FIGURINE:		otmp->corpsenm = rndmonnum();
X  					blessorcurse(otmp, 4);
X  					break;
X  #ifdef MUSIC
X  		case MAGIC_FLUTE:
X  		case MAGIC_HARP:
X--- 302,315 ----
X  					break;
X  		case BAG_OF_TRICKS:	otmp->spe = rnd(20);
X  					break;
X! 		case FIGURINE:	{	int tryct = 0;
X! 					do
X! 					    otmp->corpsenm = rndmonnum();
X! 					while(is_human(&mons[otmp->corpsenm])
X! 						&& tryct++ < 30);
X  					blessorcurse(otmp, 4);
X  					break;
X+ 				}
X  #ifdef MUSIC
X  		case MAGIC_FLUTE:
X  		case MAGIC_HARP:
X***************
X*** 392,400 ****
X  		    case STATUE:
X  			/* contains book? */
X  			otmp->spe = (rn2(dlevel/2 + 10) > 10);
X! 			/* overridden by mkstatue() */
X  			otmp->corpsenm = rndmonnum();
X- 			otmp->owt = mons[otmp->corpsenm].cwt;
X  		}
X  		break;
X  	default:
X--- 393,400 ----
X  		    case STATUE:
X  			/* contains book? */
X  			otmp->spe = (rn2(dlevel/2 + 10) > 10);
X! 			/* overridden by mkcorpstat() */
X  			otmp->corpsenm = rndmonnum();
X  		}
X  		break;
X  	default:
X***************
X*** 498,546 ****
X  }
X  
X  struct obj *
X! mkcorpse_at(ptr, x, y)
X  register struct permonst *ptr;
X! int	x, y;
X  {
X  	register struct obj *otmp;
X  
X! 	otmp = mksobj_at(CORPSE, x, y);
X  	if(otmp)  {
X! 		otmp->corpsenm = monsndx(ptr);
X! 		otmp->owt = ptr->cwt;
X  	}
X  	return(otmp);
X  }
X  
X  struct obj *
X! mk_tt_corpse(x, y)
X  register int x, y;
X  {
X  	register struct obj *otmp;
X  
X! 	if((otmp = mksobj(CORPSE,FALSE))) {
X! 		otmp->ox = x;
X! 		otmp->oy = y;
X! 		if(otmp = tt_oname(otmp)) {
X! 			otmp->nobj = fobj;
X! 			fobj = otmp;
X! 			levl[x][y].omask = 1;
X! 		}
X! 	}
X! 	return(otmp);
X! }
X! 
X! struct obj *
X! mkstatue(ptr, x, y)
X! register struct permonst *ptr;
X! int x, y;
X! {
X! 	register struct obj *otmp;
X! 
X! 	if((otmp = mksobj_at(STATUE, x, y))) {
X! 
X! 	    if(ptr)	otmp->corpsenm = monsndx(ptr);
X! 	    else	otmp->corpsenm = rndmonnum();
X  	}
X  	return(otmp);
X  }
X--- 498,532 ----
X  }
X  
X  struct obj *
X! mkcorpstat(objtype, ptr, x, y)
X! int objtype;	/* CORPSE or STATUE */
X  register struct permonst *ptr;
X! int x, y;
X  {
X  	register struct obj *otmp;
X  
X! 	if(objtype != CORPSE && objtype != STATUE)
X! 		impossible("making corpstate type %d", objtype);
X! 	otmp = mksobj_at(objtype, x, y);
X  	if(otmp)  {
X! 		if(ptr)	otmp->corpsenm = monsndx(ptr);
X! 		else	otmp->corpsenm = rndmonnum();
X! 		otmp->owt = weight(otmp);
X  	}
X  	return(otmp);
X  }
X  
X  struct obj *
X! mk_tt_object(objtype, x, y)
X! int objtype; /* CORPSE or STATUE */
X  register int x, y;
X  {
X  	register struct obj *otmp;
X  
X! 	if(otmp = mksobj_at(objtype,x,y)) {
X! 		if((otmp = tt_oname(otmp)) && objtype == STATUE)
X! 			/* player statues never contain books */
X! 			otmp->spe = 0;
X  	}
X  	return(otmp);
X  }
X***************
X*** 554,609 ****
X  register int lth;
X  {
X  	struct obj *otmp;
X- 	register struct obj *obj2;
X- 
X- 	if (lth == 0) {
X- 		switch(objtype) {
X- 			case STATUE: return (mkstatue(ptr, x, y));
X- 			case CORPSE: return (mkcorpse_at(ptr, x, y));
X- 			default: impossible("making named type %d", objtype);
X- 				return mksobj_at(objtype, x, y);
X- 		}
X- 	}
X- 
X- 	if((otmp = mksobj(objtype,FALSE))) {
X- 		obj2 = newobj(lth);
X- 		*obj2 = *otmp;
X- 		obj2->corpsenm = monsndx(ptr);
X- 		obj2->owt = ptr->cwt;
X- 		obj2->onamelth = lth;
X- 		Strcpy (ONAME(obj2), nm);
X- 		free( (genericptr_t)otmp);
X- 		obj2->ox = x;
X- 		obj2->oy = y;
X- 		obj2->nobj = fobj;
X- 		fobj = obj2;
X- 		levl[x][y].omask = 1;
X- 		return(obj2);
X- 	} else  return((struct obj *)0);
X- }
X  
X! #ifdef MEDUSA
X! struct obj *
X! mk_tt_statue(x, y)
X! register int x, y;
X! {
X! 	register struct obj *otmp;
X! 
X! 	if((otmp = mksobj(STATUE,FALSE))) {
X! 		otmp->ox = x;
X! 		otmp->oy = y;
X! 		if(otmp = tt_oname(otmp)) {
X! 			otmp->nobj = fobj;
X! 			fobj = otmp;
X! 			levl[x][y].omask = 1;
X! 			otmp->spe = 0;
X! 			/* player statues never contain books */
X! 		}
X  	}
X  	return(otmp);
X  }
X- #endif
X  
X  boolean
X  is_flammable(otmp)
X  register struct obj *otmp;
X--- 540,556 ----
X  register int lth;
X  {
X  	struct obj *otmp;
X  
X! 	otmp = mkcorpstat(objtype,ptr,x,y);
X! 	if (lth > 0) {
X! 		/* Note: oname() is safe since otmp is first in chain */
X! 		otmp = oname(otmp, nm, FALSE);
X! 		fobj = otmp;
X  	}
X  	return(otmp);
X  }
X  
X+ #ifdef STUPID_CPP
X  boolean
X  is_flammable(otmp)
X  register struct obj *otmp;
X***************
X*** 620,629 ****
X  	return(objects[otmp->otyp].oc_material == METAL);
X  }
X  
X  void
X! set_omask(x, y)
X! register xchar x, y;
X  {
X! 	levl[x][y].gmask = (g_at(x, y) != (struct gold *)0);
X! 	levl[x][y].omask = (o_at(x, y) != (struct obj *)0);
X  }
X--- 567,626 ----
X  	return(objects[otmp->otyp].oc_material == METAL);
X  }
X  
X+ boolean
X+ is_corrodeable(otmp)
X+ register struct obj *otmp;
X+ {
X+ 	return(objects[otmp->otyp].oc_material == COPPER);
X+ }
X+ #endif
X+ 
X+ /*
X+  * These functions encapsulate operations on the omask bit.  Someday soon they
X+  * will turn into list-manipulation functions.
X+  */
X+ boolean
X+ OBJ_AT(x, y)
X+ int x, y;
X+ {
X+ 	return levl[x][y].omask;
X+ }
X+ 
X+ void
X+ place_object(obj, x, y)
X+ struct obj *obj;
X+ register int x, y;
X+ {
X+ 	obj->ox = x;
X+ 	obj->oy = y;
X+ 	levl[x][y].omask = 1;
X+ }
X+ 
X+ void
X+ move_object(obj, x, y)
X+ struct obj *obj;
X+ register int x, y;
X+ {
X+ 	register int oldx = obj->ox, oldy = obj->oy;
X+ 
X+ 	obj->ox = x;
X+ 	obj->oy = y;
X+ 	levl[x][y].omask = 1;
X+ 	levl[oldx][oldy].omask = (o_at(oldx, oldy) != (struct obj *)0);
X+ }
X+ 
X  void
X! remove_object(obj)
X! struct obj *obj;
X  {
X! 	register int oldx = obj->ox, oldy = obj->oy;
X! 
X! /*
X!  * This cannot be used since it screws up unpobj().  It's only necessary so
X!  * that o_at() doesn't mistakenly find the object, but this is called only
X!  * in situations with the object already removed from the chain anyway.
X! 	obj->ox = 0;
X! 	obj->oy = 0;
X!  */
X! 	levl[oldx][oldy].omask = (o_at(oldx, oldy) != (struct obj *)0);
X  }
X*** src/Old/objects.c	Wed Sep  6 15:52:35 1989
X--- src/objects.c	Fri Sep  1 13:27:33 1989
X***************
X*** 19,25 ****
X  		ILLOBJ_SYM, 0, 0, 0, 0, 0, 0, 0 },
X  /* amulets ... - THE Amulet comes last because it is special */
X  #define AMULET(name,desc,power,prob,weight)	{ name, desc, NULL,\
X! 		0,0,0,METAL, power, AMULET_SYM, prob, 0, weight, 100, 0, 0, 0 }
X  
X  	AMULET("amulet of esp", 	  "circular",	TELEPAT,    190, 2),
X  	AMULET("amulet of life saving",   "spherical",	LIFESAVED,   90, 2),
X--- 19,25 ----
X  		ILLOBJ_SYM, 0, 0, 0, 0, 0, 0, 0 },
X  /* amulets ... - THE Amulet comes last because it is special */
X  #define AMULET(name,desc,power,prob,weight)	{ name, desc, NULL,\
X! 		0,0,0,METAL, power, AMULET_SYM, prob, 0, weight, 150, 0, 0, 0 }
X  
X  	AMULET("amulet of esp", 	  "circular",	TELEPAT,    190, 2),
X  	AMULET("amulet of life saving",   "spherical",	LIFESAVED,   90, 2),
X***************
X*** 86,95 ****
X  	FOOD("tin",		    75, 0, 1, METAL, 0),
X  #undef FOOD
X  
X- /* weapons ... - ROCK come several at a time */
X- /* weapons ... - (DART-1) are shot using idem+(BOW-ARROW) */
X- /* weapons AXE, SWORD, KATANA, THSWORD are good for worm-cutting */
X- /* weapons (PICK-)AXE, DAGGER, CRYSKNIFE are good for tin-opening */
X  #define WEAPON(name,app,kn,mg,bi,prob,wt,cost,sdam,ldam,metal) { name, app, \
X  	NULL, kn,mg,bi,metal, 0, WEAPON_SYM, prob, 0, wt, cost, sdam, ldam, 0 }
X  #define PROJECTILE(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop) { name, \
X--- 86,91 ----
X***************
X*** 118,151 ****
X  		   METAL, WP_CROSSBOW),
X  
X  WEAPON("dart",		NULL,		1, 1, 0, 60, 0,  2, 3, 2, METAL),
X! WEAPON("shuriken",	"throwing star",0, 1, 0, 30, 0,  2, 8, 6, METAL),
X! WEAPON("boomerang",	NULL,		1, 1, 0, 15, 3, 50, 9, 9, WOOD),
X  
X  /* spears */
X  #ifdef TOLKIEN
X! WEAPON("spear", 	NULL,		1, 1, 0, 55, 3,  8, 6, 8, METAL),
X! WEAPON("elven spear",	"runed spear",	0, 1, 0, 10, 3,  8, 7, 8, METAL),
X! WEAPON("orcish spear",	"black spear",	0, 1, 0, 13, 3,  8, 5, 8, METAL),
X! WEAPON("dwarvish spear","shiny spear",	0, 1, 0, 12, 3,  8, 8, 8, METAL),
X  #else
X! WEAPON("spear", 	NULL,		1, 1, 0, 90, 3,  8, 6, 8, METAL),
X  #endif
X! WEAPON("javelin",	"throwing spear",0,1, 0, 10, 3,  8, 6, 6, METAL),
X! WEAPON("trident",	NULL,		1, 0, 0,  8, 4,  6, 6, 4, METAL),
X  						/* +1 small, +2d4 large */
X! WEAPON("lance", 	NULL,		1, 0, 0,  8, 4, 20, 6, 8, METAL),
X  
X  /* blades */
X  #ifdef TOLKIEN
X! WEAPON("dagger",	NULL,		1, 1, 0, 25, 2, 20, 4, 3, METAL),
X! WEAPON("elven dagger",	"large runed knife", 0, 1, 0,  8, 2, 20, 5, 3, METAL),
X! WEAPON("orcish dagger", "large black knife", 0, 1, 0, 10, 2, 20, 3, 3, METAL),
X  #else
X! WEAPON("dagger",	NULL,		1, 1, 0, 43, 2, 20, 4, 3, METAL),
X  #endif
X! WEAPON("scalpel",	NULL,		1, 1, 0,  0, 1, 20, 4, 3, METAL),
X! WEAPON("knife", 	NULL,		1, 1, 0, 25, 2, 15, 3, 3, METAL),
X! WEAPON("axe",		NULL,		1, 0, 0, 50, 3, 50, 6, 4, METAL),
X  #ifdef WORM
X  WEAPON("worm tooth",	NULL,		1, 0, 0,  0, 3,  2, 2, 2, METAL),
X  WEAPON("crysknife",	NULL,		1, 0, 0,  0, 3,100,10,10, METAL),
X--- 114,148 ----
X  		   METAL, WP_CROSSBOW),
X  
X  WEAPON("dart",		NULL,		1, 1, 0, 60, 0,  2, 3, 2, METAL),
X! WEAPON("shuriken",	"throwing star",0, 1, 0, 30, 0,  5, 8, 6, METAL),
X! WEAPON("boomerang",	NULL,		1, 1, 0, 15, 3, 20, 9, 9, WOOD),
X  
X  /* spears */
X  #ifdef TOLKIEN
X! WEAPON("spear", 	NULL,		1, 1, 0, 55, 3,  5, 6, 8, METAL),
X! WEAPON("elven spear",	"runed spear",	0, 1, 0, 10, 3,  5, 7, 8, METAL),
X! WEAPON("orcish spear",	"black spear",	0, 1, 0, 13, 3,  5, 5, 8, METAL),
X! WEAPON("dwarvish spear","shiny spear",	0, 1, 0, 12, 3,  5, 8, 8, METAL),
X  #else
X! WEAPON("spear", 	NULL,		1, 1, 0, 90, 3,  5, 6, 8, METAL),
X  #endif
X! WEAPON("javelin",	"throwing spear",0,1, 0, 10, 3,  5, 6, 6, METAL),
X! WEAPON("trident",	NULL,		1, 0, 0,  8, 4, 15, 6, 4, METAL),
X  						/* +1 small, +2d4 large */
X! WEAPON("lance", 	NULL,		1, 0, 0,  8, 4, 10, 6, 8, METAL),
X  
X  /* blades */
X  #ifdef TOLKIEN
X! WEAPON("dagger",	NULL,		1, 1, 0, 25, 2,  4, 4, 3, METAL),
X! WEAPON("elven dagger",	"large runed knife", 0, 1, 0,  8, 2, 4, 5, 3, METAL),
X! WEAPON("orcish dagger", "large black knife", 0, 1, 0, 10, 2, 4, 3, 3, METAL),
X  #else
X! WEAPON("dagger",	NULL,		1, 1, 0, 43, 2,  4, 4, 3, METAL),
X  #endif
X! WEAPON("athame",	NULL,		1, 1, 0,  0, 2,  4, 4, 3, METAL),
X! WEAPON("scalpel",	NULL,		1, 1, 0,  0, 1,  4, 4, 3, METAL),
X! WEAPON("knife", 	NULL,		1, 1, 0, 25, 2,  4, 3, 3, METAL),
X! WEAPON("axe",		NULL,		1, 0, 0, 50, 3,  8, 6, 4, METAL),
X  #ifdef WORM
X  WEAPON("worm tooth",	NULL,		1, 0, 0,  0, 3,  2, 2, 2, METAL),
X  WEAPON("crysknife",	NULL,		1, 0, 0,  0, 3,100,10,10, METAL),
X***************
X*** 153,242 ****
X  
X  /* swords */
X  #ifdef TOLKIEN
X! WEAPON("short sword",		NULL,	1, 0, 0,  6, 3, 80, 6, 8, METAL),
X  WEAPON("elven short sword",	"short runed sword",
X! 					0, 0, 0,  2, 3, 80, 8, 8, METAL),
X  WEAPON("orcish short sword",	"short black sword",
X! 					0, 0, 0,  3, 3, 80, 5, 8, METAL),
X  WEAPON("dwarvish short sword",	"short shiny sword",
X! 					0, 0, 0,  2, 3, 80, 7, 8, METAL),
X  #else
X! WEAPON("short sword",		NULL,	1, 0, 0, 13, 3, 80, 6, 8, METAL),
X  #endif
X! WEAPON("scimitar", "curved sword",	0, 0, 0,  6, 4, 80, 8, 8, METAL),
X  #ifdef TOLKIEN
X! WEAPON("broadsword", "wide sword",	0, 0, 0,  8, 4, 80, 4, 6, METAL),
X  						/* +d4 small, +1 large */
X  WEAPON("elven broadsword",	"wide runed sword",
X! 					0, 0, 0,  4, 4, 80, 6, 6, METAL),
X  						/* +d4 small, +1 large */
X  #else
X! WEAPON("broadsword", "wide sword",	0, 0, 0, 12, 4, 80, 4, 6, METAL),
X  						/* +d4 small, +1 large */
X  #endif
X! WEAPON("long sword",		NULL,	1, 0, 0, 60, 4, 80, 8, 12, METAL),
X  #ifdef TOLKIEN
X! WEAPON("two-handed sword",	NULL,	1, 0, 1, 25, 5, 80,12,	6, METAL),
X  						/* +2d6 large */
X  WEAPON("dwarvish mattock",	"huge shiny sword",
X! 					0, 0, 1, 15, 6, 80,12,	8, METAL),
X  						/* +2d6 large */
X  #else
X! WEAPON("two-handed sword",	NULL,	1, 0, 1, 40, 5, 80,12,	6, METAL),
X  						/* +2d6 large */
X  #endif
X  WEAPON("katana", "samurai sword",	0, 0, 0,  6, 4,100,10, 12, METAL),
X  
X  /* blunt */
X! WEAPON("mace",		NULL,		1, 0, 0, 55, 4, 150, 6, 6, METAL),
X  						/* +1 small */
X! WEAPON("morning star",	NULL,		1, 0, 0, 12, 4, 120, 4, 6, METAL),
X  						/* +d4 small, +1 large */
X! WEAPON("club",		NULL,		1, 0, 0, 10, 3, 100, 6, 3, WOOD),
X  #ifdef KOPS
X! WEAPON("rubber hose",	NULL,		1, 0, 0,  0, 2, 100, 6, 3, 0),
X  #endif
X! WEAPON("quarterstaff",	"staff",	0, 0, 1, 10, 3, 150, 6, 6, WOOD),
X! 
X  /* two-piece */
X! WEAPON("aklys", "thonged club", 	0, 0, 0,  8, 3, 30, 6, 3, METAL),
X! WEAPON("flail", 	NULL,		1, 0, 0, 40, 3, 30, 6, 4, METAL),
X  						/* +1 small, +1d4 large */
X  /* whip */
X! WEAPON("bullwhip",	NULL,		1, 0, 0,  5, 2, 20, 2, 1, 0),
X  
X  /* polearms */
X! WEAPON("bardiche", "large poleaxe",	0, 0, 1,  8, 3, 70, 4, 4, METAL),
X! 						/* +1d4 small, +2d4 large */
X! WEAPON("bec de corbin","beaked poleaxe",0, 0, 1,  8, 3, 16, 8, 6, METAL),
X! WEAPON("bill-guisarme","hooked polearm",0, 0, 1,  8, 3, 60, 4,10, METAL),
X! 						/* +1d4 small */
X! WEAPON("fauchard",	"sickle",	0, 0, 1, 11, 3, 30, 6, 8, METAL),
X! WEAPON("glaive",	"pike", 	0, 0, 1, 15, 3, 60, 6,10, METAL),
X! WEAPON("guisarme",	"pruning hook", 0, 0, 1, 11, 3, 50, 4, 8, METAL),
X! 						/* +1d4 small */
X! WEAPON("halberd",	"long poleaxe", 0, 0, 1, 16, 3, 90,10, 6, METAL),
X! 						/* +1d6 large */
X! WEAPON("lucern hammer", "hammerhead polearm", 0, 0, 1, 10, 3, 70, 4, 6, METAL),
X! 						/* +1d4 small */
X! WEAPON("partisan", "vulgar polearm",	0, 0, 1, 10, 3,100, 6, 6, METAL),
X  						/* +1 large */
X! WEAPON("ranseur", "hilted polearm",	0, 0, 1, 10, 3, 40, 4, 4, METAL),
X  						/* +d4 both */
X! WEAPON("spetum", "forked polearm",	0, 0, 1, 10, 3, 30, 6, 6, METAL),
X  						/* +1 small, +d6 large */
X! WEAPON("voulge", "poleaxe",		0, 0, 1,  8, 3, 20, 4, 4, METAL),
X  						/* +d4 both */
X  /* bows */
X  #ifdef TOLKIEN
X! BOW("bow",	  NULL, 	1, 0, 24, 3, 120, 4, 6, 0, WP_BOW),
X! BOW("elven bow",  "runed bow",	0, 0, 12, 3, 120, 5, 6, 0, WP_BOW),
X! BOW("orcish bow", "black bow",	0, 0, 12, 3, 120, 3, 6, 0, WP_BOW),
X  #else
X! BOW("bow",	  NULL, 	1, 0, 48, 3, 120, 4, 6, 0, WP_BOW),
X  #endif
X! BOW("sling", 	  NULL,	    	1, 0, 40, 2,  20, 6, 6, 0, WP_SLING),
X! BOW("crossbow",	  NULL,		1, 0, 45, 3,  40, 4, 6, 0, WP_CROSSBOW),
X  #undef WEAPON
X  #undef PROJECTILE
X  #undef BOW
X--- 150,245 ----
X  
X  /* swords */
X  #ifdef TOLKIEN
X! WEAPON("short sword",		NULL,	1, 0, 0,  6, 3, 10, 6, 8, METAL),
X  WEAPON("elven short sword",	"short runed sword",
X! 					0, 0, 0,  2, 3, 10, 8, 8, METAL),
X  WEAPON("orcish short sword",	"short black sword",
X! 					0, 0, 0,  3, 3, 10, 5, 8, METAL),
X  WEAPON("dwarvish short sword",	"short shiny sword",
X! 					0, 0, 0,  2, 3, 10, 7, 8, METAL),
X  #else
X! WEAPON("short sword",		NULL,	1, 0, 0, 13, 3, 10, 6, 8, METAL),
X  #endif
X! WEAPON("scimitar", "curved sword",	0, 0, 0,  6, 4, 15, 8, 8, METAL),
X  #ifdef TOLKIEN
X! WEAPON("broadsword", "wide sword",	0, 0, 0,  8, 4, 10, 4, 6, METAL),
X  						/* +d4 small, +1 large */
X  WEAPON("elven broadsword",	"wide runed sword",
X! 					0, 0, 0,  4, 4, 10, 6, 6, METAL),
X  						/* +d4 small, +1 large */
X  #else
X! WEAPON("broadsword", "wide sword",	0, 0, 0, 12, 4, 10, 4, 6, METAL),
X  						/* +d4 small, +1 large */
X  #endif
X! WEAPON("long sword",		NULL,	1, 0, 0, 60, 4, 15, 8, 12, METAL),
X  #ifdef TOLKIEN
X! WEAPON("two-handed sword",	NULL,	1, 0, 1, 25, 5, 50,12,	6, METAL),
X  						/* +2d6 large */
X  WEAPON("dwarvish mattock",	"huge shiny sword",
X! 					0, 0, 1, 15, 6, 50,12,	8, METAL),
X  						/* +2d6 large */
X  #else
X! WEAPON("two-handed sword",	NULL,	1, 0, 1, 40, 5, 50,12,	6, METAL),
X  						/* +2d6 large */
X  #endif
X  WEAPON("katana", "samurai sword",	0, 0, 0,  6, 4,100,10, 12, METAL),
X  
X  /* blunt */
X! WEAPON("mace",		NULL,		1, 0, 0, 40, 4,  8, 6, 6, METAL),
X  						/* +1 small */
X! WEAPON("morning star",	NULL,		1, 0, 0, 12, 4, 10, 4, 6, METAL),
X  						/* +d4 small, +1 large */
X! WEAPON("war hammer",	NULL,		1, 0, 0, 15, 3,  5, 4, 4, METAL),
X! 						/* +1 small */
X! WEAPON("club",		NULL,		1, 0, 0, 10, 3,  4, 6, 3, WOOD),
X  #ifdef KOPS
X! WEAPON("rubber hose",	NULL,		1, 0, 0,  0, 2,  4, 6, 3, 0),
X  #endif
X! WEAPON("quarterstaff",	"staff",	0, 0, 1, 10, 3,  8, 6, 6, WOOD),
X  /* two-piece */
X! WEAPON("aklys", 	"thonged club", 0, 0, 0,  8, 3,  4, 6, 3, METAL),
X! WEAPON("flail", 	NULL,		1, 0, 0, 40, 3,  4, 6, 4, METAL),
X  						/* +1 small, +1d4 large */
X  /* whip */
X! WEAPON("bullwhip",	NULL,		1, 0, 0,  5, 2,  4, 2, 1, 0),
X  
X  /* polearms */
X! /* spear-type */
X! WEAPON("partisan", "vulgar polearm",	0, 0, 1, 10, 3, 10, 6, 6, METAL),
X  						/* +1 large */
X! WEAPON("ranseur", "hilted polearm",	0, 0, 1, 10, 3,  6, 4, 4, METAL),
X  						/* +d4 both */
X! WEAPON("spetum", "forked polearm",	0, 0, 1, 10, 3,  5, 6, 6, METAL),
X  						/* +1 small, +d6 large */
X! WEAPON("glaive", "single-edged polearm", 0, 0, 1, 15, 3, 6, 6,10, METAL),
X! /* axe-type */
X! WEAPON("halberd", "angled poleaxe",	0, 0, 1, 16, 3, 10,10, 6, METAL),
X! 						/* +1d6 large */
X! WEAPON("bardiche", "long poleaxe",	0, 0, 1,  8, 3,  7, 4, 4, METAL),
X! 						/* +1d4 small, +2d4 large */
X! WEAPON("voulge", "pole cleaver",	0, 0, 1,  8, 3,  5, 4, 4, METAL),
X  						/* +d4 both */
X+ /* curved/hooked */
X+ WEAPON("fauchard",	"pole sickle",	0, 0, 1, 11, 3,  5, 6, 8, METAL),
X+ WEAPON("guisarme",	"pruning hook", 0, 0, 1, 11, 3,  5, 4, 8, METAL),
X+ 						/* +1d4 small */
X+ WEAPON("bill-guisarme","hooked polearm",0, 0, 1,  8, 3,  7, 4,10, METAL),
X+ 						/* +1d4 small */
X+ /* other */
X+ WEAPON("lucern hammer", "pronged polearm", 0, 0, 1, 10, 3,  7, 4, 6, METAL),
X+ 						/* +1d4 small */
X+ WEAPON("bec de corbin","beaked polearm",0, 0, 1,  8, 3,  8, 8, 6, METAL),
X+ 
X  /* bows */
X  #ifdef TOLKIEN
X! BOW("bow",	  NULL, 	1, 0, 24, 3, 120, 30, 6, 0, WP_BOW),
X! BOW("elven bow",  "runed bow",	0, 0, 12, 3, 120, 35, 6, 0, WP_BOW),
X! BOW("orcish bow", "black bow",	0, 0, 12, 3, 120, 25, 6, 0, WP_BOW),
X  #else
X! BOW("bow",	  NULL, 	1, 0, 48, 3, 120, 30, 6, 0, WP_BOW),
X  #endif
X! BOW("sling", 	  NULL,	    	1, 0, 40, 2,  20,  4, 6, 0, WP_SLING),
X! BOW("crossbow",	  NULL,		1, 0, 45, 3,  40, 35, 6, 0, WP_CROSSBOW),
X  #undef WEAPON
X  #undef PROJECTILE
X  #undef BOW
X***************
X*** 255,261 ****
X  	TOOL("blindfold",	NULL,		1, 0, 105,  2,	20, 0),
X  #endif
X  	TOOL("tinning kit",	NULL,		1, 0,  15, 10,	30, METAL),
X! 	TOOL("lock pick",	NULL,		1, 0,  55,  2,	20, METAL),
X  	TOOL("credit card",	NULL,		1, 0,	5,  1,	10, 0),
X  #ifdef WALKIES
X  	TOOL("key",		NULL,		1, 0, 100,  1,	10, METAL),
X--- 258,264 ----
X  	TOOL("blindfold",	NULL,		1, 0, 105,  2,	20, 0),
X  #endif
X  	TOOL("tinning kit",	NULL,		1, 0,  15, 10,	30, METAL),
X! 	TOOL("lock pick",	NULL,		1, 0,  55,  2,	10, METAL),
X  	TOOL("credit card",	NULL,		1, 0,	5,  1,	10, 0),
X  #ifdef WALKIES
X  	TOOL("key",		NULL,		1, 0, 100,  1,	10, METAL),
X***************
X*** 265,271 ****
X  	TOOL("skeleton key",	"key",		0, 0,  60,  1,	10, METAL),
X  	TOOL("expensive camera", NULL,		1, 0,	5,  3, 200, 0),
X  	TOOL("magic marker",	NULL,		1, 1,  15,  1,	50, 0),
X! 	TOOL("stethoscope",	NULL,		1, 0,  15,  2,	80, 0),
X  	TOOL("tin opener",	NULL,		1, 0,  25,  1,	30, METAL),
X  #ifdef WALKIES
X  	TOOL("lamp",		NULL,		1, 1,  90, 10,	50, 0),
X--- 268,274 ----
X  	TOOL("skeleton key",	"key",		0, 0,  60,  1,	10, METAL),
X  	TOOL("expensive camera", NULL,		1, 0,	5,  3, 200, 0),
X  	TOOL("magic marker",	NULL,		1, 1,  15,  1,	50, 0),
X! 	TOOL("stethoscope",	NULL,		1, 0,  15,  2,	75, 0),
X  	TOOL("tin opener",	NULL,		1, 0,  25,  1,	30, METAL),
X  #ifdef WALKIES
X  	TOOL("lamp",		NULL,		1, 1,  90, 10,	50, 0),
X***************
X*** 274,286 ****
X  #endif
X  	TOOL("magic lamp",	"lamp", 	0, 1,  20, 10,	50, 0),
X  	TOOL("crystal ball",	NULL,		1, 1,  35, 15,	60, GLASS),
X! 	TOOL("figurine",	NULL,		1, 0,  35,  5,	80, MINERAL),
X! 	TOOL("ice box", 	NULL,		1, 0,	5, 40, 400, 0),
X! 	TOOL("large box",	NULL,		1, 0,  40, 40, 400, WOOD),
X! 	TOOL("chest",		NULL,		1, 0,  35, 40, 500, WOOD),
X! 	TOOL("sack",		"bag",		0, 0,  40,  3, 200, 0),
X! 	TOOL("bag of holding",	"bag",		0, 0,  20,  3, 250, 0),
X! 	TOOL("bag of tricks",	"bag",		0, 1,  20,  3, 250, 0),
X  #ifndef MUSIC
X  	TOOL("whistle", 	NULL,		1, 0, 120,  2,	10, METAL),
X  	TOOL("magic whistle",	"whistle",	0, 0,  50,  2,	10, METAL),
X--- 277,289 ----
X  #endif
X  	TOOL("magic lamp",	"lamp", 	0, 1,  20, 10,	50, 0),
X  	TOOL("crystal ball",	NULL,		1, 1,  35, 15,	60, GLASS),
X! 	TOOL("figurine",	NULL,		1, 0,  35,  5,  80, MINERAL),
X! 	TOOL("ice box", 	NULL,		1, 0,	5, 40,  30, 0),
X! 	TOOL("large box",	NULL,		1, 0,  40, 40,  20, WOOD),
X! 	TOOL("chest",		NULL,		1, 0,  35, 40,  20, WOOD),
X! 	TOOL("sack",		"bag",		0, 0,  40,  3,  20, 0),
X! 	TOOL("bag of holding",	"bag",		0, 0,  20,  3, 100, 0),
X! 	TOOL("bag of tricks",	"bag",		0, 1,  20,  3, 100, 0),
X  #ifndef MUSIC
X  	TOOL("whistle", 	NULL,		1, 0, 120,  2,	10, METAL),
X  	TOOL("magic whistle",	"whistle",	0, 0,  50,  2,	10, METAL),
X***************
X*** 323,419 ****
X  	name, desc, NULL, kn,0,blk,metal, power, ARMOR_SYM, prob,\
X  	delay, weight, cost, ac, can, 0 }
X  #ifdef TOLKIEN
X! ARMOR("elven leather helm", "leather hat", 0, 0, 0,  6, 1, 2,  10, 9, 0, 0),
X  ARMOR("orcish helm", "black cap",	   0, 0, 0,  6, 1, 3,  10, 9, 0, METAL),
X! ARMOR("dwarvish iron helm", "hard hat",    0, 0, 0,  6, 1, 3,  10, 8, 0, METAL),
X  #else
X  ARMOR("orcish helm", "black cap",	   0, 0, 0, 18, 1, 3,  10, 9, 0, METAL),
X  #endif
X! ARMOR("fedora", NULL,			   1, 0, 0,  0, 1, 1,  10, 9, 0, 0),
X  ARMOR("helmet", "rusty pot",		   0, 0, 0, 12, 1, 2,  10, 9, 0, METAL),
X! ARMOR("helm of brilliance", "plumed hat",	   0, 0, 0,  6, 1, 2,  15, 9, 0, METAL),
X  ARMOR("helm of opposite alignment", "crested helmet",
X! 					   0, 0, 0,  6, 1, 2,  15, 9, 0, METAL),
X  ARMOR("helm of telepathy", "visored helmet",
X! 				0, 0, TELEPAT, 2, 1, 2, 15, 9, 0, METAL),
X  
X! /* non-metal and (METAL | 1) armors do not rust */
X  ARMOR("dragon scale mail", NULL,  1, 1, 0,  0, 5, 5,1000, 1, 0, 0),
X! ARMOR("plate mail", NULL,	  1, 1, 0, 44, 5, 9, 400, 3, 2, METAL),
X! ARMOR("crystal plate mail", NULL, 1, 1, 0, 10, 5, 9, 820, 3, 2, 0),
X  #ifdef SHIRT
X! ARMOR("bronze plate mail", NULL,  1, 1, 0, 25, 5, 9, 600, 4, 0, (METAL | 1)),
X  #else
X! ARMOR("bronze plate mail", NULL,  1, 1, 0, 35, 5, 9, 600, 4, 0, (METAL | 1)),
X  #endif
X  ARMOR("splint mail", NULL,	1, 1, 0, 66, 5, 8,  80, 4, 1, METAL),
X  ARMOR("banded mail", NULL,	1, 1, 0, 76, 5, 8,  90, 4, 0, METAL),
X  #ifdef TOLKIEN
X! ARMOR("dwarvish mithril-coat", NULL, 1, 0, 0, 10, 1, 2, 160, 4, 3, (METAL | 1)),
X! ARMOR("elven mithril-coat", NULL, 1, 0, 0, 15, 1, 2, 160, 5, 3, (METAL | 1)),
X  ARMOR("chain mail", NULL,	1, 0, 0, 76, 5, 6,  75, 5, 1, METAL),
X  ARMOR("orcish chain mail", "black chain mail",
X  					0, 0, 0, 20, 5, 6,  75, 5, 1, METAL),
X  #else
X! ARMOR("dwarvish mithril-coat", NULL, 1, 0, 0, 25, 1, 2, 160, 4, 3, (METAL | 1)),
X  ARMOR("chain mail", NULL,	1, 0, 0, 96, 5, 6,  75, 5, 1, METAL),
X  #endif
X! ARMOR("scale mail", NULL,	1, 0, 0, 76, 5, 5,  45, 6, 0, METAL),
X  ARMOR("studded leather armor", NULL,
X! 					1, 0, 0, 76, 3, 3,  15, 7, 1, 0),
X  #ifdef TOLKIEN
X! ARMOR("ring mail", NULL,	1, 0, 0, 76, 5, 4,  30, 7, 0, METAL),
X  ARMOR("orcish ring mail", "black ring mail",
X! 					0, 0, 0, 20, 5, 5,  75, 8, 1, METAL),
X  #else
X! ARMOR("ring mail", NULL,	1, 0, 0, 96, 5, 4,  30, 7, 0, METAL),
X  #endif
X  ARMOR("leather armor", NULL,	1, 0, 0, 97, 3, 2,   5, 8, 0, 0),
X  
X  /*  'cope' is not a spelling mistake... leave it be */
X  ARMOR("mummy wrapping", NULL,
X! 				1, 0, 0,	     0, 0, 2,  5, 10, 2, 0),
X  #ifdef TOLKIEN
X  ARMOR("elven cloak", "ornamental cope",
X! 				0, 0, STEALTH,	    12, 0, 2, 35,  9, 3, 0),
X  ARMOR("orcish cloak", "black mantelet",
X! 				0, 0, 0,	    12, 0, 2, 35, 10, 3, 0),
X  ARMOR("dwarvish cloak", "colorful hooded cloak",
X! 				0, 0, 0,	    12, 0, 2, 35, 10, 3, 0),
X  #else
X  ARMOR("elven cloak", "ornamental cope",
X! 				0, 0, STEALTH,	    36, 0, 2, 35,  9, 3, 0),
X  #endif
X  ARMOR("cloak of protection", "tattered cape",
X! 				0, 0, PROTECTION,   12, 0, 2, 15,  7, 3, 0),
X  ARMOR("cloak of invisibility", "opera hood",
X! 				0, 0, INVIS,	    12, 0, 2, 35,  9, 3, 0),
X  ARMOR("cloak of magic resistance", "faded pall",
X! 				0, 0, ANTIMAGIC,     2, 0, 2, 25,  9, 3, 0),
X  ARMOR("cloak of displacement", "piece of cloth",
X! 				0, 0, DISPLACED,    12, 0, 2, 15,  9, 3, 0),
X  
X  #ifdef TOLKIEN
X  ARMOR("small shield", NULL,
X! 				1, 0, 0,	   6, 0, 2, 10,  9, 0, METAL),
X  ARMOR("elven shield", "blue and green shield",
X! 				0, 0, 0,	   2, 0, 2, 15,  8, 0, METAL),
X  ARMOR("Uruk-hai shield", "white-handed shield",
X! 				0, 0, 0,	   2, 0, 4, 10,  9, 0, METAL),
X  ARMOR("orcish shield", "red-eyed shield",
X! 				0, 0, 0,	   2, 0, 3, 10,  9, 0, METAL),
X  ARMOR("large shield", NULL,
X! 				1, 1, 0,	   7, 0, 4, 15,  8, 0, METAL),
X  ARMOR("dwarvish roundshield", "large round shield",
X! 				0, 0, 0,	   4, 0, 4, 15,  8, 0, METAL),
X  #else
X  ARMOR("small shield", NULL,
X! 				1, 0, 0,	  12, 0, 2, 10,  9, 0, METAL),
X  ARMOR("large shield", NULL,
X! 				1, 1, 0,	  11, 0, 4, 15,  8, 0, METAL),
X  #endif
X  ARMOR("shield of reflection", "polished silver shield",
X! 				0, 0, REFLECTING,  3, 0, 3, 50, 8, 0, (METAL | 1)),
X  
X  #ifdef SHIRT
X  ARMOR("Hawaiian shirt", NULL,	1, 0, 0, 10, 0, 2, 5, 10, 0, 0),
X--- 326,423 ----
X  	name, desc, NULL, kn,0,blk,metal, power, ARMOR_SYM, prob,\
X  	delay, weight, cost, ac, can, 0 }
X  #ifdef TOLKIEN
X! ARMOR("elven leather helm", "leather hat", 0, 0, 0,  6, 1, 2,   8, 9, 0, 0),
X  ARMOR("orcish helm", "black cap",	   0, 0, 0,  6, 1, 3,  10, 9, 0, METAL),
X! ARMOR("dwarvish iron helm", "hard hat",    0, 0, 0,  6, 1, 3,  20, 8, 0, METAL),
X  #else
X  ARMOR("orcish helm", "black cap",	   0, 0, 0, 18, 1, 3,  10, 9, 0, METAL),
X  #endif
X! ARMOR("fedora", NULL,			   1, 0, 0,  0, 1, 1,   8, 9, 0, 0),
X  ARMOR("helmet", "rusty pot",		   0, 0, 0, 12, 1, 2,  10, 9, 0, METAL),
X! ARMOR("helm of brilliance", "plumed hat",
X! 					   0, 0, 0,  6, 1, 2,  50, 9, 0, METAL),
X  ARMOR("helm of opposite alignment", "crested helmet",
X! 					   0, 0, 0,  6, 1, 2,  50, 9, 0, METAL),
X  ARMOR("helm of telepathy", "visored helmet",
X! 					   0, 0, TELEPAT, 2, 1, 2, 50, 9, 0, METAL),
X  
X! /* non-METAL armors do not rust */
X  ARMOR("dragon scale mail", NULL,  1, 1, 0,  0, 5, 5,1000, 1, 0, 0),
X! ARMOR("plate mail", NULL,	  1, 1, 0, 44, 5, 9, 600, 3, 2, METAL),
X! ARMOR("crystal plate mail", NULL, 1, 1, 0, 10, 5, 9, 820, 3, 2, GLASS),
X  #ifdef SHIRT
X! ARMOR("bronze plate mail", NULL,  1, 1, 0, 25, 5, 9, 400, 4, 0, COPPER),
X  #else
X! ARMOR("bronze plate mail", NULL,  1, 1, 0, 35, 5, 9, 400, 4, 0, COPPER),
X  #endif
X  ARMOR("splint mail", NULL,	1, 1, 0, 66, 5, 8,  80, 4, 1, METAL),
X  ARMOR("banded mail", NULL,	1, 1, 0, 76, 5, 8,  90, 4, 0, METAL),
X  #ifdef TOLKIEN
X! ARMOR("dwarvish mithril-coat", NULL, 1, 0, 0, 10, 1, 2, 240, 4, 3, MITHRIL),
X! ARMOR("elven mithril-coat", NULL, 1, 0, 0, 15, 1, 2, 240, 5, 3, MITHRIL),
X  ARMOR("chain mail", NULL,	1, 0, 0, 76, 5, 6,  75, 5, 1, METAL),
X  ARMOR("orcish chain mail", "black chain mail",
X  					0, 0, 0, 20, 5, 6,  75, 5, 1, METAL),
X  #else
X! ARMOR("dwarvish mithril-coat", NULL, 1, 0, 0, 25, 1, 2, 240, 4, 3, MITHRIL),
X  ARMOR("chain mail", NULL,	1, 0, 0, 96, 5, 6,  75, 5, 1, METAL),
X  #endif
X! ARMOR("scale mail", NULL,	1, 0, 0, 76, 5, 5, 120, 6, 0, METAL),
X  ARMOR("studded leather armor", NULL,
X! 					1, 0, 0, 76, 3, 3,  20, 7, 1, 0),
X  #ifdef TOLKIEN
X! ARMOR("ring mail", NULL,	1, 0, 0, 76, 5, 4, 100, 7, 0, METAL),
X  ARMOR("orcish ring mail", "black ring mail",
X! 					0, 0, 0, 20, 5, 5,  80, 8, 1, METAL),
X  #else
X! ARMOR("ring mail", NULL,	1, 0, 0, 96, 5, 4, 100, 7, 0, METAL),
X  #endif
X  ARMOR("leather armor", NULL,	1, 0, 0, 97, 3, 2,   5, 8, 0, 0),
X  
X  /*  'cope' is not a spelling mistake... leave it be */
X  ARMOR("mummy wrapping", NULL,
X! 				1, 0, 0,	     0, 0, 2,  2, 10, 2, 0),
X  #ifdef TOLKIEN
X  ARMOR("elven cloak", "ornamental cope",
X! 				0, 0, STEALTH,	    12, 0, 2, 60,  9, 3, 0),
X  ARMOR("orcish cloak", "black mantelet",
X! 				0, 0, 0,	    12, 0, 2, 40, 10, 3, 0),
X  ARMOR("dwarvish cloak", "colorful hooded cloak",
X! 				0, 0, 0,	    12, 0, 2, 50, 10, 3, 0),
X  #else
X  ARMOR("elven cloak", "ornamental cope",
X! 				0, 0, STEALTH,	    36, 0, 2, 60,  9, 3, 0),
X  #endif
X  ARMOR("cloak of protection", "tattered cape",
X! 				0, 0, PROTECTION,   12, 0, 2, 50,  7, 3, 0),
X  ARMOR("cloak of invisibility", "opera hood",
X! 				0, 0, INVIS,	    12, 0, 2, 60,  9, 3, 0),
X  ARMOR("cloak of magic resistance", "faded pall",
X! 				0, 0, ANTIMAGIC,     2, 0, 2, 60,  9, 3, 0),
X  ARMOR("cloak of displacement", "piece of cloth",
X! 				0, 0, DISPLACED,    12, 0, 2, 50,  9, 3, 0),
X  
X  #ifdef TOLKIEN
X  ARMOR("small shield", NULL,
X! 				1, 0, 0,	   6, 0, 2,  3,  9, 0, METAL),
X  ARMOR("elven shield", "blue and green shield",
X! 				0, 0, 0,	   2, 0, 2,  3,  8, 0, METAL),
X  ARMOR("Uruk-hai shield", "white-handed shield",
X! 				0, 0, 0,	   2, 0, 4,  3,  9, 0, METAL),
X  ARMOR("orcish shield", "red-eyed shield",
X! 				0, 0, 0,	   2, 0, 3,  3,  9, 0, METAL),
X  ARMOR("large shield", NULL,
X! 				1, 1, 0,	   7, 0, 4,  7,  8, 0, METAL),
X  ARMOR("dwarvish roundshield", "large round shield",
X! 				0, 0, 0,	   4, 0, 4,  7,  8, 0, METAL),
X  #else
X  ARMOR("small shield", NULL,
X! 				1, 0, 0,	  12, 0, 2,  3,  9, 0, METAL),
X  ARMOR("large shield", NULL,
X! 				1, 1, 0,	  11, 0, 4,  7,  8, 0, METAL),
X  #endif
X  ARMOR("shield of reflection", "polished silver shield",
X! 				0, 0, REFLECTING,  3, 0, 3, 50, 8, 0, SILVER),
X  
X  #ifdef SHIRT
X  ARMOR("Hawaiian shirt", NULL,	1, 0, 0, 10, 0, 2, 5, 10, 0, 0),
X***************
X*** 420,482 ****
X  #endif
X  
X  ARMOR("leather gloves", "old gloves",
X! 				0, 0, 0,	   16, 1, 2, 10, 9, 0, 0),
X  ARMOR("gauntlets of fumbling", "padded gloves",
X! 				0, 0, FUMBLING,    8, 1, 2, 10, 9, 0, 0),
X  ARMOR("gauntlets of power", "riding gloves",
X! 				0, 0, 0,	   8, 1, 2, 10, 9, 0, METAL),
X  ARMOR("gauntlets of dexterity", "fencing gloves",
X! 				0, 0, 0,	   8, 1, 2, 10, 9, 0, 0),
X  
X  ARMOR("low boots", "walking shoes",
X! 				0, 0, 0,	   25, 2, 3, 20, 9, 0, 0),
X  ARMOR("iron shoes", "hard shoes",
X! 				0, 0, 0,	    7, 2, 5, 20, 8, 0, METAL),
X  ARMOR("high boots", "jackboots",
X! 				0, 0, 0,	   15, 2, 4, 50, 8, 0, 0),
X  ARMOR("speed boots", "combat boots",
X! 				0, 0, FAST,	   12, 2, 4, 30, 9, 0, 0),
X  ARMOR("water walking boots", "jungle boots",
X! 				0, 0, WWALKING,    12, 2, 4, 30, 9, 0, 0),
X  ARMOR("jumping boots", "hiking boots",
X! 				0, 0, JUMPING,	   12, 2, 4, 30, 9, 0, 0),
X  ARMOR("elven boots", "mud boots",
X  				0, 0, STEALTH,	   12, 2, 3,  8, 9, 0, 0),
X  ARMOR("fumble boots", "riding boots",
X! 				0, 0, FUMBLING,    12, 2, 4, 15, 9, 0, 0),
X  ARMOR("levitation boots", "snow boots",
X! 				0, 0, LEVITATION,  12, 2, 4, 15, 9, 0, 0),
X  #undef ARMOR
X  
X! #define POTION(name,color,power,prob)	{ name, color, NULL, 0,1,0,0, power,\
X! 		POTION_SYM, prob, 0, 2, 100, 0, 0, 0 }
X  
X  #ifdef SPELLS
X! 	POTION("fruit juice",		"smoky",	0,	45),
X! 	POTION("booze", 		"bubbly",	0,	45),
X! 	POTION("gain energy",		"ebony", 	0,	45),
X  #else
X! 	POTION("fruit juice",		"smoky",	0,	70),
X! 	POTION("booze", 		"bubbly",	0,	65),
X! #endif
X! 	POTION("gain ability",		"swirly",	0,	45),
X! 	POTION("restore ability",	"pink",		0,	45),
X! 	POTION("sickness",		"ruby",		SICK,	45),
X! 	POTION("confusion",		"orange",	CONFUSION, 45),
X! 	POTION("blindness",		"yellow",	BLINDED, 45),
X! 	POTION("paralysis",		"emerald", 	0,	45),
X! 	POTION("speed", 		"dark green", 	FAST,	45),
X! 	POTION("levitation",		"cyan",		LEVITATION, 45),
X! 	POTION("hallucination", 	"brilliant blue", HALLUC, 45),
X! 	POTION("invisibility",		"sky blue",	INVIS,	45),
X! 	POTION("see invisible", 	"magenta",	SEE_INVIS, 45),
X! 	POTION("healing",		"purple", 	0,	65),
X! 	POTION("extra healing", 	"purple-red",	0,	50),
X! 	POTION("gain level",		"puce",	0,	20),
X! 	POTION("enlightenment",		"brown",	0,	20),
X! 	POTION("monster detection",	"white",	0,	45),
X! 	POTION("object detection",	"glowing",	0,	45),
X! 	POTION("water", 		"clear",	0,	125),
X  #undef POTION
X  
X  #define SCROLL(name,text,prob,cost) { name, text, NULL, 0,1,0,0, 0,\
X--- 424,486 ----
X  #endif
X  
X  ARMOR("leather gloves", "old gloves",
X! 				0, 0, 0,	   16, 1, 2, 8, 9, 0, 0),
X  ARMOR("gauntlets of fumbling", "padded gloves",
X! 				0, 0, FUMBLING,    8, 1, 2, 50, 9, 0, 0),
X  ARMOR("gauntlets of power", "riding gloves",
X! 				0, 0, 0,	   8, 1, 2, 50, 9, 0, METAL),
X  ARMOR("gauntlets of dexterity", "fencing gloves",
X! 				0, 0, 0,	   8, 1, 2, 50, 9, 0, 0),
X  
X  ARMOR("low boots", "walking shoes",
X! 				0, 0, 0,	   25, 2, 3,  8, 9, 0, 0),
X  ARMOR("iron shoes", "hard shoes",
X! 				0, 0, 0,	    7, 2, 5, 16, 8, 0, METAL),
X  ARMOR("high boots", "jackboots",
X! 				0, 0, 0,	   15, 2, 4, 12, 8, 0, 0),
X  ARMOR("speed boots", "combat boots",
X! 				0, 0, FAST,	   12, 2, 4, 50, 9, 0, 0),
X  ARMOR("water walking boots", "jungle boots",
X! 				0, 0, WWALKING,    12, 2, 4, 50, 9, 0, 0),
X  ARMOR("jumping boots", "hiking boots",
X! 				0, 0, JUMPING,	   12, 2, 4, 50, 9, 0, 0),
X  ARMOR("elven boots", "mud boots",
X  				0, 0, STEALTH,	   12, 2, 3,  8, 9, 0, 0),
X  ARMOR("fumble boots", "riding boots",
X! 				0, 0, FUMBLING,    12, 2, 4, 30, 9, 0, 0),
X  ARMOR("levitation boots", "snow boots",
X! 				0, 0, LEVITATION,  12, 2, 4, 30, 9, 0, 0),
X  #undef ARMOR
X  
X! #define POTION(name,color,power,prob,cost)	{ name, color, NULL, \
X! 		0,1,0,0, power, POTION_SYM, prob, 0, 2, cost, 0, 0, 0 }
X  
X  #ifdef SPELLS
X! 	POTION("fruit juice",		"smoky",	0,	45, 50),
X! 	POTION("booze", 		"bubbly",	0,	45, 50),
X! 	POTION("gain energy",		"ebony", 	0,	45, 150),
X  #else
X! 	POTION("fruit juice",		"smoky",	0,	70, 50),
X! 	POTION("booze", 		"bubbly",	0,	65, 50),
X! #endif
X! 	POTION("gain ability",		"swirly",	0,	45, 300),
X! 	POTION("restore ability",	"pink",		0,	45, 100),
X! 	POTION("sickness",		"ruby",		SICK,	45, 50),
X! 	POTION("confusion",		"orange",	CONFUSION, 45, 100),
X! 	POTION("blindness",		"yellow",	BLINDED, 45, 150),
X! 	POTION("paralysis",		"emerald", 	0,	45, 300),
X! 	POTION("speed", 		"dark green", 	FAST,	45, 200),
X! 	POTION("levitation",		"cyan",		LEVITATION, 45, 200),
X! 	POTION("hallucination", 	"brilliant blue", HALLUC, 45, 100),
X! 	POTION("invisibility",		"sky blue",	INVIS,	45, 150),
X! 	POTION("see invisible", 	"magenta",	SEE_INVIS, 45, 50),
X! 	POTION("healing",		"purple", 	0,	65, 100),
X! 	POTION("extra healing", 	"purple-red",	0,	50, 100),
X! 	POTION("gain level",		"puce",		0,	20, 300),
X! 	POTION("enlightenment",		"brown",	0,	20, 200),
X! 	POTION("monster detection",	"white",	0,	45, 150),
X! 	POTION("object detection",	"glowing",	0,	45, 150),
X! 	POTION("water", 		"clear",	0,	125, 100),
X  #undef POTION
X  
X  #define SCROLL(name,text,prob,cost) { name, text, NULL, 0,1,0,0, 0,\
X***************
X*** 488,499 ****
X  	SCROLL("destroy armor", 	"JUYED AWK YACC",   45, 100),
X  	SCROLL("confuse monster",	"NR 9", 	    53, 100),
X  	SCROLL("scare monster", 	"XIXAXA XOXAXA XUXAXA", 35, 100),
X! 	SCROLL("blank paper",		"READ ME",	    28,  80),
X  	SCROLL("remove curse",		"PRATYAVAYAH",	    65,  80),
X  	SCROLL("enchant weapon",	"DAIYEN FOOELS",    85,  60),
X! 	SCROLL("create monster",	"LEP GEX VEN ZEA",  45, 100),
X  	SCROLL("taming",		"PRIRUTSENIE",	    15, 200),
X! 	SCROLL("genocide",		"ELBIB YLOH",	    15, 200),
X  	SCROLL("light", 		"VERR YED HORRE",   95,  50),
X  	SCROLL("teleportation", 	"VENZAR BORGAVVE",  55, 100),
X  	SCROLL("gold detection",	"THARR",	    33, 100),
X--- 492,503 ----
X  	SCROLL("destroy armor", 	"JUYED AWK YACC",   45, 100),
X  	SCROLL("confuse monster",	"NR 9", 	    53, 100),
X  	SCROLL("scare monster", 	"XIXAXA XOXAXA XUXAXA", 35, 100),
X! 	SCROLL("blank paper",		"READ ME",	    28,  60),
X  	SCROLL("remove curse",		"PRATYAVAYAH",	    65,  80),
X  	SCROLL("enchant weapon",	"DAIYEN FOOELS",    85,  60),
X! 	SCROLL("create monster",	"LEP GEX VEN ZEA",  45, 200),
X  	SCROLL("taming",		"PRIRUTSENIE",	    15, 200),
X! 	SCROLL("genocide",		"ELBIB YLOH",	    15, 300),
X  	SCROLL("light", 		"VERR YED HORRE",   95,  50),
X  	SCROLL("teleportation", 	"VENZAR BORGAVVE",  55, 100),
X  	SCROLL("gold detection",	"THARR",	    33, 100),
X***************
X*** 500,509 ****
X  	SCROLL("food detection",	"YUM YUM",	    25, 100),
X  	SCROLL("identify",		"KERNOD WEL",	    185, 20),
X  	SCROLL("magic mapping", 	"ELAM EBOW",	    45, 100),
X! 	SCROLL("amnesia",		"DUAM XNAHT",	    35, 100),
X  	SCROLL("fire",			"ANDOVA BEGARIN",   48, 100),
X! 	SCROLL("punishment",		"VE FORBRYDERNE",   15, 200),
X! 	SCROLL("charging",		"HACKEM MUCHE",     15, 200),
X  	SCROLL(NULL,			"VELOX NEB",	     0, 100),
X  	SCROLL(NULL,			"FOOBIE BLETCH",     0, 100),
X  	SCROLL(NULL,			"TEMOV",	     0, 100),
X--- 504,513 ----
X  	SCROLL("food detection",	"YUM YUM",	    25, 100),
X  	SCROLL("identify",		"KERNOD WEL",	    185, 20),
X  	SCROLL("magic mapping", 	"ELAM EBOW",	    45, 100),
X! 	SCROLL("amnesia",		"DUAM XNAHT",	    35, 200),
X  	SCROLL("fire",			"ANDOVA BEGARIN",   48, 100),
X! 	SCROLL("punishment",		"VE FORBRYDERNE",   15, 300),
X! 	SCROLL("charging",		"HACKEM MUCHE",     15, 300),
X  	SCROLL(NULL,			"VELOX NEB",	     0, 100),
X  	SCROLL(NULL,			"FOOBIE BLETCH",     0, 100),
X  	SCROLL(NULL,			"TEMOV",	     0, 100),
X***************
X*** 521,535 ****
X  	WAND("nothing", 	"ebony",	25, 100, IMMEDIATE, WOOD),
X  	WAND("make invisible",	"marble",	45, 150, IMMEDIATE, MINERAL),
X  	WAND("slow monster",	"tin",		55, 150, IMMEDIATE, METAL),
X! 	WAND("speed monster",	"brass",	55, 150, IMMEDIATE, METAL),
X! 	WAND("undead turning",	"copper",	55, 150, IMMEDIATE, METAL),
X! 	WAND("polymorph",	"silver",	45, 200, IMMEDIATE, METAL),
X! 	WAND("cancellation",	"platinum",	45, 200, IMMEDIATE, METAL),
X  	WAND("teleportation",	"iridium", 	45, 200, IMMEDIATE, METAL),
X  #ifdef PROBING
X- 	WAND("probing", 	"uranium",	30, 150, IMMEDIATE, METAL),
X  	WAND("opening", 	"zinc",		25, 150, IMMEDIATE, METAL),
X  	WAND("locking", 	"aluminum",	25, 150, IMMEDIATE, METAL),
X  #else
X  	WAND("opening", 	"zinc",		40, 150, IMMEDIATE, METAL),
X  	WAND("locking", 	"aluminum",	40, 150, IMMEDIATE, METAL),
X--- 525,539 ----
X  	WAND("nothing", 	"ebony",	25, 100, IMMEDIATE, WOOD),
X  	WAND("make invisible",	"marble",	45, 150, IMMEDIATE, MINERAL),
X  	WAND("slow monster",	"tin",		55, 150, IMMEDIATE, METAL),
X! 	WAND("speed monster",	"brass",	55, 150, IMMEDIATE, COPPER),
X! 	WAND("undead turning",	"copper",	55, 150, IMMEDIATE, COPPER),
X! 	WAND("polymorph",	"silver",	45, 200, IMMEDIATE, SILVER),
X! 	WAND("cancellation",	"platinum",	45, 200, IMMEDIATE, PLATINUM),
X  	WAND("teleportation",	"iridium", 	45, 200, IMMEDIATE, METAL),
X  #ifdef PROBING
X  	WAND("opening", 	"zinc",		25, 150, IMMEDIATE, METAL),
X  	WAND("locking", 	"aluminum",	25, 150, IMMEDIATE, METAL),
X+ 	WAND("probing", 	"uranium",	30, 150, IMMEDIATE, METAL),
X  #else
X  	WAND("opening", 	"zinc",		40, 150, IMMEDIATE, METAL),
X  	WAND("locking", 	"aluminum",	40, 150, IMMEDIATE, METAL),
X***************
X*** 594,628 ****
X  #undef SPELL
X  #endif /* SPELLS /**/
X  
X! #define RING(name,stone,power,spec,metal) { name, stone, NULL, 0,0,spec,metal,\
X! 		power, RING_SYM, 0, 0, 1, 100, spec, 0, 0 }
X  
X! 	RING("adornment",	"wooden",	ADORNED,	1, WOOD),
X! 	RING("gain strength",	"granite",	0,		1, MINERAL),
X! 	RING("increase damage", "hematite",	0,		1, MINERAL),
X! 	RING("protection",	"black onyx",	PROTECTION,	1, MINERAL),
X! 	RING("regeneration",	"moonstone",	REGENERATION,	0, MINERAL),
X! 	RING("searching",	"tiger eye",	SEARCHING,	0, MINERAL),
X! 	RING("stealth", 	"jade",		STEALTH,	0, MINERAL),
X! 	RING("levitation",	"agate",	LEVITATION,	0, MINERAL),
X! 	RING("hunger",		"topaz",	HUNGER, 	0, MINERAL),
X! 	RING("aggravate monster", "sapphire",	AGGRAVATE_MONSTER, 0, METAL),
X! 	RING("conflict",	"ruby", 	CONFLICT,	0, METAL),
X! 	RING("warning", 	"diamond", 	WARNING,	0, METAL),
X! 	RING("poison resistance", "pearl",	POISON_RES,	0, METAL),
X! 	RING("fire resistance", "iron",		FIRE_RES,	0, METAL),
X! 	RING("cold resistance", "brass",	COLD_RES,	0, METAL),
X! 	RING("shock resistance", "copper",	SHOCK_RES,	0, METAL),
X! 	RING("teleportation",	"silver",	TELEPORT,	0, METAL),
X! 	RING("teleport control", "gold",	TELEPORT_CONTROL, 0, METAL),
X  #ifdef POLYSELF
X! 	RING("polymorph",	"ivory",	POLYMORPH,	0, 0),
X! 	RING("polymorph control","blackened",	POLYMORPH_CONTROL, 0, METAL),
X  #endif
X! 	RING("invisibility",	"wire",	INVIS,		0, METAL),
X! 	RING("see invisible",	"engagement",	SEE_INVIS,	0, METAL),
X  	RING("protection from shape changers", "shining",
X! 					PROT_FROM_SHAPE_CHANGERS, 0, METAL),
X  #undef RING
X  
X  /* gems ************************************************************/
X--- 598,632 ----
X  #undef SPELL
X  #endif /* SPELLS /**/
X  
X! #define RING(name,stone,power,cost,spec,metal) { name, stone, NULL, \
X! 		0,0,spec,metal, power, RING_SYM, 0, 0, 1, cost, spec, 0, 0 }
X  
X! 	RING("adornment",	"wooden",	ADORNED,	100, 1, WOOD),
X! 	RING("gain strength",	"granite",	0,		150, 1, MINERAL),
X! 	RING("increase damage", "hematite",	0,		150, 1, MINERAL),
X! 	RING("protection",	"black onyx",	PROTECTION,	100, 1, MINERAL),
X! 	RING("regeneration",	"moonstone",	REGENERATION,	200, 0, MINERAL),
X! 	RING("searching",	"tiger eye",	SEARCHING,	200, 0, MINERAL),
X! 	RING("stealth", 	"jade",		STEALTH,	100, 0, MINERAL),
X! 	RING("levitation",	"agate",	LEVITATION,	200, 0, MINERAL),
X! 	RING("hunger",		"topaz",	HUNGER, 	100, 0, MINERAL),
X! 	RING("aggravate monster", "sapphire",	AGGRAVATE_MONSTER, 150, 0, METAL),
X! 	RING("conflict",	"ruby", 	CONFLICT,	300, 0, METAL),
X! 	RING("warning", 	"diamond", 	WARNING,	100, 0, METAL),
X! 	RING("poison resistance", "pearl",	POISON_RES,	150, 0, METAL),
X! 	RING("fire resistance", "iron",		FIRE_RES,	200, 0, METAL),
X! 	RING("cold resistance", "brass",	COLD_RES,	150, 0, COPPER),
X! 	RING("shock resistance", "copper",	SHOCK_RES,	150, 0, COPPER),
X! 	RING("teleportation",	"silver",	TELEPORT,	200, 0, SILVER),
X! 	RING("teleport control", "gold",	TELEPORT_CONTROL, 300, 0, GOLD),
X  #ifdef POLYSELF
X! 	RING("polymorph",	"ivory",	POLYMORPH,	300, 0, 0),
X! 	RING("polymorph control","blackened",	POLYMORPH_CONTROL, 300, 0, METAL),
X  #endif
X! 	RING("invisibility",	"wire",		INVIS,		150, 0, METAL),
X! 	RING("see invisible",	"engagement",	SEE_INVIS,	150, 0, METAL),
X  	RING("protection from shape changers", "shining",
X! 					PROT_FROM_SHAPE_CHANGERS, 100, 0, METAL),
X  #undef RING
X  
X  /* gems ************************************************************/
X
END_OF_FILE
if test 44912 -ne `wc -c <'patch03d'`; then
    echo shar: \"'patch03d'\" unpacked with wrong size!
fi
# end of 'patch03d'
fi
echo shar: End of archive 4 \(of 6\).
cp /dev/null ark4isdone
MISSING=""
for I in 1 2 3 4 5 6 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 6 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0