/*
* FILE LOCATIONS
*/
#define AREA_DIR "../area/"
#define AREA_PREV_DIR "../prev/area/"
#define BACKUP_DIR "../reimb/"
#define CLAN_DIR "../clans/"
#define CLAN_NOTE_DIR "../notes/clans/"
#define IMMORTAL_LOG_DIR "../logs/immortal/"
#define MOB_LOG_DIR "../logs/mob/"
#define MAIL_DIR "../mail/"
#define NOTE_DIR "../notes/"
#define OBJ_LOG_DIR "../logs/object/"
#define PLAYER_DIR "../player/"
#define PLAYER_LOG_DIR "../logs/player/"
#define PLAYER_PREV_DIR "../prev/player/"
#define ROOM_DIR "../rooms/"
#define ROOM_PREV_DIR "../prev/rooms/"
#define ROOM_LOG_DIR "../logs/room/"
#define TABLE_DIR "../tables/"
#define W3_DIR "../../www/html/"
#define ACCOUNT_FILE "../files/accounts"
#define AREA_LIST "../area/area.lst"
#define BADNAME_FILE "../files/badname.txt"
#define BANNED_FILE "../files/banned.txt"
#define BUG_FILE "../files/bugs.txt"
#define FACTION_FILE "../area/factions.dat"
#define HELP_FILE "../area/help.are"
#define IMM_LOG_FILE "../files/immortal.log"
#define LOAD_FILE "../area/load.dat"
#define NULL_FILE "/dev/null"
#define MOB_FILE "mob.mob"
#define OBJECT_FILE "obj.obj"
#define PLAYER_LOG_FILE "../files/player.log"
#define ABUSE_LOG_FILE "../files/abuse.log"
#define QUEST_FILE "../area/quest"
#define RTABLE_FILE "../files/rtables"
#define SHOP_FILE "../area/shop.dat"
#define TRAINER_FILE "../area/trainer.dat"
#define TYPO_FILE "../files/typos.txt"
#define WORD_FILE "../files/words"
/*
* BUG FUNCTIONS
*/
void panic ( const char* );
void bug ( int, const char* );
#define BUG_APHID 3
#define BUG_BEETLE 2
#define BUG_ROACH 1
inline void aphid ( const char* text ) { bug( 3, text ); }
inline void beetle ( const char* text ) { bug( 2, text ); }
inline void roach ( const char* text ) { bug( 1, text ); }
inline void bug ( const char* text ) { bug( 2, text ); }
template < class T >
void aphid( const char* text, T item )
{
char tmp [ TWO_LINES ];
sprintf( tmp, text, tostring( item ) );
corrupt( tmp, TWO_LINES, "Aphid" );
if( *text == '%' )
*tmp = toupper( *tmp );
bug( 3, tmp );
return;
}
template < class T >
void roach( const char* text, T item )
{
char tmp [ TWO_LINES ];
sprintf( tmp, text, tostring( item, NULL ) );
corrupt( tmp, TWO_LINES, "Roach" );
if( *text == '%' )
*tmp = toupper( *tmp );
bug( 1, tmp );
return;
}
template < class S, class T >
void roach( const char* text, S item1, T item2 )
{
char tmp [ TWO_LINES ];
sprintf( tmp, text, tostring( item1 ), tostring( item2 ) );
corrupt( tmp, TWO_LINES, "Roach" );
if( *text == '%' )
*tmp = toupper( *tmp );
bug( 1, tmp );
return;
}
template < class T >
void bug( const char* text, T item )
{
char tmp [ TWO_LINES ];
sprintf( tmp, text, tostring( item, NULL ) );
corrupt( tmp, TWO_LINES, "Bug" );
if( *text == '%' )
*tmp = toupper( *tmp );
bug( tmp );
return;
}
template < class S, class T >
void bug( const char* text, S item1, T item2 )
{
char tmp [ TWO_LINES ];
sprintf( tmp, text, tostring( item1, NULL ),
tostring( item2, NULL ) );
bug( tmp );
}
template < class T >
void panic( const char* text, T item )
{
char tmp [ TWO_LINES ];
sprintf( tmp, text, item );
if( *text == '%' )
*tmp = toupper( *tmp );
panic( tmp );
}
template < class S, class T >
void panic( const char* text, S item1, T item2 )
{
char tmp [ TWO_LINES ];
sprintf( tmp, text, item1, item2 );
if( *text == '%' )
*tmp = toupper( *tmp );
panic( tmp );
}
inline void corrupt( const char* msg, int length, const char* func )
{
if( int( strlen( msg ) ) >= length )
roach( "%s: Randomly corrupting memory.", func );
}
/*
* FILE ROUTINES
*/
FILE* open_file ( const char*, const char*, const char*,
bool = FALSE );
FILE* open_file ( const char*, const char*,
bool = FALSE );
void delete_file ( const char*, const char*, bool = TRUE );
void rename_file ( const char*, const char*,
const char*, const char* );
char fread_letter ( FILE *fp );
int fread_number ( FILE *fp );
void fread_to_eol ( FILE *fp );
char* fread_block ( FILE* );
char* fread_string ( FILE*, int );
char* fread_word ( FILE* );
void write_all ( bool = FALSE );
/*
* LOG ROUTINES
*/
void immortal_log ( char_data*, char*, char* );
void mob_log ( char_data*, int, const char* );
void obj_log ( char_data*, int, const char* );
void room_log ( char_data*, int, const char* );
void player_log ( char_data*, const char* );
template < class S >
void player_log( char_data* ch, const char* text, S item1 )
{
char tmp [ SIX_LINES ];
sprintf( tmp, text, tostring( item1, ch ) );
player_log( ch, tmp );
return;
}
template < class S, class T >
void player_log( char_data* ch, const char* text, S item1, T item2 )
{
char tmp [ SIX_LINES ];
sprintf( tmp, text, tostring( item1, ch ), tostring( item2, ch ) );
player_log( ch, tmp );
return;
}
/*
* HELP ROUTINES
*/
bool save_help ( char_data* = NULL );
/*
* QUITTING ROUTINES
*/
void forced_quit ( player_data*, bool = FALSE );
/*
* WEBPAGE ROUTINES
*/
void w3_help ( void );
void w3_who ( void );