Refine ice fumbling effects vs mounted hero

Fumbling makes the hero fall from the saddle, but the justification was
weak if the only fumbling source is riding over ice (the messages were
things like "you drop the reins" which made more sense from magical
fumbling).  Make all fumbling from ice alone go into the ice-specific
"slip on the ice" block and add a chance to fall from your mount there.
If fumbling from another source while riding on ice, the hero will
always fall from his steed, since that's what happens on normal floor --
ice had actually been reducing this chance.
This commit is contained in:
Michael Meyer
2023-12-04 14:40:16 -05:00
parent 05f9950c99
commit a15d517326

View File

@@ -1175,14 +1175,23 @@ slip_or_trip(void)
an(mons[otmp->corpsenm].pmnames[NEUTRAL]));
instapetrify(gk.killer.name);
}
} else if (rn2(3) && is_ice(u.ux, u.uy)) {
} else if ((HFumbling & FROMOUTSIDE) || (is_ice(u.ux, u.uy) && !rn2(3))) {
/* is fumbling from ice alone? */
boolean ice_only = !(EFumbling || (HFumbling & ~FROMOUTSIDE));
pline("%s %s%s on the ice.",
u.usteed ? upstart(x_monnam(u.usteed,
(has_mgivenname(u.usteed)) ? ARTICLE_NONE
: ARTICLE_THE,
(char *) 0, SUPPRESS_SADDLE, FALSE))
u.usteed ? upstart(x_monnam(u.usteed, ARTICLE_THE, (char *) 0,
SUPPRESS_SADDLE, FALSE))
: "You",
rn2(2) ? "slip" : "slide", on_foot ? "" : "s");
/* fumbling outside of ice while mounted always causes the hero to
fall from the saddle, so to avoid a counterintuitive effect where
ice makes riding _less_ hazardous, unconditionally dismount if
fumbling is from a non-ice source */
if (!on_foot && (!ice_only || !rn2(3))) {
You("lose your balance.");
dismount_steed(DISMOUNT_FELL);
}
} else {
if (on_foot) {
switch (rn2(4)) {