Address GitLab issue #36: "Get what?" prompt incorrectly handled

This commit is contained in:
Eric S. Raymond 2017-08-01 18:35:02 -04:00
parent 878efdddfb
commit fd4e3aea6a
3 changed files with 22 additions and 7 deletions

15
main.c
View file

@ -1050,10 +1050,25 @@ Lclearobj:
if (game.knfloc > 0 && game.knfloc != game.loc) if (game.knfloc > 0 && game.knfloc != game.loc)
game.knfloc = 0; game.knfloc = 0;
/* Preserve state from last command for reuse when required */
struct command_t preserve;
memcpy(&preserve, &command, sizeof(struct command_t));
// Get command input from user // Get command input from user
if (!get_command_input(&command)) if (!get_command_input(&command))
return false; return false;
#ifdef GDEBUG
printf("Preserve: type1 = %u, id1 = %ld, id2 = %ld\n",
preserve.type1, preserve.id1, preserve.id2);
printf("Command: type2 = %u, id1 = %ld, id2 = %ld\n",
preserve.type2, command.id1, command.id2);
#endif
/* Handle of objectless action followed by actionless object */
if (preserve.type1 == ACTION && preserve.type2 == NO_WORD_TYPE && command.id2 == 0)
command.verb = preserve.verb;
++game.turns; ++game.turns;
if (closecheck()) { if (closecheck()) {

View file

@ -153,6 +153,10 @@ There is food here.
There is a bottle of water here. There is a bottle of water here.
> keys
What do you want to do with the keys?
> throw food > throw food
You aren't carrying it! You aren't carrying it!
@ -325,10 +329,6 @@ There is a bottle of water here.
The stream is gurgling placidly. The stream is gurgling placidly.
> keys
What do you want to do with the keys?
> find keys > find keys
I believe what you want is right here with you. I believe what you want is right here with you.

View file

@ -26,6 +26,7 @@ say fie
say foe say foe
say fum say fum
in in
keys
throw food throw food
nothing food nothing food
calm food calm food
@ -62,7 +63,6 @@ inven keys
nothing nothing
in in
listen listen
keys
find keys find keys
unlock keys unlock keys
find foo find foo