X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=main.c;h=79572bba7267b046ad57f20104356a8538228444;hb=358fdd437ba4826626125799497994afafed73ad;hp=1fb31ac7de5d4aa0284f0d2fe1601febcbf300c6;hpb=d029b08ad136ceab3a30236f22433022834f0d71;p=open-adventure.git diff --git a/main.c b/main.c index 1fb31ac..79572bb 100644 --- a/main.c +++ b/main.c @@ -41,7 +41,6 @@ long AMBER, AXE, BACK, BATTERY, BEAR, BIRD, BLOOD, RUBY, RUG, SAPPH, SAY, SIGN, SNAKE, STEPS, STREAM, THROW, TRIDENT, TROLL, TROLL2, URN, VASE, VEND, VOLCANO, WATER; -token_t WD1, WD1X, WD2, WD2X; FILE *logfp = NULL, *rfp = NULL; bool oldstyle = false; @@ -1015,7 +1014,7 @@ L2600: game.knfloc = 0; /* This is where we get a new command from the user */ - if (!GETIN(cmdin, &WD1, &WD1X, &WD2, &WD2X)) + if (!GETIN(cmdin, &command.wd1, &command.wd1x, &command.wd2, &command.wd2x)) return false; /* Every input, check "game.foobar" flag. If zero, nothing's @@ -1027,23 +1026,16 @@ L2607: /* If a turn threshold has been met, apply penalties and tell * the player about it. */ - for (int i = turn_threshold_count; i >= 0; --i) + for (int i = 0; i < turn_threshold_count; ++i) { - if (game.turns == turn_thresholds[i].threshold) + if (game.turns == turn_thresholds[i].threshold + 1) { game.trnluz += turn_thresholds[i].point_loss; speak(turn_thresholds[i].message); } } - /* if (game.turns == game.thresh) { */ - /* speak(turn_threshold_messages[game.trndex]); */ - /* game.trnluz = game.trnluz + TRNVAL[game.trndex] / 100000; */ - /* ++game.trndex; */ - /* game.thresh = -1; */ - /* if (game.trndex <= TRNVLS) */ - /* game.thresh = MOD(TRNVAL[game.trndex], 100000) + 1; */ - /* } */ - if (command.verb == SAY && WD2 > 0) + + if (command.verb == SAY && command.wd2 > 0) command.verb = 0; if (command.verb == SAY) { command.part = transitive; @@ -1055,8 +1047,8 @@ L2607: } else lampcheck(); - V1 = VOCAB(WD1, -1); - V2 = VOCAB(WD2, -1); + V1 = VOCAB(command.wd1, -1); + V2 = VOCAB(command.wd2, -1); if (V1 == ENTER && (V2 == STREAM || V2 == 1000 + WATER)) { if (LIQLOC(game.loc) == WATER) { RSPEAK(FEET_WET); @@ -1065,37 +1057,37 @@ L2607: } goto L2012; } - if (V1 == ENTER && WD2 > 0) { - WD1 = WD2; - WD1X = WD2X; - wordclear(&WD2); + if (V1 == ENTER && command.wd2 > 0) { + command.wd1 = command.wd2; + command.wd1x = command.wd2x; + wordclear(&command.wd2); } else { /* FIXME: Magic numbers */ if (!((V1 != 1000 + WATER && V1 != 1000 + OIL) || (V2 != 1000 + PLANT && V2 != 1000 + DOOR))) { if (AT(V2 - 1000)) - WD2 = MAKEWD(WORD_POUR); + command.wd2 = MAKEWD(WORD_POUR); } if (V1 == 1000 + CAGE && V2 == 1000 + BIRD && HERE(CAGE) && HERE(BIRD)) - WD1 = MAKEWD(WORD_CATCH); + command.wd1 = MAKEWD(WORD_CATCH); } L2620: - if (wordeq(WD1, MAKEWD(WORD_WEST))) { + if (wordeq(command.wd1, MAKEWD(WORD_WEST))) { ++game.iwest; if (game.iwest == 10) RSPEAK(W_IS_WEST); } - if (wordeq(WD1, MAKEWD(WORD_GO)) && !wordempty(WD2)) { + if (wordeq(command.wd1, MAKEWD(WORD_GO)) && !wordempty(command.wd2)) { if (++igo == 10) RSPEAK(GO_UNNEEDED); } Lookup: - defn = VOCAB(WD1, -1); + defn = VOCAB(command.wd1, -1); if (defn == -1) { /* Gee, I don't understand. */ if (fallback_handler(rawbuf)) continue; - SETPRM(1, WD1, WD1X); + SETPRM(1, command.wd1, command.wd1x); RSPEAK(DONT_KNOW); goto L2600; } @@ -1122,7 +1114,7 @@ Lookup: } Laction: - switch (action(cmdin, command)) { + switch (action(cmdin, &command)) { case GO_TERMINATE: return true; case GO_MOVE: @@ -1140,14 +1132,14 @@ Laction: goto Lookup; case GO_WORD2: /* Get second word for analysis. */ - WD1 = WD2; - WD1X = WD2X; - wordclear(&WD2); + command.wd1 = command.wd2; + command.wd1x = command.wd2x; + wordclear(&command.wd2); goto L2620; case GO_UNKNOWN: /* Random intransitive verbs come here. Clear obj just in case * (see attack()). */ - SETPRM(1, WD1, WD1X); + SETPRM(1, command.wd1, command.wd1x); RSPEAK(DO_WHAT); command.obj = 0; goto L2600;