diff -Naurbd slashem-0.0.7E7F2/dat/data.base slashem-0.0.7E7F3/dat/data.base
--- slashem-0.0.7E7F2/dat/data.base	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/dat/data.base	2006-05-15 12:17:00.000000000 +0100
@@ -1,5 +1,5 @@
 #	SCCS Id: @(#)data.base	3.4	2003/07/23
-#	    $Id: data.base,v 1.14 2003/12/11 09:49:05 j_ali Exp $
+#	    $Id: data.base,v 1.14.2.2 2006/04/17 11:14:04 prousu Exp $
 #   Copyright (c) 1994, 1995, 1996 by the NetHack Development Team
 #   Copyright (c) 1994 by Boudewijn Wayers
 #   Copyright (c) 2002 by the Slash'EM Development Team
@@ -455,8 +455,9 @@
 barbed devil
 	Barbed devils lack any real special abilities, though they
 	are quite difficult to kill.
-+~mongbat
-+~vampire bat
+~mongbat
+~vampire bat
+~wombat
 *bat
 	A bat, flitting in the darkness outside, took the wrong turn
 	as it made its nightly rounds and came in through the window
@@ -2851,7 +2852,8 @@
 	and harry, and overcome all the gods, and burn all the
 	world with fire.
 			[ The Prose Edda, by Snorri Sturluson ]
-lug*
+lug
+lugh
 	Lugh, or Lug, was the sun god of the Irish Celts.  One of his
 	weapons was a rod-sling which worshippers sometimes saw in
 	the sky as a rainbow.  As a tribal god, he was particularly
diff -Naurbd slashem-0.0.7E7F2/history.txt slashem-0.0.7E7F3/history.txt
--- slashem-0.0.7E7F2/history.txt	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/history.txt	2006-05-15 12:17:00.000000000 +0100
@@ -29,6 +29,32 @@
 | Section 1: Yesterday's News |
 +-----------------------------+
 
+ver 0.0.7E7F2 [December 4/2005] [Released by Ali]
+-fixed bug 1232707: engraving with lightsabers
+-fixed bug 1237780: gtk window port fails to build with gcc-4.0
+-fixed bug 1239041: engrave dialog doesn't show lightsabers
+-fixed bug 1231766: Food shown in Medical Kits
+-fixed bug 1238060: grammatical error when burning through a door 
+		    (Benjamin Schieder)
+-fixed bug 1104713: Pet and Frozen food stores can charge
+-fixed bug 988827: Monster wearing CoI left invisible corpse
+-fixed bug 934078: Mold "wiggle" out of bag
+-fixed bug 933587: One-Eyed Sam referred to as "it"
+-fixed bug 1240794: Pets don't grow up properly
+-fixed bug 1240799: Steed ridden onto poly trap polymorphs permanently
+-fixed bug 1243904: chameleon as statue trap
+-fixed bug 1223226: Some creatures are missing horns
+-fixed bug 1223222: Female Bulls??
+-fixed bug 1244470: shopkeeper don't have shotgun
+-fixed bug 215062: no black color
+		   Extends videocolors option, see Guidebook for details.
+-fixed bug 1244468: different spitting venom when polymorph
+-fixed bug 1179557: Found egg marked (laid by you)
+-fixed bug 1206099: Torches are not extinguished with rust traps
+-fixed bug 1294907: 'Raise Zombies' technique cannot raise dwarf zombies! (Xeno)
+-fixed bug 1355972: Monsters Don't gain Drain resistance due to worn items!
+		    (Xeno)
+
 ver 0.0.7E7F1 [July 2/2005] [Released by Ali]
 -fixed bug 1155634: charm spell or command undead spell invoke genocide
 -fixed incorrect #ifdef resulting in compilation failure on ANSI only DOS builds
