fix github issue #279 - boulder feedback
Polymophed into a giant and moving onto a boulder's location could yield "you easily pick it up" (without actually doing so) followed by "you see a boulder here". It would happen if autopickup was Off, or if the 'm' move-without-autopickup prefix was used, while either boulder was included in pickup_types (including when that is set for 'all') or hero had thrown that particular boulder and pickup_thrown was On. The check for whether auto-pick should try on an object relied on its caller verifying that autopickup was On. pickup() does that for pickup() -> autopick() -> autopick_testobj() but moverock() wasn't doing that for moverock() -> autopick_testobj() so the logic controlling moverock's message was subverted. I first thought that logic itself was incorrect and changed the message. This keeps the new message even though it turned out not to be cause of the problem. Fixes #279
This commit is contained in:
+3
-1
@@ -1,4 +1,4 @@
|
|||||||
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.62 $ $NHDT-Date: 1578764038 2020/01/11 17:33:58 $
|
$NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.63 $ $NHDT-Date: 1578834315 2020/01/12 13:05:15 $
|
||||||
|
|
||||||
General Fixes and Modified Features
|
General Fixes and Modified Features
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
@@ -42,6 +42,8 @@ walking out of tethered-to-buried-object trap condition was supposed to
|
|||||||
reinstate punishment but wasn't finding the buried iron ball because
|
reinstate punishment but wasn't finding the buried iron ball because
|
||||||
the trap condition was cleared first to indicate escape; result was
|
the trap condition was cleared first to indicate escape; result was
|
||||||
attached chain that got dragged around but had no ball attached
|
attached chain that got dragged around but had no ball attached
|
||||||
|
when poly'd into a giant and moving onto a boulder's spot, message given was
|
||||||
|
confused about whether autopickup would occur so could be misleading
|
||||||
|
|
||||||
|
|
||||||
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
+17
-9
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 hack.c $NHDT-Date: 1578690701 2020/01/10 21:11:41 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.240 $ */
|
/* NetHack 3.6 hack.c $NHDT-Date: 1578834315 2020/01/12 13:05:15 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.241 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Derek S. Ray, 2015. */
|
/*-Copyright (c) Derek S. Ray, 2015. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -340,7 +340,8 @@ moverock()
|
|||||||
slot or into the overflow ('#') slot
|
slot or into the overflow ('#') slot
|
||||||
unless already carrying at least one */
|
unless already carrying at least one */
|
||||||
&& (inv_cnt(FALSE) < 52 || !carrying(BOULDER))),
|
&& (inv_cnt(FALSE) < 52 || !carrying(BOULDER))),
|
||||||
willpickup = (canpickup && autopick_testobj(otmp, TRUE));
|
willpickup = (canpickup && flags.pickup
|
||||||
|
&& autopick_testobj(otmp, TRUE));
|
||||||
|
|
||||||
if (u.usteed && P_SKILL(P_RIDING) < P_BASIC) {
|
if (u.usteed && P_SKILL(P_RIDING) < P_BASIC) {
|
||||||
You("aren't skilled enough to %s %s from %s.",
|
You("aren't skilled enough to %s %s from %s.",
|
||||||
@@ -348,14 +349,21 @@ moverock()
|
|||||||
the(xname(otmp)), y_monnam(u.usteed));
|
the(xname(otmp)), y_monnam(u.usteed));
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* willpickup: you easily pick it up
|
* will pick up: you easily pick it up
|
||||||
* canpickup: you could easily pick it up
|
* can but won't: you manuver over it and could pick it up
|
||||||
* otherwise: you easily push it aside
|
* can't pick up: you manuver over it (possibly followed
|
||||||
|
* by feedback from failed auto-pickup attempt)
|
||||||
*/
|
*/
|
||||||
pline("However, you %seasily %s.",
|
pline("However, you %s%s.",
|
||||||
(willpickup || !canpickup) ? "" : "could ",
|
willpickup ? "easily pick it up"
|
||||||
(willpickup || canpickup) ? "pick it up"
|
: "manuver over it",
|
||||||
: "push it aside");
|
(canpickup && !willpickup)
|
||||||
|
? " and could pick it up"
|
||||||
|
: "");
|
||||||
|
/* similar to dropping everything and squeezing onto
|
||||||
|
a Sokoban boulder's spot, moving to same breaks the
|
||||||
|
Sokoban rules because on next step you could go
|
||||||
|
past it without pushing it to plug a pit or hole */
|
||||||
sokoban_guilt();
|
sokoban_guilt();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user