fix gibhub issue #320 and more - 'mention_decor'

Fixes #320

Avoid giving "you are back on the bottom" nearly every step when
moving around underwater.

Avoid "you are back on floor" followed by "you trip over <object>"
when fumbling in case that fumbling was due to being on ice when
taking the step to floor.  Done for all fumbling rather than just
one-turn fumbling instigated by ice.

When moving from ice or water to ground, show "you are back on floor"
before listing objects at that spot instead of after.

I think there was at least one more thing but have lost track.  At
any rate, 'mention_rate' potentially has a new set of bugs.
This commit is contained in:
PatR
2020-04-08 18:33:55 -07:00
parent 27b1a153d3
commit 2e177a7fc4
5 changed files with 63 additions and 14 deletions

View File

@@ -716,7 +716,7 @@ nh_timeout()
case FUMBLING:
/* call this only when a move took place. */
/* otherwise handle fumbling msgs locally. */
if (u.umoved && !Levitation) {
if (u.umoved && !(Levitation || Flying)) {
slip_or_trip();
nomul(-2);
g.multi_reason = "fumbling";
@@ -735,6 +735,22 @@ nh_timeout()
HFumbling &= ~FROMOUTSIDE;
if (Fumbling)
incr_itimeout(&HFumbling, rnd(20));
if (iflags.defer_decor) {
/*
* describe_decor() is attempting to work around a
* message sequencing issue: avoid
* |You are back on floor.
* |You trip over <object>.
* if the trip is being caused by moving on ice
* that the hero just left. A trip message has
* just been given, now give change-in-terrain one.
* Operate this way even for non-ice Fumbling so
* that describe_decor() doesn't need to know any
* details about that.
*/
deferred_decor(FALSE);
}
break;
case DETECT_MONSTERS:
see_monsters();