X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=main.c;h=92ab1b16ecb87219e08da0055c48442f33c0999b;hb=88feaab0c050b6ca2289df121e80d7b64cf596d9;hp=4b6165e4e5acf81fc1f27bb41a0aad0b7f897cbf;hpb=02987d0330cf586a90307ad7e8a06cfcde6f6b92;p=open-adventure.git diff --git a/main.c b/main.c index 4b6165e..92ab1b1 100644 --- a/main.c +++ b/main.c @@ -783,19 +783,19 @@ static bool closecheck(void) * chest, which may of course never show up). Note that the * treasures need not have been taken yet, just located. Hence * clock1 must be large enough to get out of the cave (it only ticks - * while inside the cave). When it hits zero, we branch to 10000 to - * start closing the cave, and then sit back and wait for him to try - * to get out. If he doesn't within clock2 turns, we close the cave; - * if he does try, we assume he panics, and give him a few additional - * turns to get frantic before we close. When clock2 hits zero, we - * transport him into the final puzzle. Note that the puzzle depends - * upon all sorts of random things. For instance, there must be no - * water or oil, since there are beanstalks which we don't want to be - * able to water, since the code can't handle it. Also, we can have - * no keys, since there is a grate (having moved the fixed object!) - * there separating him from all the treasures. Most of these - * problems arise from the use of negative prop numbers to suppress - * the object descriptions until he's actually moved the objects. */ + * while inside the cave). When it hits zero, we start closing the + * cave, and then sit back and wait for him to try to get out. If he + * doesn't within clock2 turns, we close the cave; if he does try, we + * assume he panics, and give him a few additional turns to get + * frantic before we close. When clock2 hits zero, we transport him + * into the final puzzle. Note that the puzzle depends upon all + * sorts of random things. For instance, there must be no water or + * oil, since there are beanstalks which we don't want to be able to + * water, since the code can't handle it. Also, we can have no keys, + * since there is a grate (having moved the fixed object!) there + * separating him from all the treasures. Most of these problems + * arise from the use of negative prop numbers to suppress the object + * descriptions until he's actually moved the objects. */ { /* If a turn threshold has been met, apply penalties and tell * the player about it. */ @@ -859,8 +859,8 @@ static bool closecheck(void) * objects come from known locations and/or states (e.g. the * snake is known to have been destroyed and needn't be * carried away from its old "place"), making the various - * objects be handled differently. We also drop all other - * objects he might be carrying (lest he have some which + * objects be handled differently. We also drop all other + * objects he might be acrrying (lest he have some which * could cause trouble, such as the keys). We describe the * flash of light and trundle back. */ put(BOTTLE, LOC_NE, EMPTY_BOTTLE); @@ -868,7 +868,7 @@ static bool closecheck(void) put(OYSTER, LOC_NE, STATE_FOUND); put(LAMP, LOC_NE, LAMP_DARK); put(ROD, LOC_NE, STATE_FOUND); - put(DWARF, LOC_NE, 0); + put(DWARF, LOC_NE, STATE_FOUND); game.loc = LOC_NE; game.oldloc = LOC_NE; game.newloc = LOC_NE; @@ -1098,10 +1098,10 @@ static bool do_command(void) * 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.objects[OYSTER].prop < 0 && TOTING(OYSTER)) + if ((PROP_IS_NOTFOUND(OYSTER) || PROP_IS_STASHED(OYSTER)) && TOTING(OYSTER)) pspeak(OYSTER, look, true, 1); for (size_t i = 1; i <= NOBJECTS; i++) { - if (TOTING(i) && game.objects[i].prop < 0) + if (TOTING(i) && (PROP_IS_NOTFOUND(i) || PROP_IS_STASHED(i))) game.objects[i].prop = PROP_STASHED(i); } }