Fix for Gitlab issue #65: revisiting "fee fie foe foo" and "fum".
[open-adventure.git] / actions.c
index 4c2fcdbad111c600cfe745544de3898eb95c09f4..05c59d5def25b248365282abbf6dfcf184c02489 100644 (file)
--- a/actions.c
+++ b/actions.c
@@ -194,13 +194,17 @@ static phase_codes_t bigwords(vocab_t id)
 {
     int foobar = abs(game.foobar);
 
+    if ((foobar == WORD_EMPTY) && (id == FIE || id == FOE || id == FOO || id == FUM)) {
+       rspeak(NOTHING_HAPPENS);
+       return GO_CLEAROBJ;
+    }
+    
     if ((foobar == WORD_EMPTY && id == FEE) ||
         (foobar == FEE && id == FIE) ||
         (foobar == FIE && id == FOE) ||
-        (foobar == FOE && id == FOO) ||
-        (foobar == FOE && id == FUM)) {
+        (foobar == FOE && id == FOO)) {
         game.foobar = id;
-        if ((id != FOO) && (id != FUM)) {
+        if (id != FOO) {
             rspeak(OK_MAN);
             return GO_CLEAROBJ;
         }
@@ -209,8 +213,6 @@ static phase_codes_t bigwords(vocab_t id)
             (TOTING(EGGS) && game.loc == objects[EGGS].plac)) {
             rspeak(NOTHING_HAPPENS);
             return GO_CLEAROBJ;
-        } else if (id == FUM) {
-            goto fum;
         } else {
             /*  Bring back troll if we steal the eggs back from him before
              *  crossing. */
@@ -227,14 +229,7 @@ static phase_codes_t bigwords(vocab_t id)
             return GO_CLEAROBJ;
         }
     } else {
-fum:
-        if (game.loc == LOC_GIANTROOM || settings.oldstyle) {
-            rspeak(START_OVER);
-        } else {
-            /* This is new behavior in Open Adventure - sounds better when
-             * player isn't in the Giant Room. */
-            rspeak(NOTHING_HAPPENS);
-        }
+       rspeak(START_OVER);
         game.foobar = WORD_EMPTY;
         return GO_CLEAROBJ;
     }