From: NHOrus Date: Thu, 6 Jul 2017 07:27:49 +0000 (+0300) Subject: Cleaned up light and extinguish X-Git-Tag: 2017-07-10~51 X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=53efcdf2d262c07a53d791ff5d6085e732112134;p=open-adventure.git Cleaned up light and extinguish --- diff --git a/actions.c b/actions.c index 4a7c514..1aa70ac 100644 --- a/actions.c +++ b/actions.c @@ -594,30 +594,27 @@ static int extinguish(token_t verb, obj_t obj) return GO_UNKNOWN; } - if (obj == URN) { + switch (obj) { + case URN: if (game.prop[URN] != URN_EMPTY) { state_change(URN, URN_DARK); } else { pspeak(URN, change, URN_DARK, true); } - return GO_CLEAROBJ; - } - - if (obj == LAMP) { + break; + case LAMP: state_change(LAMP, LAMP_DARK); rspeak(DARK(game.loc) ? PITCH_DARK : NO_MESSAGE); - return GO_CLEAROBJ; - } - - if (obj == DRAGON || - obj == VOLCANO) { + break; + case DRAGON: + case VOLCANO: rspeak(BEYOND_POWER); - return GO_CLEAROBJ; + break; + default: + speak(actions[verb].message); } - - speak(actions[verb].message); return GO_CLEAROBJ; } @@ -844,36 +841,38 @@ static int light(token_t verb, obj_t obj) /* Light. Applicable only to lamp and urn. */ { if (obj == INTRANSITIVE) { - if (HERE(LAMP) && game.prop[LAMP] == LAMP_DARK && game.limit >= 0) + int selects = 0; + if (HERE(LAMP) && game.prop[LAMP] == LAMP_DARK && game.limit >= 0) { obj = LAMP; - if (HERE(URN) && game.prop[URN] == URN_DARK) + selects++; + } + if (HERE(URN) && game.prop[URN] == URN_DARK) { obj = URN; - if (obj == INTRANSITIVE || - (HERE(LAMP) && game.prop[LAMP] == LAMP_DARK && game.limit >= 0 && - HERE(URN) && game.prop[URN] == URN_DARK)) + selects++; + } + if (selects != 1) return GO_UNKNOWN; } - if (obj == URN) { + switch (obj) { + case URN: state_change(URN, game.prop[URN] == URN_EMPTY ? URN_EMPTY : URN_LIT); - return GO_CLEAROBJ; - } else { - if (obj != LAMP) { - speak(actions[verb].message); - return GO_CLEAROBJ; - } + break; + case LAMP: if (game.limit < 0) { rspeak(LAMP_OUT); - return GO_CLEAROBJ; + break; } state_change(LAMP, LAMP_BRIGHT); if (game.wzdark) return GO_TOP; - else - return GO_CLEAROBJ; + break; + default: + speak(actions[verb].message); } + return GO_CLEAROBJ; } static int listen(void)