Partial cleanup of fill
This commit is contained in:
parent
294f2b8a6d
commit
e6efd6dbac
1 changed files with 32 additions and 26 deletions
58
actions.c
58
actions.c
|
@ -662,47 +662,54 @@ int fill(token_t verb, token_t obj)
|
||||||
/* Fill. Bottle or urn must be empty, and liquid available. (Vase
|
/* Fill. Bottle or urn must be empty, and liquid available. (Vase
|
||||||
* is nasty.) */
|
* is nasty.) */
|
||||||
{
|
{
|
||||||
int k;
|
|
||||||
int spk = actions[verb].message;
|
|
||||||
if (obj == VASE) {
|
if (obj == VASE) {
|
||||||
spk = ARENT_CARRYING;
|
if (LIQLOC(game.loc) == NO_OBJECT) {
|
||||||
if (LIQLOC(game.loc) == 0)
|
rspeak(FILL_INVALID);
|
||||||
spk = FILL_INVALID;
|
return GO_CLEAROBJ;
|
||||||
if (LIQLOC(game.loc) == 0 ||
|
}
|
||||||
!TOTING(VASE)) {
|
if (!TOTING(VASE)) {
|
||||||
rspeak(spk);
|
rspeak(ARENT_CARRYING);
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
rspeak(SHATTER_VASE);
|
rspeak(SHATTER_VASE);
|
||||||
game.prop[VASE] = VASE_BROKEN;
|
game.prop[VASE] = VASE_BROKEN;
|
||||||
game.fixed[VASE] = -1;
|
game.fixed[VASE] = -1;
|
||||||
return (discard(verb, obj, true));
|
return (discard(verb, obj, true));
|
||||||
} else if (obj == URN) {
|
}
|
||||||
spk = FULL_URN;
|
|
||||||
|
if (obj == URN) {
|
||||||
if (game.prop[URN] != URN_EMPTY) {
|
if (game.prop[URN] != URN_EMPTY) {
|
||||||
rspeak(spk);
|
rspeak(FULL_URN);
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
spk = FILL_INVALID;
|
if (!HERE(BOTTLE)) {
|
||||||
k = LIQUID();
|
rspeak(FILL_INVALID);
|
||||||
if (k == 0 ||
|
return GO_CLEAROBJ;
|
||||||
!HERE(BOTTLE)) {
|
}
|
||||||
rspeak(spk);
|
int k = LIQUID();
|
||||||
|
switch (k) {
|
||||||
|
case WATER:
|
||||||
|
game.prop[BOTTLE] = EMPTY_BOTTLE;
|
||||||
|
rspeak(WATER_URN);
|
||||||
|
break;
|
||||||
|
case OIL:
|
||||||
|
game.prop[URN] = URN_DARK;
|
||||||
|
game.prop[BOTTLE] = EMPTY_BOTTLE;
|
||||||
|
rspeak(OIL_URN);
|
||||||
|
break;
|
||||||
|
case NO_OBJECT:
|
||||||
|
default:
|
||||||
|
rspeak(FILL_INVALID);
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
game.place[k] = LOC_NOWHERE;
|
game.place[k] = LOC_NOWHERE;
|
||||||
game.prop[BOTTLE] = EMPTY_BOTTLE;
|
|
||||||
if (k == OIL)
|
|
||||||
game.prop[URN] = URN_DARK;
|
|
||||||
spk = WATER_URN + game.prop[URN];
|
|
||||||
rspeak(spk);
|
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
} else if (obj != NO_OBJECT && obj != BOTTLE) {
|
} else if (obj != NO_OBJECT && obj != BOTTLE) {
|
||||||
rspeak(spk);
|
rspeak(actions[verb].message);
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
} else if (obj == NO_OBJECT && !HERE(BOTTLE))
|
} else if (obj == NO_OBJECT && !HERE(BOTTLE))
|
||||||
return GO_UNKNOWN;
|
return GO_UNKNOWN;
|
||||||
spk = BOTTLED_WATER;
|
int spk = BOTTLED_WATER;
|
||||||
if (LIQLOC(game.loc) == 0)
|
if (LIQLOC(game.loc) == 0)
|
||||||
spk = NO_LIQUID;
|
spk = NO_LIQUID;
|
||||||
if (HERE(URN) && game.prop[URN] != URN_EMPTY)
|
if (HERE(URN) && game.prop[URN] != URN_EMPTY)
|
||||||
|
@ -712,10 +719,9 @@ int fill(token_t verb, token_t obj)
|
||||||
if (spk == BOTTLED_WATER) {
|
if (spk == BOTTLED_WATER) {
|
||||||
/* FIXME: Arithmetic on property values */
|
/* FIXME: Arithmetic on property values */
|
||||||
game.prop[BOTTLE] = MOD(conditions[game.loc], 4) / 2 * 2;
|
game.prop[BOTTLE] = MOD(conditions[game.loc], 4) / 2 * 2;
|
||||||
k = LIQUID();
|
|
||||||
if (TOTING(BOTTLE))
|
if (TOTING(BOTTLE))
|
||||||
game.place[k] = CARRIED;
|
game.place[LIQUID()] = CARRIED;
|
||||||
if (k == OIL)
|
if (LIQUID() == OIL)
|
||||||
spk = BOTTLED_OIL;
|
spk = BOTTLED_OIL;
|
||||||
}
|
}
|
||||||
rspeak(spk);
|
rspeak(spk);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue