From: Pasi Kallinen Date: Sun, 13 Feb 2022 08:56:40 +0000 (+0200) Subject: Use proper locomotion when avoiding water or lava X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=73dbd39d9837abe091144bab29abd19cf9c1d214;p=nethack Use proper locomotion when avoiding water or lava --- diff --git a/include/extern.h b/include/extern.h index 3dfa5573d..6e290ee48 100644 --- a/include/extern.h +++ b/include/extern.h @@ -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); diff --git a/src/hack.c b/src/hack.c index 69d0011c1..5837fcd1f 100644 --- a/src/hack.c +++ b/src/hack.c @@ -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.)", diff --git a/src/hacklib.c b/src/hacklib.c index 93e4565f1..d8df82dcc 100644 --- a/src/hacklib.c +++ b/src/hacklib.c @@ -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);