diff -u --exclude '*.o' ../orig/nethack-3.4.3/src/do.c src/do.c
--- ../orig/nethack-3.4.3/src/do.c	2003-12-24 21:41:51.000000000 -0800
+++ src/do.c	2003-12-26 12:47:55.000000000 -0800
@@ -750,7 +750,7 @@
 int
 dodown()
 {
-	struct trap *trap = 0;
+	struct trap *trap = t_at(u.ux, u.uy);
 	boolean stairs_down = ((u.ux == xdnstair && u.uy == ydnstair) ||
 		    (u.ux == sstairs.sx && u.uy == sstairs.sy && !sstairs.up)),
 		ladder_down = (u.ux == xdnladder && u.uy == ydnladder);
@@ -788,19 +788,40 @@
 	    return (0);   /* didn't move */
 	}
 	if (!stairs_down && !ladder_down) {
-		if (!(trap = t_at(u.ux,u.uy)) ||
+		if (!trap ||
 			(trap->ttyp != TRAPDOOR && trap->ttyp != HOLE)
 			|| !Can_fall_thru(&u.uz) || !trap->tseen) {
 
-			if (flags.autodig && !flags.nopick &&
+                  /* HAS to be a pit at this point */
+                        if (trap && !u.utrap)
+                        {
+                          You("carefully ease yourself into the %spit.",
+                            (trap->ttyp == SPIKED_PIT) ? "spiked " : "");
+
+                          /* if you're fumbling or clumsy, you slip */ 
+                          if ((Fumbling || rn2(ACURR(A_DEX) - 2) == 0) &&
+                            !is_clinger(youmonst.data))
+                          {     
+                            You("slip while trying to enter the %spit!",
+                              (trap->ttyp == SPIKED_PIT) ? "spiked " : "");
+                            dotrap(trap, FORCEBUNGLE);
+                            exercise(A_DEX, FALSE);
+                          } else {
+                            u.utrap = rn1(6,2); /* default pit time */
+                            u.utraptype = TT_PIT;
+                            vision_full_recalc = 1;
+                          }
+
+                          return 1;
+                        } else if (flags.autodig && !flags.nopick &&
 				uwep && is_pick(uwep)) {
 				return use_pick_axe2(uwep);
 			} else {
 				You_cant("go down here.");
 				return(0);
 			}
-		}
-	}
+                }
+        }
 	if(u.ustuck) {
 		You("are %s, and cannot go down.",
 			!u.uswallow ? "being held" : is_animal(u.ustuck->data) ?
Only in src/: Makefile
diff -u --exclude '*.o' ../orig/nethack-3.4.3/src/sit.c src/sit.c
--- ../orig/nethack-3.4.3/src/sit.c	2003-12-24 21:41:53.000000000 -0800
+++ src/sit.c	2003-12-26 23:30:10.000000000 -0800
@@ -39,7 +39,7 @@
 dosit()
 {
 	static const char sit_message[] = "sit on the %s.";
-	register struct trap *trap;
+	register struct trap *trap = t_at(u.ux, u.uy);
 	register int typ = levl[u.ux][u.uy].typ;
 
 
@@ -60,7 +60,12 @@
 	    goto in_water;
 	}
 
-	if(OBJ_AT(u.ux, u.uy)) {
+        if (!u.utrap && trap && (trap->ttyp == SPIKED_PIT || trap->ttyp == PIT))
+        {
+          You("sit at the edge of the %spit%s.",
+              (trap->ttyp == SPIKED_PIT) ? "spiked " : "",
+              (Hallucination) ? " and contemplate the meaning of life" : "");
+        } else if(OBJ_AT(u.ux, u.uy)) {
 	    register struct obj *obj;
 
 	    obj = level.objects[u.ux][u.uy];
@@ -68,8 +73,7 @@
 	    if (!(Is_box(obj) || objects[obj->otyp].oc_material == CLOTH))
 		pline("It's not very comfortable...");
 
-	} else if ((trap = t_at(u.ux, u.uy)) != 0 ||
-		   (u.utrap && (u.utraptype >= TT_LAVA))) {
+	} else if (trap || (u.utrap && (u.utraptype >= TT_LAVA))) {
 
 	    if (u.utrap) {
 		exercise(A_WIS, FALSE);	/* you're getting stuck longer */

