From 67bf87eda0fc2111b704991fa07b0c644c0ee617 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sun, 18 Jun 2017 15:05:17 -0400 Subject: [PATCH] Repair plover teleport and add a test for it. --- main.c | 9 ++------- notes.adoc | 5 +++-- tests/plover.chk | 8 +++++++- tests/plover.log | 3 ++- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/main.c b/main.c index 94eca98..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; @@ -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 diff --git a/notes.adoc b/notes.adoc index 00a733a..19efbbc 100644 --- a/notes.adoc +++ b/notes.adoc @@ -117,9 +117,10 @@ ways: and the choice to refrain will make forward translation into future languages easier. -* There are a few gotos left that resist restructuring; all of these +* There are a few gotos left that resist restructuring; all but of these are in the principal command interpreter function implementing its - state machine. + state machine. the remaining one is a truly mysterious artficat in + the player-movement code. * Linked lists (for objects at a location) are implemented using an array of link indices. This is a surviving FORTRANism that is quite unlike diff --git a/tests/plover.chk b/tests/plover.chk index 508ec57..82db799 100644 --- a/tests/plover.chk +++ b/tests/plover.chk @@ -1158,8 +1158,14 @@ OK You are currently holding the following: Egg-sized emerald +> plover + +>>Foof!<< + +It is now pitch dark. If you proceed you will likely fall into a pit. + -You scored 169 out of a possible 430, using 185 turns. +You scored 169 out of a possible 430, using 186 turns. You have achieved the rating: "Experienced Adventurer". diff --git a/tests/plover.log b/tests/plover.log index 5755e7d..8115ed3 100644 --- a/tests/plover.log +++ b/tests/plover.log @@ -1,4 +1,4 @@ -## Test access to emerald +## Test access to emerald room and plover teleport # Based on walkthrough at http://www.ecsoftwareconsulting.com/node/56 n seed 1495951709 @@ -188,3 +188,4 @@ drop lamp e take emerald inven +plover -- 2.31.1