X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=main.c;h=e5859b613622cd108ebda83fbb0033b5e74cbac8;hb=00514b079380c064b91f7ab95fec7e793a365d46;hp=405d9d37fe18280d0efdd996affd6ede7c672442;hpb=b3057f038bc990e216c1763f7de1f485892296d2;p=open-adventure.git diff --git a/main.c b/main.c index 405d9d3..e5859b6 100644 --- a/main.c +++ b/main.c @@ -150,7 +150,7 @@ int main(int argc, char *argv[]) break; } /* show score and exit */ - score(quitgame); + terminate(quitgame); } static bool fallback_handler(char *buf) @@ -482,12 +482,11 @@ static void croak(FILE *cmdin) /* He died during closing time. No resurrection. Tally up a * death and exit. */ RSPEAK(DEATH_CLOSING); - score(endgame); - + terminate(endgame); } /* FIXME: Arithmetic on message numbers */ else if (game.numdie == MAXDIE || !YES(cmdin, WATCH_IT + game.numdie * 2, WHICH_WAY + game.numdie * 2, OK_MAN)) - score(endgame); + terminate(endgame); else { game.place[WATER] = game.place[OIL] = NOWHERE; if (TOTING(LAMP)) @@ -624,6 +623,7 @@ static bool playermove(FILE *cmdin, token_t verb, int motion) /* else fall through */ } else if (game.prop[motion] != game.newloc / 100 - 3) break; + L12: do { if (TRAVEL[kk] < 0)BUG(25); ++kk; @@ -646,10 +646,10 @@ static bool playermove(FILE *cmdin, token_t verb, int motion) * actual motion, but can be spotted by "go back". */ /* FIXME: Arithmetic on location numbers */ game.newloc = 99 + 100 - game.loc; - if (game.holdng == 0 || (game.holdng == 1 && TOTING(EMRALD))) - return true; - game.newloc = game.loc; - RSPEAK(MUST_DROP); + if (game.holdng > 1 || (game.holdng == 1 && !TOTING(EMRALD))) { + game.newloc = game.loc; + RSPEAK(MUST_DROP); + } return true; case 2: /* Travel 302. Plover transport. Drop the emerald (only use @@ -657,13 +657,7 @@ static bool playermove(FILE *cmdin, token_t verb, int motion) * plover-passage to get it out. Having dropped it, go back and * pretend he wasn't carrying it after all. */ DROP(EMRALD, game.loc); - do { - if (TRAVEL[kk] < 0)BUG(25); - ++kk; - game.newloc = labs(TRAVEL[kk]) / 1000; - } while - (game.newloc == scratchloc); - continue; /* back to top of do/while loop */ + goto L12; case 3: /* Travel 303. Troll bridge. Must be done only as special * motion so that dwarves won't wander across and encounter @@ -694,13 +688,12 @@ static bool playermove(FILE *cmdin, token_t verb, int motion) game.prop[BEAR] = 3; game.oldlc2 = game.newloc; croak(cmdin); - return false; } } BUG(20); } } while - (false); + (false); /* FIXME: Arithmetic on location number, becoming a message number */ RSPEAK(game.newloc - 500); game.newloc = game.loc; @@ -915,7 +908,7 @@ static bool do_command(FILE *cmdin) if (OUTSID(game.newloc) && game.newloc != 0 && game.closng) { RSPEAK(EXIT_CLOSED); game.newloc = game.loc; - if (!game.panic)game.clock2 = 15; + if (!game.panic)game.clock2 = PANICTIME; game.panic = true; } @@ -957,7 +950,7 @@ static bool do_command(FILE *cmdin) msg = arbitrary_messages[PITCH_DARK]; } if (TOTING(BEAR))RSPEAK(TAME_BEAR); - newspeak(msg); + speak(msg); if (FORCED(game.loc)) { if (playermove(cmdin, verb, 1)) return true; @@ -1004,7 +997,7 @@ L2607: game.foobar = (game.foobar > 0 ? -game.foobar : 0); ++game.turns; if (game.turns == game.thresh) { - newspeak(turn_threshold_messages[game.trndex]); + speak(turn_threshold_messages[game.trndex]); game.trnluz = game.trnluz + TRNVAL[game.trndex] / 100000; ++game.trndex; game.thresh = -1; @@ -1121,8 +1114,7 @@ Laction: case GO_DWARFWAKE: /* Oh dear, he's disturbed the dwarves. */ RSPEAK(DWARVES_AWAKEN); - score(endgame); - return true; + terminate(endgame); default: BUG(99); }