Unspk'd lock, cleaned up logic

This commit is contained in:
NHOrus 2017-07-04 11:30:39 +03:00
parent babf08ddc4
commit b8def22d24

View file

@ -874,8 +874,7 @@ static int lock(token_t verb, token_t obj)
obj = GRATE; obj = GRATE;
if (HERE(CHAIN)) if (HERE(CHAIN))
obj = CHAIN; obj = CHAIN;
if (obj == NO_OBJECT || if (obj == INTRANSITIVE) {
obj == INTRANSITIVE) {
rspeak(NOTHING_LOCKED); rspeak(NOTHING_LOCKED);
return GO_CLEAROBJ; return GO_CLEAROBJ;
} }
@ -883,26 +882,17 @@ static int lock(token_t verb, token_t obj)
/* Lock, unlock object. Special stuff for opening clam/oyster /* Lock, unlock object. Special stuff for opening clam/oyster
* and for chain. */ * and for chain. */
int spk = actions[verb].message;
if (obj == CLAM || obj == OYSTER)
return bivalve(verb, obj);
if (obj == DOOR)
spk = (game.prop[DOOR] == DOOR_UNRUSTED) ? OK_MAN : RUSTY_DOOR;
if (obj == CAGE)
spk = NO_LOCK;
if (obj == KEYS)
spk = CANNOT_UNLOCK;
if (obj == GRATE || if (obj == GRATE ||
obj == CHAIN) { obj == CHAIN) {
spk = NO_KEYS;
if (HERE(KEYS)) { if (HERE(KEYS)) {
if (obj == CHAIN) if (obj == CHAIN)
return chain(verb); return chain(verb);
if (game.closng) { if (game.closng) {
spk = EXIT_CLOSED; rspeak(EXIT_CLOSED);
if (!game.panic) if (!game.panic)
game.clock2 = PANICTIME; game.clock2 = PANICTIME;
game.panic = true; game.panic = true;
return GO_CLEAROBJ ;
} else { } else {
state_change(GRATE, (verb == LOCK) ? state_change(GRATE, (verb == LOCK) ?
GRATE_CLOSED : GRATE_CLOSED :
@ -910,8 +900,27 @@ static int lock(token_t verb, token_t obj)
return GO_CLEAROBJ; return GO_CLEAROBJ;
} }
} }
rspeak(NO_KEYS);
return GO_CLEAROBJ;
} }
rspeak(spk);
switch (obj) {
case CLAM:
case OYSTER:
return bivalve(verb, obj);
case DOOR:
rspeak((game.prop[DOOR] == DOOR_UNRUSTED) ? OK_MAN : RUSTY_DOOR);
break;
case CAGE:
rspeak( NO_LOCK);
break;
case KEYS:
rspeak(CANNOT_UNLOCK);
break;
default:
rspeak(actions[verb].message);
}
return GO_CLEAROBJ; return GO_CLEAROBJ;
} }