Cleaned up light and extinguish

This commit is contained in:
NHOrus 2017-07-06 10:27:49 +03:00
parent a802db1ce0
commit 53efcdf2d2

View file

@ -594,30 +594,27 @@ static int extinguish(token_t verb, obj_t obj)
return GO_UNKNOWN; return GO_UNKNOWN;
} }
if (obj == URN) { switch (obj) {
case URN:
if (game.prop[URN] != URN_EMPTY) { if (game.prop[URN] != URN_EMPTY) {
state_change(URN, URN_DARK); state_change(URN, URN_DARK);
} else { } else {
pspeak(URN, change, URN_DARK, true); pspeak(URN, change, URN_DARK, true);
} }
return GO_CLEAROBJ; break;
} case LAMP:
if (obj == LAMP) {
state_change(LAMP, LAMP_DARK); state_change(LAMP, LAMP_DARK);
rspeak(DARK(game.loc) ? rspeak(DARK(game.loc) ?
PITCH_DARK : PITCH_DARK :
NO_MESSAGE); NO_MESSAGE);
return GO_CLEAROBJ; break;
} case DRAGON:
case VOLCANO:
if (obj == DRAGON ||
obj == VOLCANO) {
rspeak(BEYOND_POWER); rspeak(BEYOND_POWER);
return GO_CLEAROBJ; break;
default:
speak(actions[verb].message);
} }
speak(actions[verb].message);
return GO_CLEAROBJ; return GO_CLEAROBJ;
} }
@ -844,36 +841,38 @@ static int light(token_t verb, obj_t obj)
/* Light. Applicable only to lamp and urn. */ /* Light. Applicable only to lamp and urn. */
{ {
if (obj == INTRANSITIVE) { 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; obj = LAMP;
if (HERE(URN) && game.prop[URN] == URN_DARK) selects++;
}
if (HERE(URN) && game.prop[URN] == URN_DARK) {
obj = URN; obj = URN;
if (obj == INTRANSITIVE || selects++;
(HERE(LAMP) && game.prop[LAMP] == LAMP_DARK && game.limit >= 0 && }
HERE(URN) && game.prop[URN] == URN_DARK)) if (selects != 1)
return GO_UNKNOWN; return GO_UNKNOWN;
} }
if (obj == URN) { switch (obj) {
case URN:
state_change(URN, game.prop[URN] == URN_EMPTY ? state_change(URN, game.prop[URN] == URN_EMPTY ?
URN_EMPTY : URN_EMPTY :
URN_LIT); URN_LIT);
return GO_CLEAROBJ; break;
} else { case LAMP:
if (obj != LAMP) {
speak(actions[verb].message);
return GO_CLEAROBJ;
}
if (game.limit < 0) { if (game.limit < 0) {
rspeak(LAMP_OUT); rspeak(LAMP_OUT);
return GO_CLEAROBJ; break;
} }
state_change(LAMP, LAMP_BRIGHT); state_change(LAMP, LAMP_BRIGHT);
if (game.wzdark) if (game.wzdark)
return GO_TOP; return GO_TOP;
else break;
return GO_CLEAROBJ; default:
speak(actions[verb].message);
} }
return GO_CLEAROBJ;
} }
static int listen(void) static int listen(void)