Fix the "wall of water" and paranoid:swim

This commit is contained in:
Pasi Kallinen
2022-02-13 11:00:09 +02:00
parent 73dbd39d98
commit d26c7dde44

View File

@@ -1532,8 +1532,10 @@ u_locomotion(const char *def)
static boolean
swim_move_danger(xchar x, xchar y)
{
if (!Levitation && !Flying && grounded(g.youmonst.data) && !Stunned
&& !Confusion && levl[x][y].seenv
boolean liquid_wall = (levl[x][y].typ == WATER);
if ((liquid_wall || (!Levitation && !Flying && grounded(g.youmonst.data)))
&& !Stunned && !Confusion && levl[x][y].seenv
&& ((is_pool(x, y) && !is_pool(u.ux, u.uy))
|| (is_lava(x, y) && !is_lava(u.ux, u.uy)))) {
boolean known_wwalking, known_lwalking;
@@ -1548,7 +1550,8 @@ swim_move_danger(xchar x, xchar y)
* fireproof boots of water walking and is walking over lava. However,
* this is such a marginal case that it may not be worth fixing. */
if ((is_pool(x, y) && !known_wwalking)
|| (is_lava(x, y) && !known_lwalking)) {
|| (is_lava(x, y) && !known_lwalking)
|| liquid_wall) {
if (g.context.nopick) {
/* moving with m-prefix */
g.context.swim_tip = TRUE;