/*
* player.h
*/
/* kludgy macro, there must be a better way to do this */
#define align(p) p=(void *)(((int)p+3)&-4)
/* modes that players can be in */
#define NONE 0
#define PASSWORD 1
#define CONV 2
#define ROOMEDIT 4
#define MAILEDIT 8
#define NEWSEDIT 16
/* gender types */
#define MALE 1
#define FEMALE 2
#define PLURAL 3
#define OTHER 0
#define VOID_GENDER -1
/* residency types */
#define STANDARD_ROOMS -2
#define BANISHED -1
#define NON_RESIDENT 0
#define BASE 1
#define NO_SYNC (1<<1)
#define ECHO_PRIV (1<<2)
#define NO_TIMEOUT (1<<3)
#define BANISHD (1<<4)
#define SYSTEM_ROOM (1<<5)
#define MAIL (1<<6)
#define LIST (1<<7)
#define BUILD (1<<8)
#define SESSION (1<<9)
#define SPARE3 (1<<10)
#define SPARE4 (1<<11)
#define SPARE5 (1<<12)
#define SPARE6 (1<<13)
#define PSU (1<<14)
#define WARN (1<<15)
#define SPARE7 (1<<16)
#define HOUSE (1<<17)
#define SPARE9 (1<<18)
#define SPARE10 (1<<19)
#define FROG (1<<20)
#define SPARE11 (1<<21)
#define SCRIPT (1<<22)
#define TRACE (1<<23)
#define SPARE14 (1<<24)
#define SPARE15 (1<<25)
#define LOWER_ADMIN (1<<26)
#define HCADMIN (1<<27)
#define SPARE16 (1<<28)
#define SU (1<<29)
#define ADMIN (1<<30)
#define HCADMIN_INIT (HCADMIN + ADMIN + LOWER_ADMIN + SU \
+ TRACE + SCRIPT + FROG + WARN + PSU + SESSION \
+ BUILD + LIST + MAIL + NO_TIMEOUT + ECHO_PRIV + BASE )
/* #define lengths */
#define MAX_NAME 20
#define MAX_INET_ADDR 40
#define IBUFFER_LENGTH 256
#define MAX_PROMPT 15
#define MAX_ID 15
#define MAX_EMAIL 60
#define MAX_PASSWORD 20
#define MAX_TITLE 60
#define MAX_DESC 160
#define MAX_PLAN 160
#define MAX_PRETITLE 18
#define MAX_ENTER_MSG 60
#define MAX_IGNOREMSG 55
#define MAX_SESSION 60
#define MAX_COMMENT 59
/* an un-subtle size, but... */
#define MAX_REPLY 200
#define MAX_ROOM_CONNECT 35
#define MAX_ROOM_NAME 50
#define MAX_AUTOMESSAGE 160
#define MAX_ROOM_SIZE 1500
#define MAX_ARTICLE_SIZE 5000
#define MAX_SNEWS 200
/* system flag definitiosn */
#define PANIC (1<<0)
#define VERBOSE (1<<1)
#define SHUTDOWN (1<<2)
/* missing flag 8 */
#define EVERYONE_TAG (1<<3)
#define FAILED_COMMAND (1<<4)
#define CLOSED_TO_NEWBIES (1<<5)
#define PIPE (1<<6)
#define ROOM_TAG (1<<7)
#define FRIEND_TAG (1<<8)
#define DO_TIMER (1<<9)
#define UPDATE (1<<10)
#define NO_PRINT_LOG (1<<11)
#define NO_PRETITLES (1<<12)
#define UPDATEROOMS (1<<13)
#define UPDATEFLAGS (1<<14)
#define NEWBIE_TAG (1<<15)
#define REPLY_TAG (1<<16)
#define SECURE_DYNAMIC (1<<17)
/* player flag defs */
/* keep PANIC as 1 */
#define INPUT_READY (1<<1)
#define LAST_CHAR_WAS_N (1<<2)
#define LAST_CHAR_WAS_R (1<<3)
#define DO_LOCAL_ECHO (1<<4)
#define PASSWORD_MODE (1<<5)
/* keep closed to newbies at 64 */
#define PROMPT (1<<7)
#define TAGGED (1<<8)
#define LOGIN (1<<9)
#define CHUCKOUT (1<<10)
#define EOR_ON (1<<11)
#define IAC_GA_DO (1<<12)
#define SITE_LOG (1<<13)
#define DONT_CHECK_PIPE (1<<14)
#define RECONNECTION (1<<15)
#define NO_UPDATE_L_ON (1<<16)
#define BLOCK_SU (1<<17)
#define NO_SAVE_LAST_ON (1<<18)
#define NO_SU_WALL (1<<19)
#define ASSISTED (1<<20)
#define FROGGED (1<<21)
#define SCRIPTING (1<<22)
/* ones that get saved */
#define CONVERSE (1<<0)
#define SU_HILITED (1<<1)
#define BLOCK_TELLS (1<<2)
#define BLOCK_SHOUT (1<<3)
#define HIDING (1<<4)
#define PRIVATE_EMAIL (1<<5)
#define QUIET_EDIT (1<<6)
#define TAG_ECHO (1<<7)
#define TAG_PERSONAL (1<<8)
#define TAG_ROOM (1<<9)
#define TAG_SHOUT (1<<10)
#define TRANS_TO_HOME (1<<11)
#define SEEECHO (1<<12)
#define NEW_MAIL (1<<13)
#define NO_ANONYMOUS (1<<14)
#define MAIL_INFORM (1<<15)
#define NEWS_INFORM (1<<16)
#define TAG_AUTOS (1<<17)
/* stolen to do noeprefix
#define PERM_LAG (1<<18) */
#define NOEPREFIX (1<<18)
#define IAC_GA_ON (1<<19)
#define COMPRESSED_LIST (1<<20)
#define NO_PAGER (1<<21)
#define AGREED_DISCLAIMER (1<<22)
#define NOPREFIX (1<<23)
#define SAVENOSHOUT (1<<24)
#define SAVEDFROGGED (1<<25)
#define YES_SESSION (1<<26)
#define SAVEDJAIL (1<<27)
#define ROOM_ENTER (1<<28)
#define SHOW_EXITS (1<<29)
#define NEW_SITE (1<<30)
/* list flags */
#define NOISY 1
#define IGNORE 2
#define INFORM 4
#define GRAB 8
#define FRIEND 16
#define BAR 32
#define INVITE 64
#define BEEP 128
#define BLOCK 256
#define KEY 512
#define FIND 1024
/* command types */
#define VOID 0
#define SEE_ERROR 1
#define PERSONAL 2
#define ROOM 4
#define EVERYONE 8
#define ECHO_COM 16
#define EMERGENCY 32
#define AUTO 64
#define HIGHLIGHT 128
#define NO_P_MATCH 256
#define TAG_INFORM 512
#define LIST_EVERYONE 1024
#define ADMIN_BARGE 2048
#define SORE 4096
#define WARNING 8192
#define EXCLUDE 16384
/* files'n'things */
typedef struct
{
char *where;
int length;
} file;
/* just simple struct to hold the super help pages */
struct super_n
{
char text[MAX_SNEWS];
int ident;
struct super_n *next;
};
typedef struct super_n snews;
/* room definitions */
#define HOME_ROOM 1
#define COMPRESSED 2
#define AUTO_MESSAGE 4
#define AUTOS_TAG 8
#define LOCKABLE 16
#define LOCKED 32
#define OPEN 64
#define LINKABLE 128
#define KEYLOCKED 256
#define CONFERENCE 512
#define ROOM_UPDATED 1024
struct r_struct
{
char name[MAX_ROOM_NAME];
char id[MAX_ID];
int flags;
int data_key;
int auto_count;
int auto_base;
file text;
file exits;
file automessage;
struct s_struct *owner;
struct p_struct *players_top;
struct r_struct *next;
char enter_msg[MAX_ENTER_MSG];
};
typedef struct r_struct room;
/* note defs */
#define NEWS_ARTICLE 1
#define ANONYMOUS 2
#define NOT_READY 4
#define SUPRESS_NAME 8
struct n_struct
{
int id;
int flags;
int date;
file text;
int next_sent;
int read_count;
struct n_struct *hash_next;
char header[MAX_TITLE];
char name[MAX_NAME];
};
typedef struct n_struct note;
/* list defs */
struct l_struct
{
char name[MAX_NAME];
int flags;
struct l_struct *next;
};
typedef struct l_struct list_ent;
/* saved player defs */
struct s_struct
{
char lower_name[MAX_NAME];
char last_host[MAX_INET_ADDR];
int last_on;
int residency;
int saved_flags;
file data;
struct l_struct *list_top;
struct r_struct *rooms;
int mail_sent;
int *mail_received;
struct s_struct *next;
};
typedef struct s_struct saved_player;
/* editor info structure */
typedef struct
{
char *buffer;
char *current;
int max_size;
int size;
void *finish_func;
void *quit_func;
int flag_copy;
int sflag_copy;
void *input_copy;
void *misc;
} ed_info;
/* terminal defs */
struct terminal
{
char *name;
char *bold;
char *off;
char *cls;
};
/* the player structure */
struct p_struct
{
int fd;
int performance;
int hash_top;
int flags;
int term;
int saved_flags;
int anticrash;
int antipipe;
int residency;
int saved_residency;
int term_width;
int column;
int word_wrap;
int idle;
int gender;
int no_shout;
int shout_index;
int jail_timeout;
int no_move;
int lagged;
int script;
int jetlag; /* This has just become time zone difference */
int sneezed; /* wibble! */
int birthday;
int age;
int last_newsb;
struct p_struct *hash_next;
struct p_struct *flat_next;
struct p_struct *flat_previous;
struct p_struct *room_next;
saved_player *saved;
room *location;
int max_rooms;
int max_exits;
int max_autos;
int max_list;
int max_mail;
int on_since;
int total_login;
ed_info *edit_info;
char inet_addr[MAX_INET_ADDR];
char num_addr[MAX_INET_ADDR];
char name[MAX_NAME];
char title[MAX_TITLE];
char pretitle[MAX_PRETITLE];
char description[MAX_DESC];
char plan[MAX_PLAN];
char lower_name[MAX_NAME];
char idle_msg[MAX_TITLE];
char ignore_msg[MAX_IGNOREMSG];
char comment[MAX_COMMENT];
char reply[MAX_REPLY];
char room_connect[MAX_ROOM_CONNECT];
int reply_time;
void *input_to_fn;
void *timer_fn;
int timer_count;
char ibuffer[IBUFFER_LENGTH];
int ibuff_pointer;
char prompt[MAX_PROMPT];
char converse_prompt[MAX_PROMPT];
char email[MAX_EMAIL];
char password[MAX_PASSWORD];
char password_cpy[MAX_PASSWORD];
char enter_msg[MAX_ENTER_MSG];
/* start of any adding by Athanasius */
char script_file[MAX_NAME + 16];
char assisted_by[MAX_NAME];
int logged_in;
int mode;
};
typedef struct p_struct player;
/* flag list def */
typedef struct
{
char *text;
int change;
} flag_list;
/* structure for commands */
struct command
{
char *text;
void *function;
int level;
int andlevel;
int space;
char *help;
};
/* global definitions */
#ifndef GLOBAL_FILE
int backup;
char *action;
extern char *stack, *stack_start;
extern int sys_flags, max_players, current_players, command_type, up_time,
up_date, logins;
extern player *flatlist_start, *hashlist[], *current_player, *c_player, *stdout_player, *input_player;
extern room *current_room, *entrance_room, *prison;
extern player **pipe_list;
extern int pipe_matches;
extern int splat1, splat2, splat_timeout;
extern int soft_splat1, soft_splat2, soft_timeout;
#ifdef TRACK
extern char functionin[100];
extern char functionhist[20][100];
extern int funcposition;
#endif
#endif
extern int in_total, out_total, in_current, out_current, in_average,
out_average, net_count, in_bps, out_bps, in_pack_total,
out_pack_total, in_pack_current, out_pack_current, in_pps,
out_pps, in_pack_average, out_pack_average;