X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=main.c;h=8497ea49b1d2afe58255514df1dc54b64f14d934;hb=093415efc888db27575dd25e01ef0f82f604d4df;hp=8bf0c1aeb6f45bbbcd44bd36990415f46bde4479;hpb=3c78ff879ba24095cb1f331a437ef10f3a83b0d4;p=open-adventure.git diff --git a/main.c b/main.c index 8bf0c1a..8497ea4 100644 --- a/main.c +++ b/main.c @@ -581,34 +581,33 @@ static bool playermove(FILE *cmdin, token_t verb) } LL=LL/1000; -L11: - game.newloc=LL/1000; - K=MOD(game.newloc,100); - if (game.newloc <= 300) { - if (game.newloc <= 100) - goto L14; - if (TOTING(K) || (game.newloc > 200 && AT(K))) - goto L16; - goto L12; + for (;;) { + game.newloc=LL/1000; + K=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))) + break; + /* else fall through */ + } + else if (game.prop[K] != game.newloc/100-3) + break; + L12: + do { + if (TRAVEL[KK] < 0)BUG(25); + ++KK; + game.newloc=labs(TRAVEL[KK])/1000; + } while + (game.newloc == LL); + LL=game.newloc; } - if (game.prop[K] != game.newloc/100-3) - goto L16; -L12: - do { - if (TRAVEL[KK] < 0)BUG(25); - ++KK; - game.newloc=labs(TRAVEL[KK])/1000; - } while - (game.newloc == LL); - LL=game.newloc; - goto L11; -L14: - if (game.newloc != 0 && !PCT(game.newloc)) - goto L12; -L16: game.newloc=MOD(LL,1000); - if (game.newloc <= 300) return true; + if (game.newloc <= 300) + return true; if (game.newloc <= 500) { game.newloc=game.newloc-300; switch (game.newloc) @@ -769,10 +768,6 @@ L2006: KK=game.prop[obj]; L2008: i=game.link[i]; goto L2004; -L2009: K=54; -L2010: SPK=K; -L2011: RSPEAK(SPK); - L2012: VERB=0; game.oldobj=obj; obj=0; @@ -975,8 +970,10 @@ 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)) - goto L2010; + if (V1 == ENTER && (V2 == STREAM || V2 == 1000+WATER)) { + RSPEAK(K); + goto L2012; + } if (V1 == ENTER && WD2 > 0) goto L2800; if (!((V1 != 1000+WATER && V1 != 1000+OIL) || @@ -1005,7 +1002,7 @@ L2630: case 0: goto L8; case 1: goto L5000; case 2: goto L4000; - case 3: goto L2010; + case 3: RSPEAK(K); goto L2012; } BUG(22); @@ -1032,9 +1029,6 @@ Laction: case 2: return true; case 8: goto L8; case 2000: goto L2000; - case 2009: goto L2009; - case 2010: goto L2010; - case 2011: goto L2011; case 2012: goto L2012; case 2600: goto L2600; case 2607: goto L2607;