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:
@@ -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
|
||||
|
||||
7
src/do.c
7
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user