vomiting while fainting

From a beta-tester running 3.6.0:
|You faint from lack of food.
|You suddenly vomit!

The latter has already been changed to "You vomit" (it's given at the
end of a multiple-message vomiting countdown so wasn't "sudden") but is
still odd if your stomach is so empty that you're subject to fainting.
Give an alternate message in that case:
|Your stomach heaves convulsively!

Vomiting while unconscious (when that's due to something other than
fainting from hunger) should pose a risk of choking to death, but I'm
going to pretend that this hasn't occurred to me....
This commit is contained in:
PatR
2017-11-14 15:31:26 -08:00
parent 18aab1ab12
commit 761180ce36
3 changed files with 14 additions and 5 deletions
+2 -1
View File
@@ -437,6 +437,7 @@ 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 "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" could get that message, move a bit, then get "you can move again"
after the 2 turn freeze applied along with the actual vomit after the 2 turn freeze applied along with the actual vomit
give an alternate message if you vomit when stomach is empty (ie, fainting)
corpses and other flammable items not subject to direct burning or fire-based corpses and other flammable items not subject to direct burning or fire-based
erosion which were thrown or dropped into lava remained intact erosion which were thrown or dropped into lava remained intact
if a potion on the floor survived a land mine explosion and got propelled at if a potion on the floor survived a land mine explosion and got propelled at
@@ -557,6 +558,7 @@ tty: if "--More--" was written to leftmost column (beginning of second line)
tty: long message lines which wrap when shown on the top line might be tty: long message lines which wrap when shown on the top line might be
re-displayed incorrectly by ^P for msg_window={full,combo,reverse} re-displayed incorrectly by ^P for msg_window={full,combo,reverse}
tty: MSGTYPE=hide could interfere with display of prompts tty: MSGTYPE=hide could interfere with display of prompts
tty: treat carriage return as a newline for input text and --More-- prompts
unix/X11: in top level Makefile, some commented out definitions of VARDATND unix/X11: in top level Makefile, some commented out definitions of VARDATND
misspelled pilemark.xbm (as pilemark.xpm) misspelled pilemark.xbm (as pilemark.xpm)
unix: options file with CR+LF line ends and an invalid option line resulted in unix: options file with CR+LF line ends and an invalid option line resulted in
@@ -597,7 +599,6 @@ PANICTRACE: PANICTRACE_GDB used wrong value for ARGV0 when launching gdb if
win32gui: gather raw_print error messages into a single dialog window win32gui: gather raw_print error messages into a single dialog window
win32tty: fix display errors when using a font with double wide or ambiguous win32tty: fix display errors when using a font with double wide or ambiguous
width characters width characters
tty: treat carriage return as a newline for input text and more-prompts
General New Features General New Features
+8 -2
View File
@@ -3154,12 +3154,18 @@ skipfloor:
void void
vomit() /* A good idea from David Neves */ vomit() /* A good idea from David Neves */
{ {
if (cantvomit(youmonst.data)) if (cantvomit(youmonst.data)) {
/* doesn't cure food poisoning; message assumes that we aren't /* doesn't cure food poisoning; message assumes that we aren't
dealing with some esoteric body_part() */ dealing with some esoteric body_part() */
Your("jaw gapes convulsively."); Your("jaw gapes convulsively.");
else } else {
make_sick(0L, (char *) 0, TRUE, SICK_VOMITABLE); make_sick(0L, (char *) 0, TRUE, SICK_VOMITABLE);
/* if not enough in stomach to actually vomit then dry heave;
vomiting_dialog() gives a vomit message when its countdown
reaches 0, but only if u.uhs < FAINTING (and !cantvomit()) */
if (u.uhs >= FAINTING)
Your("%s heaves convulsively!", body_part(STOMACH));
}
/* nomul()/You_can_move_again used to be unconditional, which was /* nomul()/You_can_move_again used to be unconditional, which was
viable while eating but not for Vomiting countdown where hero might viable while eating but not for Vomiting countdown where hero might
+4 -2
View File
@@ -204,8 +204,10 @@ vomiting_dialogue()
that message and "You can move again." (from vomit()'s that message and "You can move again." (from vomit()'s
nomul(-2)) with no intervening message; give one here to nomul(-2)) with no intervening message; give one here to
have more specific point at which hero became unable to move have more specific point at which hero became unable to move
[vomit() issues its own message for the cantvomit() case] */ [vomit() issues its own message for the cantvomit() case
You("%s!", !Hallucination ? "vomit" : "hurl chunks"); and for the FAINTING-or-worse case where stomach is empty] */
if (u.uhs < FAINTING)
You("%s!", !Hallucination ? "vomit" : "hurl chunks");
} }
vomit(); vomit();
break; break;