/
lib/objects/
lib/rooms/
lib/scripts/
lib/security/
src/banner/
src/util/
#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);