X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=actions.c;h=076a2b29bd61cf67140e25a5208ebbbaefeff593;hb=346bcf9458c408b5bd2a6fb5679a2e86bd3952fb;hp=51a3f599a6cddde9b9d7d590e7b5bfb70826b6b0;hpb=e91742e1b9ff7715ba47f7354f8d8803b11a5df9;p=open-adventure.git diff --git a/actions.c b/actions.c index 51a3f59..076a2b2 100644 --- a/actions.c +++ b/actions.c @@ -528,7 +528,9 @@ static int extinguish(token_t verb, int obj) obj = LAMP; if (HERE(URN) && game.prop[URN] == URN_LIT) obj = URN; - if (obj == INTRANSITIVE) + if (obj == INTRANSITIVE || + HERE(LAMP) && game.prop[LAMP] == LAMP_BRIGHT && + HERE(URN) && game.prop[URN] == URN_LIT) return GO_UNKNOWN; } @@ -739,7 +741,9 @@ static int light(token_t verb, token_t obj) obj = LAMP; if (HERE(URN) && game.prop[URN] == URN_DARK) obj = URN; - if (obj == INTRANSITIVE || obj == 0 || obj > NOBJECTS) + if (obj == INTRANSITIVE || + HERE(LAMP) && game.prop[LAMP] == LAMP_DARK && game.limit >= 0 && + HERE(URN) && game.prop[URN] == URN_DARK) return GO_UNKNOWN; } @@ -807,8 +811,6 @@ static int lock(token_t verb, token_t obj) obj = DOOR; if (AT(GRATE)) obj = GRATE; - if (obj != 0 && HERE(CHAIN)) - return GO_UNKNOWN; if (HERE(CHAIN)) obj = CHAIN; if (obj == 0 || obj == INTRANSITIVE) { @@ -823,7 +825,7 @@ static int lock(token_t verb, token_t obj) return bivalve(verb, obj); if (obj == DOOR) spk = RUSTY_DOOR; - if (obj == DOOR && game.prop[DOOR] == 1) + if (obj == DOOR && game.prop[DOOR] == DOOR_UNRUSTED) spk = OK_MAN; if (obj == CAGE) spk = NO_LOCK; @@ -867,7 +869,7 @@ static int pour(token_t verb, token_t obj) rspeak(spk); return GO_CLEAROBJ; } - if (HERE(URN) && game.prop[URN] == 0) + if (HERE(URN) && game.prop[URN] == URN_EMPTY) return fill(verb, URN); game.prop[BOTTLE] = EMPTY_BOTTLE; game.place[obj] = LOC_NOWHERE; @@ -950,7 +952,7 @@ static int rub(token_t verb, token_t obj) int spk = actions[verb].message; if (obj != LAMP) spk = PECULIAR_NOTHING; - if (obj == URN && game.prop[URN] == 2) { + if (obj == URN && game.prop[URN] == URN_LIT) { DESTROY(URN); drop(AMBER, game.loc); game.prop[AMBER] = 1;