X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=actions.c;h=13fc8c5dfdf7bee165612b5c0e3b5af818b84231;hp=51ad0ef5d432d9d020c6279df161179e9f32e775;hb=481d198d392dded279274bd4152c8a2c8891fe41;hpb=eeda78a2100cec2609a12d7cb618662e2370b870 diff --git a/actions.c b/actions.c index 51ad0ef..13fc8c5 100644 --- a/actions.c +++ b/actions.c @@ -1086,19 +1086,26 @@ static int wake(token_t verb, token_t obj) } } +static token_t birdspeak(void) +{ + switch (game.prop[BIRD]) { + 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. */ { - if ((!TOTING(obj)) && (obj != ROD || !TOTING(ROD2))) { - rspeak(ARENT_CARRYING); - return GO_CLEAROBJ; - } if (obj != ROD || !TOTING(obj) || (!HERE(BIRD) && (game.closng || !AT(FISSURE)))) { - rspeak(actions[verb].message); + rspeak(((!TOTING(obj)) && (obj != ROD || !TOTING(ROD2))) ? ARENT_CARRYING : actions[verb].message); return GO_CLEAROBJ; } + if (game.prop[BIRD] == BIRD_UNCAGED && game.loc == game.place[STEPS] && game.prop[JADE] < 0) { drop(JADE, game.loc); game.prop[JADE] = 0; @@ -1107,24 +1114,16 @@ static int wave(token_t verb, token_t obj) return GO_CLEAROBJ; } else { if (game.closed) { - rspeak(actions[verb].message); + rspeak(birdspeak()); return GO_DWARFWAKE; } if (game.closng || !AT(FISSURE)) { - rspeak(actions[verb].message); + rspeak(birdspeak()); return GO_CLEAROBJ; } - if (HERE(BIRD)) { - switch (game.prop[BIRD]) { - case BIRD_UNCAGED: - case BIRD_FOREST_UNCAGED: - rspeak(FREE_FLY); - break; - case BIRD_CAGED: - rspeak(CAGE_FLY); - break; - } - } + if (HERE(BIRD)) + rspeak(birdspeak()); + /* FIXME: Arithemetic on property values */ game.prop[FISSURE] = 1 - game.prop[FISSURE]; pspeak(FISSURE, look, 2 - game.prop[FISSURE], true);