rspeak(RUG_NOTHING1);
return GO_CLEAROBJ;
}
- game.oldlc2 = game.oldloc;
- game.oldloc = game.loc;
- if (game.prop[SAPPH] == STATE_NOTFOUND) {
- game.newloc = game.place[SAPPH];
+ if (game.loc == LOC_CLIFF) {
+ game.oldlc2 = game.oldloc;
+ game.oldloc = game.loc;
+ game.newloc = LOC_LEDGE;
rspeak(RUG_GOES);
- } else {
+ } else if (game.loc == LOC_LEDGE) {
+ game.oldlc2 = game.oldloc;
+ game.oldloc = game.loc;
game.newloc = LOC_CLIFF;
rspeak(RUG_RETURNS);
+ } else {
+ /* should never happen */
+ rspeak(NOTHING_HAPPENS);
}
return GO_TERMINATE;
}
static phase_codes_t listen(void)
/* Listen. Intransitive only. Print stuff based on object sound proprties. */
{
+ bool soundlatch = false;
vocab_t sound = locations[game.loc].sound;
if (sound != SILENT) {
rspeak(sound);
if (!locations[game.loc].loud)
rspeak(NO_MESSAGE);
- return GO_CLEAROBJ;
+ soundlatch = true;
}
for (obj_t i = 1; i <= NOBJECTS; i++) {
if (!HERE(i) ||
rspeak(NO_MESSAGE);
if (i == BIRD && mi == BIRD_ENDSTATE)
DESTROY(BIRD);
- return GO_CLEAROBJ;
+ soundlatch = true;
}
- rspeak(ALL_SILENT);
+ if (!soundlatch)
+ rspeak(ALL_SILENT);
return GO_CLEAROBJ;
}