X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=actions.c;h=33c445cc0c13f7cfd92d33c717257b68bb60ee0f;hp=43a570e2d74ae3b249f1dc59fa6fc253ffde4f71;hb=3c8482a6136167677bd46d647e90d649035ebe97;hpb=ab79fc78144cd1433c6e8276ab133067be28083e diff --git a/actions.c b/actions.c index 43a570e..33c445c 100644 --- a/actions.c +++ b/actions.c @@ -224,23 +224,24 @@ static void blast(void) static int vbreak(token_t verb, token_t obj) /* Break. Only works for mirror in repository and, of course, the vase. */ { - int spk = actions[verb].message; - if (obj == MIRROR) - spk = TOO_FAR; - if (obj == VASE && game.prop[VASE] == 0) { - if (TOTING(VASE)) - drop(VASE, game.loc); - game.prop[VASE] = 2; - game.fixed[VASE] = -1; - spk = BREAK_VASE; - } else { - if (obj == MIRROR && game.closed) { + if (obj == MIRROR) { + if (game.closed) { rspeak(BREAK_MIRROR); return GO_DWARFWAKE; + } else { + rspeak(TOO_FAR); + return GO_CLEAROBJ; } } - rspeak(spk); - return GO_CLEAROBJ; + if (obj == VASE && game.prop[VASE] == VASE_WHOLE) { + if (TOTING(VASE)) + drop(VASE, game.loc); + state_change(VASE, VASE_BROKEN); + game.fixed[VASE] = -1; + return GO_CLEAROBJ; + } + rspeak(actions[verb].message); + return (GO_CLEAROBJ); } static int brief(void)