diff -Naurbd slashem-0.0.7E7F2/include/artilist.h slashem-0.0.7E7F3/include/artilist.h
--- slashem-0.0.7E7F2/include/artilist.h	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/include/artilist.h	2006-05-15 12:17:00.000000000 +0100
@@ -153,7 +153,7 @@
 	PHYS(5,5),      NO_DFNS,        NO_CARY,        0, A_NEUTRAL, NON_PM, PM_GNOME, 1000L ),
 
 A("Sword of Balance",           SILVER_SHORT_SWORD,
-	SPFX_DALIGN, 0, 0,
+	(SPFX_RESTR|SPFX_DALIGN), 0, 0,
 	PHYS(2,5),      NO_DFNS,        NO_CARY,        0, A_NEUTRAL, NON_PM, NON_PM, 5000L ),
 
 A("Frost Brand",                LONG_SWORD,
diff -Naurbd slashem-0.0.7E7F2/include/config.h slashem-0.0.7E7F3/include/config.h
--- slashem-0.0.7E7F2/include/config.h	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/include/config.h	2006-05-15 12:17:00.000000000 +0100
@@ -169,10 +169,6 @@
 # endif
 #endif
 
-#ifndef DEFAULT_WINDOW_SYS
-# define DEFAULT_WINDOW_SYS "tty"
-#endif
-
 #ifdef X11_GRAPHICS
 /*
  * There are two ways that X11 tiles may be defined.  (1) using a custom
@@ -187,6 +183,13 @@
 # ifdef USE_XPM
 #  define GRAPHIC_TOMBSTONE	/* Use graphical tombstone (rip.xpm) */
 # endif
+# ifndef DEFAULT_WINDOW_SYS
+#  define DEFAULT_WINDOW_SYS "X11"
+# endif
+#endif
+
+#ifndef DEFAULT_WINDOW_SYS
+# define DEFAULT_WINDOW_SYS "tty"
 #endif
 
 /*
diff -Naurbd slashem-0.0.7E7F2/include/mondata.h slashem-0.0.7E7F3/include/mondata.h
--- slashem-0.0.7E7F2/include/mondata.h	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/include/mondata.h	2006-05-15 12:17:00.000000000 +0100
@@ -176,7 +176,8 @@
 				 ((ptr) == &mons[PM_FIRE_ELEMENTAL]) ? 2 : \
 				 ((ptr) == &mons[PM_FIRE_VAMPIRE])? 2 : \
 				 ((ptr) == &mons[PM_FLAMING_SPHERE]) ? 1 : \
-				 ((ptr) == &mons[PM_SHOCKING_SPHERE]) ? 1 : 0)
+				 ((ptr) == &mons[PM_SHOCKING_SPHERE]) ? 1 : \
+				 ((ptr) == &mons[PM_WAX_GOLEM]) ? 1 : 0)
 /*	[note: the light ranges above were reduced to 1 for performance...] */
 /*  WAC increased to 3 and 2?*/
 #define likes_lava(ptr)		(ptr == &mons[PM_FIRE_ELEMENTAL] || \
diff -Naurbd slashem-0.0.7E7F2/include/patchlevel.h slashem-0.0.7E7F3/include/patchlevel.h
--- slashem-0.0.7E7F2/include/patchlevel.h	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/include/patchlevel.h	2006-05-15 12:17:00.000000000 +0100
@@ -16,10 +16,10 @@
  */
 #define PATCHLEVEL      7
 #define EDITLEVEL	7
-#define FIXLEVEL        2
+#define FIXLEVEL        3
 
 #define COPYRIGHT_BANNER_A \
-"This is SuperLotsoAddedStuffHack-Extended Magic 1997-2005"
+"This is SuperLotsoAddedStuffHack-Extended Magic 1997-2006"
 
 #define COPYRIGHT_BANNER_B \
 "NetHack, Copyright 1985-2003 Stichting Mathematisch Centrum, M. Stephenson."
diff -Naurbd slashem-0.0.7E7F2/readme.txt slashem-0.0.7E7F3/readme.txt
--- slashem-0.0.7E7F2/readme.txt	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/readme.txt	2006-05-15 12:17:00.000000000 +0100
@@ -67,31 +67,27 @@
 1.2 Changes
 -----------
 
-ver 0.0.7E7F2 [December 4/2005] [Released by Ali]
--fixed bug 1232707: engraving with lightsabers
--fixed bug 1237780: gtk window port fails to build with gcc-4.0
--fixed bug 1239041: engrave dialog doesn't show lightsabers
--fixed bug 1231766: Food shown in Medical Kits
--fixed bug 1238060: grammatical error when burning through a door 
-		    (Benjamin Schieder)
--fixed bug 1104713: Pet and Frozen food stores can charge
--fixed bug 988827: Monster wearing CoI left invisible corpse
--fixed bug 934078: Mold "wiggle" out of bag
--fixed bug 933587: One-Eyed Sam referred to as "it"
--fixed bug 1240794: Pets don't grow up properly
--fixed bug 1240799: Steed ridden onto poly trap polymorphs permanently
--fixed bug 1243904: chameleon as statue trap
--fixed bug 1223226: Some creatures are missing horns
--fixed bug 1223222: Female Bulls??
--fixed bug 1244470: shopkeeper don't have shotgun
--fixed bug 215062: no black color
-		   Extends videocolors option, see Guidebook for details.
--fixed bug 1244468: different spitting venom when polymorph
--fixed bug 1179557: Found egg marked (laid by you)
--fixed bug 1206099: Torches are not extinguished with rust traps
--fixed bug 1294907: 'Raise Zombies' technique cannot raise dwarf zombies! (Xeno)
--fixed bug 1355972: Monsters Don't gain Drain resistance due to worn items!
-		    (Xeno)
+ver 0.0.7E7F3 [?] [Released by ?]
+-inserted missing #ifdef resulting in compilation of pure ansi tty version for DOS failure.
+-fixed bug 1461660: Misaligned door
+-fixed bug 1449238: #youpoly takes a turn when denied
+-fixed bug 1432473: help for Luggage shows help for Lug/Lugh
+-fixed bug 1428520: Poisoned ID'd weapon gives description as well as ID
+-fixed bug 1375292: help for wombat shows text for bat
+-fixed bug 1375286: pummel strikes nothing, inside ochre jelly
+-fixed bug 1355891: Cannot wish for multiple potions of vampire blood
+-fixed bug 1314114: Shopkeepers cant see Shirts through invisible armour
+-fixed bug 1304954: You can Name the Sword of Balance
+-fixed bug 1223533: Typo error in the Install.X11 file
+-fixed bug 1407275: Wrong weight of medical kits
+-fixed bug 1213658: Death message missing with gas spore explosion when blind
+-fixed bug 1291161: #force command doesn't work on locked box
+-fixed bug 1223632: #force on shop doors
+-fixed bug 879247: gender & alignment select dont focus on "random" button
+-fixed bug 943553: Eating off floor while levitating
+-fixed bug 1432411: Knew the colour of a potion thrown on me, when blind
+-fixed bug 1449159: DEFAULT_WINDOW_SYS wrong if only X11 enabled
+-fixed bug 1400802: wax golems don't emit light
 
 See history.txt for changes made in previous versions.
 
diff -Naurbd slashem-0.0.7E7F2/src/apply.c slashem-0.0.7E7F3/src/apply.c
--- slashem-0.0.7E7F2/src/apply.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/src/apply.c	2006-05-15 12:17:00.000000000 +0100
@@ -3679,9 +3679,10 @@
 			  yname(obj));
 		    else {
 			check_unpaid(obj);
-			if (otmp->quan > 1L)
+			if (otmp->quan > 1L) {
 			    otmp->quan--;
-			else {
+			    obj->owt = weight(obj);
+			} else {
 			    obj_extract_self(otmp);
 			    obfree(otmp, (struct obj *)0);
 			}
diff -Naurbd slashem-0.0.7E7F2/src/invent.c slashem-0.0.7E7F3/src/invent.c
--- slashem-0.0.7E7F2/src/invent.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/src/invent.c	2006-05-15 12:17:00.000000000 +0100
@@ -1203,6 +1203,9 @@
 			pline(silly_thing_to, word);
 			return(struct obj *)0;
 		    } else if (!allowfloor) {
+			if ((Levitation || Flying))
+				You("cannot reach the floor to %s while %sing.", word, Levitation ? "float" : "fly");
+			else
 			pline("There's nothing here to %s.", word);
 			return(struct obj *)0;
 		    }
diff -Naurbd slashem-0.0.7E7F2/src/lock.c slashem-0.0.7E7F3/src/lock.c
--- slashem-0.0.7E7F2/src/lock.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/src/lock.c	2006-05-15 12:17:00.000000000 +0100
@@ -27,7 +27,7 @@
 picking_lock(x, y)
 	int *x, *y;
 {
-	if (occupation == picklock) {
+	if (occupation == picklock || occupation == forcedoor) {
 	    *x = u.ux + u.dx;
 	    *y = u.uy + u.dy;
 	    return TRUE;
@@ -259,8 +259,32 @@
 	    xlock.door->doormask = D_BROKEN;
 	else xlock.door->doormask = D_NODOOR;
 	unblock_point(u.ux+u.dx, u.uy+u.dy);
-	if (*in_rooms(u.ux+u.dx, u.uy+u.dy, SHOPBASE))
-	    add_damage(u.ux+u.dx, u.uy+u.dy, 0L);
+	if (*in_rooms(u.ux+u.dx, u.uy+u.dy, SHOPBASE)) {
+	    add_damage(u.ux+u.dx, u.uy+u.dy, 400L);
+	    pay_for_damage("break", FALSE);
+
+	    if (in_town(u.ux+u.dx, u.uy+u.dy)) {
+		struct monst *mtmp;
+		for(mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
+		    if (DEADMONSTER(mtmp)) continue;
+		    if((mtmp->data == &mons[PM_WATCHMAN] ||
+			mtmp->data == &mons[PM_WATCH_CAPTAIN]) &&
+			couldsee(mtmp->mx, mtmp->my) &&
+			mtmp->mpeaceful) {
+			if (canspotmon(mtmp))
+			    pline("%s yells:", Amonnam(mtmp));
+			else
+			    You_hear("someone yell:");
+			verbalize("Halt, thief!  You're under arrest!");
+			(void) angry_guards(FALSE);
+			break;
+		    }
+		}
+	    }
+	}
+	if (Blind)
+	    feel_location(u.ux+u.dx, u.uy+u.dy);    /* we know we broke it */
+	else
 	newsym(u.ux+u.dx, u.uy+u.dy);
 	
 	exercise(A_STR, TRUE);
@@ -598,6 +622,10 @@
 	picktyp = is_blade(uwep) ? 1 : 0;
 	if(xlock.usedtime && picktyp == xlock.picktyp) {
 	    if (xlock.box) {
+		if (!can_reach_floor()) {
+		    pline("Unfortunately, you can no longer reach the lock.");
+		    return 0;
+		}
 	    You("resume your attempt to force the lock.");
 	    set_occupation(forcelock, "forcing the lock", 0);
 	    return(1);
@@ -615,9 +643,27 @@
 
 	x = u.ux + u.dx;
 	y = u.uy + u.dy;
-	if (x == u.ux && y == u.uy && !u.dz) {
+	if (x == u.ux && y == u.uy) {
+	    if (u.dz < 0) {
+		There("isn't any sort of lock up %s.",
+		      Levitation ? "here" : "there");
+		return 0;
+	    } else if (is_lava(u.ux, u.uy)) {
+		pline("Doing that would probably melt your %s.",
+		      xname(uwep));
+		return 0;
+	    } else if (is_pool(u.ux, u.uy) && !Underwater) {
+		pline_The("water has no lock.");
+		return 0;
+	    }
+
 	for(otmp = level.objects[u.ux][u.uy]; otmp; otmp = otmp->nexthere)
 	    if(Is_box(otmp)) {
+		    if (!can_reach_floor()) {
+			You_cant("reach %s from up here.", the(xname(otmp)));
+		    return 0;
+		    }
+
 		if (otmp->obroken || !otmp->olocked) {
 		    There("is %s here, but its lock is already %s.",
 			  doname(otmp), otmp->obroken ? "broken" : "unlocked");
diff -Naurbd slashem-0.0.7E7F2/src/mhitu.c slashem-0.0.7E7F3/src/mhitu.c
--- slashem-0.0.7E7F2/src/mhitu.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/src/mhitu.c	2006-05-15 12:17:00.000000000 +0100
@@ -1168,7 +1168,7 @@
 			}
 
 			if (otmp->opoisoned) {
-			    poisoned(obj_typename(otmp->otyp), A_STR,
+			    poisoned(simple_typename(otmp->otyp), A_STR,
 				    killer_xname(otmp), 10);
 			    if (nopoison < 2) nopoison = 2;
 			    if (!rn2(nopoison)) {
diff -Naurbd slashem-0.0.7E7F2/src/mon.c slashem-0.0.7E7F3/src/mon.c
--- slashem-0.0.7E7F2/src/mon.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/src/mon.c	2006-05-15 12:17:00.000000000 +0100
@@ -1728,8 +1728,6 @@
 	/* Gas spores always explode upon death */
 	for(i = 0; i < NATTK; i++) {
 	    if (mdat->mattk[i].aatyp == AT_BOOM) {
-	    	char buf[BUFSZ];
-
 	    	if (mdat->mattk[i].damn)
 	    	    tmp = d((int)mdat->mattk[i].damn,
 	    	    		(int)mdat->mattk[i].damd);
@@ -1759,8 +1757,8 @@
 		    return FALSE;
 		}
 
-	    	Sprintf(buf, "%s explosion", s_suffix(mdat->mname));
-	    	killer = buf;
+	    	Sprintf(killer_buf, "%s explosion", s_suffix(mdat->mname));
+	    	killer = killer_buf;
 	    	killer_format = KILLED_BY_AN;
 	    	explode(mon->mx, mon->my, -1, tmp, MON_EXPLODE, EXPL_NOXIOUS); 
 	    	return (FALSE);
diff -Naurbd slashem-0.0.7E7F2/src/mondata.c slashem-0.0.7E7F3/src/mondata.c
--- slashem-0.0.7E7F2/src/mondata.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/src/mondata.c	2006-05-15 12:17:00.000000000 +0100
@@ -100,7 +100,7 @@
 	return FALSE;
 }
 
-/* TRUE iff monster is resistant to light-induced blindness */
+/* TRUE if monster is resistant to light-induced blindness */
 boolean
 resists_blnd(mon)
 struct monst *mon;
diff -Naurbd slashem-0.0.7E7F2/src/monst.c slashem-0.0.7E7F3/src/monst.c
--- slashem-0.0.7E7F2/src/monst.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/src/monst.c	2006-05-15 12:17:00.000000000 +0100
@@ -3492,7 +3492,7 @@
 	  NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
 	SIZ(400, 0, 0, MS_SILENT, MZ_LARGE), MR_SLEEP|MR_POISON, 0,
 	M1_BREATHLESS|M1_MINDLESS|M1_HUMANOID,
-	M2_HOSTILE|M2_NEUTER, 0, CLR_GRAY),
+	M2_HOSTILE|M2_NEUTER, M3_INFRAVISIBLE, CLR_GRAY),
     MON("plastic golem", S_GOLEM,
 	LVL(4, 12, 9, 0, 0), (G_NOCORPSE|1),
 	A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3),
diff -Naurbd slashem-0.0.7E7F2/src/objnam.c slashem-0.0.7E7F3/src/objnam.c
--- slashem-0.0.7E7F2/src/objnam.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/src/objnam.c	2006-05-15 12:17:00.000000000 +0100
@@ -2259,6 +2259,7 @@
          && !strstri(bp, "medallion ")
          && !strstri(bp, "stake ")
          && !strstri(bp, "potion ")
+         && !strstri(bp, "potions ")
 	 && !strstri(bp, "finger ")) {
 	    if ((p = strstri(bp, " of ")) != 0
 		&& (mntmp = name_to_mon(p+4)) >= LOW_PM)
diff -Naurbd slashem-0.0.7E7F2/src/polyself.c slashem-0.0.7E7F3/src/polyself.c
--- slashem-0.0.7E7F2/src/polyself.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/src/polyself.c	2006-05-15 12:17:00.000000000 +0100
@@ -1647,9 +1647,6 @@
 			  (uarm && uarm->otyp == WHITE_DRAGON_SCALE_MAIL 
 				&& Role_if(PM_ICE_MAGE)));
 
-	/* Set to TRUE when you can polyatwill but choose not to */
-	boolean can_polyatwill = FALSE; 
-	
 	/* KMH, balance patch -- new intrinsic */
 	if (Unchanging) {
 	    pline("You cannot change your form.");
@@ -1705,7 +1702,7 @@
 	     * is unaffected by blindness, confusion, stun etc. 
 	     */
 	    if (yn("Transform into your draconic form?") == 'n') 
-		can_polyatwill = TRUE;
+		return 0;
 	    else if (!scales && !scale_mail && u.uen <= EN_BABY_DRAGON) {
 		You("don't have the energy to polymorph.");
 		return 0;		
@@ -1742,7 +1739,7 @@
 	}
 	if (Race_if(PM_DOPPELGANGER)) {
 	    if (yn("Polymorph at will?") == 'n')	    
-	    	can_polyatwill = TRUE;
+		return 0;
 	    else if (u.uen < EN_DOPP) {
 		You("don't have the energy to polymorph!");
 		return 0;
@@ -1765,7 +1762,7 @@
 	} else if (Race_if(PM_HUMAN_WEREWOLF) &&
 		(!Upolyd || u.umonnum == u.ulycn)) {
 	    if (yn("Change form?") == 'n')
-	    	can_polyatwill = TRUE;
+		return 0;
 	    else if (u.ulycn == NON_PM) {
 	    	/* Very serious */
 	    	You("are no longer a lycanthrope!");
@@ -1784,13 +1781,12 @@
 			else nomul(0);
 		    }
 		    you_were();
-		    return 1;
 		} else {
 		    rehumanize();
-		    return 1;
 		}
+		return 1;
 	    }
-	} else if (!can_polyatwill) {
+	} else {
 	    pline("You can't polymorph at will%s.", 
 		    ((Role_if(PM_FLAME_MAGE) || Role_if(PM_ICE_MAGE) || 
 		      Race_if(PM_HUMAN_WEREWOLF) || Race_if(PM_DOPPELGANGER)) ?
diff -Naurbd slashem-0.0.7E7F2/src/potion.c slashem-0.0.7E7F3/src/potion.c
--- slashem-0.0.7E7F2/src/potion.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/src/potion.c	2006-05-15 12:17:00.000000000 +0100
@@ -1663,7 +1663,7 @@
 	    if (kn)
 		makeknown(obj->otyp);
 	    else if (!objects[obj->otyp].oc_name_known &&
-						!objects[obj->otyp].oc_uname)
+						!objects[obj->otyp].oc_uname && !Blind)
 		docall(obj);
 	}
 }
diff -Naurbd slashem-0.0.7E7F2/src/shk.c slashem-0.0.7E7F3/src/shk.c
--- slashem-0.0.7E7F2/src/shk.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/src/shk.c	2006-05-15 12:17:00.000000000 +0100
@@ -2328,11 +2328,12 @@
 	}
 #ifdef TOURIST
 	if ((Role_if(PM_TOURIST) && u.ulevel < (MAXULEV/2))
-	    || (uarmu && !uarm && !uarmc))	/* touristy shirt visible */
+	    || ((uarmu && !uarmu->oinvis) && (!uarm || uarm->oinvis) 
+	    && (!uarmc || uarmc->oinvis)))	/* touristy shirt visible */
 		tmp += tmp / 3L;
 	else
 #endif
-	if (uarmh && uarmh->otyp == DUNCE_CAP)
+	if (uarmh && !uarmh->oinvis && uarmh->otyp == DUNCE_CAP)
 		tmp += tmp / 3L;
 
 	if (ACURR(A_CHA) > 18)		tmp /= 2L;
@@ -2482,11 +2483,12 @@
 
 #ifdef TOURIST
 	if ((Role_if(PM_TOURIST) && u.ulevel < (MAXULEV/2))
-	    || (uarmu && !uarm && !uarmc))	/* touristy shirt visible */
+	    || ((uarmu && !uarmu->oinvis) && (!uarm || uarm->oinvis) 
+	    && (!uarmc || uarmc->oinvis)))	/* touristy shirt visible */
 		tmp /= 3L;
 	else
 #endif
-	if (uarmh && uarmh->otyp == DUNCE_CAP)
+	if (uarmh && !uarmh->oinvis && uarmh->otyp == DUNCE_CAP)
 		tmp /= 3L;
 	else
 		tmp /= 2L;
diff -Naurbd slashem-0.0.7E7F2/src/sp_lev.c slashem-0.0.7E7F3/src/sp_lev.c
--- slashem-0.0.7E7F2/src/sp_lev.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/src/sp_lev.c	2006-05-15 12:17:00.000000000 +0100
@@ -2515,6 +2515,12 @@
 			    typ = D_CLOSED; /* force it to be closed */
 		}
 		levl[x][y].doormask = typ;
+
+		    /* Fix random door alignment */
+
+		    if (y > 0 && (IS_WALL(levl[x][y-1].typ) ||
+				levl[x][y-1].horizontal))
+			levl[x][y].horizontal = 0;
 		}
 
 		/* Now the complicated part, list it with each subroom */
diff -Naurbd slashem-0.0.7E7F2/src/tech.c slashem-0.0.7E7F3/src/tech.c
--- slashem-0.0.7E7F2/src/tech.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/src/tech.c	2006-05-15 12:17:00.000000000 +0100
@@ -703,9 +703,10 @@
 			    "dress your wounds with");
 		    if (otmp) {
 			check_unpaid(otmp);
-			if (otmp->quan > 1L)
+			if (otmp->quan > 1L) {
 			    otmp->quan--;
-			else {
+			    otmp->ocontainer->owt = weight(otmp->ocontainer);
+			} else {
 			    obj_extract_self(otmp);
 			    obfree(otmp, (struct obj *)0);
 			}
@@ -2064,7 +2065,11 @@
 
 	You("let loose a barrage of blows!");
 
+	if (u.uswallow)
+	    mtmp = u.ustuck;
+	else
 	mtmp = m_at(u.ux + u.dx, u.uy + u.dy);
+
 	if (!mtmp) {
 		You("strike nothing.");
 		return (0);
@@ -2075,7 +2080,12 @@
 	 */
 	for (i = 0; (i < 4); i++) {
 	    if (rn2(70) > (techlev(tech_no) + 30)) break;
+
+	    if (u.uswallow)
+		mtmp = u.ustuck;
+	    else
 	    mtmp = m_at(u.ux + u.dx, u.uy + u.dy);
+
 	    if (!mtmp) return (1);
 	    if (!attack(mtmp)) return (1);
 	} 
diff -Naurbd slashem-0.0.7E7F2/win/X11/Install.X11 slashem-0.0.7E7F3/win/X11/Install.X11
--- slashem-0.0.7E7F2/win/X11/Install.X11	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/win/X11/Install.X11	2006-05-15 12:17:00.000000000 +0100
@@ -37,7 +37,7 @@
 
 If you want to use the optional tiles (multicolored pictures instead of a
 replacement font), you will need to have the win/share files and change
-the CF_SHARE_DATND setting in the top Makefile to contain the tile files before
+the CNF_SHARE_DATND setting in the top Makefile to contain the tile files before
 you do your 'make all'. Include x11tiles for the 16x16 tile set and x11bigtiles
 for the 32x32 set. The available tile sets should be defined in the
 configuration file. The tiles option can then be used to select the initial
@@ -65,7 +65,7 @@
 If you define USE_XPM in config.h, you may also define GRAPHIC_TOMBSTONE
 which causes the closing tombstone to be displayed from the image file
 specified by the "tombstone" X resource (rip.xpm by default).  In this
-case, make sure the top Makefile CF_SHARE_X11ND also contains rip.xpm.
+case, make sure the top Makefile CNF_SHARE_X11ND also contains rip.xpm.
 
 
 Whether or not you install tile support, you can provide support for
diff -Naurbd slashem-0.0.7E7F2/win/X11/SlashEM.ad slashem-0.0.7E7F3/win/X11/SlashEM.ad
--- slashem-0.0.7E7F2/win/X11/SlashEM.ad	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/win/X11/SlashEM.ad	2006-05-15 12:17:00.000000000 +0100
@@ -132,6 +132,30 @@
 SlashEM*race_selection*quit.accelerators: #override\n\
 				<Key>Escape:	set() notify() unset()
 
+SlashEM*gender_selection*random.borderColor: blue
+SlashEM*gender_selection*random.borderWidth: 2
+SlashEM*gender_selection*random.foreground:  blue
+SlashEM*gender_selection*random.accelerators: #override\n\
+				<Key>Return:	set() notify() unset()
+SlashEM*gender_selection*quit.borderColor: blue
+SlashEM*gender_selection*quit.foreground:  blue
+SlashEM*gender_selection*Command.borderColor:  red
+SlashEM*gender_selection*Command.foreground: red
+SlashEM*gender_selection*quit.accelerators: #override\n\
+				<Key>Return:	set() notify() unset()
+
+SlashEM*alignment_selection*random.borderColor:  blue
+SlashEM*alignment_selection*random.borderWidth:  2
+SlashEM*alignment_selection*random.foreground: blue
+SlashEM*alignment_selection*random.accelerators: #override\n\
+				<Key>Return:	set() notify() unset()
+SlashEM*alignment_selection*quit.borderColor:  blue
+SlashEM*alignment_selection*quit.foreground: blue
+SlashEM*alignment_selection*Command.borderColor: red
+SlashEM*alignment_selection*Command.foreground:  red
+SlashEM*alignment_selection*quit.accelerators: #override\n\
+				<Key>Return:	set() notify() unset()
+
 SlashEM*extended_commands*dismiss.borderColor:	blue
 SlashEM*extended_commands*dismiss.foreground:	blue
 SlashEM*extended_commands*help.borderColor:	blue
diff -Naurbd slashem-0.0.7E7F2/win/tty/termcap.c slashem-0.0.7E7F3/win/tty/termcap.c
--- slashem-0.0.7E7F2/win/tty/termcap.c	2005-12-04 14:58:27.000000000 +0000
+++ slashem-0.0.7E7F3/win/tty/termcap.c	2006-05-15 12:17:01.000000000 +0100
@@ -211,7 +211,9 @@
 #endif
 
 #ifdef TEXTCOLOR
+# ifndef MSDOS
 	init_ttycolor();
+# endif
 #endif
 
 #ifdef TERMLIB
