Skip to content

Commit

Permalink
fix #H1803 - levitating at floor level...
Browse files Browse the repository at this point in the history
     From a bug report, being stuck in the
floor or in lava and trying to move downwards while levitating gave "you
are floating high above the floor/lava" which contradicts being stuck.
Now you'll get "you are trapped in the floor/lava" in that situation.
I thought about letting it fall through to the chance to autodig with
wielded pick, but decided to go with just the alternate message.  (Being
tethered to a buried iron ball still lets you "float high above the floor",
so this doesn't check for being trapped that way.)
  • Loading branch information
nethack.rankin committed Feb 1, 2009
1 parent 71219bf commit 84ca177
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 6 deletions.
2 changes: 2 additions & 0 deletions doc/fixes34.4
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,8 @@ ensure current_fruit gets set to the correct index when setting fruit
monsters already wearing suits can't put on shirts
if life-saved steed became untame, repeated "placing steed onto map?" warnings
would be given as long as the hero remained mounted
trying to move down while levitating said "you are floating high above floor"
even when being stuck in floor or lava blocked full levitation


Platform- and/or Interface-Specific Fixes
Expand Down
7 changes: 3 additions & 4 deletions src/do.c
Original file line number Diff line number Diff line change
Expand Up @@ -764,11 +764,10 @@ dodown()

for(obj = invent; obj; obj = obj->nobj) {
if (obj->oartifact &&
artifact_has_invprop(obj,LEVITATION)) {
artifact_has_invprop(obj, LEVITATION)) {
if (obj->age < monstermoves)
obj->age = monstermoves + rnz(100);
else
obj->age += rnz(100);
obj->age = monstermoves;
obj->age += rnz(100);
}
}
}
Expand Down
14 changes: 12 additions & 2 deletions src/fountain.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* SCCS Id: @(#)fountain.c 3.5 2008/01/19 */
/* SCCS Id: @(#)fountain.c 3.5 2009/01/31 */
/* Copyright Scott R. Turner, srt@ucla, 10/27/86 */
/* NetHack may be freely redistributed. See license for details. */

Expand All @@ -12,11 +12,21 @@ STATIC_DCL void NDECL(dowaternymph);
STATIC_PTR void FDECL(gush, (int,int,genericptr_t));
STATIC_DCL void NDECL(dofindgem);

/* used when trying to dip in or drink from fountain or sink or pool while
levitating above it, or when trying to move downwards in that state */
void
floating_above(what)
const char *what;
{
You("are floating high above the %s.", what);
const char *umsg = "are floating high above the %s.";

if (u.utrap && (u.utraptype == TT_INFLOOR || u.utraptype == TT_LAVA)) {
/* when stuck in floor (not possible at fountain or sink location,
so must be attempting to move down), override the usual message */
umsg = "are trapped in the %s.";
what = surface(u.ux, u.uy); /* probably redundant */
}
You(umsg, what);
}

STATIC_OVL void
Expand Down

0 comments on commit 84ca177

Please sign in to comment.