/*
* The reset is used as follows:
* 0: There is an error in the reset() in this object. Never call it again.
* 1: Normal state.
* 2 or higher: This is an interactive player, that has not given any commands
* for a number of reset periods.
*/
struct object {
char enable_heart_beat; /* Call heart_beat or not. */
char reset; /* True if object has been reset */
char enable_commands; /* Enable usage of sentence commands */
char cloned; /* A cloned object. */
char name_length; /* Number of characters in name */
char destructed; /* True when the objects is destructed */
char swapped; /* True if prog is swapped out */
char not_touched; /* how used the object is */
short total_light;
short num_variables; /* Number of variables */
short ref; /* Reference count. */
unsigned short swap_num; /* File number swapped into */
struct lnode_def *prog;
struct lnode_var_def *status;
struct lnode *heart_beat;
char *name;
struct object *next_all, *next_inv;
struct object *contains;
struct object *super; /* Which object surround us ? */
struct interactive *interactive; /* Data about an interactive player */
struct value *variables; /* All variables to this program */
struct sentence *sent;
struct ed_buffer *ed_buffer; /* Local ed */
struct wiz_list *wl; /* What wizard defined this object */
};
extern struct object *current_object, *command_giver;
extern struct object *obj_list;