X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=main.c;h=b171ebaa9c40424051768a2d4fef8ed6a915cac2;hb=c3222aef27a1f93c845f8aa52a42a2eb4dcc7f31;hp=3c10dad85d60861d1df372100b7df477c884cc2c;hpb=925aeab51bf64e8559f6045d27204d26938b9bde;p=open-adventure.git diff --git a/main.c b/main.c index 3c10dad..b171eba 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) @@ -713,7 +712,7 @@ L2000: if (game.loc == 0) KK=STEXT[game.loc]; if (MOD(game.abbrev[game.loc],game.abbnum) == 0 || KK == 0) KK=LTEXT[game.loc]; - if (!FORCED(game.loc) && DARK(0)) { + if (!FORCED(game.loc) && DARK(game.loc)) { /* The easiest way to get killed is to fall into a pit in * pitch darkness. */ if (game.wzdark && PCT(35)) { @@ -740,7 +739,7 @@ L2000: if (game.loc == 0) * bear). These hacks are because game.prop=0 is needed to * get full score. */ - if (DARK(0)) goto L2012; + if (DARK(game.loc)) goto L2012; ++game.abbrev[game.loc]; i=game.atloc[game.loc]; L2004: if (i == 0) goto L2012; @@ -769,10 +768,7 @@ L2006: KK=game.prop[obj]; L2008: i=game.link[i]; goto L2004; -L2009: K=54; -L2010: SPK=K; -L2011: RSPEAK(SPK); - +L2009: RSPEAK(54); L2012: VERB=0; game.oldobj=obj; obj=0; @@ -806,7 +802,7 @@ L2603: if (game.closed) { game.prop[i] = -1-game.prop[i]; } } - game.wzdark=DARK(0); + game.wzdark=DARK(game.loc); if (game.knfloc > 0 && game.knfloc != game.loc) game.knfloc=0; @@ -975,8 +971,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 +1003,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); @@ -1033,8 +1031,6 @@ Laction: 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;