From fd4e3aea6a96fbaac228cd5a2be892ee8f52946c Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Tue, 1 Aug 2017 18:35:02 -0400 Subject: [PATCH] Address GitLab issue #36: "Get what?" prompt incorrectly handled --- main.c | 19 +++++++++++++++++-- tests/illformed.chk | 8 ++++---- tests/illformed.log | 2 +- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/main.c b/main.c index 8a5545a..603b98a 100644 --- a/main.c +++ b/main.c @@ -1050,11 +1050,26 @@ Lclearobj: if (game.knfloc > 0 && game.knfloc != game.loc) game.knfloc = 0; - // Get command input from user + /* 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 if (!get_command_input(&command)) return false; - ++game.turns; +#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; if (closecheck()) { if (game.closed) diff --git a/tests/illformed.chk b/tests/illformed.chk index 7291c55..4124e53 100644 --- a/tests/illformed.chk +++ b/tests/illformed.chk @@ -153,6 +153,10 @@ There is food here. There is a bottle of water here. +> keys + +What do you want to do with the keys? + > throw food You aren't carrying it! @@ -325,10 +329,6 @@ There is a bottle of water here. The stream is gurgling placidly. -> keys - -What do you want to do with the keys? - > find keys I believe what you want is right here with you. diff --git a/tests/illformed.log b/tests/illformed.log index b29a08d..2645ccf 100644 --- a/tests/illformed.log +++ b/tests/illformed.log @@ -26,6 +26,7 @@ say fie say foe say fum in +keys throw food nothing food calm food @@ -62,7 +63,6 @@ inven keys nothing in listen -keys find keys unlock keys find foo -- 2.31.1