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