]> granicus.if.org Git - nethack/commitdiff
invocation vs being trapped
authornethack.rankin <nethack.rankin>
Tue, 30 May 2006 04:07:34 +0000 (04:07 +0000)
committernethack.rankin <nethack.rankin>
Tue, 30 May 2006 04:07:34 +0000 (04:07 +0000)
     I can't find the report about this; I must have deleted it after
reading, or else recently reread something so old that I'm not going back
far enough now.  When you perform the invocation ritual to create the
stairs down to Moloch's Sanctum, any trap at your location gets deleted.
But if you were in a trapped state at the time then you got left in that
state.  Descending stairs doesn't check for traps so you wouldn't notice
unless you tried to move around on the same level first.  Then you'd get
"you're stuck in a pit/beartrap/web" even though it wasn't there anymore.

doc/fixes34.4
src/mklev.c

index 1c1226ad171c5eb8f33d95befa6a0e971c03a196..0e8523e941a21c57f426490c245f29d087c9bf8a 100644 (file)
@@ -233,6 +233,7 @@ temple donation can recover protection previously stolen by attrcurse attack
        even when protection amount is so big that no increment would be given
 display the invisible monster glyph ('I') whenever an unseen monster forces
        poly'd hero out of hiding
+escape the deleted trap after performing the invocation while trapped
 
 
 Platform- and/or Interface-Specific Fixes
index b335fba10c15875c9216a951b21a8dd42ece9ea1..ad2553f7df65cf3d04ee1d0bf2bfd2af90e589df 100644 (file)
@@ -1,4 +1,4 @@
-/*     SCCS Id: @(#)mklev.c    3.5     2006/03/06      */
+/*     SCCS Id: @(#)mklev.c    3.5     2006/05/29      */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -1437,6 +1437,11 @@ mkinvokearea()
     pline_The("walls around you begin to bend and crumble!");
     display_nhwindow(WIN_MESSAGE, TRUE);
 
+    /* any trap hero is stuck in will be going away now */
+    if (u.utrap) {
+       u.utrap = 0;
+       if (u.utraptype == TT_BURIEDBALL) buried_ball_to_punishment();
+    }
     mkinvpos(xmin, ymin, 0);           /* middle, before placing stairs */
 
     for(dist = 1; dist < 7; dist++) {