Magic-number elimination in the olover/alcove pasage code.

Wuth this change, the location table becomes order-independent (I think).
This commit is contained in:
Eric S. Raymond 2017-07-04 22:56:02 -04:00
parent f3dae6ff83
commit c48c330883

19
main.c
View file

@ -671,12 +671,13 @@ static void playermove( int motion)
game.newloc -= SPECIALBASE; game.newloc -= SPECIALBASE;
switch (game.newloc) { switch (game.newloc) {
case 1: case 1:
/* Travel 301. Plover-alcove passage. Can carry only /* Special travel 1. Plover-alcove passage. Can carry only
* emerald. Note: travel table must include "useless" * emerald. Note: travel table must include "useless"
* entries going through passage, which can never be used * entries going through passage, which can never be used
* for actual motion, but can be spotted by "go back". */ * for actual motion, but can be spotted by "go back". */
/* FIXME: Arithmetic on location numbers */ game.newloc = (game.loc == LOC_PLOVER)
game.newloc = 99 + 100 - game.loc; ? LOC_ALCOVE
: LOC_PLOVER;
if (game.holdng > 1 || if (game.holdng > 1 ||
(game.holdng == 1 && !TOTING(EMERALD))) { (game.holdng == 1 && !TOTING(EMERALD))) {
game.newloc = game.loc; game.newloc = game.loc;
@ -684,7 +685,7 @@ static void playermove( int motion)
} }
return; return;
case 2: case 2:
/* Travel 302. Plover transport. Drop the /* Special travel 2. Plover transport. Drop the
* emerald (only use special travel if toting * emerald (only use special travel if toting
* it), so he's forced to use the plover-passage * it), so he's forced to use the plover-passage
* to get it out. Having dropped it, go back and * to get it out. Having dropped it, go back and
@ -700,11 +701,11 @@ static void playermove( int motion)
travel_entry = te_tmp; travel_entry = te_tmp;
continue; /* goto L12 */ continue; /* goto L12 */
case 3: case 3:
/* Travel 303. Troll bridge. Must be done only /* Special travel 3. Troll bridge. Must be done
* as special motion so that dwarves won't wander * only as special motion so that dwarves won't
* across and encounter the bear. (They won't * wander across and encounter the bear. (They
* follow the player there because that region is * won't follow the player there because that
* forbidden to the pirate.) If * region is forbidden to the pirate.) If
* game.prop(TROLL)=1, he's crossed since paying, * game.prop(TROLL)=1, he's crossed since paying,
* so step out and block him. (standard travel * so step out and block him. (standard travel
* entries check for game.prop(TROLL)=0.) Special * entries check for game.prop(TROLL)=0.) Special