- if (command.id1 == ENTER && command.id2 != WORD_NOT_FOUND && command.id2 != WORD_EMPTY) {
- command.id1 = command.id2;
- command.id2 = WORD_EMPTY;
- } else {
- if (!((command.id1 != WATER && command.id1 != OIL) || (command.id2 != PLANT && command.id2 != DOOR))) {
- if (AT(command.id2))
- command.wd2 = token_to_packed("POUR");
+
+ if (command.word[0].type == OBJECT) {
+ if (command.word[0].id == GRATE) {
+ command.word[0].type = MOTION;
+ if (game.loc == LOC_START ||
+ game.loc == LOC_VALLEY ||
+ game.loc == LOC_SLIT) {
+ command.word[0].id = DEPRESSION;
+ }
+ if (game.loc == LOC_COBBLE ||
+ game.loc == LOC_DEBRIS ||
+ game.loc == LOC_AWKWARD ||
+ game.loc == LOC_BIRD ||
+ game.loc == LOC_PITTOP) {
+ command.word[0].id = ENTRANCE;
+ }
+ }
+ if ((command.word[0].id == WATER || command.word[0].id == OIL) && (command.word[1].id == PLANT || command.word[1].id == DOOR)) {
+ if (AT(command.word[1].id)) {
+ command.word[1] = command.word[0];
+ command.word[0].id = POUR;
+ command.word[0].type = ACTION;
+ strncpy(command.word[0].raw, "pour", LINESIZE - 1);
+ }
+ }
+ if (command.word[0].id == CAGE && command.word[1].id == BIRD && HERE(CAGE) && HERE(BIRD)) {
+ command.word[0].id = CARRY;
+ command.word[0].type = ACTION;
+ }
+
+ /* From OV to VO form */
+ if (command.word[0].type == OBJECT && command.word[1].type == ACTION) {
+ command_word_t stage = command.word[0];
+ command.word[0] = command.word[1];
+ command.word[1] = stage;