X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=main.c;h=6f21554de079a5dc3c73b774ccd4fb9c6889bcf8;hb=b0eb54b125c952cd23d71f58238bcb0460d90fb8;hp=ff202843e863f1624b7bfbe942b83729f42d2481;hpb=80c0c10221604322425ef9d138fad0da32b8bd65;p=open-adventure.git diff --git a/main.c b/main.c index ff20284..6f21554 100644 --- a/main.c +++ b/main.c @@ -41,8 +41,6 @@ long AMBER, AXE, BACK, BATTER, BEAR, BIRD, BLOOD, URN, VASE, VEND, VOLCAN, WATER; long WD1, WD1X, WD2, WD2X; -static int K; /* information leak, should go away */ - FILE *logfp; bool oldstyle = false; lcg_state lcgstate; @@ -420,11 +418,11 @@ static bool dwarfmove(void) return true; if (game.dflag == 2)game.dflag=3; SETPRM(1,attack,0); - K=6; - if (attack > 1)K=250; - RSPEAK(K); + int k=6; + if (attack > 1)k=250; + RSPEAK(k); SETPRM(1,stick,0); - RSPEAK(K+1+2/(1+stick)); + RSPEAK(k+1+2/(1+stick)); if (stick == 0) return true; game.oldlc2=game.loc; @@ -492,32 +490,32 @@ static void croak(FILE *cmdin) * him, so we need game.oldlc2, which is the last place he was * safe.) */ -static bool playermove(FILE *cmdin, token_t verb) +static bool playermove(FILE *cmdin, token_t verb, int motion) { int LL, K2, KK=KEY[game.loc]; game.newloc=game.loc; if (KK == 0) BUG(26); - if (K == NUL) + if (motion == NUL) return true; - else if (K == BACK) { + else if (motion == BACK) { /* Handle "go back". Look for verb which goes from game.loc to * game.oldloc, or to game.oldlc2 If game.oldloc has forced-motion. * K2 saves entry -> forced loc -> previous loc. */ - K=game.oldloc; - if (FORCED(K)) - K=game.oldlc2; + motion=game.oldloc; + if (FORCED(motion)) + motion=game.oldlc2; game.oldlc2=game.oldloc; game.oldloc=game.loc; K2=0; - if (K == game.loc)K2=91; + if (motion == game.loc)K2=91; if (CNDBIT(game.loc,4))K2=274; if (K2 == 0) { for (;;) { LL=MOD((labs(TRAVEL[KK])/1000),1000); - if (LL != K) { + if (LL != motion) { if (LL <= 300) { - if (FORCED(LL) && MOD((labs(TRAVEL[KEY[LL]])/1000),1000) == K) + if (FORCED(LL) && MOD((labs(TRAVEL[KEY[LL]])/1000),1000) == motion) K2=KK; } if (TRAVEL[KK] >= 0) { @@ -531,7 +529,7 @@ static bool playermove(FILE *cmdin, token_t verb) } } - K=MOD(labs(TRAVEL[KK]),1000); + motion=MOD(labs(TRAVEL[KK]),1000); KK=KEY[game.loc]; break; /* fall through to ordinary travel */ } @@ -540,7 +538,7 @@ static bool playermove(FILE *cmdin, token_t verb) return true; } } - else if (K == LOOK) { + else if (motion == LOOK) { /* Look. Can't give more detail. Pretend it wasn't dark * (though it may "now" be dark) so he won't fall into a * pit while staring into the gloom. */ @@ -550,7 +548,7 @@ static bool playermove(FILE *cmdin, token_t verb) game.abbrev[game.loc]=0; return true; } - else if (K == CAVE) { + else if (motion == CAVE) { /* Cave. Different messages depending on whether above ground. */ RSPEAK((OUTSID(game.loc) && game.loc != 8) ? 57 : 58); return true; @@ -564,19 +562,19 @@ static bool playermove(FILE *cmdin, token_t verb) /* ordinary travel */ for (;;) { LL=labs(TRAVEL[KK]); - if (MOD(LL,1000) == 1 || MOD(LL,1000) == K) + if (MOD(LL,1000) == 1 || MOD(LL,1000) == motion) break; if (TRAVEL[KK] < 0) { /* Non-applicable motion. Various messages depending on * word given. */ int spk=12; - if (K >= 43 && K <= 50)spk=52; - if (K == 29 || K == 30)spk=52; - if (K == 7 || K == 36 || K == 37)spk=10; - if (K == 11 || K == 19)spk=11; + if (motion >= 43 && motion <= 50)spk=52; + if (motion == 29 || motion == 30)spk=52; + if (motion == 7 || motion == 36 || motion == 37)spk=10; + if (motion == 11 || motion == 19)spk=11; if (verb == FIND || verb == INVENT)spk=59; - if (K == 62 || K == 65)spk=42; - if (K == 17)spk=80; + if (motion == 62 || motion == 65)spk=42; + if (motion == 17)spk=80; RSPEAK(spk); return true; } @@ -586,17 +584,17 @@ static bool playermove(FILE *cmdin, token_t verb) for (;;) { game.newloc=LL/1000; - K=MOD(game.newloc,100); + motion=MOD(game.newloc,100); if (game.newloc <= 300) { if (game.newloc <= 100) { if (game.newloc == 0 || PCT(game.newloc)) break; /* else fall through */ - } if (TOTING(K) || (game.newloc > 200 && AT(K))) + } if (TOTING(motion) || (game.newloc > 200 && AT(motion))) break; /* else fall through */ } - else if (game.prop[K] != game.newloc/100-3) + else if (game.prop[motion] != game.newloc/100-3) break; L12: do { @@ -676,8 +674,9 @@ static bool playermove(FILE *cmdin, token_t verb) static bool do_command(FILE *cmdin) { long KQ, VERB, KK, V1, V2; - long obj, i; - static long IGO = 0; + long i, k, KMOD; + static long igo = 0; + static long obj = 0; enum speechpart part; /* Can't leave cave once it's closing (except by main office). */ @@ -728,7 +727,7 @@ L2000: if (game.loc == 0) } if (TOTING(BEAR))RSPEAK(141); newspeak(msg); - K=1; + KMOD=1; if (FORCED(game.loc)) { goto L8; } @@ -825,8 +824,12 @@ L2607: game.foobar=(game.foobar>0 ? -game.foobar : 0); if (game.trndex <= TRNVLS) game.thresh=MOD(TRNVAL[game.trndex],100000)+1; } - if (VERB == SAY && WD2 > 0)VERB=0; - if (VERB == SAY) goto L4090; + if (VERB == SAY && WD2 > 0) + VERB=0; + if (VERB == SAY) { + part=transitive; + goto Laction; + } if (game.tally == 0 && INDEEP(game.loc) && game.loc != 33) --game.clock1; @@ -969,12 +972,12 @@ L2607: game.foobar=(game.foobar>0 ? -game.foobar : 0); RSPEAK(spk); } } -L19999: K=43; - if (LIQLOC(game.loc) == WATER)K=70; +L19999: k=43; + if (LIQLOC(game.loc) == WATER)k=70; V1=VOCAB(WD1,-1); V2=VOCAB(WD2,-1); if (V1 == ENTER && (V2 == STREAM || V2 == 1000+WATER)) { - RSPEAK(K); + RSPEAK(k); goto L2012; } if (V1 == ENTER && WD2 > 0) { @@ -996,7 +999,7 @@ L2620: if (WD1 == MAKEWD(23051920)) { RSPEAK(17); } if (WD1 == MAKEWD( 715) && WD2 != 0) { - if (++IGO == 10) + if (++igo == 10) RSPEAK(276); } L2630: @@ -1009,26 +1012,21 @@ L2630: RSPEAK(254); goto L2600; } - K=MOD(i,1000); + KMOD=MOD(i,1000); KQ=i/1000+1; switch (KQ-1) { case 0: goto L8; - case 1: goto L5000; - case 2: goto L4000; - case 3: RSPEAK(K); goto L2012; + case 1: part=unknown; obj = KMOD; break; + case 2: part=intransitive; VERB = KMOD; break; + case 3: RSPEAK(KMOD); goto L2012; + default: BUG(22); } - BUG(22); - -/* Verb and object analysis moved to separate module. */ -L4000: part=intransitive; VERB=K; goto Laction; -L4090: part=transitive; goto Laction; -L5000: part=unknown; obj = K; Laction: switch (action(cmdin, part, VERB, obj)) { case 2: return true; - case 8: K=NUL; goto L8; + case 8: KMOD=NUL; goto L8; case 2000: goto L2000; case 2012: goto L2012; case 2600: goto L2600; @@ -1052,11 +1050,14 @@ Laction: RSPEAK(136); score(0); return true; + default: + BUG(99); } - BUG(99); + /* no fallthrough here */ + /* Figure out the new location */ -L8: if (playermove(cmdin, VERB)) +L8: if (playermove(cmdin, VERB, KMOD)) return true; else goto L2000;