From 820f3f70d980bec3719674d8dd49596cc135169a Mon Sep 17 00:00:00 2001 From: "nethack.rankin" Date: Thu, 6 Apr 2006 04:55:07 +0000 Subject: [PATCH] autopickup during failed #untrap attempt (trunk only) From a bug report, moving into a trap during a failed untrap attempt didn't autopickup any objects there or report about objects which aren't picked up. Although that appears to have been intentional, change move_into_trap() to behave more like a regular move. (I wrote this bit of code and don't remember whether the no pickup aspect was deliberate; I suspect it might have been to avoid the redundant "there is a trap here" message which you get when pickup checking is done but not everything on the spot gets picked up. This patch suppresses that message.) --- doc/fixes35.0 | 2 ++ src/trap.c | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/doc/fixes35.0 b/doc/fixes35.0 index faaaba32d..2845eb56a 100644 --- a/doc/fixes35.0 +++ b/doc/fixes35.0 @@ -132,6 +132,8 @@ better handling for Fort Ludios and endgame in wizard mode's `^V ?' menu no free lunch for gelatinous cubes eating scrolls of mail eating gold in front of the vault guard will make the guard angry calculate engulf time differently for non-digestion attacks than for digestion +preform autopickup and/or report on objects at the spot when a failed #untrap + attempt causes the hero to move onto a trap's location Platform- and/or Interface-Specific Fixes diff --git a/src/trap.c b/src/trap.c index 29fddcd9d..ea7e5f659 100644 --- a/src/trap.c +++ b/src/trap.c @@ -1,4 +1,4 @@ -/* SCCS Id: @(#)trap.c 3.5 2005/12/05 */ +/* SCCS Id: @(#)trap.c 3.5 2006/04/05 */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ @@ -3235,8 +3235,8 @@ struct trap *ttmp; boolean unused; /* we know there's no monster in the way, and we're not trapped */ - if (!Punished || drag_ball(x, y, &bc, &bx, &by, &cx, &cy, &unused, - TRUE)) { + if (!Punished || + drag_ball(x, y, &bc, &bx, &by, &cx, &cy, &unused, TRUE)) { u.ux0 = u.ux, u.uy0 = u.uy; u.ux = x, u.uy = y; u.umoved = TRUE; @@ -3244,7 +3244,13 @@ struct trap *ttmp; vision_recalc(1); check_leash(u.ux0, u.uy0); if (Punished) move_bc(0, bc, bx, by, cx, cy); - spoteffects(FALSE); /* dotrap() */ + /* marking the trap unseen forces dotrap() to treat it like a new + discovery and prevents pickup() -> look_here() -> check_here() + from giving a redudant "there is a here" message when + there are objects covering this trap */ + ttmp->tseen = 0; /* hack for check_here() */ + /* trigger the trap */ + spoteffects(TRUE); /* pickup() + dotrap() */ exercise(A_WIS, FALSE); } } -- 2.40.0