daleken/
daleken/data/notes/
daleken/data/player/
daleken/data/system/poses/
daleken/doc/Homepage/images/
daleken/log/
/*___________________________________________________________________________*
   )()(			  DalekenMUD 1.12 (C) 2000			)()(
   `]['		       by Martin Thomson, Lee Brooks,			`]['
    ||		       Ken Herbert and David Jacques			 ||
    || ----------------------------------------------------------------- ||
    || Envy Diku Mud improvements copyright (C) 1994 by Michael Quan,	 ||
    || David Love, Guilherme 'Willie' Arnold, and Mitchell Tse.		 ||
    || Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael	 ||
    || Chastain, Michael Quan, and Mitchell Tse.			 ||
    || Original Diku Mud copyright (C) 1990, 1991			 ||
    || by Sebastian Hammer, Michael Seifert, Hans Henrik St{rfeldt,	 ||
    || Tom Madsen, and Katja Nyboe.					 ||
    || ----------------------------------------------------------------- ||
    || Any use of this software must follow the licenses of the		 ||
    || creators.  Much time and thought has gone into this software and	 ||
    || you are benefitting. We hope that you share your changes too.	 ||
    || What goes around, comes around.					 ||
    || ----------------------------------------------------------------- ||
    ||				  types.h				 ||
    || Definition of all data structures needed.			 ||
 *_/<>\_________________________________________________________________/<>\_*/


/*
 * Short scalar types.
 * Diavolo reports AIX compiler has bugs with short types.
 */
#if	!defined( FALSE )
#define FALSE	 0
#endif

#if	!defined( TRUE )
#define TRUE	 1
#endif

typedef unsigned char bool;

typedef int			int_32;
typedef short int		int_16;
typedef char			int_8;

typedef unsigned int		uint_32;
typedef unsigned short		uint_16;
typedef unsigned char		uint_8;


/*
 * Structure types.
 */
typedef struct	affect_data		AFFECT_DATA;
typedef struct	alias_data		ALIAS_DATA;
typedef struct	area_data		AREA_DATA;
typedef struct	ban_data		BAN_DATA;
typedef struct	board_data		BOARD_DATA;
typedef struct	buffer_type		BUFFER;
typedef struct	char_data		CHAR_DATA;
typedef struct	clan_data		CLAN_DATA;
typedef struct	descriptor_data		DESCRIPTOR_DATA;
typedef struct	event_data		EVENT;
typedef struct	exit_data		EXIT_DATA;
typedef struct	extra_descr_data	EXTRA_DESCR_DATA;
typedef struct	help_data		HELP_DATA;
typedef struct	highest_data		HIGHEST_DATA;
typedef struct	highest_entry		HIGHEST_ENTRY;
typedef struct	ident_data		IDENT_DATA;
typedef struct	interpreter_type	INTERPRETER_DATA;
typedef struct	kill_data		KILL_DATA;
typedef struct	mob_index_data		MOB_INDEX_DATA;
typedef struct	mud_prog_act_list	MPROG_ACT_LIST;
typedef struct	mud_prog_callback	MPROG_CALLBACK;
typedef struct	mud_prog_data		MPROG_DATA;
typedef struct	mud_prog_global		MPROG_GLOBAL;
typedef struct	mud_prog_info		MPROG_INFO;
typedef struct	mud_prog_line		MPROG_LINE;
typedef struct	mud_prog_stack		MPROG_STACK;
typedef struct	mud_prog_variable	MPROG_VAR;
typedef struct	note_data		NOTE_DATA;
typedef struct	obj_data		OBJ_DATA;
typedef struct	obj_index_data		OBJ_INDEX_DATA;
typedef struct	pc_data			PC_DATA;
typedef struct	plane_data		PLANE_DATA;
typedef struct	pose_data		POSE_DATA;
typedef struct	quest_data		QUEST_DATA;
typedef struct	religion_data		RELIGION_DATA;
typedef struct	religion_skill		RELIGION_SKILL;
typedef struct	reset_data		RESET_DATA;
typedef struct	room_index_data		ROOM_INDEX_DATA;
typedef struct	shop_data		SHOP_DATA;
typedef struct	social_type		SOCIAL_DATA;
typedef struct	text_block		TEXT_BLOCK;
typedef struct	time_info_data		TIME_INFO_DATA;
typedef struct	track_data		TRACK_DATA;
typedef struct	trade_data		TRADE_DATA;
typedef struct	weather_data		WEATHER_DATA;

