X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=actions.c;h=0f7ece8e6c17ed69a3deeb4196204e65ac099ba1;hb=2848494a01db9baccf69c9a592ea5a916af84a8a;hp=5a82a5b225b70a91c3b473984230e53f0b6902bf;hpb=f47dc9f44798e3d03e4760c8b53b44c7de4c92f9;p=open-adventure.git diff --git a/actions.c b/actions.c index 5a82a5b..0f7ece8 100644 --- a/actions.c +++ b/actions.c @@ -242,10 +242,11 @@ static int carry(token_t verb, token_t obj) } if (obj == WATER || obj == OIL) { if (!HERE(BOTTLE) || LIQUID() != obj) { - if (TOTING(BOTTLE) && game.prop[BOTTLE] == 1) + if (TOTING(BOTTLE) && game.prop[BOTTLE] == EMPTY_BOTTLE) return (fill(verb, BOTTLE)); else { - if (game.prop[BOTTLE] != 1)spk = BOTTLE_FULL; + if (game.prop[BOTTLE] != EMPTY_BOTTLE) + spk = BOTTLE_FULL; if (!TOTING(BOTTLE))spk = NO_CONTAINER; rspeak(spk); return GO_CLEAROBJ; @@ -356,7 +357,7 @@ static int discard(token_t verb, token_t obj, bool just_do_it) } else if (obj == COINS && HERE(VEND)) { DESTROY(COINS); DROP(BATTERY, game.loc); - pspeak(BATTERY, 0); + pspeak(BATTERY, FRESH_BATTERIES); return GO_CLEAROBJ; } else if (obj == BIRD && AT(DRAGON) && game.prop[DRAGON] == 0) { rspeak(BIRD_BURNT); @@ -402,7 +403,7 @@ static int drink(token_t verb, token_t obj) if (obj != BLOOD) { if (obj != 0 && obj != WATER)spk = RIDICULOUS_ATTEMPT; if (spk != RIDICULOUS_ATTEMPT && LIQUID() == WATER && HERE(BOTTLE)) { - game.prop[BOTTLE] = 1; + game.prop[BOTTLE] = EMPTY_BOTTLE; game.place[WATER] = LOC_NOWHERE; spk = BOTTLE_EMPTY; } @@ -534,7 +535,7 @@ int fill(token_t verb, token_t obj) return GO_CLEAROBJ; } game.place[k] = LOC_NOWHERE; - game.prop[BOTTLE] = 1; + game.prop[BOTTLE] = EMPTY_BOTTLE; if (k == OIL)game.prop[URN] = 1; spk = WATER_URN + game.prop[URN]; rspeak(spk); @@ -552,6 +553,7 @@ int fill(token_t verb, token_t obj) if (LIQUID() != 0) spk = BOTTLE_FULL; if (spk == BOTTLED_WATER) { + /* FIXME: Arithmetic on property values */ game.prop[BOTTLE] = MOD(conditions[game.loc], 4) / 2 * 2; k = LIQUID(); if (TOTING(BOTTLE)) @@ -675,9 +677,11 @@ static int listen(void) int spk = ALL_SILENT; k = locations[game.loc].sound; if (k != SILENT) { - rspeak(labs(k)); - if (k < 0) return GO_CLEAROBJ; - spk = NO_MESSAGE; + rspeak(k); + if (locations[game.loc].loud) + return GO_CLEAROBJ; + else + spk = NO_MESSAGE; } for (int i = 1; i <= NOBJECTS; i++) { if (!HERE(i) || OBJSND[i] == 0 || game.prop[i] < 0) @@ -754,7 +758,7 @@ static int pour(token_t verb, token_t obj) } if (HERE(URN) && game.prop[URN] == 0) return fill(verb, URN); - game.prop[BOTTLE] = 1; + game.prop[BOTTLE] = EMPTY_BOTTLE; game.place[obj] = LOC_NOWHERE; spk = GROUND_WET; if (!(AT(PLANT) || AT(DOOR))) {