X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=main.c;h=e5859b613622cd108ebda83fbb0033b5e74cbac8;hb=00514b079380c064b91f7ab95fec7e793a365d46;hp=21fedadb11b7e5ff1af2cb2a393ac8f2aee1017b;hpb=672ef17d4cf6741b23cefb30b144777190c03c80;p=open-adventure.git diff --git a/main.c b/main.c index 21fedad..e5859b6 100644 --- a/main.c +++ b/main.c @@ -623,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; @@ -645,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 @@ -656,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 @@ -693,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;