Refactored carry for clarity
This commit is contained in:
parent
3d2ba18355
commit
66ba9a0101
1 changed files with 35 additions and 36 deletions
71
actions.c
71
actions.c
|
@ -311,40 +311,35 @@ static int vcarry(verb_t verb, obj_t obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (game.fixed[obj] != IS_FREE) {
|
if (game.fixed[obj] != IS_FREE) {
|
||||||
/* Next guard tests whether plant is tiny or stashed */
|
switch (obj) {
|
||||||
if (obj == PLANT && game.prop[PLANT] <= PLANT_THIRSTY) {
|
case PLANT:
|
||||||
rspeak(DEEP_ROOTS);
|
/* Next guard tests whether plant is tiny or stashed */
|
||||||
return GO_CLEAROBJ;
|
rspeak(game.prop[PLANT] <= PLANT_THIRSTY ? DEEP_ROOTS : YOU_JOKING);
|
||||||
}
|
break;
|
||||||
if (obj == BEAR && game.prop[BEAR] == SITTING_BEAR) {
|
case BEAR:
|
||||||
rspeak(BEAR_CHAINED);
|
rspeak( game.prop[BEAR] == SITTING_BEAR ? BEAR_CHAINED : YOU_JOKING);
|
||||||
return GO_CLEAROBJ;
|
break;
|
||||||
}
|
case CHAIN:
|
||||||
if (obj == CHAIN && game.prop[BEAR] != UNTAMED_BEAR) {
|
rspeak( game.prop[BEAR] != UNTAMED_BEAR ? STILL_LOCKED : YOU_JOKING);
|
||||||
rspeak(STILL_LOCKED);
|
break;
|
||||||
return GO_CLEAROBJ;
|
case RUG:
|
||||||
}
|
rspeak(game.prop[RUG] == RUG_HOVER ? RUG_HOVERS : YOU_JOKING);
|
||||||
if (obj == URN) {
|
break;
|
||||||
|
case URN:
|
||||||
rspeak(URN_NOBUDGE);
|
rspeak(URN_NOBUDGE);
|
||||||
return GO_CLEAROBJ;
|
break;
|
||||||
}
|
case CAVITY:
|
||||||
if (obj == CAVITY) {
|
|
||||||
rspeak(DOUGHNUT_HOLES);
|
rspeak(DOUGHNUT_HOLES);
|
||||||
return GO_CLEAROBJ;
|
break;
|
||||||
}
|
case BLOOD:
|
||||||
if (obj == BLOOD) {
|
|
||||||
rspeak(FEW_DROPS);
|
rspeak(FEW_DROPS);
|
||||||
return GO_CLEAROBJ;
|
break;
|
||||||
}
|
case SIGN:
|
||||||
if (obj == RUG && game.prop[RUG] == RUG_HOVER) {
|
|
||||||
rspeak(RUG_HOVERS);
|
|
||||||
return GO_CLEAROBJ;
|
|
||||||
}
|
|
||||||
if (obj == SIGN) {
|
|
||||||
rspeak(HAND_PASSTHROUGH);
|
rspeak(HAND_PASSTHROUGH);
|
||||||
return GO_CLEAROBJ;
|
break;
|
||||||
|
default:
|
||||||
|
rspeak(YOU_JOKING);
|
||||||
}
|
}
|
||||||
rspeak(YOU_JOKING);
|
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -352,14 +347,14 @@ static int vcarry(verb_t verb, obj_t obj)
|
||||||
obj == OIL) {
|
obj == OIL) {
|
||||||
if (!HERE(BOTTLE) ||
|
if (!HERE(BOTTLE) ||
|
||||||
LIQUID() != obj) {
|
LIQUID() != obj) {
|
||||||
if (TOTING(BOTTLE)) {
|
if (!TOTING(BOTTLE)) {
|
||||||
if (game.prop[BOTTLE] == EMPTY_BOTTLE) {
|
rspeak(NO_CONTAINER);
|
||||||
return (fill(verb, BOTTLE));
|
|
||||||
} else if (game.prop[BOTTLE] != EMPTY_BOTTLE)
|
|
||||||
rspeak(BOTTLE_FULL);
|
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
rspeak(NO_CONTAINER);
|
if (game.prop[BOTTLE] == EMPTY_BOTTLE) {
|
||||||
|
return (fill(verb, BOTTLE));
|
||||||
|
} else
|
||||||
|
rspeak(BOTTLE_FULL);
|
||||||
return GO_CLEAROBJ;
|
return GO_CLEAROBJ;
|
||||||
}
|
}
|
||||||
obj = BOTTLE;
|
obj = BOTTLE;
|
||||||
|
@ -389,12 +384,16 @@ static int vcarry(verb_t verb, obj_t obj)
|
||||||
}
|
}
|
||||||
if ((obj == BIRD ||
|
if ((obj == BIRD ||
|
||||||
obj == CAGE) &&
|
obj == CAGE) &&
|
||||||
(game.prop[BIRD] == BIRD_CAGED || STASHED(BIRD) == BIRD_CAGED))
|
(game.prop[BIRD] == BIRD_CAGED || STASHED(BIRD) == BIRD_CAGED)) {
|
||||||
/* expression maps BIRD to CAGE and CAGE to BIRD */
|
/* expression maps BIRD to CAGE and CAGE to BIRD */
|
||||||
carry(BIRD + CAGE - obj, game.loc);
|
carry(BIRD + CAGE - obj, game.loc);
|
||||||
|
}
|
||||||
|
|
||||||
carry(obj, game.loc);
|
carry(obj, game.loc);
|
||||||
|
|
||||||
if (obj == BOTTLE && LIQUID() != NO_OBJECT)
|
if (obj == BOTTLE && LIQUID() != NO_OBJECT)
|
||||||
game.place[LIQUID()] = CARRIED;
|
game.place[LIQUID()] = CARRIED;
|
||||||
|
|
||||||
if (GSTONE(obj) && game.prop[obj] != STATE_FOUND) {
|
if (GSTONE(obj) && game.prop[obj] != STATE_FOUND) {
|
||||||
game.prop[obj] = STATE_FOUND;
|
game.prop[obj] = STATE_FOUND;
|
||||||
game.prop[CAVITY] = CAVITY_EMPTY;
|
game.prop[CAVITY] = CAVITY_EMPTY;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue