#define DIMD_PASSWORD "sdfj3r878jkasdjhk2ee987w"
#define DIMD_PORT 4002
#define DIMD_OPENING 1
#define DIMD_OPEN 2
#define DIMD_CLOSED 3
#define DIMD_CLOSING 4
#define DIMDLOG(msg) log(msg)
#define UNDEFINED -1
#define GET_KEYNAME(ch) GET_NAME(ch)
#define PER(ch) GET_KEYNAME(ch)
#define HUMAN(ch) IsHumanoid(ch)
#define GET_DIMD(ch) ((ch)->pc->dimd_credits)
#define CLR_THINK 0
#define CLR_MUSE 0
#define CLR_GOSSIP 0
#define CLR_TELL 0
#define COMM_NOGOSSIP 1
#define COMM_NOMUSE 2
#define COMM_NOTHINK 4
#define COMM_AFK 8
/* external functions */
void construct_who_list(char *buf, int cmd,
struct char_data *ch, int godlevel,
char *argument);
int init_socket(int port);
/* external vars */
extern struct char_data *character_list;
/* internal vars */
extern int dimd_s;
extern bool dimd_on;
extern bool dimd_gossip;
extern bool dimd_muse;
extern int dimd_state;
extern int dimd_port;
extern int dimd_local_mud;
struct mud_data
{
char *formalname;
char *nicknames;
char *address;
int port;
int min_level;
int immort_level;
int immort_level_mult;
unsigned long flags;
int desc;
struct txt_q input;
struct txt_q output;
char buf[MAX_STRING_LENGTH];
char pcname[50];
char host[50];
};
/* Only options that have a plus(+) in their comments should be used in the
mud table. All other options are basically internal. */
#define DD_CONNECTED 0x00000001
#define DD_VERIFIED 0x00000002
#define DD_AUTOTRY 0x00000004 /* +Try to connect at bootup? */
#define DD_REFUSE 0x00000008 /* +Refuse connections to this mud? */
#define DD_NOGOSSIP 0x00000010 /* Mud refusing our gossips? */
#define DD_NOMUSE 0x00000020 /* Mud refusing our muses? */
#define DD_NOTHINK 0x00000040 /* Mud refusing our thinks? */
/* functions */
bool dimd_can_see(int slev, struct char_data *o);
void dimd_broadcast(char *buf);
char *one_lc_dimd_argument(char *argument, char *first_arg);
char *one_dimd_argument(char *argument, char *first_arg);
bool dimd_credit(struct char_data *ch, int credits);
int matchmud(char *mudname);
int getlocalmud(void);
int getmud(struct char_data *ch, char *mudname, bool checkforup);
void do_dgossip(struct char_data *ch, char *argument, int cmd);
void do_dlist(struct char_data *ch, char *argument, int cmd);
void do_dmanage(struct char_data *ch, char *argument, int cmd);
void do_dlink(struct char_data *ch, char *argument, int cmd);
void do_dunlink(struct char_data *ch, char *argument, int cmd);
void do_dmuse(struct char_data *ch, char *argument, int cmd);
void do_dtell(struct char_data *ch, char *argument, int cmd);
void do_dwho(struct char_data *ch, char *argument, int cmd);
void do_drestrict(struct char_data *ch, char *argument, int cmd);
void do_dthink(struct char_data *ch, char *argument, int cmd);
bool call_a_mud(int mud);
bool answer_a_mud(void);
void hangup_on_a_mud(int mud);
void close_dimd(void);
void dimd_loop(void);
int process_dimd_output(int mud);
int process_dimd_input(int mud);