plural of "Nazgul" is "Nazgul" not "Nazguls"
trap messages referring to named steed were ackwardly worded when hallucination
overrode use of the name
+some actions such as eating corpses off the floor didn't check whether hero
+ could reach the bottom of a pit
Platform- and/or Interface-Specific Fixes
-/* SCCS Id: @(#)engrave.c 3.4 2001/11/04 */
+/* SCCS Id: @(#)engrave.c 3.4 2004/01/03 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
boolean
can_reach_floor()
{
- return (boolean)(!u.uswallow &&
+ struct trap *t;
+
+ if (u.uswallow) return FALSE;
#ifdef STEED
- /* Restricted/unskilled riders can't reach the floor */
- !(u.usteed && P_SKILL(P_RIDING) < P_BASIC) &&
+ /* Restricted/unskilled riders can't reach the floor */
+ if (u.usteed && P_SKILL(P_RIDING) < P_BASIC) return FALSE;
#endif
- (!Levitation ||
+ if ((t = t_at(u.ux, u.uy)) != 0 && uteetering_at_seen_pit(t) &&
+ !Flying)
+ return FALSE;
+
+ return (boolean)((!Levitation ||
Is_airlevel(&u.uz) || Is_waterlevel(&u.uz)) &&
(!u.uundetected || !is_hider(youmonst.data) ||
u.umonnum == PM_TRAPPER));
-/* SCCS Id: @(#)hack.c 3.4 2003/04/30 */
+/* SCCS Id: @(#)hack.c 3.4 2004/01/03 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
}
}
if (is_lava(u.ux, u.uy)) {
- if (Wwalking || is_floater(youmonst.data) || is_clinger(youmonst.data)
- || (Flying && !Breathless)) {
+ if (Wwalking || is_floater(youmonst.data) ||
+ is_clinger(youmonst.data) || (Flying && !Breathless)) {
You_cant("reach the bottom to pick things up.");
return(0);
} else if (!likes_lava(youmonst.data)) {
return(0);
}
}
- if(!OBJ_AT(u.ux, u.uy)) {
- There("is nothing here to pick up.");
- return(0);
+ if (!OBJ_AT(u.ux, u.uy)) {
+ There("is nothing here to pick up.");
+ return 0;
}
if (!can_reach_floor()) {
+ if (traphere && uteetering_at_seen_pit(traphere))
+ You("cannot reach the bottom of the pit.");
#ifdef STEED
- if (u.usteed && P_SKILL(P_RIDING) < P_BASIC)
- You("aren't skilled enough to reach from %s.",
- y_monnam(u.usteed));
- else
+ else if (u.usteed && P_SKILL(P_RIDING) < P_BASIC)
+ You("aren't skilled enough to reach from %s.",
+ y_monnam(u.usteed));
#endif
+ else
You("cannot reach the %s.", surface(u.ux,u.uy));
- return(0);
- }
-
- if (traphere && uteetering_at_seen_pit(traphere)) {
- /* Allow pickup from holes and trap doors that you escaped from
- * because that stuff is teetering on the edge just like you, but
- * not pits, because there is an elevation discrepancy with stuff
- * in pits.
- */
- You("cannot reach the bottom of the pit.");
- return(0);
+ return 0;
}
return (pickup(-count));
-/* SCCS Id: @(#)pickup.c 3.4 2003/07/27 */
+/* SCCS Id: @(#)pickup.c 3.4 2004/01/03 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
/* no pickup if levitating & not on air or water level */
if (!can_reach_floor()) {
- if ((multi && !context.run) || (autopickup && !flags.pickup))
+ if ((multi && !context.run) ||
+ (autopickup && !flags.pickup) ||
+ (ttmp && uteetering_at_seen_pit(ttmp)))
read_engr_at(u.ux, u.uy);
return (0);
}
- if (ttmp && uteetering_at_seen_pit(ttmp)) {
- /* Allow pickup from holes and trap doors that you escaped
- * from because that stuff is teetering on the edge just
- * like you, but not pits, because there is an elevation
- * discrepancy with stuff in pits.
- */
- read_engr_at(u.ux, u.uy);
- return(0);
- }
/* multi && !context.run means they are in the middle of some other
* action, or possibly paralyzed, sleeping, etc.... and they just
* teleported onto the object. They shouldn't pick it up.