fix #H4919 - vomit message sequencing

The countdown for delayed vomiting gave message "you suddenly vomit!"
at T-2, allowing you to move some more, then vomit at T-0 with no
message, finally at T+2 get "you can move again", making it seem as
if the program was letting you move during a time it thought that you
couldn't move.  Also, there was nothing "sudden" about it since it was
near the end of a 15 or so turn sequence where a few other messages
are given leading up to that.

Change it to
T-2: You are about to vomit.  // different wording
T-0: You vomit!               // new message
so that "you can move again" more clearly refers to the actual event.
This commit is contained in:
PatR
2017-09-21 16:35:56 -07:00
parent c665d73216
commit 83056d45d7
3 changed files with 23 additions and 5 deletions

View File

@@ -440,6 +440,9 @@ if leash or unleash attempt was directed at "remembered, unseen monster" glyph
wizmode level teleport menu indicates on what level you currently are
fix invisible gold symbol in status line when S_coin was set to space
fix buffer overflow in wizard mode for '#' command when 'extmenu' option is on
"you suddenly vomit" was given two turns before actually vomiting, so you
could get that message, move a bit, then get "you can move again"
after the 2 turn freeze applied along with the actual vomit
Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository

View File

@@ -3129,9 +3129,15 @@ vomit() /* A good idea from David Neves */
Your("jaw gapes convulsively.");
else
make_sick(0L, (char *) 0, TRUE, SICK_VOMITABLE);
nomul(-2);
multi_reason = "vomiting";
nomovemsg = You_can_move_again;
/* nomul()/You_can_move_again used to be unconditional, which was
viable while eating but not for Vomiting countdown where hero might
be immobilized for some other reason at the time vomit() is called */
if (multi >= -2) {
nomul(-2);
multi_reason = "vomiting";
nomovemsg = You_can_move_again;
}
}
int

View File

@@ -145,13 +145,13 @@ stoned_dialogue()
exercise(A_DEX, FALSE);
}
/* He is getting sicker and sicker prior to vomiting */
/* hero is getting sicker and sicker prior to vomiting */
static NEARDATA const char *const vomiting_texts[] = {
"are feeling mildly nauseated.", /* 14 */
"feel slightly confused.", /* 11 */
"can't seem to think straight.", /* 8 */
"feel incredibly sick.", /* 5 */
"suddenly vomit!" /* 2 */
"are about to vomit." /* 2 */
};
STATIC_OVL void
@@ -189,11 +189,20 @@ vomiting_dialogue()
txt = vomiting_texts[4];
if (cantvomit(youmonst.data))
txt = "gag uncontrolably.";
else if (Hallucination)
/* "hurl" is short for "hurl chunks" which is slang for
relatively violent vomiting... */
txt = "are about to hurl!";
break;
case 0:
stop_occupation();
if (!cantvomit(youmonst.data))
morehungry(20);
/* case 2 used to be "You suddenly vomit!" but it wasn't sudden
since you've just been through the earlier messages of the
countdown, and it was still possible to move around between
that message and vomit() -> numul(-2) -> "You can move again." */
You("vomit!");
vomit();
break;
default: