diff -xconfig.h -xunixconf.h -x'Makefile*' -x'*.o' -ru nethack-3.4.3_orig/include/extern.h nethack-3.4.3/include/extern.h --- nethack-3.4.3_orig/include/extern.h 2003-12-07 18:39:13.000000000 -0500 +++ nethack-3.4.3/include/extern.h 2005-05-26 20:50:15.986802792 -0400 @@ -1939,7 +1939,7 @@ E void NDECL(level_tele); E void FDECL(domagicportal, (struct trap *)); E void FDECL(tele_trap, (struct trap *)); -E void FDECL(level_tele_trap, (struct trap *)); +E int FDECL(level_tele_trap, (struct trap *, BOOLEAN_P)); E void FDECL(rloc_to, (struct monst *,int,int)); E boolean FDECL(rloc, (struct monst *, BOOLEAN_P)); E boolean FDECL(tele_restrict, (struct monst *)); diff -xconfig.h -xunixconf.h -x'Makefile*' -x'*.o' -ru nethack-3.4.3_orig/src/teleport.c nethack-3.4.3/src/teleport.c --- nethack-3.4.3_orig/src/teleport.c 2003-12-07 18:39:13.000000000 -0500 +++ nethack-3.4.3/src/teleport.c 2005-05-26 21:39:32.200390016 -0400 @@ -458,6 +458,11 @@ struct trap *trap; trap = t_at(u.ux, u.uy); + + if (trap && trap->tseen && trap->ttyp == LEVEL_TELEP && + yn("There is a level teleporter here. Jump in?") == 'y') + return level_tele_trap(trap, TRUE); + if (trap && (!trap->tseen || trap->ttyp != TELEP_TRAP)) trap = 0; @@ -855,19 +860,30 @@ tele(); } -void -level_tele_trap(trap) +int +level_tele_trap(trap, jumped) struct trap *trap; +boolean jumped; { - You("%s onto a level teleport trap!", + /* + * The message here calls it a "level teleport trap", but in + * other places it's called a "level teleporter" ('There is a + * level teleporter here.'). This is also the string to wish + * for to generate one in wizmode. + */ + if (jumped) + You("%s onto the level teleporter.", + locomotion(youmonst.data, "jump")); + else + You("%s onto a level teleport trap!", Levitation ? (const char *)"float" : locomotion(youmonst.data, "step")); - if (Antimagic) { + if (!jumped && Antimagic) { shieldeff(u.ux, u.uy); } - if (Antimagic || In_endgame(&u.uz)) { + if ((!jumped && Antimagic) || In_endgame(&u.uz)) { You_feel("a wrenching sensation."); - return; + return(0); } if (!Blind) You("are momentarily blinded by a flash of light."); @@ -876,6 +892,7 @@ deltrap(trap); newsym(u.ux,u.uy); /* get rid of trap symbol */ level_tele(); + return(1); } /* check whether monster can arrive at location via Tport (or fall) */ diff -xconfig.h -xunixconf.h -x'Makefile*' -x'*.o' -ru nethack-3.4.3_orig/src/trap.c nethack-3.4.3/src/trap.c --- nethack-3.4.3_orig/src/trap.c 2003-12-07 18:39:13.000000000 -0500 +++ nethack-3.4.3/src/trap.c 2005-05-26 20:50:15.990802184 -0400 @@ -958,7 +958,7 @@ break; case LEVEL_TELEP: seetrap(trap); - level_tele_trap(trap); + (void)level_tele_trap(trap, FALSE); break; case WEB: /* Our luckless player has stumbled into a web. */