fix #H1803 - levitating at floor level...

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.)
This commit is contained in:
nethack.rankin
2009-02-01 00:56:50 +00:00
parent 71219bf093
commit 84ca1773e5
3 changed files with 17 additions and 6 deletions

View File

@@ -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

View File

@@ -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);
}
}
}

View File

@@ -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. */
@@ -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