buglist: splashing

> Not all objects say "Splash!" when they fall in the
> water. When levitating/flying and dropping things they
> don't, but when polymorphing and forced to drop items
> they do. [<email deleted>]

when floating over the water, things dropped always
make some sort of sound. Also fix up some messages
when Underwater that previously said things like
"feel what is lying on the water" by adjusting
surface() in that situation to return "bottom."

While looking into this, I noticed that if you
are polymorphed into a Flyer and you then polymorph
back into your normal form, you don't end up in
the water until you move, so this attempts to
correct that too.
This commit is contained in:
nethack.allison
2003-10-10 15:53:27 +00:00
parent 5cf49afd75
commit d590efacad
4 changed files with 17 additions and 4 deletions

View File

@@ -42,6 +42,8 @@ couldn't insert gold into a container using full menu style if no other
objects in inventory unless compiling with GOLDOBJ
nagas eat
always have warriors on the Valkyrie quest be female
be more consistent with sounds when dropping into water
surface() returns "bottom" when Underwater
Platform- and/or Interface-Specific Fixes

View File

@@ -183,10 +183,17 @@ const char *verb;
return fire_damage(obj, FALSE, FALSE, x, y);
} else if (is_pool(x, y)) {
/* Reasonably bulky objects (arbitrary) splash when dropped.
* If you're floating above the water even small things make noise.
* Stuff dropped near fountains always misses */
if (Blind && !Deaf && ((x == u.ux) && (y == u.uy)) &&
weight(obj) > 9) {
pline("Splash!");
if ((Blind || (Levitation || Flying)) && !Deaf &&
((x == u.ux) && (y == u.uy))) {
if (!Underwater) {
if (weight(obj) > 9) {
pline("Splash!");
} else if (Levitation || Flying) {
pline("Plop!");
}
}
map_background(x, y, 0);
newsym(x, y);
}

View File

@@ -153,7 +153,7 @@ register int x, y;
else if (IS_AIR(lev->typ) && Is_airlevel(&u.uz))
return "air";
else if (is_pool(x,y))
return "water";
return (Underwater && !Is_waterlevel(&u.uz)) ? "bottom" : "water";
else if (is_ice(x,y))
return "ice";
else if (is_lava(x,y))

View File

@@ -234,6 +234,7 @@ boolean forcecontrol;
uarm->otyp <= YELLOW_DRAGON_SCALES);
boolean iswere = (u.ulycn >= LOW_PM || is_were(youmonst.data));
boolean isvamp = (youmonst.data->mlet == S_VAMPIRE || u.umonnum == PM_VAMPIRE_BAT);
boolean was_floating = (Levitation || Flying);
if(!Polymorph_control && !forcecontrol && !draconian && !iswere && !isvamp) {
if (rn2(20) > ACURR(A_CON)) {
@@ -323,6 +324,9 @@ boolean forcecontrol;
new_light_source(u.ux, u.uy, new_light,
LS_MONSTER, (genericptr_t)&youmonst);
}
if (is_pool(u.ux,u.uy) && was_floating && !(Levitation || Flying) &&
!breathless(youmonst.data) && !amphibious(youmonst.data) &&
!Swimming) drown();
}
/* (try to) make a mntmp monster out of the player */