From: nethack.allison Date: Fri, 10 Oct 2003 15:53:27 +0000 (+0000) Subject: buglist: splashing X-Git-Tag: MOVE2GIT~1723 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d590efacadd93a2f1138e41a6930df76a860e687;p=nethack 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. [] 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. --- diff --git a/doc/fixes34.3 b/doc/fixes34.3 index 78061640f..5ac1d0997 100644 --- a/doc/fixes34.3 +++ b/doc/fixes34.3 @@ -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 diff --git a/src/do.c b/src/do.c index 49ef8cada..4e06a45bb 100644 --- a/src/do.c +++ b/src/do.c @@ -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); } diff --git a/src/engrave.c b/src/engrave.c index 922197404..058e2c504 100644 --- a/src/engrave.c +++ b/src/engrave.c @@ -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)) diff --git a/src/polyself.c b/src/polyself.c index d5c55c0d5..3952f8125 100644 --- a/src/polyself.c +++ b/src/polyself.c @@ -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 */