/**************************************************************************
* Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, *
* Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. *
* *
* Merc Diku Mud improvements 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 *
* benefiting. 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 *
***************************************************************************
* Ported to Smaug 1.4a by Samson of Alsherok. Consolidated for *
* cross-codebase compatibility by Samson of Alsherok. Modifications and *
* enhancements to the code Copyright (c) 2001-2003 Roger Libiez *
* ( Samson ) Registered with the United States Copyright Office *
* TX 5-562-404. I condensed the 14 or so Fatal Dimensions source code *
* files into this one file, because I for one find it far easier to *
* maintain when all of the functions are right here in one file. *
***************************************************************************
* 1stMud ROM Derivative (c) 2001-2004 by Markanth *
* http://www.firstmud.com/ <markanth@firstmud.com> *
* By using this code you have agreed to follow the term of *
* the 1stMud license in ../doc/1stMud/LICENSE *
***************************************************************************/
#ifndef __I3_H_
#define __I3_H_
#ifndef DISABLE_I3
#define MAX_I3HISTORY 20
#define MAX_I3TELLHISTORY 20
#define I3DIR DATA_DIR"i3"DIR_SYM
#define I3_CONFIG_FILE I3DIR "i3.config"
#define I3_CHANNEL_FILE I3DIR "i3.channels"
#define I3_ROUTER_FILE I3DIR "i3.routers"
#define I3_UCACHE_FILE I3DIR "i3.ucache"
#define I3_MUDLIST_FILE I3DIR "i3.mudlist"
#define I3_CHANLIST_FILE I3DIR "i3.chanlist"
#define I3_BAN_FILE I3DIR "i3.bans"
#define I3_COLOR_FILE I3DIR "i3.color"
#define I3_HELP_FILE I3DIR "i3.help"
#define I3_CMD_FILE I3DIR "i3.commands"
typedef enum
{
I3PERM_NOTSET, I3PERM_NONE, I3PERM_MORT, I3PERM_IMM, I3PERM_ADMIN,
I3PERM_IMP
}
i3perm_t;
#define I3CHAN_LOG (BIT_A)
#define I3_TELL (BIT_A)
#define I3_DENYTELL (BIT_B)
#define I3_BEEP (BIT_C)
#define I3_DENYBEEP (BIT_D)
#define I3_INVIS (BIT_E)
#define I3_PRIVACY (BIT_F)
#define I3_DENYFINGER (BIT_G)
#define I3_AFK (BIT_H)
#define I3_COLORFLAG (BIT_I)
#define I3_PERMOVERRIDE (BIT_J)
#define I3DRIVER MUDNAME " I3 Driver 2.40"
#define IPS 131072
#define OPS 65536
#define I3INVIS(ch) ( IsSet( (ch)->pcdata->i3chardata->i3flags, I3_INVIS ) )
#define I3AFK(ch) ( IsSet( (ch)->pcdata->i3chardata->i3flags, I3_AFK ) )
#define I3ISINVIS(ch) ( I3WIZINVIS(ch) || I3INVIS(ch) )
#define CH_I3RANK(ch) ( is_clan(ch) ? (ch)->pcdata->clan->rank[(ch)->rank].rankname : ClassName(ch, prime_class(ch)) )
#define I3WIZINVIS(ch) ( IsImmortal(ch) && (ch)->invis_level > 0 )
typedef struct I3_channel I3_CHANNEL;
typedef struct I3_mud I3_MUD;
typedef struct I3_header I3_HEADER;
typedef struct I3_ignore I3_IGNORE;
typedef struct I3_ban I3_BAN;
typedef struct ucache_data I3_UCACHE;
typedef struct i3_chardata I3_CHARDATA;
typedef struct router_data ROUTER_DATA;
typedef struct i3_color I3_COLOR;
typedef struct i3_command I3_CMD_DATA;
typedef struct i3_help I3_HELP_DATA;
EXTERN SOCKET I3_control;
EXTERN I3_MUD i3mud_info;
EXTERN I3_CMD_DATA i3cmd_table[];
struct i3_command
{
I3_CMD_DATA *next;
I3_CMD_DATA *prev;
NameList *alias_first, *alias_last;
Do_F *function;
const char *name, *args, *descr;
i3perm_t level;
bool connected;
};
struct i3_help
{
I3_HELP_DATA *next;
I3_HELP_DATA *prev;
const char *name;
const char *text;
int level;
};
struct i3_color
{
I3_COLOR *next;
I3_COLOR *prev;
const char *name;
const char *mudtag;
const char *i3tag;
const char *i3fish;
};
struct router_data
{
ROUTER_DATA *next;
ROUTER_DATA *prev;
const char *name;
const char *ip;
int port;
int reconattempts;
};
struct ucache_data
{
I3_UCACHE *next;
I3_UCACHE *prev;
const char *name;
sex_t gender;
time_t time;
};
struct I3_ignore
{
I3_IGNORE *next;
I3_IGNORE *prev;
const char *name;
};
struct I3_ban
{
I3_BAN *next;
I3_BAN *prev;
const char *name;
};
struct i3_chardata
{
const char *i3_replyname;
const char *i3_listen;
const char *i3_denied;
const char *i3_tellhistory[MAX_I3TELLHISTORY];
flag_t i3flags;
i3perm_t i3perm;
I3_IGNORE *i3ignore_first;
I3_IGNORE *i3ignore_last;
};
struct I3_header
{
char originator_mudname[256];
char originator_username[256];
char target_mudname[256];
char target_username[256];
};
struct I3_channel
{
I3_CHANNEL *next;
I3_CHANNEL *prev;
const char *local_name;
const char *host_mud;
const char *I3_name;
const char *layout_m;
const char *layout_e;
int status;
i3perm_t i3perm;
const char *history[MAX_I3HISTORY];
flag_t flags;
};
struct I3_mud
{
I3_MUD *next;
I3_MUD *prev;
int status;
const char *name;
const char *ipaddress;
const char *mudlib;
const char *base_mudlib;
const char *driver;
const char *mud_type;
const char *open_status;
const char *admin_email;
const char *telnet;
const char *web_wrong;
int player_port;
int imud_tcp_port;
int imud_udp_port;
bool tell;
bool beep;
bool emoteto;
bool who;
bool finger;
bool locate;
bool channel;
bool news;
bool mail;
bool file;
bool auth;
bool ucache;
int smtp;
int ftp;
int nntp;
int http;
int pop3;
int rcp;
int amrcp;
const char *banner;
const char *web;
const char *time;
const char *daemon;
int jeamland;
bool autoconnect;
int password;
int mudlist_id;
int chanlist_id;
int minlevel;
int immlevel;
int adminlevel;
int implevel;
};
GLOBAL_LIST(I3_UCACHE, ucache);
GLOBAL_LIST(ROUTER_DATA, router);
GLOBAL_LIST(I3_BAN, I3ban);
GLOBAL_LIST(I3_CHANNEL, I3chan);
GLOBAL_LIST(I3_MUD, i3mud);
GLOBAL_LIST(I3_COLOR, i3color);
GLOBAL_LIST(I3_HELP_DATA, i3help);
GLOBAL_LIST(I3_CMD_DATA, i3cmd);
Proto(void I3_main, (bool));
Proto(bool I3_is_connected, (void));
Proto(void I3_loop, (void));
Proto(void I3_shutdown, (int));
Proto(bool I3_command_hook, (CharData *, const char *, const char *));
Proto(void i3init_char, (CharData *));
Proto(void i3save_char, (CharData *, FileData *));
Proto(bool i3load_char, (CharData *, FileData *, const char *));
Proto(void free_i3chardata, (PcData *));
Declare_TableSave_F(rw_i3_mudlist);
Declare_TableSave_F(rw_i3_chanlist);
Proto(void I3_savehistory, (void));
EXTERN FlagTable i3perm_names[];
EXTERN const char *I3_ROUTER_NAME;
#endif
#endif