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

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

Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
Posting-number: Volume 8, Issue 11
Archive-name: NetHack3/Patch2f
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 6 (of 7)."
# Contents:  patch02f
# Wrapped by billr@saab on Fri Aug 18 08:44:39 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patch02f' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patch02f'\"
else
echo shar: Extracting \"'patch02f'\" \(57076 characters\)
sed "s/^X//" >'patch02f' <<'END_OF_FILE'
X*** src/Old/monst.c	Wed Aug 16 12:31:28 1989
X--- src/monst.c	Thu Aug 10 20:43:03 1989
X***************
X*** 606,655 ****
X  	{ "grey dragon", S_DRAGON, 10, 9, -1, 20, 4, (G_GENO | 1),
X  	  { { AT_BREA, AD_MAGM, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
X! 	  M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "red dragon", S_DRAGON, 10, 9, -1, 20, -4, (G_GENO | 1),
X  	  { { AT_BREA, AD_FIRE, 6, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
X! 	  M1_FIRE_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "orange dragon", S_DRAGON, 10, 9, -1, 20, 5, (G_GENO | 1),
X  	  { { AT_BREA, AD_SLEE, 4, 25 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
X! 	  M1_SLEE_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "white dragon", S_DRAGON, 10, 9, -1, 20, -5, (G_GENO | 1),
X  	  { { AT_BREA, AD_COLD, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
X! 	  M1_COLD_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "black dragon", S_DRAGON, 10, 9, -1, 20, -6, (G_GENO | 1),
X  	  { { AT_BREA, AD_DISN, 4, 10 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
X! 	  M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "blue dragon", S_DRAGON, 10, 9, -1, 20, -7, (G_GENO | 1),
X  	  { { AT_BREA, AD_ELEC, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
X! 	  M1_ELEC_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "green dragon", S_DRAGON, 10, 9, -1, 20, 6, (G_GENO | 1),
X  	  { { AT_BREA, AD_DRST, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
X! 	  M1_POIS | M1_POIS_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "yellow dragon", S_DRAGON, 10, 9, -1, 20, 7, (G_GENO | 1),
X  	  { { AT_BREA, AD_ACID, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_NOHANDS | M1_EGGS |
X! 	  M1_POIS | M1_STON_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  /*	Elementals	*/
X  	{ "air elemental", S_ELEMENTAL, 8, 36, 2, 30, 0, (G_NOCORPSE | 1),
X--- 606,655 ----
X  	{ "grey dragon", S_DRAGON, 10, 9, -1, 20, 4, (G_GENO | 1),
X  	  { { AT_BREA, AD_MAGM, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
X! 	  M1_EGGS | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "red dragon", S_DRAGON, 10, 9, -1, 20, -4, (G_GENO | 1),
X  	  { { AT_BREA, AD_FIRE, 6, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
X! 	  M1_EGGS | M1_FIRE_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "orange dragon", S_DRAGON, 10, 9, -1, 20, 5, (G_GENO | 1),
X  	  { { AT_BREA, AD_SLEE, 4, 25 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
X! 	  M1_EGGS | M1_SLEE_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "white dragon", S_DRAGON, 10, 9, -1, 20, -5, (G_GENO | 1),
X  	  { { AT_BREA, AD_COLD, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
X! 	  M1_EGGS | M1_COLD_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "black dragon", S_DRAGON, 10, 9, -1, 20, -6, (G_GENO | 1),
X  	  { { AT_BREA, AD_DISN, 4, 10 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
X! 	  M1_EGGS | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "blue dragon", S_DRAGON, 10, 9, -1, 20, -7, (G_GENO | 1),
X  	  { { AT_BREA, AD_ELEC, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
X! 	  M1_EGGS | M1_ELEC_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "green dragon", S_DRAGON, 10, 9, -1, 20, 6, (G_GENO | 1),
X  	  { { AT_BREA, AD_DRST, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
X! 	  M1_EGGS | M1_POIS | M1_POIS_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  	{ "yellow dragon", S_DRAGON, 10, 9, -1, 20, 7, (G_GENO | 1),
X  	  { { AT_BREA, AD_ACID, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
X  	    { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
X! 	  150, 1500, 0, MS_ROAR, M1_BIG | M1_FLY | M1_SEE_INVIS | M1_NOHANDS |
X! 	  M1_EGGS | M1_POIS | M1_STON_RES | M1_GREEDY | M1_JEWELS | M1_MAGIC,
X  	  M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_THICK_HIDE },
X  /*	Elementals	*/
X  	{ "air elemental", S_ELEMENTAL, 8, 36, 2, 30, 0, (G_NOCORPSE | 1),
X***************
X*** 1006,1012 ****
X  	  { { AT_WEAP, AD_DRLI, 1, 4 }, { AT_BREA, AD_SLEE, 0, 0 },
X  	    NO_ATTK, NO_ATTK, NO_ATTK }, 30, 0, 0, MS_SILENT,
X  	  M1_HUMANOID | M1_UNDEAD | M1_POIS_RES | M1_STALK | M1_COLLECT, 
X! 	  M2_STRONG },
X  #endif
X  /*	Xorn	*/
X  	{ "xorn", S_XORN, 8, 9,-2, 20, 0, (G_GENO | 1),
X--- 1006,1012 ----
X  	  { { AT_WEAP, AD_DRLI, 1, 4 }, { AT_BREA, AD_SLEE, 0, 0 },
X  	    NO_ATTK, NO_ATTK, NO_ATTK }, 30, 0, 0, MS_SILENT,
X  	  M1_HUMANOID | M1_UNDEAD | M1_POIS_RES | M1_STALK | M1_COLLECT, 
X! 	  M2_STRONG | M2_HOSTILE },
X  #endif
X  /*	Xorn	*/
X  	{ "xorn", S_XORN, 8, 9,-2, 20, 0, (G_GENO | 1),
X***************
X*** 1215,1222 ****
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_WEAP, AD_PHYS, 1, 8 }, { AT_TUCH, AD_PLYS, 1, 8 },
X  	    NO_ATTK, NO_ATTK, NO_ATTK }, 45, 400, PL_NSIZ, MS_FERRY,
X! 	  M1_NOPOLY | M1_HUMANOID | M1_POIS_RES | M1_FIRE_RES | M1_COLLECT,
X! 	  M2_HUMAN | M2_PEACEFUL },
X  #endif
X  /*	Ghost		*/
X  	{ "ghost", S_GHOST, 10, 3, -5, 50, -5, (G_NOCORPSE | G_NOGEN),
X--- 1215,1222 ----
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_WEAP, AD_PHYS, 1, 8 }, { AT_TUCH, AD_PLYS, 1, 8 },
X  	    NO_ATTK, NO_ATTK, NO_ATTK }, 45, 400, PL_NSIZ, MS_FERRY,
X! 	  M1_NOPOLY | M1_SEE_INVIS | M1_HUMANOID | M1_POIS_RES | M1_FIRE_RES |
X! 	  M1_COLLECT, M2_HUMAN | M2_PEACEFUL },
X  #endif
X  /*	Ghost		*/
X  	{ "ghost", S_GHOST, 10, 3, -5, 50, -5, (G_NOCORPSE | G_NOGEN),
X***************
X*** 1275,1282 ****
X  	  { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
X  	    { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
X  	    { AT_WEAP, AD_PHYS, 2, 4 }, }, 45, 450, 0, MS_SILENT, M1_HUMANOID |
X! 	  M1_POIS | M1_FIRE_RES | M1_STALK | M1_COLLECT | M1_FEM,
X! 	  M2_DEMON | M2_HOSTILE | M2_NASTY },
X  	{ "barbed devil", S_DEMON, 8, 12, 0, 35, 8,
X  	  (G_HELL | G_NOCORPSE | G_SGROUP | 2),
X  	  { { AT_CLAW, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 2, 4 },
X--- 1275,1282 ----
X  	  { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
X  	    { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
X  	    { AT_WEAP, AD_PHYS, 2, 4 }, }, 45, 450, 0, MS_SILENT, M1_HUMANOID |
X! 	  M1_SEE_INVIS | M1_POIS | M1_FIRE_RES | M1_STALK | M1_COLLECT |
X! 	  M1_FEM, M2_DEMON | M2_HOSTILE | M2_NASTY },
X  	{ "barbed devil", S_DEMON, 8, 12, 0, 35, 8,
X  	  (G_HELL | G_NOCORPSE | G_SGROUP | 2),
X  	  { { AT_CLAW, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 2, 4 },
X***************
X*** 1310,1340 ****
X  	{ "ice devil", S_DEMON, 11, 6, -4, 55, -12, (G_HELL | G_NOCORPSE | 2),
X  	  { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
X  	    { AT_BITE, AD_PHYS, 2, 4 }, { AT_STNG, AD_COLD, 3, 4 }, NO_ATTK },
X! 	  45, 450, 0, MS_SILENT, M1_POIS | M1_FIRE_RES | M1_COLD_RES | M1_STALK,
X! 	  M2_DEMON | M2_HOSTILE | M2_NASTY },
X  	{ "pit fiend", S_DEMON, 13, 6, -3, 65, -13, (G_HELL | G_NOCORPSE | 2),
X  	  { { AT_WEAP, AD_PHYS, 4, 2 }, { AT_WEAP, AD_PHYS, 4, 2 },
X  	    { AT_HUGS, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK }, 45, 450, 0,
X! 	  MS_GROWL, M1_POIS | M1_FIRE_RES | M1_STALK | M1_COLLECT,
X! 	  M2_DEMON | M2_HOSTILE | M2_NASTY },
X  	{ "balrog", S_DEMON, 16, 5, -2, 75, -14, (G_HELL | G_NOCORPSE | 1),
X  	  { { AT_WEAP, AD_PHYS, 8, 4 }, { AT_WEAP, AD_PHYS, 4, 6 },
X! 	    NO_ATTK, NO_ATTK, NO_ATTK },
X! 	  45, 450, 0, MS_SILENT, M1_FLY | M1_BIG | M1_COLLECT | M1_STALK |
X! 	  M1_POIS | M1_FIRE_RES, M2_DEMON | M2_HOSTILE | M2_STRONG | M2_NASTY },
X  	/* Named demon lords & princes plus Arch-Devils */
X  	{ "Juiblex", S_DEMON, 50, 3, -7, 65, -15,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_ENGL, AD_DISE, 4, 10 }, { AT_SPIT, AD_ACID, 3, 6 },
X  	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_GURGLE,
X! 	  M1_NOPOLY | M1_FLY | M1_NOHANDS | M1_POIS | M1_FIRE_RES | M1_STALK |
X! 	  M1_LORD, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_AMORPHOUS },
X  	{ "Yeenoghu", S_DEMON, 56, 18, -5, 80, -15,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_WEAP, AD_PHYS, 3, 6 }, { AT_WEAP, AD_CONF, 2, 8 },
X  	    { AT_WEAP, AD_PLYS, 1, 6 }, { AT_MAGC, AD_MAGM, 2, 6 }, NO_ATTK },
X! 	  50, 500, PL_NSIZ, MS_ORC, M1_NOPOLY | M1_FLY | M1_POIS |
X! 	  M1_FIRE_RES | M1_STALK | M1_COLLECT | M1_LORD,
X  	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
X  	{ "Orcus", S_DEMON, 66, 9, -6, 85, -20,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X--- 1310,1341 ----
X  	{ "ice devil", S_DEMON, 11, 6, -4, 55, -12, (G_HELL | G_NOCORPSE | 2),
X  	  { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
X  	    { AT_BITE, AD_PHYS, 2, 4 }, { AT_STNG, AD_COLD, 3, 4 }, NO_ATTK },
X! 	  45, 450, 0, MS_SILENT, M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
X! 	  M1_COLD_RES | M1_STALK, M2_DEMON | M2_HOSTILE | M2_NASTY },
X  	{ "pit fiend", S_DEMON, 13, 6, -3, 65, -13, (G_HELL | G_NOCORPSE | 2),
X  	  { { AT_WEAP, AD_PHYS, 4, 2 }, { AT_WEAP, AD_PHYS, 4, 2 },
X  	    { AT_HUGS, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK }, 45, 450, 0,
X! 	  MS_GROWL, M1_SEE_INVIS | M1_POIS | M1_FIRE_RES | M1_STALK |
X! 	  M1_COLLECT, M2_DEMON | M2_HOSTILE | M2_NASTY },
X  	{ "balrog", S_DEMON, 16, 5, -2, 75, -14, (G_HELL | G_NOCORPSE | 1),
X  	  { { AT_WEAP, AD_PHYS, 8, 4 }, { AT_WEAP, AD_PHYS, 4, 6 },
X! 	    NO_ATTK, NO_ATTK, NO_ATTK }, 45, 450, 0, MS_SILENT,
X! 	  M1_FLY | M1_BIG | M1_SEE_INVIS | M1_COLLECT | M1_STALK | M1_POIS |
X! 	  M1_FIRE_RES, M2_DEMON | M2_HOSTILE | M2_STRONG | M2_NASTY },
X  	/* Named demon lords & princes plus Arch-Devils */
X  	{ "Juiblex", S_DEMON, 50, 3, -7, 65, -15,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_ENGL, AD_DISE, 4, 10 }, { AT_SPIT, AD_ACID, 3, 6 },
X  	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_GURGLE,
X! 	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_NOHANDS | M1_POIS |
X! 	  M1_FIRE_RES | M1_STALK | M1_LORD,
X! 	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY | M2_AMORPHOUS },
X  	{ "Yeenoghu", S_DEMON, 56, 18, -5, 80, -15,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_WEAP, AD_PHYS, 3, 6 }, { AT_WEAP, AD_CONF, 2, 8 },
X  	    { AT_WEAP, AD_PLYS, 1, 6 }, { AT_MAGC, AD_MAGM, 2, 6 }, NO_ATTK },
X! 	  50, 500, PL_NSIZ, MS_ORC, M1_NOPOLY | M1_FLY | M1_SEE_INVIS |
X! 	  M1_POIS | M1_FIRE_RES | M1_STALK | M1_COLLECT | M1_LORD,
X  	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
X  	{ "Orcus", S_DEMON, 66, 9, -6, 85, -20,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X***************
X*** 1341,1372 ****
X  	  { { AT_MAGC, AD_SPEL, 8, 6 }, { AT_WEAP, AD_PHYS, 3, 6 },
X  	    { AT_CLAW, AD_PHYS, 3, 4 }, { AT_CLAW, AD_PHYS, 3, 4 },
X  	    { AT_STNG, AD_DRST, 2, 4 }, }, 50, 500, PL_NSIZ, MS_ORC,
X! 	  M1_NOPOLY | M1_FLY | M1_POIS | M1_FIRE_RES | M1_STALK |
X! 	  M1_COLLECT | M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
X  	{ "Geryon", S_DEMON, 72, 3, -3, 75, 15,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_CLAW, AD_PHYS, 3, 6 }, { AT_CLAW, AD_PHYS, 3, 6 },
X  	    { AT_STNG, AD_DRST, 2, 4 }, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ,
X! 	  MS_JEER, M1_NOPOLY | M1_FLY | M1_POIS | M1_FIRE_RES |
X  	  M1_STALK | M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
X  	{ "Dispater", S_DEMON, 78, 15, -2, 80, 15,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_WEAP, AD_PHYS, 4, 6 }, { AT_MAGC, AD_SPEL, 6, 6 },
X  	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_JEER,
X! 	  M1_NOPOLY | M1_FLY | M1_HUMANOID | M1_POIS |
X  	  M1_FIRE_RES | M1_STALK | M1_COLLECT | M1_PRINCE,
X  	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
X! 	{ "Baalzebul", S_DEMON, 89, 9, -5, 85, 20,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_BITE, AD_DRST, 2, 6 }, { AT_GAZE, AD_STUN, 2, 6 },
X  	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_JEER,
X! 	  M1_NOPOLY | M1_FLY | M1_POIS | M1_FIRE_RES | M1_STALK |
X! 	  M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
X  	{ "Asmodeus", S_DEMON, 105, 12, -7, 90, 20,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_CLAW, AD_PHYS, 4, 4 }, { AT_MAGC, AD_COLD, 6, 6 },
X  	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_JEER,
X! 	  M1_NOPOLY | M1_FLY | M1_HUMANOID | M1_POIS |
X  	  M1_FIRE_RES | M1_COLD_RES | M1_STALK | M1_PRINCE,
X  	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY },
X  	{ "Demogorgon", S_DEMON, 106, 15, -8, 95, -20,
X--- 1342,1374 ----
X  	  { { AT_MAGC, AD_SPEL, 8, 6 }, { AT_WEAP, AD_PHYS, 3, 6 },
X  	    { AT_CLAW, AD_PHYS, 3, 4 }, { AT_CLAW, AD_PHYS, 3, 4 },
X  	    { AT_STNG, AD_DRST, 2, 4 }, }, 50, 500, PL_NSIZ, MS_ORC,
X! 	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
X! 	  M1_STALK | M1_COLLECT | M1_PRINCE,
X! 	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
X  	{ "Geryon", S_DEMON, 72, 3, -3, 75, 15,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_CLAW, AD_PHYS, 3, 6 }, { AT_CLAW, AD_PHYS, 3, 6 },
X  	    { AT_STNG, AD_DRST, 2, 4 }, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ,
X! 	  MS_JEER, M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
X  	  M1_STALK | M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
X  	{ "Dispater", S_DEMON, 78, 15, -2, 80, 15,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_WEAP, AD_PHYS, 4, 6 }, { AT_MAGC, AD_SPEL, 6, 6 },
X  	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_JEER,
X! 	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_HUMANOID | M1_POIS |
X  	  M1_FIRE_RES | M1_STALK | M1_COLLECT | M1_PRINCE,
X  	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
X! 	{ "Baalzebub", S_DEMON, 89, 9, -5, 85, 20,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_BITE, AD_DRST, 2, 6 }, { AT_GAZE, AD_STUN, 2, 6 },
X  	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_JEER,
X! 	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_POIS | M1_FIRE_RES |
X! 	  M1_STALK | M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
X  	{ "Asmodeus", S_DEMON, 105, 12, -7, 90, 20,
X  	  (G_HELL | G_NOCORPSE | G_NOGEN | G_UNIQ),
X  	  { { AT_CLAW, AD_PHYS, 4, 4 }, { AT_MAGC, AD_COLD, 6, 6 },
X  	    NO_ATTK, NO_ATTK, NO_ATTK }, 50, 500, PL_NSIZ, MS_JEER,
X! 	  M1_NOPOLY | M1_FLY | M1_SEE_INVIS | M1_HUMANOID | M1_POIS |
X  	  M1_FIRE_RES | M1_COLD_RES | M1_STALK | M1_PRINCE,
X  	  M2_DEMON | M2_HOSTILE | M2_PNAME | M2_STRONG | M2_NASTY },
X  	{ "Demogorgon", S_DEMON, 106, 15, -8, 95, -20,
X***************
X*** 1374,1387 ****
X  	  { { AT_MAGC, AD_SPEL, 8, 6 }, { AT_STNG, AD_DRLI, 1, 4 },
X  	    { AT_CLAW, AD_DISE, 1, 6 }, { AT_CLAW, AD_DISE, 1, 6 },
X  	    NO_ATTK }, 50, 500, PL_NSIZ, MS_GROWL, M1_NOPOLY | M1_FLY |
X! 	  M1_NOHANDS | M1_POIS | M1_FIRE_RES | M1_STALK |
X  	  M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
X  #endif
X  #ifdef MAIL
X  	{ "mail daemon", S_DEMON, 56, 24, 10, 127, 0, (G_NOGEN | G_NOCORPSE),
X  	  { NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0,
X! 	  MS_SILENT, M1_NOPOLY | M1_FLY | M1_SWIM | M1_HUMANOID | M1_POIS |
X! 	  M1_FIRE_RES | M1_COLD_RES | M1_SLEE_RES | M1_STALK, M2_PEACEFUL },
X  /* Neither rain nor sleet nor gloom of night shall stay this courier... */
X  #endif
X  	{ "djinni", S_DEMON, 7, 12, 4, 30, 0, (G_NOGEN | G_NOCORPSE),
X--- 1376,1390 ----
X  	  { { AT_MAGC, AD_SPEL, 8, 6 }, { AT_STNG, AD_DRLI, 1, 4 },
X  	    { AT_CLAW, AD_DISE, 1, 6 }, { AT_CLAW, AD_DISE, 1, 6 },
X  	    NO_ATTK }, 50, 500, PL_NSIZ, MS_GROWL, M1_NOPOLY | M1_FLY |
X! 	  M1_SEE_INVIS | M1_NOHANDS | M1_POIS | M1_FIRE_RES | M1_STALK |
X  	  M1_PRINCE, M2_DEMON | M2_HOSTILE | M2_PNAME | M2_NASTY },
X  #endif
X  #ifdef MAIL
X  	{ "mail daemon", S_DEMON, 56, 24, 10, 127, 0, (G_NOGEN | G_NOCORPSE),
X  	  { NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0,
X! 	  MS_SILENT, M1_NOPOLY | M1_FLY | M1_SWIM | M1_SEE_INVIS |
X! 	  M1_HUMANOID | M1_POIS | M1_FIRE_RES | M1_COLD_RES | M1_SLEE_RES |
X! 	  M1_STALK, M2_PEACEFUL },
X  /* Neither rain nor sleet nor gloom of night shall stay this courier... */
X  #endif
X  	{ "djinni", S_DEMON, 7, 12, 4, 30, 0, (G_NOGEN | G_NOCORPSE),
X*** src/Old/music.c	Wed Aug 16 12:32:59 1989
X--- src/music.c	Thu Aug 10 10:25:43 1989
X***************
X*** 135,147 ****
X  charm_monsters(distance)
X  int distance;
X  {
X! 	register struct monst *mtmp = fmon;
X  
X  	while(mtmp) {
X  		if(dist(mtmp->mx, mtmp->my) <= distance)
X  		    if(!resist(mtmp, SCROLL_SYM, 0, NOTELL))
X  			(void) tamedog(mtmp, (struct obj *) 0);
X! 		mtmp = mtmp->nmon;
X  	}
X  
X  }
X--- 135,148 ----
X  charm_monsters(distance)
X  int distance;
X  {
X! 	register struct monst *mtmp = fmon, *mtmp2;
X  
X  	while(mtmp) {
X+ 		mtmp2 = mtmp->nmon;
X  		if(dist(mtmp->mx, mtmp->my) <= distance)
X  		    if(!resist(mtmp, SCROLL_SYM, 0, NOTELL))
X  			(void) tamedog(mtmp, (struct obj *) 0);
X! 		mtmp = mtmp2;
X  	}
X  
X  }
X*** src/Old/objects.c	Wed Aug 16 12:33:34 1989
X--- src/objects.c	Mon Aug  7 20:34:06 1989
X***************
X*** 58,70 ****
X  	FOOD("pear",		     7, 0, 1, 0,  50),
X  	FOOD("melon",		     7, 0, 1, 0, 100),
X  	FOOD("banana",		     7, 0, 1, 0,  80),
X  #ifdef TUTTI_FRUTTI
X  	FOOD("slime mold",	    75, 0, 1, 0, 250),
X  #else
X  	FOOD("slice of pizza",	    75, 0, 1, 0, 250),
X  #endif
X- 	FOOD("carrot",		    15, 0, 1, 0,  50),
X- 	FOOD("clove of garlic",      5, 0, 1, 0,  40),
X  	/* human food */
X  	FOOD("lump of royal jelly",  0, 0, 1, 0, 200),
X  	FOOD("cream pie",	    25, 0, 1, 0, 100),
X--- 58,70 ----
X  	FOOD("pear",		     7, 0, 1, 0,  50),
X  	FOOD("melon",		     7, 0, 1, 0, 100),
X  	FOOD("banana",		     7, 0, 1, 0,  80),
X+ 	FOOD("carrot",		    15, 0, 1, 0,  50),
X+ 	FOOD("clove of garlic",      5, 0, 1, 0,  40),
X  #ifdef TUTTI_FRUTTI
X  	FOOD("slime mold",	    75, 0, 1, 0, 250),
X  #else
X  	FOOD("slice of pizza",	    75, 0, 1, 0, 250),
X  #endif
X  	/* human food */
X  	FOOD("lump of royal jelly",  0, 0, 1, 0, 200),
X  	FOOD("cream pie",	    25, 0, 1, 0, 100),
X*** src/Old/objnam.c	Wed Aug 16 12:34:11 1989
X--- src/objnam.c	Tue Aug 15 20:05:30 1989
X***************
X*** 633,639 ****
X  	Strcpy(str, oldstr);
X  
X  	/* Search for common compounds, i.e. lump of royal jelly */
X! 	for(excess=0, spot=str; *spot; spot++) {
X  		if (!strncmp(spot, " of ", 4)
X  				|| !strncmp(spot, " labeled ", 9)
X  				|| !strncmp(spot, " called ", 8)
X--- 633,639 ----
X  	Strcpy(str, oldstr);
X  
X  	/* Search for common compounds, i.e. lump of royal jelly */
X! 	for(excess=(char *)0, spot=str; *spot; spot++) {
X  		if (!strncmp(spot, " of ", 4)
X  				|| !strncmp(spot, " labeled ", 9)
X  				|| !strncmp(spot, " called ", 8)
X***************
X*** 651,657 ****
X  				|| !strncmp(spot, " du ", 4)
X  #endif
X  				) {
X! 			excess = oldstr + (spot - str);
X  			*spot = 0;
X  			break;
X  		}
X--- 651,657 ----
X  				|| !strncmp(spot, " du ", 4)
X  #endif
X  				) {
X! 			excess = oldstr + (int) (spot - str);
X  			*spot = 0;
X  			break;
X  		}
X***************
X*** 1102,1108 ****
X  		goto typfnd;
X  	}
X  #endif
X! 	if (strlen(bp) == 1 && index(obj_symbols, *bp)) {
X  		let = *bp;
X  		goto any;
X  	}
X--- 1102,1108 ----
X  		goto typfnd;
X  	}
X  #endif
X! 	if (strlen(bp) == 1 && index(obj_symbols, *bp) && *bp != ILLOBJ_SYM) {
X  		let = *bp;
X  		goto any;
X  	}
X***************
X*** 1374,1379 ****
X--- 1374,1383 ----
X  	} else if (spesgn < 0) {
X  		curse(otmp);
X  	}
X+ 
X+ 	/* prevent wishing abuse */
X+ 	if (otmp->otyp == WAN_WISHING || otmp->otyp == MAGIC_LAMP)
X+ 		otmp->recharged = 1;
X  
X  	/* set poisoned */
X  	if (ispoisoned) {
X*** src/Old/options.c	Wed Aug 16 12:34:52 1989
X--- src/options.c	Fri Aug  4 12:13:24 1989
X***************
X*** 674,681 ****
X  		    (!strncmp(buf, "tin of ", 7) && name_to_mon(buf+7) > -1) ||
X  		    !strcmp(buf, "empty tin") ||
X  		    !strcmp(buf, "tin of spinach") ||
X! 		    ((!strncmp(eos(buf)-6," corpse",6) ||
X! 						!strncmp(eos(buf)-3, " egg",3))
X  			&& name_to_mon(buf) > -1))
X  			{
X  				Strcpy(buf, pl_fruit);
X--- 674,681 ----
X  		    (!strncmp(buf, "tin of ", 7) && name_to_mon(buf+7) > -1) ||
X  		    !strcmp(buf, "empty tin") ||
X  		    !strcmp(buf, "tin of spinach") ||
X! 		    ((!strncmp(eos(buf)-6," corpse",7) ||
X! 						!strncmp(eos(buf)-3, " egg",4))
X  			&& name_to_mon(buf) > -1))
X  			{
X  				Strcpy(buf, pl_fruit);
X*** src/Old/pager.c	Wed Aug 16 12:35:16 1989
X--- src/pager.c	Wed Aug 16 10:48:06 1989
X***************
X*** 21,26 ****
X--- 21,29 ----
X  
X  static void page_more();
X  
X+ const char nonlets[] = { S_EEL, S_CHAMELEON, S_DEMON, S_GHOST, S_HUMAN,
X+ 	S_GOLEM, 0 };
X+ 
X  int
X  dowhatis()
X  {
X***************
X*** 28,90 ****
X  	char bufr[BUFSZ+6];
X  	register char *buf = &bufr[6], *ep, q;
X  	register struct monst *mtmp;
X  
X  	if(!(fp = fopen(DATAFILE, "r")))
X  		pline("Cannot open data file!");
X  	else {
X  		coord	cc;
X  		uchar	r;
X  
X  		pline ("Specify unknown object by cursor? ");
X  		q = ynq();
X- 		cc.x = cc.y = -1;
X  		if (q == 'q') {
X  			(void) fclose(fp);
X  			return 0;
X  		} else if (q == 'n') {
X  			pline("Specify what? ");
X  			r = readchar();
X  		} else {
X  		    if(flags.verbose)
X! 			pline("Please move the cursor to the unknown object.");
X! 		    getpos(&cc, TRUE, "the unknown object");
X  		    r = levl[cc.x][cc.y].scrsym;
X  		}
X  
X! 		if (r == showsyms.stone) q = defsyms.stone;
X! 		else if (r == showsyms.vwall) q = defsyms.vwall;
X! 		else if (r == showsyms.hwall) q = defsyms.hwall;
X! 		else if (r == showsyms.tlcorn) q = defsyms.tlcorn;
X! 		else if (r == showsyms.trcorn) q = defsyms.trcorn;
X! 		else if (r == showsyms.blcorn) q = defsyms.blcorn;
X! 		else if (r == showsyms.brcorn) q = defsyms.brcorn;
X! 		else if (r == showsyms.crwall) q = defsyms.crwall;
X! 		else if (r == showsyms.tuwall) q = defsyms.tuwall;
X! 		else if (r == showsyms.tdwall) q = defsyms.tdwall;
X! 		else if (r == showsyms.tlwall) q = defsyms.tlwall;
X! 		else if (r == showsyms.trwall) q = defsyms.trwall;
X! 		else if (r == showsyms.door) q = defsyms.door;
X! 		else if (r == showsyms.room) q = defsyms.room;
X! 		else if (r == showsyms.corr) q = defsyms.corr;
X! 		else if (r == showsyms.upstair) q = defsyms.upstair;
X! 		else if (r == showsyms.dnstair) q = defsyms.dnstair;
X! 		else if (r == showsyms.trap) q = defsyms.trap;
X  #ifdef FOUNTAINS
X! 		else if (r == showsyms.pool) q = defsyms.pool;
X! 		else if (r == showsyms.fountain) q = defsyms.fountain;
X  #endif
X- #ifdef THRONES
X- 		else if (r == showsyms.throne) q = defsyms.throne;
X- #endif
X- 		else if (r == showsyms.web) q = defsyms.web;
X  #ifdef SINKS
X! 		else if (r == showsyms.sink) q = defsyms.sink;
X  #endif
X  #ifdef ALTARS
X! 		else if (r == showsyms.altar) q = defsyms.altar;
X  #endif
X! 		else
X! 		    q = r;
X  		if (index(quitchars, q)) {
X  			(void) fclose(fp); /* sweet@scubed */
X  			return 0;
X--- 31,118 ----
X  	char bufr[BUFSZ+6];
X  	register char *buf = &bufr[6], *ep, q;
X  	register struct monst *mtmp;
X+ #ifdef OS2_CODEVIEW
X+ 	char tmp[PATHLEN];
X  
X+ 	Strcpy(tmp,hackdir);
X+ 	append_slash(tmp);
X+ 	Strcat(tmp,DATAFILE);
X+ 	if(!(fp = fopen(tmp,"r")))
X+ #else
X  	if(!(fp = fopen(DATAFILE, "r")))
X+ #endif
X  		pline("Cannot open data file!");
X  	else {
X  		coord	cc;
X  		uchar	r;
X+ 		boolean bycurs = FALSE;
X  
X  		pline ("Specify unknown object by cursor? ");
X  		q = ynq();
X  		if (q == 'q') {
X  			(void) fclose(fp);
X  			return 0;
X  		} else if (q == 'n') {
X+ 			cc.x = cc.y = -1;
X  			pline("Specify what? ");
X  			r = readchar();
X  		} else {
X+ 		    bycurs = TRUE;
X+ 		    cc.x = u.ux;
X+ 		    cc.y = u.uy;
X+ 	selobj:
X  		    if(flags.verbose)
X! 			pline("Please move the cursor to an unknown object.");
X! 		    getpos(&cc, FALSE, "an unknown object");
X! 		    if (cc.x < 0) {
X! 			    (void) fclose(fp); /* sweet@scubed */
X! 			    return 0;
X! 		    }
X  		    r = levl[cc.x][cc.y].scrsym;
X  		}
X  
X! #define conv_sym(x)	if(r == showsyms.x) q = defsyms.x
X! 		conv_sym(stone);
X! 		else conv_sym(vwall);
X! 		else conv_sym(hwall);
X! 		else conv_sym(tlcorn);
X! 		else conv_sym(trcorn);
X! 		else conv_sym(blcorn);
X! 		else conv_sym(brcorn);
X! 		else conv_sym(crwall);
X! 		else conv_sym(tuwall);
X! 		else conv_sym(tdwall);
X! 		else conv_sym(tlwall);
X! 		else conv_sym(trwall);
X! 		else conv_sym(door);
X! 		else conv_sym(room);
X! 		else conv_sym(corr);
X! 		else conv_sym(upstair);
X! 		else conv_sym(dnstair);
X! 		else conv_sym(trap);
X! 		else conv_sym(web); 
X! 		else conv_sym(pool);
X  #ifdef FOUNTAINS
X! 		else conv_sym(fountain);
X  #endif
X  #ifdef SINKS
X! 		else conv_sym(sink);
X! #endif
X! #ifdef THRONES
X! 		else conv_sym(throne);
X  #endif
X  #ifdef ALTARS
X! 		else conv_sym(altar);
X! #endif
X! #ifdef STRONGHOLD
X! 		else conv_sym(upladder);
X! 		else conv_sym(dnladder);
X! 		else conv_sym(dbvwall);
X! 		else conv_sym(dbhwall);
X  #endif
X! 		else q = r;
X! #undef conv_sym
X! 
X  		if (index(quitchars, q)) {
X  			(void) fclose(fp); /* sweet@scubed */
X  			return 0;
X***************
X*** 91,96 ****
X--- 119,130 ----
X  		}
X  		if(q == '%') {
X  			pline("%%       a piece of food");
X+ 			if(bycurs) {
X+ 				buf = &bufr[6];
X+ 				more();
X+ 				rewind(fp);
X+ 				goto selobj;
X+ 			}
X  			(void) fclose(fp);
X  			return 0;
X  		}
X***************
X*** 108,125 ****
X  				(void) strncpy(buf+1, "       ", 7);
X  			}
X  			pline(buf);
X! 			if(cc.x != -1 && IS_ALTAR(levl[cc.x][cc.y].typ)) {
X! 			    int type = levl[u.ux][u.uy].altarmask & ~A_SHRINE;
X! 			    pline("(%s)", (type==0) ? "chaotic" :
X! 				(type==1) ? "neutral" : "lawful");
X  			}
X! 			if (!Invisible && u.ux==cc.x && u.uy==cc.y) {
X  			    pline("(%s named %s)",
X  #ifdef POLYSELF
X  				u.mtimedone ? mons[u.umonnum].mname :
X  #endif
X  				pl_character, plname);
X! 			} else if((q >= 'A' && q <= 'z') || index(";:& @`",q)) {
X  			    for(mtmp = fmon; mtmp; mtmp = mtmp->nmon)
X  				if(mtmp->mx == cc.x && mtmp->my == cc.y) {
X  				    pline("(%s%s)",
X--- 142,209 ----
X  				(void) strncpy(buf+1, "       ", 7);
X  			}
X  			pline(buf);
X! 			if(cc.x != -1) {
X! #ifdef ALTARS
X! 			    if (r == showsyms.altar && q == defsyms.altar &&
X! 				(IS_ALTAR(levl[cc.x][cc.y].typ) ||
X! 				 (levl[cc.x][cc.y].mmask &&
X! 				    m_at(cc.x,cc.y)->mimic))
X! 			       ) {
X! 				    int type = levl[cc.x][cc.y].altarmask &
X! 						~A_SHRINE;
X! 				    pline((type == A_CHAOS) ? "(chaotic)" :
X! 					  (type == A_NEUTRAL) ? "(neutral)" :
X! 					  "(lawful)");
X! 			    } else
X! 			    if (q == CHAIN_SYM && levl[cc.x][cc.y].omask)
X! 				    pline("(chain)");
X! 			    else
X! #endif
X! 			    if (r == showsyms.door && q == defsyms.door &&
X! 				(IS_DOOR(levl[cc.x][cc.y].typ) ||
X!                                  (levl[cc.x][cc.y].mmask &&
X! 				    m_at(cc.x,cc.y)->mimic))) {
X! 				/* Note: this will say mimics in walls are
X! 				 *	 closed doors, which we want.
X! 				 */
X! 				switch(levl[cc.x][cc.y].doormask & ~D_TRAPPED) {
X! 				    case D_NODOOR: pline("(doorway)"); break;
X! 				    case D_BROKEN: pline("(broken door)"); break;
X! 				    case D_ISOPEN: pline("(open door)"); break;
X! 				    default:	   pline("(closed door)"); break;
X! 						   /* locked or not */
X! 				}
X! 			    }
X! #ifdef SPELLS
X! 			    else
X! 			    if (q == SPBOOK_SYM && levl[cc.x][cc.y].omask)
X! 				    pline("(spellbook)");
X! #endif
X! #ifdef STRONGHOLD
X! 			    else
X! 			    if (((r == showsyms.dbvwall && q == defsyms.dbvwall) ||
X! 				 (r == showsyms.dbvwall && q == defsyms.dbvwall)) &&
X! 				is_db_wall(cc.x,cc.y))
X! 				    pline("(raised drawbridge)");
X! #endif
X! #ifdef SINKS
X! 			    else
X! 			    if (r == showsyms.sink && q == defsyms.sink &&
X! 				IS_SINK(levl[cc.x][cc.y].typ))
X! 				    pline("(sink)");
X! #endif
X  			}
X! 			if (!Invisible 
X! #ifdef POLYSELF
X! 				&& !u.uundetected
X! #endif
X! 					&& u.ux==cc.x && u.uy==cc.y) {
X  			    pline("(%s named %s)",
X  #ifdef POLYSELF
X  				u.mtimedone ? mons[u.umonnum].mname :
X  #endif
X  				pl_character, plname);
X! 			} else if((q >= 'A' && q <= 'z') || index(nonlets,q)) {
X  			    for(mtmp = fmon; mtmp; mtmp = mtmp->nmon)
X  				if(mtmp->mx == cc.x && mtmp->my == cc.y) {
X  				    pline("(%s%s)",
X***************
X*** 137,142 ****
X--- 221,232 ----
X  					return 0;
X  				}
X  			}
X+ 			if(bycurs) {
X+ 				buf = &bufr[6];
X+ 				more();
X+ 				rewind(fp);
X+ 				goto selobj;
X+ 			}
X  			(void) fclose(fp); 	/* kopper@psuvax1 */
X  			return 0;
X  		    }
X***************
X*** 152,162 ****
X--- 242,261 ----
X  	FILE *fp;
X  	char bufr[BUFSZ+6];
X  	register char *buf = &bufr[6], *ep, q, ctrl;
X+ #ifdef OS2_CODEVIEW
X+ 	char tmp[PATHLEN];
X  
X+ 	Strcpy(tmp,hackdir);
X+ 	append_slash(tmp);
X+ 	Strcat(tmp,CMDHELPFILE);
X+ 	if(!(fp = fopen(tmp,"r"))) {
X+ #else
X  	if(!(fp = fopen(CMDHELPFILE, "r"))) {
X+ #endif
X  		pline("Cannot open data file!");
X  		return 0;
X  	}
X+ 
X  	pline("What command? ");
X  #ifdef UNIX
X  	introff();
X***************
X*** 456,462 ****
X  		for (tl = texthead; tl; tl = tl->next_line) {
X  		    if (page_line (tl->line_text)) {
X  			set_pager(2);
X! 			goto cleanup;
X  		    }
X  		}
X  		if(text) {
X--- 555,565 ----
X  		for (tl = texthead; tl; tl = tl->next_line) {
X  		    if (page_line (tl->line_text)) {
X  			set_pager(2);
X! 			while(tl = texthead) {
X! 			    texthead = tl->next_line;
X! 			    free((genericptr_t) tl);
X! 			}
X! 			return;
X  		    }
X  		}
X  		if(text) {
X***************
X*** 467,473 ****
X  	    }
X  	}
X  
X- cleanup:
X  	while(tl = texthead) {
X  		texthead = tl->next_line;
X  		free((genericptr_t) tl);
X--- 570,575 ----
X***************
X*** 592,599 ****
X--- 694,709 ----
X  #else
X        {
X  	FILE *f;			/* free after Robert Viduya */
X+ #ifdef OS2_CODEVIEW
X+ 	char tmp[PATHLEN];
X  
X+ 	Strcpy(tmp,hackdir);
X+ 	append_slash(tmp);
X+ 	Strcat(tmp,fnam);
X+ 	if ((f = fopen (tmp, "r")) == (FILE *) 0) {
X+ #else
X  	if ((f = fopen (fnam, "r")) == (FILE *) 0) {
X+ #endif
X  		if(!silent) {
X  			home(); perror (fnam); flags.toplin = 1;
X  			pline ("Cannot open %s.", fnam);
X*** src/Old/pickup.c	Wed Aug 16 12:35:55 1989
X--- src/pickup.c	Tue Aug 15 20:34:53 1989
X***************
X*** 198,209 ****
X  		    pline("Touching the dead cockatrice is a fatal mistake.");
X  		    You("turn to stone.");
X  		    You("die...");
X! 		    killer = "cockatrice cadaver";
X! 		    done("stoned");
X  		}
X  
X  		if(obj->otyp == SCR_SCARE_MONSTER){
X! 		  if(!obj->spe) obj->spe = 1;
X  		  else {
X  		    pline("The scroll turns to dust as you pick it up.");
X  			if(!(objects[SCR_SCARE_MONSTER].oc_name_known) &&
X--- 198,210 ----
X  		    pline("Touching the dead cockatrice is a fatal mistake.");
X  		    You("turn to stone.");
X  		    You("die...");
X! 		    killer = "cockatrice corpse";
X! 		    done(STONING);
X  		}
X  
X  		if(obj->otyp == SCR_SCARE_MONSTER){
X! 		  if(obj->blessed) obj->blessed = 0;
X! 		  else if(!obj->spe && !obj->cursed) obj->spe = 1;
X  		  else {
X  		    pline("The scroll turns to dust as you pick it up.");
X  			if(!(objects[SCR_SCARE_MONSTER].oc_name_known) &&
X*** src/Old/polyself.c	Wed Aug 16 12:36:18 1989
X--- src/polyself.c	Tue Aug 15 22:58:32 1989
X***************
X*** 127,133 ****
X  		} else {
X  		    Your("new form doesn't seem healthy enough to survive.");
X  		    killer="unsuccessful polymorph";
X! 		    done("died");
X  		}
X  	    }
X  	    set_uasmon();
X--- 127,133 ----
X  		} else {
X  		    Your("new form doesn't seem healthy enough to survive.");
X  		    killer="unsuccessful polymorph";
X! 		    done(DIED);
X  		}
X  	    }
X  	    set_uasmon();
X***************
X*** 160,166 ****
X  	if (Inhell && !Fire_resistance) {
X  	    You("burn to a crisp.");
X  	    killer = "unwise polymorph";
X! 	    done("burned");
X  	}
X  }
X  
X--- 160,166 ----
X  	if (Inhell && !Fire_resistance) {
X  	    You("burn to a crisp.");
X  	    killer = "unwise polymorph";
X! 	    done(BURNING);
X  	}
X  }
X  
X***************
X*** 358,368 ****
X  	set_uasmon();
X  	You("return to %sn form!",(pl_character[0]=='E')?"elve":"huma");
X  
X! 	if (u.uhp < 1)	done("died");
X  	if (!Fire_resistance && Inhell) {
X  	    You("burn to a crisp.");
X  	    killer = "dissipating polymorph spell";
X! 	   done("burned");
X  	}
X  	if (!uarmg) selftouch("No longer petrify-resistant, you");
X  	if (sticky) uunstick();
X--- 358,368 ----
X  	set_uasmon();
X  	You("return to %sn form!",(pl_character[0]=='E')?"elve":"huma");
X  
X! 	if (u.uhp < 1)	done(DIED);
X  	if (!Fire_resistance && Inhell) {
X  	    You("burn to a crisp.");
X  	    killer = "dissipating polymorph spell";
X! 	    done(BURNING);
X  	}
X  	if (!uarmg) selftouch("No longer petrify-resistant, you");
X  	if (sticky) uunstick();
X***************
X*** 507,513 ****
X  		looked = 1;
X  		if (Invis && !perceives(mtmp->data))
X  		    pline("%s seems not to notice your gaze.", Monnam(mtmp));
X! 		else if (mtmp->minvis && !See_invisible)
X  		    You("can't see where to gaze at %s.", Monnam(mtmp));
X  		else if (mtmp->mimic)
X  		    continue;
X--- 507,513 ----
X  		looked = 1;
X  		if (Invis && !perceives(mtmp->data))
X  		    pline("%s seems not to notice your gaze.", Monnam(mtmp));
X! 		else if (mtmp->minvis && !See_invisible && !Telepat)
X  		    You("can't see where to gaze at %s.", Monnam(mtmp));
X  		else if (mtmp->mimic)
X  		    continue;
X***************
X*** 547,554 ****
X  #ifdef MEDUSA
X  		    if ((mtmp->data==&mons[PM_MEDUSA]) && !mtmp->mcan) {
X  			pline("Gazing at an awake medusa is not a very good idea...");
X  			You("turn to stone...");
X! 			done("stoned");
X  		    }
X  #endif
X  		}
X--- 547,555 ----
X  #ifdef MEDUSA
X  		    if ((mtmp->data==&mons[PM_MEDUSA]) && !mtmp->mcan) {
X  			pline("Gazing at an awake medusa is not a very good idea...");
X+ 			/* as if gazing at a sleeping anything is fruitful... */
X  			You("turn to stone...");
X! 			done(STONING);
X  		    }
X  #endif
X  		}
X*** src/Old/potion.c	Thu Jul 27 16:56:52 1989
X--- src/potion.c	Wed Aug 16 22:13:59 1989
X***************
X*** 80,86
X  {
X  	long old = Blinded;
X  
X! 	if (!xtime && old) {
X  		if (talk) {
X  			if (Hallucination) pline("Oh, like, wow!  What a rush.");
X  			else		   You("can see again.");
X
X--- 80,86 -----
X  {
X  	long old = Blinded;
X  
X! 	if (!xtime && old && !Blindfolded) {
X  		if (talk) {
X  			if (Hallucination) pline("Oh, like, wow!  What a rush.");
X  			else		   You("can see again.");
X***************
X*** 476,482
X  	case POT_GAIN_LEVEL:
X  		if (otmp->cursed) {
X  			unkn++;
X- 			You("rise up, through the ceiling!");
X  			/* they went up a level */
X  			goto_level(dlevel-1, FALSE);
X  			break;
X
X--- 476,481 -----
X  	case POT_GAIN_LEVEL:
X  		if (otmp->cursed) {
X  			unkn++;
X  			/* they went up a level */
X  			if(dlevel > 1 && dlevel <= MAXLEVEL) { 
X  				You("rise up, through the ceiling!");
X***************
X*** 478,484
X  			unkn++;
X  			You("rise up, through the ceiling!");
X  			/* they went up a level */
X! 			goto_level(dlevel-1, FALSE);
X  			break;
X  		}
X  		pluslvl();
X
X--- 477,486 -----
X  		if (otmp->cursed) {
X  			unkn++;
X  			/* they went up a level */
X! 			if(dlevel > 1 && dlevel <= MAXLEVEL) { 
X! 				You("rise up, through the ceiling!");
X! 				goto_level(dlevel-1, FALSE);
X! 			} else You("have an uneasy feeling.");
X  			break;
X  		}
X  		pluslvl();
X***************
X*** 979,985
X  
X  	mnexto(mtmp);
X  	if (!Blind)
X! 		pline("In a cloud of smoke, a djinni emerges!");
X  	else	You("smell acrid fumes.");
X  	if (!Blind)
X  		pline("%s speaks.", Monnam(mtmp));
X
X--- 981,987 -----
X  
X  	mnexto(mtmp);
X  	if (!Blind)
X! 		pline("In a cloud of smoke, %s emerges!", defmonnam(mtmp));
X  	else	You("smell acrid fumes.");
X  	if (!Blind)
X  		pline("%s speaks.", Monnam(mtmp));
X***************
X*** 997,1003
X  		mtmp->mpeaceful = 1;
X  		break;
X  	case 3 : pline("\"It is about time!\"");
X! 		pline("The djinni vanishes.");
X  		mongone(mtmp);
X  		break;
X  	default: pline("\"You disturbed me, fool!\"");
X
X--- 999,1006 -----
X  		mtmp->mpeaceful = 1;
X  		break;
X  	case 3 : pline("\"It is about time!\"");
X! 		pline("The %s vanishes.",
X! 			Hallucination ? rndmonnam() : "djinni");
X  		mongone(mtmp);
X  		break;
X  	default: pline("\"You disturbed me, fool!\"");
X*** src/Old/pray.c	Sun Jul 30 23:58:10 1989
X--- src/pray.c	Wed Aug 16 22:14:01 1989
X***************
X*** 1,5
X  /*	SCCS Id: @(#)pray.c	3.0	89/01/10
X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X  /* NetHack may be freely redistributed.  See license for details. */
X  
X  #include "hack.h"
X
X--- 1,6 -----
X  /*	SCCS Id: @(#)pray.c	3.0	89/01/10
X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
X+ /* Copyright (c) Benson I. Margulies, Mike Stephenson, Steve Linhart, 1989. */
X  /* NetHack may be freely redistributed.  See license for details. */
X  
X  #include "hack.h"
X***************
X*** 37,50
X  0,0,0,0
X  };
X  
X! #define TROUBLE_STONED 1
X! #define TROUBLE_STRANGLED 2
X! #define TROUBLE_SICK 3
X! #define TROUBLE_STARVING 4
X! #define TROUBLE_HIT 5
X! #define TROUBLE_STUCK_IN_WALL 6
X! #define TROUBLE_LEVITATED_FOREVER 7
X! #define TROUBLE_BLINDED_FOREVER 8
X  
X  #define TROUBLE_PUNISHED (-1)
X  #define TROUBLE_LYCANTHROPE (-2)
X
X--- 38,51 -----
X  0,0,0,0
X  };
X  
X! #define TROUBLE_STONED 8
X! #define TROUBLE_STRANGLED 7
X! #define TROUBLE_SICK 6
X! #define TROUBLE_STARVING 5
X! #define TROUBLE_HIT 4
X! #define TROUBLE_STUCK_IN_WALL 3
X! #define TROUBLE_CURSED_BLINDFOLD 2
X! #define TROUBLE_CURSED_LEVITATION 1
X  
X  #define TROUBLE_LYCANTHROPE (-1)
X  #define TROUBLE_PUNISHED (-2)
X***************
X*** 46,53
X  #define TROUBLE_LEVITATED_FOREVER 7
X  #define TROUBLE_BLINDED_FOREVER 8
X  
X! #define TROUBLE_PUNISHED (-1)
X! #define TROUBLE_LYCANTHROPE (-2)
X  #define TROUBLE_CURSED_ITEMS (-3)
X  #define TROUBLE_HUNGRY (-4)
X  #define TROUBLE_POISONED (-5)
X
X--- 47,54 -----
X  #define TROUBLE_CURSED_BLINDFOLD 2
X  #define TROUBLE_CURSED_LEVITATION 1
X  
X! #define TROUBLE_LYCANTHROPE (-1)
X! #define TROUBLE_PUNISHED (-2)
X  #define TROUBLE_CURSED_ITEMS (-3)
X  #define TROUBLE_BLIND (-4)
X  #define TROUBLE_HUNGRY (-5)
X***************
X*** 49,61
X  #define TROUBLE_PUNISHED (-1)
X  #define TROUBLE_LYCANTHROPE (-2)
X  #define TROUBLE_CURSED_ITEMS (-3)
X! #define TROUBLE_HUNGRY (-4)
X! #define TROUBLE_POISONED (-5)
X! #define TROUBLE_HALLUCINATION (-6)
X! #define TROUBLE_BLIND (-7)
X! #define TROUBLE_WOUNDED_LEGS (-8)
X! #define TROUBLE_STUNNED (-9)
X! #define TROUBLE_CONFUSED (-10)
X  
X  /* We could force rehumanize of polyselfed people, but we can't tell
X     unintentional shape changes from the other kind. Oh well. */
X
X--- 50,62 -----
X  #define TROUBLE_LYCANTHROPE (-1)
X  #define TROUBLE_PUNISHED (-2)
X  #define TROUBLE_CURSED_ITEMS (-3)
X! #define TROUBLE_BLIND (-4)
X! #define TROUBLE_HUNGRY (-5)
X! #define TROUBLE_POISONED (-6)
X! #define TROUBLE_WOUNDED_LEGS (-7)
X! #define TROUBLE_STUNNED (-8)
X! #define TROUBLE_CONFUSED (-9)
X! #define TROUBLE_HALLUCINATION (-10)
X  
X  /* We could force rehumanize of polyselfed people, but we can't tell
X     unintentional shape changes from the other kind. Oh well. */
X***************
X*** 108,116
X  	    ) return(TROUBLE_STUCK_IN_WALL);
X  	if((uarmf && uarmf->otyp==LEVITATION_BOOTS && uarmf->cursed) ||
X  		(uleft && uleft->otyp==RIN_LEVITATION && uleft->cursed) ||
X! 		(uright && uright->otyp==RIN_LEVITATION && uleft->cursed))
X! 		return(TROUBLE_LEVITATED_FOREVER);
X! 	if(ublindf && ublindf->cursed) return(TROUBLE_BLINDED_FOREVER);
X  
X  	if(Punished) return(TROUBLE_PUNISHED);
X  #ifdef POLYSELF
X
X--- 109,117 -----
X  	    ) return(TROUBLE_STUCK_IN_WALL);
X  	if((uarmf && uarmf->otyp==LEVITATION_BOOTS && uarmf->cursed) ||
X  		(uleft && uleft->otyp==RIN_LEVITATION && uleft->cursed) ||
X! 		(uright && uright->otyp==RIN_LEVITATION && uright->cursed))
X! 		return(TROUBLE_CURSED_LEVITATION);
X! 	if(ublindf && ublindf->cursed) return(TROUBLE_CURSED_BLINDFOLD);
X  
X  #ifdef POLYSELF
X  	if(u.ulycn >= 0) return(TROUBLE_LYCANTHROPE);
X***************
X*** 112,118
X  		return(TROUBLE_LEVITATED_FOREVER);
X  	if(ublindf && ublindf->cursed) return(TROUBLE_BLINDED_FOREVER);
X  
X- 	if(Punished) return(TROUBLE_PUNISHED);
X  #ifdef POLYSELF
X  	if(u.ulycn >= 0) return(TROUBLE_LYCANTHROPE);
X  #endif
X
X--- 113,118 -----
X  		return(TROUBLE_CURSED_LEVITATION);
X  	if(ublindf && ublindf->cursed) return(TROUBLE_CURSED_BLINDFOLD);
X  
X  #ifdef POLYSELF
X  	if(u.ulycn >= 0) return(TROUBLE_LYCANTHROPE);
X  #endif
X***************
X*** 116,121
X  #ifdef POLYSELF
X  	if(u.ulycn >= 0) return(TROUBLE_LYCANTHROPE);
X  #endif
X  	for(otmp=invent; otmp; otmp=otmp->nobj)
X  		if((otmp->otyp==LOADSTONE || otmp->otyp==LUCKSTONE) &&
X  			otmp->cursed) 
X
X--- 116,122 -----
X  #ifdef POLYSELF
X  	if(u.ulycn >= 0) return(TROUBLE_LYCANTHROPE);
X  #endif
X+ 	if(Punished) return(TROUBLE_PUNISHED);
X  	for(otmp=invent; otmp; otmp=otmp->nobj)
X  		if((otmp->otyp==LOADSTONE || otmp->otyp==LUCKSTONE) &&
X  			otmp->cursed) 
X***************
X*** 137,142
X  
X  	   return(TROUBLE_CURSED_ITEMS);
X  
X  	if(u.uhs >= HUNGRY) return(TROUBLE_HUNGRY);
X  	for(i=0; i<A_MAX; i++)
X  	    if(ABASE(i) < AMAX(i)) return(TROUBLE_POISONED);
X
X--- 138,144 -----
X  
X  	   return(TROUBLE_CURSED_ITEMS);
X  
X+ 	if(Blinded > 1) return(TROUBLE_BLIND);
X  	if(u.uhs >= HUNGRY) return(TROUBLE_HUNGRY);
X  	for(i=0; i<A_MAX; i++)
X  	    if(ABASE(i) < AMAX(i)) return(TROUBLE_POISONED);
X***************
X*** 140,147
X  	if(u.uhs >= HUNGRY) return(TROUBLE_HUNGRY);
X  	for(i=0; i<A_MAX; i++)
X  	    if(ABASE(i) < AMAX(i)) return(TROUBLE_POISONED);
X- 	if(Hallucination) return(TROUBLE_HALLUCINATION);
X- 	if(Blinded > 1) return(TROUBLE_BLIND);
X  	if(Wounded_legs) return (TROUBLE_WOUNDED_LEGS);
X  	if(HStun) return (TROUBLE_STUNNED);
X  	if(HConfusion) return (TROUBLE_CONFUSED);
X
X--- 142,147 -----
X  	if(u.uhs >= HUNGRY) return(TROUBLE_HUNGRY);
X  	for(i=0; i<A_MAX; i++)
X  	    if(ABASE(i) < AMAX(i)) return(TROUBLE_POISONED);
X  	if(Wounded_legs) return (TROUBLE_WOUNDED_LEGS);
X  	if(HStun) return (TROUBLE_STUNNED);
X  	if(HConfusion) return (TROUBLE_CONFUSED);
X***************
X*** 145,150
X  	if(Wounded_legs) return (TROUBLE_WOUNDED_LEGS);
X  	if(HStun) return (TROUBLE_STUNNED);
X  	if(HConfusion) return (TROUBLE_CONFUSED);
X  
X  	return(0);
X  }
X
X--- 145,151 -----
X  	if(Wounded_legs) return (TROUBLE_WOUNDED_LEGS);
X  	if(HStun) return (TROUBLE_STUNNED);
X  	if(HConfusion) return (TROUBLE_CONFUSED);
X+ 	if(Hallucination) return(TROUBLE_HALLUCINATION);
X  
X  	return(0);
X  }
X***************
X*** 194,200
X  		    Your("surroundings change.");
X  		    tele();
X  		    break;
X! 	    case TROUBLE_LEVITATED_FOREVER:
X  		    if (uarmf && uarmf->otyp==LEVITATION_BOOTS
X  						&& uarmf->cursed)
X  			otmp = uarmf;
X
X--- 195,201 -----
X  		    Your("surroundings change.");
X  		    tele();
X  		    break;
X! 	    case TROUBLE_CURSED_LEVITATION:
X  		    if (uarmf && uarmf->otyp==LEVITATION_BOOTS
X  						&& uarmf->cursed)
X  			otmp = uarmf;
X***************
X*** 208,214
X  		    }
X  		    goto decurse;
X  		    break;
X! 	    case TROUBLE_BLINDED_FOREVER:
X  		    otmp = ublindf;
X  		    goto decurse;
X  		    break;
X
X--- 209,215 -----
X  		    }
X  		    goto decurse;
X  		    break;
X! 	    case TROUBLE_CURSED_BLINDFOLD:
X  		    otmp = ublindf;
X  		    goto decurse;
X  		    break;
X***************
X*** 404,410
X  			}
X  			You("fry to a crisp.");
X  			killer = "holy wrath";
X! 			done("died");
X  			break;
X  	}
X  	u.ublesscnt = rnz(300);
X
X--- 405,411 -----
X  			}
X  			You("fry to a crisp.");
X  			killer = "holy wrath";
X! 			done(DIED);
X  			break;
X  	}
X  	u.ublesscnt = rnz(300);
X***************
X*** 545,552
X  			}
X  			break;
X  		}
X! 	    case 5:	pline("A voice booms out:  \"Thou hast pleased me with thy progress,\"");
X! 			pline("\"and thus I grant thee the gift of ");
X  			if (!(HTelepat & INTRINSIC))  {
X  				HTelepat |= INTRINSIC;
X  				addtopl("Telepathy!\"");
X
X--- 546,555 -----
X  			}
X  			break;
X  		}
X! 	    case 5:
X! 		{
X! 			char *msg="\"and thus I grant thee the gift of %s!\"";
X! 			pline("A voice booms out:  \"Thou hast pleased me with thy progress,\"");
X  			if (!(HTelepat & INTRINSIC))  {
X  				HTelepat |= INTRINSIC;
X  				pline(msg, "Telepathy");
X***************
X*** 549,555
X  			pline("\"and thus I grant thee the gift of ");
X  			if (!(HTelepat & INTRINSIC))  {
X  				HTelepat |= INTRINSIC;
X! 				addtopl("Telepathy!\"");
X  			} else if (!(Fast & INTRINSIC))  {
X  				Fast |= INTRINSIC;
X  				addtopl("Speed!\"");
X
X--- 552,558 -----
X  			pline("A voice booms out:  \"Thou hast pleased me with thy progress,\"");
X  			if (!(HTelepat & INTRINSIC))  {
X  				HTelepat |= INTRINSIC;
X! 				pline(msg, "Telepathy");
X  			} else if (!(Fast & INTRINSIC))  {
X  				Fast |= INTRINSIC;
X  				pline(msg, "Speed");
X***************
X*** 552,558
X  				addtopl("Telepathy!\"");
X  			} else if (!(Fast & INTRINSIC))  {
X  				Fast |= INTRINSIC;
X! 				addtopl("Speed!\"");
X  			} else if (!(Stealth & INTRINSIC))  {
X  				Stealth |= INTRINSIC;
X  				addtopl("Stealth!\"");
X
X--- 555,561 -----
X  				pline(msg, "Telepathy");
X  			} else if (!(Fast & INTRINSIC))  {
X  				Fast |= INTRINSIC;
X! 				pline(msg, "Speed");
X  			} else if (!(Stealth & INTRINSIC))  {
X  				Stealth |= INTRINSIC;
X  				pline(msg, "Stealth");
X***************
X*** 555,561
X  				addtopl("Speed!\"");
X  			} else if (!(Stealth & INTRINSIC))  {
X  				Stealth |= INTRINSIC;
X! 				addtopl("Stealth!\"");
X  			} else {
X  			    if (!(Protection & INTRINSIC))  {
X  				Protection |= INTRINSIC;
X
X--- 558,564 -----
X  				pline(msg, "Speed");
X  			} else if (!(Stealth & INTRINSIC))  {
X  				Stealth |= INTRINSIC;
X! 				pline(msg, "Stealth");
X  			} else {
X  			    if (!(Protection & INTRINSIC))  {
X  				Protection |= INTRINSIC;
X***************
X*** 561,567
X  				Protection |= INTRINSIC;
X  				if (!u.ublessed)  u.ublessed = rnd(3) + 1;
X  			    } else u.ublessed++;
X! 			    addtopl("our protection!\"");
X  			}
X  			pline ("\"Use it wisely in my name!\"");
X  			break;
X
X--- 564,570 -----
X  				Protection |= INTRINSIC;
X  				if (!u.ublessed)  u.ublessed = rnd(3) + 1;
X  			    } else u.ublessed++;
X! 			    pline(msg, "my protection");
X  			}
X  			pline ("\"Use it wisely in my name!\"");
X  			break;
X***************
X*** 565,571
X  			}
X  			pline ("\"Use it wisely in my name!\"");
X  			break;
X! 
X  	    case 7:
X  #ifdef ELBERETH
X  			if (u.ualign > 3 && !u.uhand_of_elbereth) {
X
X--- 568,574 -----
X  			}
X  			pline ("\"Use it wisely in my name!\"");
X  			break;
X! 		}
X  	    case 7:
X  #ifdef ELBERETH
X  			if (u.ualign > 3 && !u.uhand_of_elbereth) {
X***************
X*** 587,592
X  #endif
X  			    } else {
X  				register struct obj *obj;
X  				pline("A voice booms out:  \"Thou art chosen to steal souls for Arioch!\"");
X  				/* This does the same damage as Excalibur.
X  				 * Disadvantages: doesn't do bonuses to undead;
X
X--- 590,596 -----
X  #endif
X  			    } else {
X  				register struct obj *obj;
X+ #ifdef NAMED_ITEMS
X  				pline("A voice booms out:  \"Thou art chosen to steal souls for Arioch!\"");
X  				/* This does the same damage as Excalibur.
X  				 * Disadvantages: doesn't do bonuses to undead;
X***************
X*** 617,622
X  			 */
X  				obj->spe = 1;
X  				dropy(obj);
X  			    }
X  			    break;
X  			}
X
X--- 621,629 -----
X  			 */
X  				obj->spe = 1;
X  				dropy(obj);
X+ #else
X+ 				pline("Thou shalt become the servant of Arioch!");
X+ #endif
X  			    }
X  			    break;
X  			}
X***************
X*** 716,721
X  
X  	if (otmp->otyp == CORPSE) {
X  	    register struct permonst *mtmp = &mons[otmp->corpsenm];
X  
X  	    if (otmp->corpsenm == PM_ACID_BLOB || (moves <= otmp->age + 50))
X  		value = mtmp->mlevel + 1; /* only fresh kills */
X
X--- 723,729 -----
X  
X  	if (otmp->otyp == CORPSE) {
X  	    register struct permonst *mtmp = &mons[otmp->corpsenm];
X+ 	    extern int monstr[];
X  
X  	    if (otmp->corpsenm == PM_ACID_BLOB || (moves <= otmp->age + 50))
X  		value = monstr[otmp->corpsenm] + 1;
X***************
X*** 718,724
X  	    register struct permonst *mtmp = &mons[otmp->corpsenm];
X  
X  	    if (otmp->corpsenm == PM_ACID_BLOB || (moves <= otmp->age + 50))
X! 		value = mtmp->mlevel + 1; /* only fresh kills */
X  
X  	    if (is_human(mtmp)) { /* Human sacrifice! */
X  #ifdef POLYSELF
X
X--- 726,732 -----
X  	    extern int monstr[];
X  
X  	    if (otmp->corpsenm == PM_ACID_BLOB || (moves <= otmp->age + 50))
X! 		value = monstr[otmp->corpsenm] + 1;
X  
X  	    if (is_human(mtmp)) { /* Human sacrifice! */
X  #ifdef POLYSELF
X***************
X*** 822,828
X  		}
X  		else {
X  		    /* The final Test.	Did you win? */
X! 		    if(uamul && uamul->otyp == otmp->otyp) Amulet_off();
X  		    useup(otmp);    /* well, it's gone now */
X  		    You("offer the Amulet to %s...", a_gname());
X  		    if (u.ualigntyp !=
X
X--- 830,836 -----
X  		}
X  		else {
X  		    /* The final Test.	Did you win? */
X! 		    if(uamul == otmp) Amulet_off();
X  		    useup(otmp);    /* well, it's gone now */
X  		    You("offer the Amulet to %s...", a_gname());
X  		    if (u.ualigntyp !=
X***************
X*** 835,841
X  			pline("Fortunately, %s permits you to live...", a_gname());
X  			pline("A cloud of %s smoke surrounds you...",
X  				Hallucination ? hcolor() : "orange");
X! 			done("escaped");
X  		    } else {	    /* super big win */
X  	    pline("An invisible choir sings, and you are bathed in radiance...");
X  	    pline("\"Congratulations, mortal!  In return for thy service,");
X
X--- 843,849 -----
X  			pline("Fortunately, %s permits you to live...", a_gname());
X  			pline("A cloud of %s smoke surrounds you...",
X  				Hallucination ? hcolor() : "orange");
X! 			done(ESCAPED);
X  		    } else {	    /* super big win */
X  	    pline("An invisible choir sings, and you are bathed in radiance...");
X  	    pline("\"Congratulations, mortal!  In return for thy service,");
X***************
X*** 839,845
X  		    } else {	    /* super big win */
X  	    pline("An invisible choir sings, and you are bathed in radiance...");
X  	    pline("\"Congratulations, mortal!  In return for thy service,");
X! 			pline("\"I grant thee the gift of Immortality!\"");
X  			You("ascend to the status of Demigod...");
X  			done("ascended");
X  		    }
X
X--- 847,853 -----
X  		    } else {	    /* super big win */
X  	    pline("An invisible choir sings, and you are bathed in radiance...");
X  	    pline("\"Congratulations, mortal!  In return for thy service,");
X! 			pline("I grant thee the gift of Immortality!\"");
X  			You("ascend to the status of Demigod...");
X  			done(ASCENDED);
X  		    }
X***************
X*** 841,847
X  	    pline("\"Congratulations, mortal!  In return for thy service,");
X  			pline("\"I grant thee the gift of Immortality!\"");
X  			You("ascend to the status of Demigod...");
X! 			done("ascended");
X  		    }
X  		}
X  	}
X
X--- 849,855 -----
X  	    pline("\"Congratulations, mortal!  In return for thy service,");
X  			pline("I grant thee the gift of Immortality!\"");
X  			You("ascend to the status of Demigod...");
X! 			done(ASCENDED);
X  		    }
X  		}
X  	}
X*** src/Old/pri.c	Wed Aug 16 12:38:14 1989
X--- src/pri.c	Fri Aug 11 17:05:31 1989
X***************
X*** 150,156 ****
X  #ifdef POLYSELF
X  			&& !u.uundetected
X  #endif
X! 					) atl(u.ux,u.uy,(char)u.usym);
X  }
X  
X  void
X--- 150,159 ----
X  #ifdef POLYSELF
X  			&& !u.uundetected
X  #endif
X! 					) {
X! 		levl[u.ux][u.uy].seen = 0; /* force atl */
X! 		atl(u.ux,u.uy,(char)u.usym);
X! 	}
X  }
X  
X  void
X***************
X*** 219,225 ****
X  			&& !u.uundetected
X  #endif
X  					) {
X! 		levl[(u.udisx = u.ux)][(u.udisy = u.uy)].scrsym = u.usym;
X  		levl[u.udisx][u.udisy].seen = 1;
X  		u.udispl = 1;
X  	} else	u.udispl = 0;
X--- 222,230 ----
X  			&& !u.uundetected
X  #endif
X  					) {
X! 		u.udisx = u.ux;
X! 		u.udisy = u.uy;
X! 		levl[u.udisx][u.udisy].scrsym = u.usym;
X  		levl[u.udisx][u.udisy].seen = 1;
X  		u.udispl = 1;
X  	} else	u.udispl = 0;
X***************
X*** 229,235 ****
X  		mtmp->mdispl = 0;
X  	seemons();	/* force new positions to be shown */
X  
X! #if defined(DGK) && !defined(MSDOSCOLOR)
X  	/* Otherwise, line buffer the output to do the redraw in
X  	 * about 2/3 of the time.
X  	 */
X--- 234,240 ----
X  		mtmp->mdispl = 0;
X  	seemons();	/* force new positions to be shown */
X  
X! #if defined(DGK) && !defined(TEXTCOLOR)
X  	/* Otherwise, line buffer the output to do the redraw in
X  	 * about 2/3 of the time.
X  	 */
X***************
X*** 261,267 ****
X  				curx = end + 1;
X  			}
X  		}
X! #else /* DGK && !MSDOSCOLOR */
X  	for(y = 0; y < ROWNO; y++)
X  		for(x = 0; x < COLNO; x++)
X  			if((room = &levl[x][y])->new) {
X--- 266,272 ----
X  				curx = end + 1;
X  			}
X  		}
X! #else /* DGK && !TEXTCOLOR */
X  	for(y = 0; y < ROWNO; y++)
X  		for(x = 0; x < COLNO; x++)
X  			if((room = &levl[x][y])->new) {
X***************
X*** 269,275 ****
X  				at(x,y,room->scrsym,AT_APP);
X  			} else if(room->seen)
X  				at(x,y,room->scrsym,AT_APP);
X! #endif /* DGK && !MSDOSCOLOR */
X  #ifndef g_putch
X  	if (GFlag) {
X  		graph_off();
X--- 274,280 ----
X  				at(x,y,room->scrsym,AT_APP);
X  			} else if(room->seen)
X  				at(x,y,room->scrsym,AT_APP);
X! #endif /* DGK && !TEXTCOLOR */
X  #ifndef g_putch
X  	if (GFlag) {
X  		graph_off();
X***************
X*** 1100,1115 ****
X  	}
X  
X  	if (!typ) {
X- 		char *isobjct = index(obj_symbols, (char) let);
X- 
X  		if (let == GOLD_SYM)
X  			typ = AT_GLD;
X! #ifdef MSDOSCOLOR
X! 		else if (let == POOL_SYM)
X! 			if (HI_BLUE == HI) typ = AT_MAP;
X! 			else typ = AT_BLUE;
X! #endif
X! 		else if (isobjct != NULL || let == S_MIMIC_DEF)
X  			/* is an object */
X  			typ = AT_OBJ;
X  		else if (ismnst((char) let))
X--- 1105,1114 ----
X  	}
X  
X  	if (!typ) {
X  		if (let == GOLD_SYM)
X  			typ = AT_GLD;
X! 		else if (index(obj_symbols, (char) let) != NULL
X! 			 || let == S_MIMIC_DEF)
X  			/* is an object */
X  			typ = AT_OBJ;
X  		else if (ismnst((char) let))
X***************
X*** 1116,1152 ****
X  			/* is a monster */
X  			typ = AT_MON;
X  	}
X! #ifndef MSDOSCOLOR
X! 	if (typ == AT_MON) revbeg();
X! #else
X  	switch (typ) {
X  	    case AT_MON:
X! 		xputs(let != S_MIMIC_DEF ? HI_MON : HI_OBJ);
X  		break;
X  	    case AT_OBJ:
X! 		xputs(let == GOLD_SYM ? HI_GOLD : HI_OBJ);
X  		break;
X  	    case AT_MAP:
X! 		if (!(typ = (let == POOL_SYM)))
X! 		    break;
X! 	    case AT_BLUE:
X! 		xputs(HI_BLUE);
X  		break;
X  	    case AT_ZAP:
X! 		xputs(HI_ZAP);
X  		break;
X- 	    case AT_RED:
X- 		xputs(HI_RED);
X- 		break;
X- 	    case AT_WHITE:
X- 		xputs(HI_WHITE);
X- 		break;
X  	}
X  #endif
X  
X  	g_putch(let);
X  
X! #ifdef MSDOSCOLOR
X  	if (typ) xputs(HE);
X  #else
X  	if (typ == AT_MON) m_end();
X--- 1115,1174 ----
X  			/* is a monster */
X  			typ = AT_MON;
X  	}
X! #ifdef TEXTCOLOR
X  	switch (typ) {
X  	    case AT_MON:
X! 		switch (let) {
X! 		    case S_MIMIC_DEF:
X! 			typ = HI_OBJ;
X! 			break;
X! 		    case S_YLIGHT:	/* make 'em "glow" */
X! 			typ = YELLOW;
X! 			break;
X! 		    default:
X! 			typ = HI_MON;
X! 		}
X  		break;
X  	    case AT_OBJ:
X! 		switch (let) {
X! 		    case GOLD_SYM:
X! 			typ = HI_GOLD;
X! 			break;
X! 		    case WEAPON_SYM:
X! 		    case ARMOR_SYM:
X! 		    case RING_SYM:
X! 		    case AMULET_SYM:
X! 			typ = HI_METAL;
X! 			break;
X! 		    case FOOD_SYM:
X! 		    case POTION_SYM:
X! 			typ = HI_ORGANIC;
X! 			break;
X! 		    default:
X! 			typ = HI_OBJ;
X! 		}
X  		break;
X  	    case AT_MAP:
X! #ifdef FOUNTAINS
X! 		typ = ((let == POOL_SYM || let == FOUNTAIN_SYM)
X! #else
X! 		typ = (let == POOL_SYM
X! #endif
X! 			&& HI_COLOR[BLUE] != HI ? BLUE : 0);
X  		break;
X  	    case AT_ZAP:
X! 		typ = HI_ZAP;
X  		break;
X  	}
X+ 	if (typ)
X+ 		xputs(HI_COLOR[typ]);
X+ #else
X+ 	if (typ == AT_MON) revbeg();
X  #endif
X  
X  	g_putch(let);
X  
X! #ifdef TEXTCOLOR
X  	if (typ) xputs(HE);
X  #else
X  	if (typ == AT_MON) m_end();
END_OF_FILE
if test 57076 -ne `wc -c <'patch02f'`; then
    echo shar: \"'patch02f'\" unpacked with wrong size!
fi
# end of 'patch02f'
fi
echo shar: End of archive 6 \(of 7\).
cp /dev/null ark6isdone
MISSING=""
for I in 1 2 3 4 5 6 7 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 7 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