#if !defined( WIN32 )
typedef unsigned int	SOCKET;
#endif


/*
 * Function types.
 */
typedef void DO_FUN args( ( CHAR_DATA *ch, const char *argument ) );
typedef bool SPEC_FUN args( ( CHAR_DATA *ch, CHAR_DATA *player,
			      int type, void *thing ) );
typedef void SPELL_FUN args( ( int sn, int level,
			       CHAR_DATA *ch, void *vo ) );
typedef bool READ_FUN args( ( FILE *fp, void *vo ) );

/* --Not used at the moment, perhaps never--
   typedef void GAME_FUN args( ( CHAR_DATA *ch, CHAR_DATA *croupier,
   char *argument ) );
*/
typedef void INTERPRETER_FUN	args( ( DESCRIPTOR_DATA *d,
					const char *argument ) );
typedef void PROMPT_FUN		args( ( DESCRIPTOR_DATA *d ) );


/*
 * Player character key data struct
 * Stuff for new error trapping of corrupt pfiles.
 */
struct key_data
{
    char key[11];		/* Increase if you make a key > 11 chars */
    int string;			/* TRUE for string, FALSE for int	 */
    int deflt;			/* Default value or pointer		 */
    void *ptrs[7];		/* Increase if you have > 6 parms/line	 */
};


/*
 * System Information data structure.
 */
struct sysinfo_type
{
    char	      * name;
    int			version;
    int			minor;
    int			build;
    char	      * build_date;
    char	      * platform;
    time_t		down_time;
    int			object_key;
    int			char_key;
    int			numlock;
    int			saveat;
    int			file_version;
    int			flags;
    char	      * dictionary;
    time_t		pulse;

    /* count information */
    int			total_logins;		/* player logins	*/
    int			new_characters;		/* new players		*/
    int			curr_descriptors;	/* current no. of players */
    int			max_descriptors;	/* max. no. of players	*/
    int			levels;			/* levels gained	*/
    int			deaths;			/* player deaths	*/
    int			mob_deaths;		/* mobile deaths	*/
};


/*
 * Site ban structure.
 */
struct ban_data
{
    BAN_DATA *next;
    char *name;
};


/*
 * Time and Weather.
 */
struct time_info_data
{
    int hour;
    int day;
    int month;
    int year;
};

struct weather_data
{
    int mmhg;
    int change;
    int sky;
    int sunlight;
    int winddir;
    int windspeed;
    int temperature;
};


/*
 * Descriptor (channel) structure.
 */
struct descriptor_data
{
    DESCRIPTOR_DATA	*next;
    DESCRIPTOR_DATA	*snoop_by;
    CHAR_DATA		*character;
    CHAR_DATA		*original;
    IDENT_DATA		*ident;
    char		*host;
    SOCKET		descriptor;
    const INTERPRETER_DATA *interpreter;
    bool		fcommand;
    bool		fpromptok;
    char		inbuf[ MAX_INPUT_LENGTH * 4 ];
    char		incomm[ MAX_INPUT_LENGTH ];
    char		inlast[ MAX_INPUT_LENGTH ];
    int			repeat;
    char		*showstr_head;
    char		*showstr_point;
    char		outbuf[ SMALL_OUTBUF_SIZE ];
    int			outtop;
    TEXT_BLOCK		*large_buffer;
    char		**pString;	/* OLC, notes, desc. */
    void		*pEdit;		/* OLC */
#if defined( MCCP )
    z_stream		*out_compress;
    unsigned char	*out_compress_buf;
    int			mccp_version;
#endif
};


/*
 * Used for storing lists of strings.
 */
