/*
* RAM $Id: db.h 9 2008-10-15 13:40:54Z ram $
*/
/***************************************************************************
* Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, *
* Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. *
* *
* Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael *
* Chastain, Michael Quan, and Mitchell Tse. *
* *
* In order to use any part of this Merc Diku Mud, you must comply with *
* both the original Diku license in 'license.doc' as well the Merc *
* license in 'license.txt'. In particular, you may not remove either of *
* these copyright notices. *
* *
* 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. *
***************************************************************************/
/***************************************************************************
* ROM 2.4 is copyright 1993-1998 Russ Taylor *
* ROM has been brought to you by the ROM consortium *
* Russ Taylor (rtaylor@hypercube.org) *
* Gabrielle Taylor (gtaylor@hypercube.org) *
* Brian Moore (zump@rom.org) *
* By using this code, you have agreed to follow the terms of the *
* ROM license, in the file Rom24/doc/rom.license *
***************************************************************************/
/* macro for flag swapping */
#define GET_UNSET(flag1,flag2) (~(flag1)&((flag1)|(flag2)))
extern HELP_DATA * help_first;
extern HELP_DATA * help_last;
extern SHOP_DATA * shop_first;
extern SHOP_DATA * shop_last;
extern AREA_DATA * area_first;
extern AREA_DATA * area_last;
extern char bug_buf [2*MAX_INPUT_LENGTH];
extern char log_buf [2*MAX_INPUT_LENGTH];
extern CHAR_DATA * char_list;
extern char * help_greeting;
extern KILL_DATA kill_table [MAX_LEVEL];
extern OBJ_DATA * object_list;
extern TIME_INFO_DATA time_info;
extern WEATHER_DATA weather_info;
extern MOB_INDEX_DATA * mob_index_hash [MAX_KEY_HASH];
extern OBJ_INDEX_DATA * obj_index_hash [MAX_KEY_HASH];
extern ROOM_INDEX_DATA * room_index_hash [MAX_KEY_HASH];
extern char * string_hash [MAX_KEY_HASH];
extern char * string_space;
extern char * top_string;
extern char str_empty [1];
extern int top_affect;
extern int top_area;
extern int top_ed;
extern int top_exit;
extern int top_help;
extern int top_mob_index;
extern int top_obj_index;
extern int top_reset;
extern int top_room;
extern int top_shop;
extern int mobile_count;
extern int newmobs;
extern int newobjs;
extern int nAllocString;
extern size_t sAllocString;
extern int nAllocPerm;
extern size_t sAllocPerm;
extern bool fBootDb;
extern FILE * fpArea;
extern char strArea[MAX_INPUT_LENGTH];
extern struct social_type social_table [MAX_SOCIALS];
extern int social_count;
void boot_db( void );
void load_area( FILE *fp );
void load_helps( FILE *fp );
void load_old_mob( FILE *fp );
void load_old_obj( FILE *fp );
void load_resets( FILE *fp );
void load_rooms( FILE *fp );
void load_shops( FILE *fp );
void load_specials( FILE *fp );
void fix_exits( void );
void area_update( void );
void reset_area( AREA_DATA *pArea );
CHAR_DATA *create_mobile( MOB_INDEX_DATA *pMobIndex );
void clone_mobile(CHAR_DATA *parent, CHAR_DATA *clone);
OBJ_DATA *create_object( OBJ_INDEX_DATA *pObjIndex, int level );
void clone_object(OBJ_DATA *parent, OBJ_DATA *clone);
void clear_char( CHAR_DATA *ch );
char *get_extra_descr( char *name, EXTRA_DESCR_DATA *ed );
MOB_INDEX_DATA *get_mob_index( int vnum );
OBJ_INDEX_DATA *get_obj_index( int vnum );
ROOM_INDEX_DATA *get_room_index( int vnum );
char fread_letter( FILE *fp );
int fread_number( FILE *fp );
int fread_flag( FILE *fp);
int flag_convert(char letter );
char *fread_string( FILE *fp );
char *fread_string_eol( FILE *fp );
void fread_to_eol( FILE *fp );
char *fread_word( FILE *fp );
void *alloc_mem( size_t sMem );
void free_mem( void *pMem, size_t sMem );
void *alloc_perm( size_t sMem );
char *str_dup( const char *str );
void free_string( char *pstr );
int number_fuzzy( int number );
int number_range( int from, int to );
int number_percent( void );
int number_door( void );
int number_bits( int width );
void init_mm( void );
int number_mm( void );
int dice( int number, int size );
int interpolate( int level, int value_00, int value_32 );
void smash_tilde( char *str );
bool str_cmp( const char *astr, const char *bstr );
bool str_prefix( const char *astr, const char *bstr );
bool str_infix( const char *astr, const char *bstr );
bool str_suffix( const char *astr, const char *bstr );
char *capitalize( const char *str );
void append_file( CHAR_DATA *ch, const char *file, const char *str );
void bug( const char *str, int param );
void log_string( const char *str );
void tail_chain( void );
void load_socials( FILE *fp);
void load_mobiles( FILE *fp );
void load_objects( FILE *fp );