+ long dkill; // dwarves killed
+ long dtotal; // total dwarves (including pirate)
+ long foobar; // progress in saying "FEE FIE FOE FOO".
+ long holdng; // number of objects being carried
+ long igo; // # uses of "go" instead of a direction
+ long iwest; // # times he's said "west" instead of "w"
+ long knfloc; // knife location; 0 if none, -1 after caveat
+ turn_t limit; // lifetime of lamp
+ bool lmwarn; // has player been warned about lamp going dim?
+ loc_t loc; // where player is now
+ loc_t newloc; // where player is going
+ bool novice; // asked for instructions at start-up?
+ turn_t numdie; // number of times killed so far
+ loc_t oldloc; // where player was
+ loc_t oldlc2; // where player was two moves ago
+ obj_t oldobj; // last object player handled
+ bool panic; // has player found out he's trapped?
+ long saved; // point penalty for saves
+ long tally; // count of treasures gained
+ long thresh; // current threshold for endgame scoring tier
+ turn_t trndex; // FIXME: not used, remove on next format bump
+ turn_t trnluz; // # points lost so far due to turns used
+ turn_t turns; // counts commands given (ignores yes/no)
+ bool wzdark; // whether the loc he's leaving was dark
+ char zzword[TOKLEN + 1]; // randomly generated magic word from bird
+ bool blooded; // has player drunk of dragon's blood?
+ long abbrev[NLOCATIONS + 1]; // has location been seen?
+ long atloc[NLOCATIONS + 1]; // head of object linked list per location
+ long dseen[NDWARVES + 1]; // true if dwarf has seen him
+ loc_t dloc[NDWARVES + 1]; // location of dwarves, initially hard-wired in
+ loc_t odloc[NDWARVES + 1]; // prior loc of each dwarf, initially garbage
+ loc_t fixed[NOBJECTS + 1]; // fixed location of object (if not IS_FREE)
+ long link[NOBJECTS * 2 + 1]; // object-list links
+ loc_t place[NOBJECTS + 1]; // location of object
+ long hinted[NHINTS]; // hinted[i] = true iff hint i has been used.
+ long hintlc[NHINTS]; // hintlc[i] = how long at LOC with cond bit i
+ long prop[NOBJECTS + 1]; // object state array */
+};
+
+/*
+ * Game application settings - settings, but not state of the game, per se.
+ * This data is not saved in a saved game.
+ */
+struct settings_t {
+ FILE *logfp;
+ bool oldstyle;
+ bool prompt;
+};
+
+struct command_t {
+ char raw1[LINESIZE], raw2[LINESIZE];
+ enum speechpart part;
+ vocab_t id1;
+ vocab_t id2;
+ word_type_t type1;
+ word_type_t type2;
+ verb_t verb;
+ obj_t obj;
+};
+
+extern struct game_t game;
+extern struct settings_t settings;
+
+extern bool get_command_input(struct command_t *);
+extern void speak(const char*, ...);
+extern void sspeak(int msg, ...);
+extern void pspeak(vocab_t, enum speaktype, int, bool, ...);
+extern void rspeak(vocab_t, ...);
+extern void echo_input(FILE*, const char*, const char*);
+extern bool silent_yes(void);
+extern bool yes(const char*, const char*, const char*);
+extern void juggle(obj_t);
+extern void move(obj_t, loc_t);
+extern loc_t put(obj_t, long, long);
+extern void carry(obj_t, loc_t);
+extern void drop(obj_t, loc_t);
+extern int atdwrf(loc_t);
+extern long setbit(int);
+extern bool tstbit(long, int);
+extern void set_seed(long);
+extern long randrange(long);
+extern long score(enum termination);
+extern void terminate(enum termination) __attribute__((noreturn));
+extern int savefile(FILE *, long);
+extern int suspend(void);
+extern int resume(void);
+extern int restore(FILE *);
+extern long initialise(void);
+extern int action(struct command_t command);
+extern void state_change(obj_t, int);
+
+
+void bug(enum bugtype, const char *) __attribute__((__noreturn__));
+
+/* end */