X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=actions.c;h=0a67cf43c6866ee88fee11ee0443934ef8f74428;hp=ca243b6c13c548dabcb5f15ecb1bb861852d160c;hb=5337e00725f17e08836fb2a2f59ab178ece47000;hpb=342994376a6cc0fc9623cece2b9b85a7557ca47f diff --git a/actions.c b/actions.c index ca243b6..0a67cf4 100644 --- a/actions.c +++ b/actions.c @@ -176,7 +176,7 @@ static int attack(struct command_t *command) return GO_CLEAROBJ; } -static int bigwords(long id) +static int bigwords(vocab_t id) /* FEE FIE FOE FOO (AND FUM). Advance to next state if given in proper order. * Look up foo in special section of vocab to determine which word we've got. * Last word zips the eggs back to the giant room (unless already there). */ @@ -273,7 +273,7 @@ static int vbreak(verb_t verb, obj_t obj) } static int brief(void) -/* Brief. Intransitive only. Suppress long descriptions after first time. */ +/* Brief. Intransitive only. Suppress full descriptions after first time. */ { game.abbnum = 10000; game.detail = 3; @@ -418,8 +418,8 @@ static int chain(verb_t verb) switch (game.prop[BEAR]) { // LCOV_EXCL_START case BEAR_DEAD: - /* Can't be reached as long as the only way for the bear to die - * is from a bridge collapse. Leave in in case this changes, but + /* Can't be reached until the bear can die in some way other + * than a bridge collapse. Leave in in case this changes, but * exclude from coverage testing. */ game.fixed[BEAR] = IS_FIXED; break; @@ -910,7 +910,7 @@ static int light(verb_t verb, obj_t obj) static int listen(void) /* Listen. Intransitive only. Print stuff based on object sound proprties. */ { - long sound = locations[game.loc].sound; + vocab_t sound = locations[game.loc].sound; if (sound != SILENT) { rspeak(sound); if (!locations[game.loc].loud) @@ -1163,7 +1163,7 @@ static int say(struct command_t *command) return GO_CLEAROBJ; } -static int throw_support(long spk) +static int throw_support(vocab_t spk) { rspeak(spk); drop(AXE, game.loc); @@ -1221,7 +1221,7 @@ static int throw (struct command_t *command) if (randrange(NDWARVES + 1) < game.dflag) { return throw_support(DWARF_DODGES); } else { - long i = atdwrf(game.loc); + int i = atdwrf(game.loc); game.dseen[i] = false; game.dloc[i] = LOC_NOWHERE; return throw_support((++game.dkill == 1) ? @@ -1244,6 +1244,26 @@ static int wake(verb_t verb, obj_t obj) } } +static int seed(verb_t verb, const char *arg) +/* Set seed */ +{ + long seed = atol(arg); + speak(actions[verb].message, arg); + set_seed(seed); + --game.turns; + return GO_TOP; +} + +static int waste(verb_t verb, turn_t turns) +/* Burn turns */ +{ + game.limit -= turns; + char newlim[1024]; + sprintf(newlim, "%ld", (long)game.limit); + speak(actions[verb].message, newlim); + return GO_TOP; +} + static int wave(verb_t verb, obj_t obj) /* Wave. No effect unless waving rod at fissure or at bird. */ { @@ -1430,6 +1450,10 @@ int action(struct command_t *command) return listen(); case PART: return reservoir(); + case SEED: + case WASTE: + rspeak(NUMERIC_REQUIRED); + return GO_TOP; default: // LCOV_EXCL_LINE BUG(INTRANSITIVE_ACTION_VERB_EXCEEDS_GOTO_LIST); // LCOV_EXCL_LINE } @@ -1531,6 +1555,10 @@ int action(struct command_t *command) } case PART: return reservoir(); + case SEED: + return seed(command->verb, command->raw2); + case WASTE: + return waste(command->verb, (turn_t)atol(command->raw2)); default: // LCOV_EXCL_LINE BUG(TRANSITIVE_ACTION_VERB_EXCEEDS_GOTO_LIST); // LCOV_EXCL_LINE }