struct text_block
{
    TEXT_BLOCK *next;
    char *str;
    int size;
};


/*
 * Struct for ident information.
 */
struct ident_data
{
    IDENT_DATA		*next;
    DESCRIPTOR_DATA	*desc;
    SOCKET		descriptor;
    time_t		timeout;
    unsigned short	localport;
    unsigned short	remoteport;
    unsigned short	reply_pos;
    char		reply_text [MAX_INPUT_LENGTH];
    bool		connected;
};


/*
 * One character (PC or NPC).
 */
struct char_data
{
    char	magic;
    CHAR_DATA	*next;
    CHAR_DATA	*next_in_room;
    CHAR_DATA	*master;
    CHAR_DATA	*leader;
    CHAR_DATA	*fighting;
    CHAR_DATA	*reply;
    CHAR_DATA	*tracking;
    CHAR_DATA	*fearing;
    CHAR_DATA	*next_initiative;
    int		spec_fun;
    MOB_INDEX_DATA *pIndexData;
    MPROG_VAR	*variables;
    EVENT	*events;
    DESCRIPTOR_DATA *desc;
    AFFECT_DATA	*affected;
    OBJ_DATA	*carrying;
    ROOM_INDEX_DATA *in_room;
    ROOM_INDEX_DATA *was_in_room;
    PC_DATA	*pcdata;
    OBJ_DATA	*on;
    char	*name;
    char	*short_descr;
    char	*long_descr;
    char	*description;
    int		sex;
    int		class;
    int		race;
    int		level;
    int		sublevel;
    int		trust;
    int		played;
    time_t	logon;
    time_t	save_time;
    int		wait;
    int		hit;
    int		max_hit;
    int		mana[MAGIC_MAX];
    int		max_mana[MAGIC_MAX];
    int		move;
    int		max_move;
    int		gold;
    int		exp;
    int		act[MAX_VECTOR];
    int		affected_by[MAX_VECTOR];
    int		extra_bits;
    int		position;
    int		practice;
    int		carry_weight;
    int		carry_number;
    int		saving_throw;
    int		alignment;
    int		hitroll;
    int		damroll;
    int		speed;
    int		armour;
    int		wimpy;
    int		deaf;
    int		recall_room;
    int		resil_mod;
    int		temp_mod;
    int		size_mod;
    int		body_parts;
    int		damaged_parts;
    int		num_hits, tot_dam, tot_xp;
    int		temp;		/* used locally in functions
				   such as room_violence_update */
    int		unique_key;
    bool	deleted;
};


/*
 * Data which only PC's have.
 */
struct pc_data
{
    PC_DATA *next;
    ALIAS_DATA *aliases;
    QUEST_DATA *quest;
    RELIGION_DATA *religion;
    CLAN_DATA *clan;
    NOTE_DATA *note;
    BOARD_DATA *board;
    TRADE_DATA *trade;
    int clan_rank;
    char *pwd;
    char *bamfin;
    char *bamfout;
    char *immname;
    char *setmin;
    char *setmout;
    char *immskll;
    char *title;
    char *prompt;
    int perm_str;
    int perm_int;
    int perm_wis;
    int perm_dex;
    int perm_con;
    int mod_str;
    int mod_int;
    int mod_wis;
    int mod_dex;
    int mod_con;
    int perm_magic[MAGIC_MAX];
    int mod_magic[MAGIC_MAX];
    int condition[3];
    int timer;
    int pagelen;
    int learned[MAX_SKILL];
    int multi_class[NUM_MULTI_CLASS];
    int killed;
    int died;
    int banked;
    int familiar;
    int blink;
    int bounty;
    unsigned int pc_bits;
    bool switched;
    int security;		/* OLC */
    int language;
    time_t last_note [ MAX_BOARD ];
};


/*
 * One object.
 */
struct obj_data
{
    char	magic;		/* used in act() and mudprogs */
    OBJ_DATA	*next;
    OBJ_DATA	*next_content;
    OBJ_DATA	*contains;
    OBJ_DATA	*in_obj;
    CHAR_DATA	*carried_by;
    EXTRA_DESCR_DATA *extra_descr;
    AFFECT_DATA	*affected;
    OBJ_INDEX_DATA *pIndexData;
    ROOM_INDEX_DATA *in_room;
    MPROG_VAR	*variables;
    EVENT	*events;
    char	*name;
    char	*short_descr;
    char	*description;
    char	*action;
    int		item_type;
    int		extra_flags;
    int		wear_flags;
    int		wear_loc;
    int		weight;
    int		cost;
    int		level;
    int		required_skill;
    int		condition;
    int		value[4];
    int		unique_key;
    bool	deleted;
};


/*
 * Clans.
 */
struct	clan_data
{
    CLAN_DATA * next;		/* next clan in list			*/
    char *	name;		/* Clan name				*/
    char *	display_name;	/* Clan displayed name, colourful etc.	*/
    char *	motto;		/* Clan motto				*/
    char *	description;	/* A brief description of the clan	*/
    char *	rules;		/* Rules				*/
    char *	overlord;	/* Head clan leader			*/
    char *	chieftains;	/* Second in command			*/
    char *	enemies;	/* Who the clan wars against		*/
    int		clan_type;	/* See clan type defines		*/
    int		clanheros;	/* Number of clanheros			*/
    int		members;	/* Number of clan members		*/
    int		kills;		/* Number of p/mkills on behalf of clan */
    int		deaths;		/* Number of p/mkills against clan	*/
    int		recall;		/* Vnum of clan's recall room		*/
    RELIGION_DATA *religion;	/* For orders				*/
    int		class;		/* For guilds				*/
    RELIGION_SKILL *skills;	/* a list of skills by clan level	*/
    int		karma;		/* for orders, their karmic strength	*/
};


/*
 * Religions.
 */
struct religion_data
{
    RELIGION_DATA *next;	/* memory management			*/
    char      * name;		/* normal name for the clan		*/
    char      * display_name;	/* displayed name, colour etc...	*/
    char      * god_name;	/* may or may not be an actual imm	*/
    int		align_min;	/* minimum alignment			*/
    int		align_max;	/* maximum alignment			*/
    int		sac_events;	/* Bits with what happens after a sac	*/
    int		token;		/* obj vnum of a token			*/
    RELIGION_SKILL *skills;	/* a list of skills by order level	*/
};

struct religion_skill
{
    RELIGION_SKILL *next;
    int		sn;
    int		level;
};



/*-------------------------------------------------------------------
 * Area File Constructs.
 */

/*
 * Area definition.
 */
struct area_data
{
    AREA_DATA *next;
    char *name;
    int recall;
    int age;		/* changed, now a time in minutes */
    int nplayer;
    int nmobile;
    char *filename;		/* OLC */
    char *builders;		/* OLC - Listing of builders */
    int security;		/* OLC - Value 0-infinity  */
    int lvnum;			/* OLC - Lower vnum */
    int uvnum;			/* OLC - Upper vnum */
    int vnum;			/* OLC - Area vnum  */
    int area_flags;		/* OLC */
    int ave_temp;
    int min, ave, max;
    char *repop;
    PLANE_DATA *plane;
    CLAN_DATA *order;	/* The clan that holds the area */
    EVENT *events;
    char *description;
    int token_room;
    int economy;
};


struct plane_data
{
    PLANE_DATA *next;
    char *name;
    int min_level;
    WEATHER_DATA weather;	/* FIX */
    TIME_INFO_DATA time;	/* FIX */
    EVENT *events;
};


/*
 * Room type.
 */
struct room_index_data
{
    ROOM_INDEX_DATA *next;
    CHAR_DATA *people;
    OBJ_DATA *contents;
    EXTRA_DESCR_DATA *extra_descr;
    AREA_DATA *area;
    EXIT_DATA *exit[6];
    MPROG_DATA *mudprogs;
    int progtypes[MAX_VECTOR];
    MPROG_VAR *variables;
    EVENT *events;
    char *name;
    char *description;
    int vnum;
    int room_flags;
    int light;
    int sector_type;
    RESET_DATA *reset_first;	/* OLC */
    RESET_DATA *reset_last;	/* OLC */
};


/*
 * Exit data.
 *
 */
struct exit_data
{
    ROOM_INDEX_DATA *to_room;
    int vnum;
    int exit_info;
    int key;
    char *keyword;
    char *description;
    EXIT_DATA *next;		/* OLC */
    int rs_flags;		/* OLC */
    ROOM_INDEX_DATA *in_room;
};


/*
 * Prototype for a mob.
 * This is the in-memory version of #MOBILES.
 */
struct mob_index_data
{
    MOB_INDEX_DATA *next;
    AREA_DATA *area;		/* OLC */
    int spec_fun;
    SHOP_DATA *pShop;
    MPROG_DATA *mudprogs;
    int progtypes[MAX_VECTOR];
    char *name;
    char *short_descr;
    char *long_descr;
    char *description;
    int vnum;
    int count;
    int killed;
    int sex;
    int level;
    int act[MAX_VECTOR];
    int affected_by[MAX_VECTOR];
    int alignment;
    int race;
    int body_parts;
    int class;
    int reset_chance;
};


/*
 * Prototype for an object.
 */
struct obj_index_data
{
    OBJ_INDEX_DATA *next;
    AREA_DATA *area;		/* OLC */
    EXTRA_DESCR_DATA *extra_descr;
    AFFECT_DATA *affected;
    MPROG_DATA *mudprogs;
    int progtypes[MAX_VECTOR];
    char *name;
    char *short_descr;
    char *description;
    char *action;
    int vnum;
    int item_type;
    int extra_flags;
    int wear_flags;
    int count;
    int weight;
    int cost;
    int required_skill;
    int material;
    int condition;
    int value[4];
    int level;
    int reset_chance;
};


/*
 * An affect.
 */
struct affect_data
{
    AFFECT_DATA *next;
    int type;
    int level;
    int duration;
    int location;
    int modifier;
    int bitvector[MAX_VECTOR];
    bool deleted;
};


/*
 * Shop Information.
 */
struct shop_data
{
    SHOP_DATA *next;		/* Next shop in list			*/
    int buy_type[ MAX_TRADE ];	/* Item types shop will buy		*/
    int profit_buy;		/* Cost multiplier for buying		*/
    int profit_sell;		/* Cost multiplier for selling		*/
    int open_hour;		/* First opening hour			*/
    int close_hour;		/* First closing hour			*/
};


/*
 * Mobile Special Function.
 */
struct spec_type
{
    SPEC_FUN *spec_fun;		/* the actual function		*/
    const char *const spec_name; /* ascii name for spec_lookup	*/
    int usage;			/* when it is to be used	*/
    const char *const message;	/* message for mob lore		*/
    int prcnt_xp;		/* percentage modifier on xp	*/
};


/*
 * Extra description data for a room or object.
 */
struct extra_descr_data
{
    EXTRA_DESCR_DATA *next;	/*   Next in list			    */
    char *keyword;		/*   Keyword in look/examine	     */
    char *description;		/*   What to see			     */
    bool deleted;
};


/*
 * Area-reset definition.
 * Reset commands:
 *   '*': comment
 *   'M': read a mobile
 *   'O': read an object
 *   'P': put object in object
 *   'G': give object to mobile
 *   'E': equip object to mobile
 *   ('D': set state of door)
 *   'R': randomize room exits
 */
struct reset_data
{
    RESET_DATA *next;
    char command;
    int arg1;
    int arg2;
};


/*
 * Help table types.
 */
struct help_data
{
    HELP_DATA *next;
    int level;
    char *keyword;
    char *text;
    AREA_DATA *area;
};


/*------------------------------------------------------------------
 * Constant Tables.
 */
/*
 * Per-class stuff.
 */
struct class_type
{
    char who_name[4];		/*   Three-letter name for 'who'   */
    char name[20];		/*   The long format name	   */
    int attr_prime;		/*   Prime attribute		   */
    int weapon;			/*   First weapon		   */
    int mudschool;		/*   Vnum of mudschool room	   */
    int skill_adept;		/*   Maximum skill level	   */
    int combat_no;		/*   Combat number for hitting	   */
    int hp_min;			/*   Min hp gained on leveling	   */
    int hp_max;			/*   Max hp gained on leveling	   */
    int fMana;			/*   Class gains mana on level	   */
};


/*
 * Race structures.
 */
struct race_type
{
    const char *name;
    const char who_name[7];
    int race_abilities;
    int size;
    int str_mod;
    int int_mod;
    int wis_mod;
    int dex_mod;
    int con_mod;
    int hp_gain;
    int mana_gain[MAGIC_MAX];
    int move_gain;
    int thirst_mod;
    int hunger_mod;
    const char *dmg_message;
    const char *hate;
    int resil;
    int magic_resist;
    int base_age;
    int body_temp;
    int body_parts;
    const char *racial_skill;
    int languages;
    int natural_align;
};


/*
 * Skills include spells as a particular case.
 */
struct skill_type
{
    const char *name;		/*   Name of skill			*/
    int skill_level[MAX_CLASS]; /*   Level needed by class		*/
    SPELL_FUN *spell_fun;	/*   Spell pointer (for spells)		*/
    int target;			/*   Legal targets			*/
    int minimum_position;	/*   Position for caster / user		*/
    int *pgsn;			/*   Pointer to associated gsn		*/
    int beats;			/*   Waiting time after use		*/
    int min_mana[MAGIC_MAX+1];	/*   Minimum mana used in each sphere	*/
    const char *noun_damage;	/*   Damage message			*/
    const char *msg_off;	/*   Wear off message			*/
    int skill_type;		/*   What sort of skill is this?	*/
    int usage;			/*   How often will it be used		*/
};


/*
 * Struct for Interpreter Table.
 */
struct interpreter_type
{
    const char *name;
    INTERPRETER_FUN *interpreter;
    PROMPT_FUN *prompt;
    int flags;
};


/*
 * Structure for a command in the command lookup table.
 */
struct cmd_type
{
    const char *const name;
    DO_FUN *do_fun;
    int position;
    int level;
    int log;
};


/*
 * Structure for a social in the socials table.
 * changed into a dynamic linked list
 */
struct social_type
{
    SOCIAL_DATA *next;
    char *name;
    char *char_no_arg;
    char *others_no_arg;
    char *char_found;
    char *others_found;
    char *vict_found;
    char *char_auto;
    char *others_auto;
};


/*
 * Poses.
 */
struct pose_index_data
{
    POSE_DATA *first;
    int size;
};

struct pose_data
{
    POSE_DATA *next;
    char *to_char;
    char *to_room;
};


/*
 * Liquids.
 */
struct liq_type
{
    const char *liq_name;
    const char *liq_color;
    int liq_affect[3];
};


/*
 * Wearing Equipment Table.
 */
struct wear_stuff
{
    int wear_flag;
    int body_parts;
    const char *no_part;
    const char *where_name;
    const char *wear_on_ch;
    const char *wear_on_room;
};


/*
 * Structure for limb loss.
 */
struct limb_loss
{
    int chance;
    int body_parts;
    int limb_vnum;
    const char *const act_char;
    const char *const act_other;
};


/*
 * Drunkeness communication structure.
 */
struct struckdrunk
{
    int min_drunk_level;
    int number_of_rep;
    const char *replacement[ 11 ];
};


/*
 * OLC.
 * This structure is used in bit.c to lookup flags and stats.
 */
struct flag_type
{
    const char *name;
    int bit;
    bool settable;
};


/*
 * New system for area files.
 *
 * I realise that this method of reading from the area files
 * causes a much longer boot time for the mud, but the benefit
 * is that the area files are both backward and forward compatible.
 * This slow boot is a small price to pay, as it doesn't effect
 * the running of the MUD once started.
 *
 * --by Symposium for DalekenMUD
 */
struct file_read_type
{
    const char *name;
    int standard;
    void *target;
    READ_FUN *read_fun;
};


