- strncpy(inputbuf, input, LINESIZE - 1);
- free(input);
-
- tokenize(inputbuf, &command);
-
- char word1[TOKLEN + 1];
- char word2[TOKLEN + 1];
- packed_to_token(command.wd1, word1);
- packed_to_token(command.wd2, word2);
- command.id1 = get_vocab_id(word1);
- command.id2 = get_vocab_id(word2);
-
- /* Every input, check "game.foobar" flag. If zero, nothing's
- * going on. If pos, make neg. If neg, he skipped a word,
- * so make it zero. */
-L2607:
- game.foobar = (game.foobar > 0 ? -game.foobar : 0);
- ++game.turns;
-
- /* If a turn threshold has been met, apply penalties and tell
- * the player about it. */
- for (int i = 0; i < NTHRESHOLDS; ++i) {
- if (game.turns == turn_thresholds[i].threshold + 1) {
- game.trnluz += turn_thresholds[i].point_loss;
- speak(turn_thresholds[i].message);
- }
- }
+#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;