]> granicus.if.org Git - nethack/commitdiff
lockpicking while engulfed
authornethack.rankin <nethack.rankin>
Tue, 20 Feb 2007 02:32:50 +0000 (02:32 +0000)
committernethack.rankin <nethack.rankin>
Tue, 20 Feb 2007 02:32:50 +0000 (02:32 +0000)
     You can't begin or resume locking or unlocking a chest on the floor
while swallowed by a monster, but you could lock or unlock an adjacent
door in that situation.

doc/fixes34.4
src/lock.c

index 2fdd6a9fcbcad7b840194bd6eb3694e591743cbb..f45f920d965233e4befaad52754ff88cc1c2711e 100644 (file)
@@ -324,6 +324,7 @@ dropped wielded, in use leash should remain in inventory, since it's in-use
 wielded, in use leash can't be snatched by whip-wielding monster
 when using two weapons at once, whip-wielding monster can target either one
 can't #force floor item while engulfed, levitating, or unskilled riding
+can't lock or unlock doors while engulfed
 if hero or monster standing on opened drawbridge survives its destruction,
        fall into water or lava instead of remaining on top
 
index 6b04f8f28a515835719bd2dbc9a8b7bb564efd76..4483d5c8f5af5e6f9e53f1990c0d2e6f9e103b97 100644 (file)
@@ -1,4 +1,4 @@
-/*     SCCS Id: @(#)lock.c     3.5     2007/01/02      */
+/*     SCCS Id: @(#)lock.c     3.5     2007/02/17      */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -249,7 +249,7 @@ pick_lock(pick) /* pick a lock with a given object */
                pline(no_longer, "hold the", what);
                reset_pick();
                return 0;
-           } else if (xlock.box && !can_reach_floor(TRUE)) {
+           } else if (u.uswallow || (xlock.box && !can_reach_floor(TRUE))) {
                pline(no_longer, "reach the", "lock");
                reset_pick();
                return 0;
@@ -264,6 +264,13 @@ pick_lock(pick) /* pick a lock with a given object */
        if(nohands(youmonst.data)) {
                You_cant("hold %s -- you have no hands!", doname(pick));
                return(0);
+       } else if (u.uswallow) {
+               You_cant("%sunlock %s.",
+#ifdef TOURIST
+                         (picktyp == CREDIT_CARD) ? "" :
+#endif
+                         "lock or ", mon_nam(u.ustuck));
+               return 0;
        }
 
        if((picktyp != LOCK_PICK &&