X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=actions.c;h=062c3721aaaf9b90936794b8b02bc35dc9162b39;hb=refs%2Fmerge-requests%2F199%2Fhead;hp=5e650f6bec9c344afcb80c3fa652849e257bd889;hpb=8b3ef7ca78b8066113f4e35c596705bef12382ba;p=open-adventure.git diff --git a/actions.c b/actions.c index 5e650f6..062c372 100644 --- a/actions.c +++ b/actions.c @@ -205,21 +205,26 @@ static int bigwords(token_t foo) static int bivalve(token_t verb, token_t obj) /* Clam/oyster actions */ { - int spk; bool is_oyster = (obj == OYSTER); - spk = is_oyster ? OYSTER_OPENS : PEARL_FALLS; - if (TOTING(obj)) - spk = is_oyster ? DROP_OYSTER : DROP_CLAM; - if (!TOTING(TRIDENT)) - spk = is_oyster ? OYSTER_OPENER : CLAM_OPENER; - if (verb == LOCK) - spk = HUH_MAN; - if (spk == PEARL_FALLS) { + if (verb == LOCK) { + rspeak(HUH_MAN); + return GO_CLEAROBJ; + } + if (!TOTING(TRIDENT)) { + rspeak(is_oyster ? OYSTER_OPENER : CLAM_OPENER); + return GO_CLEAROBJ; + } + if (TOTING(obj)) { + rspeak( is_oyster ? DROP_OYSTER : DROP_CLAM); + return GO_CLEAROBJ; + } + + if (!is_oyster) { DESTROY(CLAM); drop(OYSTER, game.loc); drop(PEARL, LOC_CULDESAC); } - rspeak(spk); + rspeak(is_oyster ? OYSTER_OPENS : PEARL_FALLS); return GO_CLEAROBJ; } @@ -700,36 +705,36 @@ static int find(token_t verb, token_t obj) static int fly(token_t verb, token_t obj) /* Fly. Snide remarks unless hovering rug is here. */ { - int spk = actions[verb].message; if (obj == INTRANSITIVE) { - if (game.prop[RUG] != RUG_HOVER) - spk = RUG_NOTHING2; - if (!HERE(RUG)) - spk = FLAP_ARMS; - if (spk == RUG_NOTHING2 || spk == FLAP_ARMS) { - rspeak(spk); + if (!HERE(RUG)) { + rspeak(FLAP_ARMS); + return GO_CLEAROBJ; + } + if (game.prop[RUG] != RUG_HOVER) { + rspeak(RUG_NOTHING2); return GO_CLEAROBJ; } obj = RUG; } if (obj != RUG) { - rspeak(spk); + rspeak(actions[verb].message); return GO_CLEAROBJ; } - spk = RUG_NOTHING1; if (game.prop[RUG] != RUG_HOVER) { - rspeak(spk); + rspeak(RUG_NOTHING1); return GO_CLEAROBJ; } game.oldlc2 = game.oldloc; game.oldloc = game.loc; /* FIXME: Arithmetic on location values */ game.newloc = game.place[RUG] + game.fixed[RUG] - game.loc; - spk = RUG_GOES; - if (game.prop[SAPPH] >= 0) - spk = RUG_RETURNS; - rspeak(spk); + + if (game.prop[SAPPH] >= 0) { + rspeak(RUG_RETURNS); + } else { + rspeak(RUG_GOES); + } return GO_TERMINATE; }