X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=main.c;h=a0c6cbf7e36c7bbdd837a9490a55fa0c7144b156;hp=71a7dac55da8c4d7cd3fbe480f1a9fd7f98075b3;hb=5ae09b9c34dda539a0b197248e22c733e00dcffd;hpb=a8ac2f477a2564bcf5b40508aea2c192d237c88a diff --git a/main.c b/main.c index 71a7dac..a0c6cbf 100644 --- a/main.c +++ b/main.c @@ -671,12 +671,13 @@ static void playermove( int motion) game.newloc -= SPECIALBASE; switch (game.newloc) { 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" * entries going through passage, which can never be used * for actual motion, but can be spotted by "go back". */ - /* FIXME: Arithmetic on location numbers */ - game.newloc = 99 + 100 - game.loc; + game.newloc = (game.loc == LOC_PLOVER) + ? LOC_ALCOVE + : LOC_PLOVER; if (game.holdng > 1 || (game.holdng == 1 && !TOTING(EMERALD))) { game.newloc = game.loc; @@ -684,7 +685,7 @@ static void playermove( int motion) } return; case 2: - /* Travel 302. Plover transport. Drop the + /* Special travel 2. Plover transport. Drop the * emerald (only use special travel if toting * it), so he's forced to use the plover-passage * to get it out. Having dropped it, go back and @@ -700,11 +701,11 @@ static void playermove( int motion) travel_entry = te_tmp; continue; /* goto L12 */ case 3: - /* Travel 303. Troll bridge. Must be done only - * as special motion so that dwarves won't wander - * across and encounter the bear. (They won't - * follow the player there because that region is - * forbidden to the pirate.) If + /* Special travel 3. Troll bridge. Must be done + * only as special motion so that dwarves won't + * wander across and encounter the bear. (They + * won't follow the player there because that + * region is forbidden to the pirate.) If * game.prop(TROLL)=1, he's crossed since paying, * so step out and block him. (standard travel * entries check for game.prop(TROLL)=0.) Special @@ -765,6 +766,7 @@ static bool closecheck(void) * problems arise from the use of negative prop numbers to suppress * the object descriptions until he's actually moved the objects. */ { + /* Don't tick game.clock1 unless well into cave (and not at Y2). */ if (game.tally == 0 && INDEEP(game.loc) && game.loc != LOC_Y2) --game.clock1; @@ -914,7 +916,7 @@ static void listobjects(void) if (game.prop[obj] < 0) { if (game.closed) continue; - game.prop[obj] = 0; + game.prop[obj] = STATE_FOUND; if (obj == RUG) game.prop[RUG] = RUG_DRAGON; if (obj == CHAIN) @@ -936,8 +938,10 @@ static void listobjects(void) * (so goes the rationalisation). */ } int kk = game.prop[obj]; - if (obj == STEPS && game.loc == game.fixed[STEPS]) - kk = 1; + if (obj == STEPS) + kk = (game.loc == game.fixed[STEPS]) + ? STEPS_UP + : STEPS_DOWN; pspeak(obj, look, kk, true); } } @@ -1019,10 +1023,9 @@ L2600: checkhints(); /* If closing time, check for any objects being toted with - * game.prop < 0 and set the prop to -1-game.prop. This way - * objects won't be described until they've been picked up - * and put down separate from their respective piles. Don't - * tick game.clock1 unless well into cave (and not at Y2). */ + * game.prop < 0 and stash them. This way objects won't be + * described until they've been picked up and put down + * separate from their respective piles. */ if (game.closed) { if (game.prop[OYSTER] < 0 && TOTING(OYSTER)) pspeak(OYSTER, look, 1, true);