Unspk'd chain action
This commit is contained in:
parent
469a0e74ed
commit
85f918f9c0
1 changed files with 32 additions and 24 deletions
56
actions.c
56
actions.c
|
@ -395,39 +395,47 @@ static int vcarry(token_t verb, token_t obj)
|
||||||
static int chain(token_t verb)
|
static int chain(token_t verb)
|
||||||
/* Do something to the bear's chain */
|
/* Do something to the bear's chain */
|
||||||
{
|
{
|
||||||
int spk;
|
|
||||||
if (verb != LOCK) {
|
if (verb != LOCK) {
|
||||||
spk = CHAIN_UNLOCKED;
|
if (game.prop[BEAR] == UNTAMED_BEAR) {
|
||||||
if (game.prop[BEAR] == UNTAMED_BEAR)
|
rspeak(BEAR_BLOCKS);
|
||||||
spk = BEAR_BLOCKS;
|
return GO_CLEAROBJ;
|
||||||
if (game.prop[CHAIN] == CHAIN_HEAP)
|
}
|
||||||
spk = ALREADY_UNLOCKED;
|
if (game.prop[CHAIN] == CHAIN_HEAP) {
|
||||||
if (spk != CHAIN_UNLOCKED) {
|
rspeak(ALREADY_UNLOCKED);
|
||||||
rspeak(spk);
|
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
game.prop[CHAIN] = CHAIN_HEAP;
|
game.prop[CHAIN] = CHAIN_HEAP;
|
||||||
game.fixed[CHAIN] = CHAIN_HEAP;
|
game.fixed[CHAIN] = CHAIN_HEAP;
|
||||||
if (game.prop[BEAR] != BEAR_DEAD)
|
if (game.prop[BEAR] != BEAR_DEAD)
|
||||||
game.prop[BEAR] = CONTENTED_BEAR;
|
game.prop[BEAR] = CONTENTED_BEAR;
|
||||||
/* FIXME: Arithmetic on state numbers */
|
|
||||||
game.fixed[BEAR] = 2 - game.prop[BEAR];
|
switch (game.prop[BEAR]) {
|
||||||
} else {
|
case BEAR_DEAD:
|
||||||
spk = CHAIN_LOCKED;
|
game.fixed[BEAR] = -1;
|
||||||
if (game.prop[CHAIN] != CHAIN_HEAP)
|
break;
|
||||||
spk = ALREADY_LOCKED;
|
default:
|
||||||
if (game.loc != objects[CHAIN].plac)
|
game.fixed[BEAR] = 0;
|
||||||
spk = NO_LOCKSITE;
|
|
||||||
if (spk != CHAIN_LOCKED) {
|
|
||||||
rspeak(spk);
|
|
||||||
return GO_CLEAROBJ;
|
|
||||||
}
|
}
|
||||||
game.prop[CHAIN] = CHAIN_FIXED;
|
rspeak(CHAIN_UNLOCKED);
|
||||||
if (TOTING(CHAIN))
|
return GO_CLEAROBJ;
|
||||||
drop(CHAIN, game.loc);
|
|
||||||
game.fixed[CHAIN] = -1;
|
|
||||||
}
|
}
|
||||||
rspeak(spk);
|
|
||||||
|
if (game.prop[CHAIN] != CHAIN_HEAP) {
|
||||||
|
rspeak(ALREADY_LOCKED);
|
||||||
|
return GO_CLEAROBJ;
|
||||||
|
}
|
||||||
|
if (game.loc != objects[CHAIN].plac) {
|
||||||
|
rspeak(NO_LOCKSITE);
|
||||||
|
return GO_CLEAROBJ;
|
||||||
|
}
|
||||||
|
|
||||||
|
game.prop[CHAIN] = CHAIN_FIXED;
|
||||||
|
|
||||||
|
if (TOTING(CHAIN))
|
||||||
|
drop(CHAIN, game.loc);
|
||||||
|
game.fixed[CHAIN] = -1;
|
||||||
|
|
||||||
|
rspeak(CHAIN_LOCKED);
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue