continue;
if (!(treasure == PYRAMID && (game.loc == objects[PYRAMID].plac ||
game.loc == objects[EMERALD].plac))) {
- if (AT(treasure) && game.fixed[treasure] == 0)
+ if (AT(treasure) && game.fixed[treasure] == IS_FREE)
carry(treasure, game.loc);
if (TOTING(treasure))
drop(treasure, game.chloc);
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;
}
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
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
game.prop[TROLL] = TROLL_PAIDONCE;
if (!TOTING(BEAR))
return;
- rspeak(BRIDGE_COLLAPSE);
- game.prop[CHASM] = BRIDGE_WRECKED;
+ state_change(CHASM, BRIDGE_WRECKED);
game.prop[TROLL] = TROLL_GONE;
drop(BEAR, game.newloc);
- game.fixed[BEAR] = -1;
+ game.fixed[BEAR] = IS_FIXED;
game.prop[BEAR] = BEAR_DEAD;
game.oldlc2 = game.newloc;
croak();
if (game.prop[BEAR] != BEAR_DEAD)
DESTROY(BEAR);
game.prop[CHAIN] = CHAIN_HEAP;
- game.fixed[CHAIN] = CHAIN_HEAP;
- game.prop[AXE] = 0;
- game.fixed[AXE] = 0;
+ game.fixed[CHAIN] = IS_FREE;
+ game.prop[AXE] = AXE_HERE;
+ game.fixed[AXE] = IS_FREE;
rspeak(CAVE_CLOSING);
game.clock1 = -1;
game.closng = true;
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)
}
int kk = game.prop[obj];
if (obj == STEPS)
- kk = (game.loc == game.fixed[STEPS])
- ? STEPS_UP
- : STEPS_DOWN;
+ kk = (game.loc == game.fixed[STEPS])
+ ? STEPS_UP
+ : STEPS_DOWN;
pspeak(obj, look, kk, true);
}
}
speak(msg);
if (FORCED(game.loc)) {
playermove(HERE);
- return true;
+ return true;
}
if (game.loc == LOC_Y2 && PCT(25) && !game.closng)
rspeak(SAYS_PLUGH);
tokenize(inputbuf, &command);
- char word1[TOKLEN+1];
- char word2[TOKLEN+1];
+ char word1[TOKLEN + 1];
+ char word2[TOKLEN + 1];
packed_to_token(command.wd1, word1);
packed_to_token(command.wd2, word2);
command.id1 = get_vocab_id(word1);
lampcheck();
if (command.id1 == ENTER && (command.id2 == STREAM ||
- command.id2 == PROMOTE_WORD(WATER))) {
+ command.id2 == PROMOTE_WORD(WATER))) {
if (LIQLOC(game.loc) == WATER) {
rspeak(FEET_WET);
} else {
if (command.id1 == ENTER && command.id2 != WORD_NOT_FOUND && command.id2 != WORD_EMPTY) {
/* command.wd1 = command.wd2; */
/* wordclear(&command.wd2); */
- command.id1 = command.id2;
- command.id2 = WORD_EMPTY;
+ command.id1 = command.id2;
+ command.id2 = WORD_EMPTY;
} else {
/* FIXME: Magic numbers related to vocabulary */
if (!((command.id1 != PROMOTE_WORD(WATER) && command.id1 != PROMOTE_WORD(OIL)) ||
switch (defn / 1000) {
case 0:
playermove(kmod);
- return true;
+ return true;
case 1:
command.part = unknown;
command.obj = kmod;
case GO_WORD2:
/* Get second word for analysis. */
command.wd1 = command.wd2;
- strcpy(command.raw1, command.raw2);
+ strcpy(command.raw1, command.raw2);
wordclear(&command.wd2);
- command.raw2[0] = '\0';
+ command.raw2[0] = '\0';
goto L2620;
case GO_UNKNOWN:
/* Random intransitive verbs come here. Clear obj just in case
* (see attack()). */
- command.raw1[0] = toupper(command.raw1[0]);
+ command.raw1[0] = toupper(command.raw1[0]);
sspeak(DO_WHAT, command.raw1);
command.obj = 0;
goto L2600;