/*
* HOST ROUTINES
*/
extern int write(int channel, const char *text, unsigned int length);
extern int read(int channel, const char *buffer, unsigned int length);
bool init_daemon ( void );
void write_host ( link_data*, char* );
void recover_links ( void );
void restart_links ( void );
/*
* BAN ROUTINES
*/
bool is_banned ( const char* );
bool is_banned ( account_data*, link_data* );
/*
* NETWORK ROUTINES
*/
extern link_data* link_list;
class Link_Data
{
public:
link_data* next;
link_data* snoop_by;
char_data* character;
player_data* player;
pfile_data* pfile;
account_data* account;
char* host;
int channel;
int connected;
int idle;
text_data* receive;
text_data* send;
text_data* paged;
char* rec_pending;
char* send_pending;
char* rec_prev;
bool command;
Link_Data( ) {
record_new( sizeof( link_data ), -MEM_LINK );
rec_pending = empty_string;
send_pending = empty_string;
rec_prev = empty_string;
receive = NULL;
send = NULL;
paged = NULL;
character = NULL;
player = NULL;
pfile = NULL;
snoop_by = NULL;
host = NULL;
next = NULL;
account = NULL;
channel = -1;
idle = 0;
}
~Link_Data( ) {
channel = -1;
record_delete( sizeof( link_data ), -MEM_LINK );
delete_list( receive );
delete_list( send );
delete_list( paged );
}
};
class Text_Data
{
public:
text_data* next;
string message;
Text_Data( const char* text ) : message( text ) {
record_new( sizeof( text_data ), MEM_LINK );
record_new( message.length+1, -MEM_LINK );
return;
}
~Text_Data( ) {
record_delete( sizeof( text_data ), MEM_LINK );
record_delete( message.length+1, -MEM_LINK );
return;
}
friend void overwrite( text_data* receive, const char* msg ) {
int length = strlen( msg );
char* tmp = receive->message.text;
record_new( length-receive->message.length, -MEM_LINK );
receive->message.length = length;
receive->message.text = new char [ length+1 ];
memcpy( receive->message.text, msg, length+1 );
delete [] tmp;
return;
}
};
extern const char echo_off_str [];
extern const char echo_on_str [];
extern const char go_ahead_str [];
extern int socket_one;
extern int socket_two;
extern int port [ 3 ];
int open_port ( int );
void new_player ( player_data* );
bool check_parse_name ( link_data*, char* );
void prompt_ansi ( link_data* );
void prompt_nml ( link_data* );
void write_greeting ( link_data* );
void send_to_status ( char_data*, char* );
void set_playing ( link_data* );
void close_socket ( link_data*, bool = FALSE );
void extract ( link_data* );
void open_link ( int );
/*
* LOGIN ROUTINES
*/
#define CON_ACNT_REQUEST -8
#define CON_ACNT_MENU -9
#define CON_ACNT_NAME -10
#define CON_ACNT_PWD -11
#define CON_ACNT_EMAIL -12
#define CON_ACNT_ENTER -13
#define CON_ACNT_CONFIRM -14
#define CON_ACNT_CHECK -15
#define CON_ACNT_CHECK_PWD -16
#define CON_DIGITALNATION -4
#define CON_POLICIES -3
#define CON_FEATURES -2
#define CON_PAGE -1
#define CON_PLAYING 0
#define CON_INTRO 1
#define CON_PASSWORD_ECHO 2
#define CON_PASSWORD_NOECHO 3
#define CON_DISC_OLD 4
#define CON_GET_NEW_NAME 5
#define CON_GET_NEW_PASSWORD 6
#define CON_CONFIRM_PASSWORD 7
#define CON_SET_TERM 8
#define CON_READ_GAME_RULES 10
#define CON_AGREE_GAME_RULES 11
#define CON_GET_EMAIL 12
#define CON_HELP_SEX 13
#define CON_GET_NEW_SEX 14
#define CON_HELP_CLSS 15
#define CON_GET_NEW_CLSS 16
#define CON_HELP_RACE 17
#define CON_GET_NEW_RACE 18
#define CON_DECIDE_STATS 19
#define CON_GET_NEW_ALIGNMENT 20
#define CON_HELP_ALIGNMENT 21
#define CON_READ_IMOTD 22
#define CON_READ_MOTD 23
#define CON_CLOSING_LINK 24
#define CON_CE_ACCOUNT 25
#define CON_CE_PASSWORD 26
#define CON_CE_EMAIL 27
#define CON_VE_ACCOUNT 28
#define CON_VE_VALIDATE 29
#define CON_VE_CONFIRM 30
extern bool wizlock;
inline bool Char_Data :: In_Game( )
{
return( Is_Valid( ) && ( link == NULL
|| link->connected == CON_PLAYING ) );
}
inline bool past_password( link_data* link )
{
return( link->connected != CON_PASSWORD_ECHO
&& link->connected != CON_PASSWORD_NOECHO
&& link->connected != CON_INTRO );
}
void press_return ( link_data* );
bool no_input ( link_data*, char* );
void nanny ( link_data*, char* );
void nanny_intro ( link_data*, char* );
void nanny_acnt_name ( link_data*, char* );
void nanny_acnt_password ( link_data*, char* );
void nanny_acnt_email ( link_data*, char* );
void nanny_acnt_enter ( link_data*, char* );
void nanny_acnt_confirm ( link_data*, char* );
void nanny_acnt_check ( link_data*, char* );
void nanny_acnt_check_pwd ( link_data*, char* );
void nanny_old_password ( link_data*, char* );
void nanny_motd ( link_data*, char* );
void nanny_imotd ( link_data*, char* );
void nanny_new_name ( link_data*, char* );
void nanny_acnt_menu ( link_data*, char* );
void nanny_acnt_request ( link_data*, char* );
void nanny_new_password ( link_data*, char* );
void nanny_confirm_password ( link_data*, char* );
void nanny_set_term ( link_data*, char* );
void nanny_agree_rules ( link_data*, char* );
void nanny_show_rules ( link_data*, char* );
void nanny_alignment ( link_data*, char* );
void nanny_help_alignment ( link_data*, char* );
void nanny_disc_old ( link_data*, char* );
void nanny_help_class ( link_data*, char* );
void nanny_class ( link_data*, char* );
void nanny_help_race ( link_data*, char* );
void nanny_race ( link_data*, char* );
void nanny_stats ( link_data*, char* );
void nanny_help_sex ( link_data*, char* );
void nanny_sex ( link_data*, char* );
void nanny_ve_validate ( link_data*, char* );