Repair plover teleport and add a test for it.
authorEric S. Raymond <esr@thyrsus.com>
Sun, 18 Jun 2017 19:05:17 +0000 (15:05 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Sun, 18 Jun 2017 19:05:17 +0000 (15:05 -0400)
main.c
notes.adoc
tests/plover.chk
tests/plover.log

diff --git a/main.c b/main.c
index 94eca9848fec8f838af05af302962752de24692f..e5859b613622cd108ebda83fbb0033b5e74cbac8 100644 (file)
--- 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
index 00a733a0e3dd76a5ada810bbf12e3171ac30a773..19efbbc486cd724c77ae048639194049cb5e0f69 100644 (file)
@@ -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
index 508ec57d638c8114e5ff29c58d1875ba911008f7..82db7999d3a5daf1702b79be5c90a0297ab83b04 100644 (file)
@@ -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".
 
index 5755e7d4404ff58e4c1edb4bb2ff6bf275c24d6c..8115ed3f68d1fd70a6f6ec4f4ded6b5d1872c170 100644 (file)
@@ -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