- if (V1 == 1000+CAGE && V2 == 1000+BIRD && HERE(CAGE) && HERE(BIRD))
- WD1=MAKEWD(301200308);
- }
-L2620:
- if (WD1 == MAKEWD(23051920)) {
- ++game.iwest;
- if (game.iwest == 10)
- RSPEAK(17);
- }
- if (WD1 == MAKEWD( 715) && WD2 != 0) {
- if (++igo == 10)
- RSPEAK(276);
- }
-L2630:
- i=VOCAB(WD1,-1);
- if (i == -1) {
- /* Gee, I don't understand. */
- if (fallback_handler(rawbuf))
+ if (V1 == ENTER && WD2 > 0) {
+ WD1=WD2;
+ WD1X=WD2X;
+ WD2=0;
+ } else {
+ if (!((V1 != 1000+WATER && V1 != 1000+OIL) ||
+ (V2 != 1000+PLANT && V2 != 1000+DOOR))) {
+ if (AT(V2-1000))
+ WD2=MAKEWD(16152118);
+ }
+ if (V1 == 1000+CAGE && V2 == 1000+BIRD && HERE(CAGE) && HERE(BIRD))
+ WD1=MAKEWD(301200308);
+ }
+ L2620:
+ if (WD1 == MAKEWD(23051920)) {
+ ++game.iwest;
+ if (game.iwest == 10)
+ RSPEAK(17);
+ }
+ if (WD1 == MAKEWD( 715) && WD2 != 0) {
+ if (++igo == 10)
+ RSPEAK(276);
+ }
+ L2630:
+ i=VOCAB(WD1,-1);
+ if (i == -1) {
+ /* Gee, I don't understand. */
+ if (fallback_handler(rawbuf))
+ return true;
+ SETPRM(1,WD1,WD1X);
+ RSPEAK(254);
+ goto L2600;
+ }
+ KMOD=MOD(i,1000);
+ KQ=i/1000+1;
+ switch (KQ-1)
+ {
+ case 0:
+ if (playermove(cmdin, VERB, KMOD))
+ return true;
+ else
+ continue; /* back to top of main interpreter loop */
+ case 1: part=unknown; obj = KMOD; break;
+ case 2: part=intransitive; VERB = KMOD; break;
+ case 3: RSPEAK(KMOD); goto L2012;
+ default: BUG(22);
+ }
+
+ Laction:
+ switch (action(cmdin, part, VERB, obj)) {
+ case GO_TERMINATE: