X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;ds=sidebyside;f=actions.c;h=aa6e6dac4ad6a1c482fba14fccf9ce07d61ddb6f;hb=70b5b191fd43dfe3f2e4661c3ea6b27e037625b5;hp=eb7e13cc0c22d3827723cdc214953668fadddc50;hpb=c9abf8243c8c1b7a5f97abcbdefe5ca80d1035f3;p=open-adventure.git diff --git a/actions.c b/actions.c index eb7e13c..aa6e6da 100644 --- a/actions.c +++ b/actions.c @@ -129,17 +129,18 @@ static int bigwords(long foo) if (game.place[EGGS]==PLAC[EGGS] || (TOTING(EGGS) && game.loc==PLAC[EGGS])) { RSPEAK(spk); return GO_CLEAROBJ; + } else { + /* Bring back troll if we steal the eggs back from him before + * crossing. */ + if (game.place[EGGS]==0 && game.place[TROLL]==0 && game.prop[TROLL]==0) + game.prop[TROLL]=1; + k=2; + if (HERE(EGGS))k=1; + if (game.loc == PLAC[EGGS])k=0; + MOVE(EGGS,PLAC[EGGS]); + PSPEAK(EGGS,k); + return GO_CLEAROBJ; } - /* Bring back troll if we steal the eggs back from him before - * crossing. */ - if (game.place[EGGS]==0 && game.place[TROLL]==0 && game.prop[TROLL]==0) - game.prop[TROLL]=1; - k=2; - if (HERE(EGGS))k=1; - if (game.loc == PLAC[EGGS])k=0; - MOVE(EGGS,PLAC[EGGS]); - PSPEAK(EGGS,k); - return GO_CLEAROBJ; } } @@ -176,6 +177,7 @@ static int blast(void) game.bonus=135; RSPEAK(game.bonus); score(0); + return GO_CLEAROBJ; /* pacify compiler - we never get here */ } static int vbreak(token_t verb, token_t obj) @@ -233,9 +235,9 @@ static int carry(token_t verb, token_t obj) if (obj == RUG && game.prop[RUG] == 2)spk=222; if (obj == SIGN)spk=196; if (obj == MESSAG) { - spk=190; - return GO_CLEAROBJ; + RSPEAK(190); DSTROY(MESSAG); + return GO_CLEAROBJ; } if (game.fixed[obj] != 0) { RSPEAK(spk); @@ -392,13 +394,11 @@ static int drink(token_t verb, token_t obj) return(8000); if (obj != BLOOD) { if (obj != 0 && obj != WATER)spk=110; - if (spk == 110 || LIQUID() != WATER || !HERE(BOTTLE)) { - RSPEAK(spk); - return GO_CLEAROBJ; + if (spk != 110 && LIQUID() == WATER && HERE(BOTTLE)) { + game.prop[BOTTLE]=1; + game.place[WATER]=0; + spk=74; } - game.prop[BOTTLE]=1; - game.place[WATER]=0; - spk=74; } else { DSTROY(BLOOD); game.prop[DRAGON]=2; @@ -471,7 +471,7 @@ static int feed(token_t verb, token_t obj) return GO_CLEAROBJ; } else if (obj == SNAKE || obj == DRAGON || obj == TROLL) { - int spk=102; + spk=102; if (obj == DRAGON && game.prop[DRAGON] != 0)spk=110; if (obj == TROLL)spk=182; if (obj == SNAKE && !game.closed && HERE(BIRD)) { @@ -695,7 +695,6 @@ static int listen(void) static int lock(token_t verb, token_t obj) /* Lock, unlock, no object given. Assume various things if present. */ { - int k; int spk = ACTSPK[verb]; if (obj == INTRANSITIVE) { spk=28; @@ -990,7 +989,6 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj) * unless verb is "say", which snarfs arbitrary second word. */ { - int kk; token_t spk=ACTSPK[verb]; if (part == unknown) @@ -1055,12 +1053,12 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj) if (verb == SAY)obj=WD2; if (obj == 0) { /* Analyse an intransitive verb (ie, no object given yet). */ - switch (verb-1) { - case 0: /* CARRY */ return carry(verb, INTRANSITIVE); + switch (verb-1) { + case 0: /* CARRY */ return carry(verb, INTRANSITIVE); case 1: /* DROP */ return(8000); case 2: /* SAY */ return(8000); case 3: /* UNLOC */ return lock(verb, INTRANSITIVE); - case 4: /* NOTHI */ {RSPEAK(54); return(20012);} + case 4: /* NOTHI */ {RSPEAK(54); return(GO_CLEAROBJ);} case 5: /* LOCK */ return lock(verb, INTRANSITIVE); case 6: /* LIGHT */ return light(verb, INTRANSITIVE); case 7: /* EXTIN */ return extinguish(verb, INTRANSITIVE); @@ -1101,7 +1099,7 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj) case 1: /* DROP */ return discard(verb, obj, false); case 2: /* SAY */ return say(); case 3: /* UNLOC */ return lock(verb, obj); - case 4: /* NOTHI */ {RSPEAK(54); return(20012);} + case 4: /* NOTHI */ {RSPEAK(54); return(GO_CLEAROBJ);} case 5: /* LOCK */ return lock(verb, obj); case 6: /* LIGHT */ return light(verb, obj); case 7: /* EXTI */ return extinguish(verb, obj);