/*------------------------------------------------------------------
 * MudProgs.
 */
struct mud_prog_data
{
    MPROG_DATA *next;
    int type;
    char *arglist;
    char *comlist;
};


struct mud_prog_global
{
    MPROG_GLOBAL *next;
    AREA_DATA *area;
    int vnum;
    int allowed;
    int type;
    char *arglist;
    char *comlist;
};


struct mud_prog_variable
{
    MPROG_VAR *next;
    char *name;
    char *value;
};


struct mud_prog_info
{
    MPROG_DATA *mprg;
    MPROG_VAR *local;
    CHAR_DATA *mob;
    CHAR_DATA *actor;
    OBJ_DATA *obj;
    void *vo;
    CHAR_DATA *rndm;
};


struct mud_prog_line
{
    struct mud_prog_line *next;
    const char *line;
};


struct mud_prog_stack
{
    int *stack;
    int max_size;
    int current;
};


/* The struct that contains all the information that a
 * returning event requires */
struct mud_prog_callback
{
    const char *commands;
    MPROG_INFO info;
    MPROG_STACK *stack;
    int line_no;
};


struct mud_prog_act_list
{
    MPROG_ACT_LIST *next;
    void *target;
    MPROG_DATA *mprg;
    MPROG_INFO *info;
};


struct supermob_data
{
    struct supermob_data *next;
    CHAR_DATA *supermob;
    OBJ_DATA *prog_obj;
    ROOM_INDEX_DATA *prog_room;
};


/*------------------------------------------------------------
 * Miscellaneous Structures.
 */


/*
 * Highest Table.
 */
struct highest_entry
{
    HIGHEST_ENTRY *next;
    char *name;
    int level;
    int sublevel;
    int class;
    int race;
};

struct highest_data
{
    HIGHEST_DATA *next;
    char *type;
    HIGHEST_ENTRY *entries[10];
};


/*
 * Data structure for boards.
 */
struct board_data
{
    const char *short_name;	/* Name used to refer to it		*/
    const char *long_name;	/* Descriptive name			*/
    int		read_level;	/* Minimum level to see board		*/
    int		write_level;	/* Minimum level to post notes		*/
    const char *include;	/* These must be included		*/
    const char *exclude;	/* These must not be included		*/
    int		purge_days;	/* Default expiration			*/
    bool	changed;	/* Has the board changed		*/
    NOTE_DATA  *note_first;	/* The head of the list			*/
};


/*
 * Data structure for notes.
 */
struct note_data
{
    NOTE_DATA *next;
    char *sender;
    char *date;
    char *to_list;
    char *subject;
    char *text;
    time_t date_stamp;
    time_t expire;
};


/*
 * Aliases.
 */
struct alias_data
{
    ALIAS_DATA *next;
    char *name;
    char *command;
    int complex;
};


/*
 * Questing Data.
 */
struct quest_data
{
    QUEST_DATA *next;
    int score;
    int time;
    int reward;
    int type;
    void * target;
};

struct quest_race_corpse
{
    int race;
    int min_lvl;
};

struct quest_obj_material
{
    int material;
    int min_weight;
};


/*
 * Structures for the securing trading interface.
 * by Symposium.
 */
struct trade_data
{
    TRADE_DATA *other;
    CHAR_DATA *ch;
    int flags;
    OBJ_DATA *objs[MAX_TRADE_OBJ];
    int gold;
};


/*
 * A kill structure (indexed by level).
 */
struct kill_data
{
    int number;
    int killed;
};


/*
 * Damage messages
 */
struct damage_message
{
    int max_dam;
    const char *mesg;
    const char *fire_mesg;
    const char *ice_mesg;
};


/*
 * Tracking struct.
 */
struct track_data
{
    TRACK_DATA *next;
    ROOM_INDEX_DATA *room;
    int dir;
};


/*
 * Flexible buffer type.
 */
struct buffer_type
{
    char *data;		/* The data */
    int len;		/* The current len of the buffer */
    int size;		/* The allocated size of data */
    bool overflowed;	/* Is the buffer overflowed? */
};