Use proper locomotion when avoiding water or lava

This commit is contained in:
Pasi Kallinen
2022-02-13 10:56:40 +02:00
parent a1bb10e8f6
commit 73dbd39d98
3 changed files with 14 additions and 2 deletions

View File

@@ -915,6 +915,7 @@ extern boolean test_move(int, int, int, int, int);
extern int wiz_debug_cmd_traveldisplay(void);
#endif
extern boolean u_rooted(void);
extern const char *u_locomotion(const char *);
extern void domove(void);
extern void runmode_delay_output(void);
extern void overexert_hp(void);

View File

@@ -1520,6 +1520,14 @@ check_buried_zombies(xchar x, xchar y)
}
}
const char *
u_locomotion(const char *def)
{
return Levitation ? "levitate"
: Flying ? "fly"
: locomotion(g.youmonst.data, def);
}
/* Is it dangerous for hero to move to x,y due to water or lava? */
static boolean
swim_move_danger(xchar x, xchar y)
@@ -1546,7 +1554,8 @@ swim_move_danger(xchar x, xchar y)
g.context.swim_tip = TRUE;
return FALSE;
} else if (ParanoidSwim) {
You("avoid stepping into the %s.",
You("avoid %s into the %s.",
ing_suffix(u_locomotion("step")),
waterbody_name(x, y));
if (!g.context.swim_tip) {
pline("(Use '%s' prefix to step in if you really want to.)",

View File

@@ -349,7 +349,9 @@ ing_suffix(const char *s)
Strcpy(onoff, p);
*p = '\0';
}
if (p >= &buf[3] && !index(vowel, *(p - 1))
if (p >= &buf[2] && !strcmpi(p - 2, "er")) { /* slither + ing */
/* nothing here */
} else if (p >= &buf[3] && !index(vowel, *(p - 1))
&& index(vowel, *(p - 2)) && !index(vowel, *(p - 3))) {
/* tip -> tipp + ing */
*p = *(p - 1);