diff --git a/doc/fixes34.4 b/doc/fixes34.4 index 7e6c7f494..8587de8d0 100644 --- a/doc/fixes34.4 +++ b/doc/fixes34.4 @@ -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 diff --git a/src/do.c b/src/do.c index 5daf92024..56b990be6 100644 --- a/src/do.c +++ b/src/do.c @@ -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); } } } diff --git a/src/fountain.c b/src/fountain.c index 51857f253..d6969d4ce 100644 --- a/src/fountain.c +++ b/src/fountain.c @@ -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