/* Eat. Intransitive: assume food if present, else ask what. Transitive: food
* ok, some things lose appetite, rest are ridiculous. */
{
- int spk = actions[verb].message;
if (obj == INTRANSITIVE) {
if (!HERE(FOOD))
return GO_UNKNOWN;
DESTROY(FOOD);
- spk = THANKS_DELICIOUS;
- } else {
- if (obj == FOOD) {
- DESTROY(FOOD);
- spk = THANKS_DELICIOUS;
- }
- if (obj == BIRD || obj == SNAKE || obj == CLAM || obj == OYSTER || obj ==
- DWARF || obj == DRAGON || obj == TROLL || obj == BEAR || obj ==
- OGRE)
- spk = LOST_APPETITE;
+ rspeak(THANKS_DELICIOUS);
+ return GO_CLEAROBJ;
}
- rspeak(spk);
+ if (obj == FOOD) {
+ DESTROY(FOOD);
+ rspeak(THANKS_DELICIOUS);
+ return GO_CLEAROBJ;
+ }
+ if (obj == BIRD || obj == SNAKE || obj == CLAM || obj == OYSTER || obj ==
+ DWARF || obj == DRAGON || obj == TROLL || obj == BEAR || obj ==
+ OGRE) {
+ rspeak(LOST_APPETITE);
+ return GO_CLEAROBJ;
+ }
+ rspeak(actions[verb].message);
return GO_CLEAROBJ;
}
}
}
-static token_t birdspeak(void)
-{
- switch (game.prop[BIRD]) {
- case BIRD_CAGED:
- return CAGE_FLY;
- default:
- return FREE_FLY;
- }
-}
-
static int wave(token_t verb, token_t obj)
/* Wave. No effect unless waving rod at fissure or at bird. */
{
return GO_CLEAROBJ;
} else {
if (game.closed) {
- rspeak(birdspeak());
+ rspeak((game.prop[BIRD] == BIRD_CAGED) ? CAGE_FLY : FREE_FLY);
return GO_DWARFWAKE;
}
if (game.closng || !AT(FISSURE)) {
- rspeak(birdspeak());
+ rspeak((game.prop[BIRD] == BIRD_CAGED) ? CAGE_FLY : FREE_FLY);
return GO_CLEAROBJ;
}
if (HERE(BIRD))
- rspeak(birdspeak());
+ rspeak((game.prop[BIRD] == BIRD_CAGED) ? CAGE_FLY : FREE_FLY);
/* FIXME: Arithemetic on property values */
game.prop[FISSURE] = 1 - game.prop[FISSURE];