}
}
+static int seed(verb_t verb, const char *arg)
+/* Set seed */
+{
+ int seed = atoi(arg);
+ speak(actions[verb].message, seed);
+ set_seed(seed);
+ --game.turns;
+ return GO_TOP;
+}
+
+static int waste(verb_t verb, turn_t turns)
+/* Burn turns */
+{
+ game.limit -= turns;
+ speak(actions[verb].message, (int)game.limit);
+ return GO_TOP;
+}
+
static int wave(verb_t verb, obj_t obj)
/* Wave. No effect unless waving rod at fissure or at bird. */
{
* unless verb is "say", which snarfs arbitrary second word.
*/
{
+ /* Previously, actions that result in a message, but don't do anything
+ * further were called "specials". Now they're handled here as normal
+ * actions. If noaction is true, then we spit out the message and return */
+ if (actions[command->verb].noaction) {
+ speak(actions[command->verb].message);
+ return GO_CLEAROBJ;
+ }
+
if (command->part == unknown) {
/* Analyse an object word. See if the thing is here, whether
* we've got a verb yet, and so on. Object must be here
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
}
}
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
}