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

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