enum wordtype {NO_WORD_TYPE, MOTION, OBJECT, ACTION, SPECIAL};
+typedef enum scorebonus {none, splatter, defeat, victory} score_t;
+
/* Phase codes for action returns.
* These were at one time FORTRAN line numbers.
* The values don't matter, but perturb their order at your peril.
GO_TOP,
GO_CLEAROBJ,
GO_CHECKHINT,
- GO_CHECKFOO,
GO_DIRECTION,
GO_LOOKUP,
GO_WORD2,
struct game_t {
unsigned long lcg_a, lcg_c, lcg_m, lcg_x;
long abbnum; // How often to print non-abbreviated descriptions
- long bonus;
+ score_t bonus; // What kind of bonus we are getting for finishing the game
long chloc;
long chloc2;
long clock1; // # turns from finding last treasure till closing
enum speechpart part;
verb_t verb;
obj_t obj;
- token_t wd1;
- token_t wd2;
- long id1;
- long id2;
+ token_t id1;
+ token_t id2;
char raw1[LINESIZE], raw2[LINESIZE];
enum wordtype type1;
enum wordtype type2;
extern struct game_t game;
extern struct settings_t settings;
-extern void packed_to_token(long, char token[]);
-extern long token_to_packed(const char token[]);
extern void tokenize(char*, struct command_t *);
-extern void vspeak(const char*, bool, va_list);
-extern bool wordeq(token_t, token_t);
-extern bool wordempty(token_t);
extern void wordclear(token_t *);
extern void speak(const char*, ...);
extern void sspeak(long msg, ...);
extern char* get_input(void);
extern bool silent_yes(void);
extern bool yes(const char*, const char*, const char*);
-extern int get_motion_vocab_id(const char*);
-extern int get_object_vocab_id(const char*);
-extern int get_action_vocab_id(const char*);
-extern int get_special_vocab_id(const char*);
extern void get_vocab_metadata(const char*, long*, enum wordtype*);
extern void juggle(obj_t);
extern void move(obj_t, loc_t);