X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=actions.c;h=0e56f254beeffa6e227e2ee8a557b8dc69ca9881;hp=ade5f6ca7e2e477efe161500560f1e33803aa8b3;hb=59a558b7622f1d12e4b52c4852f5577c55be26f6;hpb=a6feda53072426e635173a6a6c0e3aa95c2afc17 diff --git a/actions.c b/actions.c index ade5f6c..0e56f25 100644 --- a/actions.c +++ b/actions.c @@ -38,7 +38,8 @@ static int attack(FILE *input, long verb, token_t obj) /* Clam and oyster both treated as clam for intransitive case; * no harm done. */ if (HERE(CLAM) || HERE(OYSTER))obj=NOBJECTS*obj+CLAM; - if (obj > NOBJECTS) return GO_UNKNOWN; + if (obj > NOBJECTS) + return GO_UNKNOWN; } } if (obj == BIRD) { @@ -52,7 +53,7 @@ static int attack(FILE *input, long verb, token_t obj) game.prop[BIRD]=0; spk=BIRD_DEAD; } - if (obj == VEND) { + else if (obj == VEND) { PSPEAK(VEND,game.prop[VEND]+2); game.prop[VEND]=3-game.prop[VEND]; return GO_CLEAROBJ; @@ -78,9 +79,7 @@ static int attack(FILE *input, long verb, token_t obj) game.dseen[i]=false; } } - spk=dwarves == 2 ? OGRE_PANIC1 : OGRE_PANIC2; - RSPEAK(spk); - return GO_CLEAROBJ; + spk = (dwarves > 1) ? OGRE_PANIC1 : OGRE_PANIC2; } else if (obj == BEAR) /* FIXME: Arithmetic on message numbers */ @@ -169,22 +168,20 @@ static int bivalve(token_t verb, token_t obj) return GO_CLEAROBJ; } -static int blast(void) +static void blast(void) /* Blast. No effect unless you've got dynamite, which is a neat trick! */ { if (game.prop[ROD2] < 0 || !game.closed) - { RSPEAK(REQUIRES_DYNAMITE); - return GO_CLEAROBJ; + else { + game.bonus=133; + if (game.loc == LOC_NE) + game.bonus=134; + if (HERE(ROD2)) + game.bonus=135; + RSPEAK(game.bonus); + score(endgame); } - game.bonus=133; - if (game.loc == LOC_NE) - game.bonus=134; - if (HERE(ROD2)) - game.bonus=135; - RSPEAK(game.bonus); - score(endgame); - return GO_CLEAROBJ; /* pacify compiler - we never get here */ } static int vbreak(token_t verb, token_t obj) @@ -254,10 +251,12 @@ static int carry(token_t verb, token_t obj) if (!HERE(BOTTLE) || LIQUID() != obj) { if (TOTING(BOTTLE) && game.prop[BOTTLE] == 1) return(fill(verb, BOTTLE)); - if (game.prop[BOTTLE] != 1)spk=BOTTLE_FULL; - if (!TOTING(BOTTLE))spk=NO_CONTAINER; - RSPEAK(spk); - return GO_CLEAROBJ; + else { + if (game.prop[BOTTLE] != 1)spk=BOTTLE_FULL; + if (!TOTING(BOTTLE))spk=NO_CONTAINER; + RSPEAK(spk); + return GO_CLEAROBJ; + } } obj = BOTTLE; } @@ -459,7 +458,7 @@ static int extinguish(token_t verb, int obj) else if (obj == LAMP) { game.prop[LAMP]=0; RSPEAK(LAMP_OFF); - spk = DARK(game.loc) ? PITCH_DARK : ARB_0; + spk = DARK(game.loc) ? PITCH_DARK : NO_MESSAGE; } else if (obj == DRAGON || obj == VOLCAN) spk=BEYOND_POWER; @@ -626,7 +625,7 @@ static int inven(void) game.blklin=false; PSPEAK(i,-1); game.blklin=true; - spk=ARB_0; + spk=NO_MESSAGE; } if (TOTING(BEAR)) spk=TAME_BEAR; @@ -681,14 +680,14 @@ static int listen(void) if (k != 0) { RSPEAK(labs(k)); if (k < 0) return GO_CLEAROBJ; - spk=ARB_0; + spk=NO_MESSAGE; } SETPRM(1,game.zzword,0); for (int i=1; i<=NOBJECTS; i++) { if (!HERE(i) || OBJSND[i] == 0 || game.prop[i] < 0) continue; PSPEAK(i,OBJSND[i]+game.prop[i]); - spk=ARB_0; + spk=NO_MESSAGE; if (i == BIRD && OBJSND[i]+game.prop[i] == 8) DESTROY(BIRD); } @@ -866,7 +865,6 @@ static int say(void) } RSPEAK(OKEY_DOKEY); return GO_CLEAROBJ; - } static int throw_support(long spk) @@ -923,27 +921,22 @@ static int throw(FILE *cmdin, long verb, token_t obj) } if (HERE(BEAR) && game.prop[BEAR] == 0) { /* This'll teach him to throw the axe at the bear! */ - spk=AXE_LOST; DROP(AXE,game.loc); - game.fixed[AXE]= -1; - game.prop[AXE]=1; + game.fixed[AXE] = -1; + game.prop[AXE] = 1; JUGGLE(BEAR); - {RSPEAK(spk); return GO_CLEAROBJ;} + RSPEAK(AXE_LOST); + return GO_CLEAROBJ; } return(attack(cmdin, verb, 0)); } if (randrange(NDWARVES+1) < game.dflag) { - spk=DWARF_DODGES; - return throw_support(spk); + return throw_support(DWARF_DODGES); } game.dseen[i]=false; game.dloc[i]=0; - spk=KILLED_DWARF; - ++game.dkill; - if (game.dkill == 1)spk=DWARF_SMOKE; - - return throw_support(spk); + return throw_support((++game.dkill == 1) ? DWARF_SMOKE : KILLED_DWARF); } static int vscore(void) @@ -956,13 +949,13 @@ static int vscore(void) static int wake(token_t verb, token_t obj) /* Wake. Only use is to disturb the dwarves. */ { - if (obj != DWARF || !game.closed) - { + if (obj != DWARF || !game.closed) { RSPEAK(ACTSPK[verb]); return GO_CLEAROBJ; + } else { + RSPEAK(PROD_DWARF); + return GO_DWARFWAKE; } - RSPEAK(PROD_DWARF); - return GO_DWARFWAKE; } static int wave(token_t verb, token_t obj) @@ -1090,7 +1083,7 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj) case 19: /* INVEN */ return inven(); case 20: /* FEED */ return GO_UNKNOWN; case 21: /* FILL */ return fill(verb, obj); - case 22: /* BLAST */ return blast(); + case 22: /* BLAST */ blast(); return GO_CLEAROBJ; case 23: /* SCOR */ return vscore(); case 24: /* FOO */ return bigwords(WD1); case 25: /* BRIEF */ return brief(); @@ -1131,7 +1124,7 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj) case 19: /* INVEN */ return find(verb, obj); case 20: /* FEED */ return feed(verb, obj); case 21: /* FILL */ return fill(verb, obj); - case 22: /* BLAST */ return blast(); + case 22: /* BLAST */ blast(); return GO_CLEAROBJ; case 23: /* SCOR */ {RSPEAK(spk); return GO_CLEAROBJ;} case 24: /* FOO */ {RSPEAK(spk); return GO_CLEAROBJ;} case 25: /* BRIEF */ {RSPEAK(spk); return GO_CLEAROBJ;}