X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=actions.c;h=13fc8c5dfdf7bee165612b5c0e3b5af818b84231;hp=d9802f627143051a568c6b42302401cdbf87921e;hb=481d198d392dded279274bd4152c8a2c8891fe41;hpb=993194bd4dfb268bc12f73c10a36c0f4f7db6a91 diff --git a/actions.c b/actions.c index d9802f6..13fc8c5 100644 --- a/actions.c +++ b/actions.c @@ -1089,47 +1089,40 @@ static int wake(token_t verb, token_t obj) static token_t birdspeak(void) { switch (game.prop[BIRD]) { - case BIRD_UNCAGED: - case BIRD_FOREST_UNCAGED: - return FREE_FLY; case BIRD_CAGED: return CAGE_FLY; + default: + return FREE_FLY; } } static int wave(token_t verb, token_t obj) /* Wave. No effect unless waving rod at fissure or at bird. */ { - int spk = actions[verb].message; - if ((!TOTING(obj)) && (obj != ROD || !TOTING(ROD2))) - spk = ARENT_CARRYING; if (obj != ROD || !TOTING(obj) || (!HERE(BIRD) && (game.closng || !AT(FISSURE)))) { - rspeak(spk); + rspeak(((!TOTING(obj)) && (obj != ROD || !TOTING(ROD2))) ? ARENT_CARRYING : actions[verb].message); return GO_CLEAROBJ; } - if (HERE(BIRD)) - spk = birdspeak(); - if (spk == FREE_FLY && game.loc == game.place[STEPS] && game.prop[JADE] < 0) { + if (game.prop[BIRD] == BIRD_UNCAGED && game.loc == game.place[STEPS] && game.prop[JADE] < 0) { drop(JADE, game.loc); game.prop[JADE] = 0; --game.tally; - spk = NECKLACE_FLY; - rspeak(spk); + rspeak(NECKLACE_FLY); return GO_CLEAROBJ; } else { if (game.closed) { - rspeak(spk); + rspeak(birdspeak()); return GO_DWARFWAKE; } if (game.closng || !AT(FISSURE)) { - rspeak(spk); + rspeak(birdspeak()); return GO_CLEAROBJ; } if (HERE(BIRD)) - rspeak(spk); + rspeak(birdspeak()); /* FIXME: Arithemetic on property values */ game.prop[FISSURE] = 1 - game.prop[FISSURE]; @@ -1138,8 +1131,6 @@ static int wave(token_t verb, token_t obj) } } - - int action(struct command_t *command) /* Analyse a verb. Remember what it was, go back for object if second word * unless verb is "say", which snarfs arbitrary second word.