/************************************************************************** * 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 * *************************************************************************** * 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 __STRUCTS_H_ #define __STRUCTS_H_ 1 #define LinkList(type, name) type * name##_first, * name##_last #define LinkNext(type) type *next, *prev #define LinkNextName(type, name) type *next_##name, *prev_##name #define CheckValid bool valid struct ban_data { LinkNext(BanData); CheckValid; flag_t ban_flags; int level; const char *name; }; struct buf_type { LinkNext(Buffer); CheckValid; buf_t state; int size; char *string; }; struct auction_data { LinkNext(AuctionData); ObjData *item; CharData *owner; CharData *high_bidder; int status; int number; auc_t type; money_t bid; CheckValid; }; struct time_data { int hour; int day; int month; int year; sun_t sunlight; }; struct weather_data { int temp; int precip; int wind; int temp_vector; int precip_vector; int wind_vector; int climate_temp; int climate_precip; int climate_wind; const char *echo; const char *echo_color; }; struct descriptor_data { LinkNext(Descriptor); Descriptor *snoop_by; CharData *character; CharData *original; CheckValid; const char *host; unsigned long ip; int port; SOCKET descriptor; connect_t connected; time_t connect_time; bool fcommand; bool fPrompt; char inbuf[4 * MAX_INPUT_LENGTH]; char incomm[MAX_INPUT_LENGTH]; char inlast[MAX_INPUT_LENGTH]; int repeat; char *outbuf; int outsize; int outtop; const char *showstr_head; const char *showstr_point; void *pEdit; const char **pString; ed_t editor; flag_t desc_flags; unsigned int scr_width; unsigned int scr_height; #ifndef DISABLE_MCCP z_stream *out_compress; unsigned char *out_compress_buf; size_t bytes_compressed; int mccp_version; #endif size_t bytes_normal; const char *run_buf; const char *run_head; char ttype[60]; struct { const char *supports; float mxp_ver; float client_ver; float style_ver; const char *client; int registered; flag_t flags; flag_t flags2; } mxp; struct { unsigned int keycode; char version[20]; } portal; double imp_vers; double pueblo_vers; #ifdef __cplusplus int wrap(const char *buf); #endif int wrong_password_count; }; struct str_app_type { int tohit; int todam; int carry; int wield; }; struct int_app_type { int learn; }; struct wis_app_type { int practice; }; struct dex_app_type { int defensive; }; struct con_app_type { int hitp; int shock; }; struct help_data { LinkNext(HelpData); CheckValid; int level; const char *keyword; const char *text; help_t category; flag_t flags; }; struct shop_data { LinkNext(ShopData); CheckValid; vnum_t keeper; int buy_type[MAX_TRADE]; int profit_buy; int profit_sell; int open_hour; int close_hour; }; struct class_type { const char *name[MAX_REMORT]; const char *description; int *index; int attr_prime; vnum_t weapon; int skill_adept; int thac0_00; int thac0_32; int hp_min; int hp_max; bool fMana; const char *base_group; const char *default_group; flag_t flags; }; struct weapon_type { const char *name; vnum_t vnum; weapon_t type; int *gsn; }; struct wiznet_type { const char *name; flag_t flag; int level; }; struct attack_type { const char *name; const char *noun; dam_class damage; }; struct deity_type { const char *name; const char *desc; const char *skillname; ethos_t ethos; flag_t flags; LinkNext(DeityData); CheckValid; }; struct corpse_data { LinkNext(CorpseData); CheckValid; ObjData *corpse; }; struct race_type { const char *name; const char *description; bool pc_race; flag_t act; flag_t aff; flag_t off; flag_t imm; flag_t res; flag_t vuln; flag_t form; flag_t parts; int points; int *class_mult; const char *skills[MAX_RACE_SKILL]; int stats[STAT_MAX]; int max_stats[STAT_MAX]; size_type size; flag_t flags; LinkNext(RaceData); CheckValid; }; struct spec_type { const char *name; Spec_F *function; }; struct board_data { const char *short_name; const char *long_name; int read_level; int write_level; const char *names; board_def force_type; int purge_days; LinkList(NoteData, note); flag_t flags; }; struct note_data { LinkNext(NoteData); CheckValid; const char *sender; const char *date; const char *to_list; const char *subject; const char *text; const char *reply_text; const char *email_addr; const char *reply_addr; time_t date_stamp; time_t expire; }; struct channel_type { int *index; channel_types spec_flag; flag_t bit; const char *format; const char *color; int custom_color; int page_length; const char *name; const char *description; flag_t flags; }; struct gquest_data { LinkNext(GqData); CheckValid; CharData *ch; vnum_t *gq_mobs; }; struct gquest_type { vnum_t *mobs; const char *who; int mob_count; int timer; int involved; int qpoints; money_t gold; int minlevel; int maxlevel; gquest_t running; int cost; }; struct affect_data { LinkNext(AffectData); CheckValid; where_t where; int type; int level; int duration; apply_t location; int modifier; flag_t bitvector; }; struct crs_data { crs_t status; long timer; const char *who; const char *reason; }; struct kill_data { int number; int kills; int deaths; }; struct mud_stats { long logins; long quests; long qcomplete; long levels; long newbies; long deletions; long mobdeaths; long auctions; long aucsold; long pdied; long pkill; long notes; long remorts; long wars; long gquests; long connections; long boot_connects; int online; long web_requests; long chan_msgs; time_t lastupdate; int version; }; struct bonus_data { int mod; int time; const char *msg; bonus_t status; }; struct mud_data { time_t last_copyover; time_t longest_uptime; struct mud_stats stats; flag_t mud_flags; arena_t arena; int share_value; int pulsepersec; int rand_factor; int weath_unit; int max_vector; int climate_factor; const char *name; int unique_id; int default_port, webport_offset; const char *login_prompt; const char *bind_ip_address; int min_save_lvl; struct bonus_data bonus; int group_lvl_limit; int mobdam; int pcdam; flag_t disabled_signals; int max_points; flag_t cmdline_options; bool dont_save_area_list; size_t bytes_normal; size_t bytes_compressed; }; struct war_data { LinkNext(WarData); CheckValid; CharData *ch, *owner; long hit, mana, move; flag_t flags; int Class; }; struct war_type { WarData *first, *last; const char *who; int min_level; int max_level; int inwar; war_types wartype; int timer; war_t status; }; struct wpwd_data { LinkNext(WebpassData); CheckValid; const char *name; const char *passw; int level; }; struct char_index { LinkNext(CharIndex); CheckValid; Spec_F *spec_fun; ShopData *pShop; LinkList(ProgList, mprog); AreaData *area; vnum_t vnum; vnum_t group; bool new_format; int count; long kills; long deaths; const char *player_name; const char *short_descr; const char *long_descr; const char *description; flag_t act; flag_t affected_by; int alignment; int level; int hitroll; int hit[DICE_MAX]; int mana[DICE_MAX]; int damage[DICE_MAX]; int ac[MAX_AC]; int dam_type; int autoset; int random; flag_t off_flags; flag_t imm_flags; flag_t res_flags; flag_t vuln_flags; position_t start_pos; position_t default_pos; sex_t sex; RaceData *race; money_t wealth; flag_t form; flag_t parts; size_type size; const char *material; flag_t mprog_flags; }; struct stat_data { LinkNext(StatData); CheckValid; const char *name; long gamestat[MAX_GAMESTAT]; int version; }; struct mbr_data { LinkNext(ClanMember); CheckValid; const char *name; int rank; ClanData *clan; int level; money_t gold_donated; int qp_donated; }; struct char_data { LinkNext(CharData); LinkNextName(CharData, player); LinkNextName(CharData, in_room); CharData *master; CharData *leader; CharData *fighting; CharData *reply; CharData *pet; CharData *mprog_target; Spec_F *spec_fun; CharIndex *pIndexData; Descriptor *desc; LinkList(AffectData, affect); LinkList(ObjData, carrying); ObjData *on; RoomIndex *in_room; RoomIndex *was_in_room; AreaData *zone; PcData *pcdata; GenData *gen_data; CharData *hunting; WarData *war; GqData *gquest; CheckValid; const char *name; long id; int version; const char *short_descr; const char *long_descr; const char *description; const char *prompt; const char *gprompt; const char *prefix; int group; sex_t sex; int rank; int Class[MAX_MCLASS]; RaceData *race; int level; DeityData *deity; int trust; int lines; int columns; time_t logon; int timer; int wait; int daze; long hit; long max_hit; long mana; long max_mana; long move; long max_move; money_t gold; money_t silver; int exp; flag_t act; flag_t comm; flag_t wiznet; flag_t imm_flags; flag_t res_flags; flag_t vuln_flags; int invis_level; int incog_level; flag_t affected_by; position_t position; int practice; int train; int carry_weight; int carry_number; int saving_throw; int alignment; int hitroll; int damroll; int armor[MAX_AC]; int wimpy; int perm_stat[STAT_MAX]; int mod_stat[STAT_MAX]; flag_t form; flag_t parts; size_type size; const char *material; flag_t off_flags; int damage[DICE_MAX]; int dam_type; position_t start_pos; position_t default_pos; flag_t info_settings; int mprog_delay; int stance[MAX_STANCE]; char color_prefix; }; struct color_type { const char *name; const char *description; int slot; colatt_t col_attr; flag_t flags; }; struct color_template { LinkNext(ColorTemplate); const char *name; const char *description; colatt_t *colors; CheckValid; }; struct quest_data { CharData *mob, *giver; ObjData *obj; RoomIndex *room; int time; int points; quest_t status; }; struct pc_data { LinkNext(PcData); Buffer *buffer; int tells; int played; CharData *challenger; CharData *challenged; CharData *gladiator; LinkList(NameList, killer); CheckValid; const char *pwd; const char *bamfin; const char *bamfout; const char *pretit; const char *title; const char *who_descr; const char *afk_msg; long perm_hit; long perm_mana; long perm_move; sex_t true_sex; int last_level; int condition[COND_MAX]; int *learned; bool *group_known; int points; bool confirm_delete; BoardData *board; time_t last_note[MAX_BOARD]; NoteData *in_progress, *last_read; bool unsubscribed[MAX_BOARD]; const char *alias[MAX_ALIAS]; const char *alias_sub[MAX_ALIAS]; int security; colatt_t *colors; ColorTemplate *color_scheme; long gamestat[MAX_GAMESTAT]; QuestData quest; int trivia; bool confirm_remort; bool stay_race; char explored[MAX_EXPLORE_HASH]; long home_invite; vnum_t home[MAX_HOME_VNUMS]; vnum_t home_key; vnum_t home_room; int awins; int alosses; money_t plr_wager; money_t gold_bank; int shares; const char *webpass; char str_ed_key; const char *buddies[MAX_BUDDY]; const char ***history; int *history_index; int timezone; const char *ignore[MAX_IGNORE]; flag_t ignore_flags[MAX_IGNORE]; ClanData *clan, *invited; int prime_class; #ifndef DISABLE_I3 I3_CHARDATA *i3chardata; #endif flag_t vt100; time_t backup; const char *email; bool confirm_suicide; bool confirm_pk; long timers[MAX_TIMER]; }; struct gen_data { LinkNext(GenData); CheckValid; bool *skill_chosen; bool *group_chosen; int points_chosen; int rerolls; }; struct liq_type { const char *liq_name; const char *liq_color; int liq_affect[5]; }; struct ed_data { LinkNext(ExDescrData); CheckValid; const char *keyword; const char *description; }; struct obj_index { LinkNext(ObjIndex); CheckValid; LinkList(ExDescrData, ed); LinkList(AffectData, affect); LinkList(ProgList, oprog); AreaData *area; bool new_format; const char *name; const char *short_descr; const char *description; vnum_t vnum; int reset_num; const char *material; item_t item_type; flag_t extra_flags; flag_t wear_flags; int level; int condition; int count; int weight; money_t cost; long value[5]; flag_t oprog_flags; }; struct obj_data { LinkNext(ObjData); LinkNextName(ObjData, content); LinkList(ObjData, content); ObjData *in_obj; ObjData *on; CharData *carried_by; LinkList(ExDescrData, ed); LinkList(AffectData, affect); ObjIndex *pIndexData; RoomIndex *in_room; CharData *oprog_target; int oprog_delay; CheckValid; bool enchanted; const char *owner; const char *name; const char *short_descr; const char *description; item_t item_type; flag_t extra_flags; flag_t wear_flags; wloc_t wear_loc; int weight; money_t cost; int level; int condition; const char *material; int timer; long value[5]; }; struct exit_data { union { RoomIndex *to_room; vnum_t vnum; } u1; flag_t exit_info; vnum_t key; const char *keyword; const char *description; LinkNext(ExitData); CheckValid; flag_t rs_flags; int orig_door; }; struct reset_data { LinkNext(ResetData); CheckValid; char command; vnum_t arg1; int arg2; vnum_t arg3; int arg4; }; struct area_data { LinkNext(AreaData); AreaData *next_sort; CheckValid; const char *file_name; const char *name; const char *credits; const char *lvl_comment; const char *resetmsg; int version; int age; int nplayer; int min_level; int max_level; vnum_t min_vnum; vnum_t max_vnum; bool empty; const char *builders; int vnum; flag_t area_flags; int security; WeatherData weather; ClanData *clan; vnum_t recall; MspData *sound; long kills, deaths; }; struct area_index { AreaData *area; double percent; long stat; }; struct room_index { LinkNext(RoomIndex); CheckValid; LinkList(CharData, person); LinkList(ObjData, content); LinkList(ExDescrData, ed); AreaData *area; MspData *sound; ExitData *exit[MAX_DIR]; LinkList(ResetData, reset); LinkList(ProgList, rprog); CharData *rprog_target; flag_t rprog_flags; int rprog_delay; const char *name; const char *description; const char *owner; vnum_t vnum; flag_t room_flags; int light; sector_t sector_type; int heal_rate; int mana_rate; int guild; int distance_from_source; RoomIndex *shortest_from_room; RoomIndex *shortest_next_room; }; struct disabled_data { LinkNext(DisabledData); CheckValid; CmdData *command; const char *disabled_by; const char *disabled_for; int level; }; struct skill_type { const char *name; int *skill_level; int *rating; Spell_F *spell_fun; tar_t target; position_t minimum_position; int *pgsn; int min_mana; int beats; const char *noun_damage; const char *msg_off; const char *msg_obj; MspData *sound; flag_t flags; }; struct group_type { const char *name; int *rating; const char *spells[MAX_IN_GROUP]; flag_t flags; }; #ifdef STFILEIO struct st_data { LinkNext(stFile); CheckValid; char *str; size_t pos, size; FILE *stream; #if !defined WIN32 && !defined __CYGWIN__ const char *temp; #endif const char *file, *mode; }; #endif struct prog_list { flag_t trig_type; const char *trig_phrase; ProgCode *prog; LinkNext(ProgList); CheckValid; }; struct prog_code { vnum_t vnum; const char *name; const char *code; AreaData *area; LinkNext(ProgCode); CheckValid; bool disabled; const char *disabled_text; }; struct social_type { const char *name; const char *char_no_arg; const char *others_no_arg; const char *char_found; const char *others_found; const char *vict_found; const char *char_not_found; const char *char_auto; const char *others_auto; flag_t flags; SocialData *next_hash; LinkNext(SocialData); CheckValid; }; struct crash_type { Descriptor *desc; char logline[MAX_INPUT_LENGTH]; crash_status status; crash_t crashed; }; struct clan_rank { const char *rankname; }; struct clan_type { const char *name; const char *who_name; const char *description; vnum_t rooms[MAX_CLAN_ROOM]; flag_t clan_flags; ethos_t ethos; ClanRank rank[MAX_RANK]; money_t gold; int questpoints; LinkNext(ClanData); CheckValid; }; struct cmd_type { const char *name; Do_F *do_fun; position_t position; int level; log_t log; cmd_cat category; flag_t flags; CmdData *next_hash, *next_sort; LinkNext(CmdData); CheckValid; }; struct song_data { const char *group; const char *name; const char *lyrics[MAX_LINES]; int lines; flag_t flags; }; struct datatable_type { const char *field; field_t type; void *argument; const void *arg1; const void *arg2; Ed_F *function; const void *arg3; }; struct olc_ed_type { const char *name; const char *longname; ed_t ed; void *type_zero; Do_F *do_fun; DataTable *table; Olc_F *create_fun; Olc_F *delete_fun; Olc_F *list_fun; TableSave_F *save_fun; const void *vnum; field_t field; }; #ifndef DISABLE_WEBSRV struct web_descriptor { LinkNext(WebDescriptor); CheckValid; SOCKET fd; char request[MIL], baseurl[MIL]; const char *stuff, *path, *buf; int their_addr; }; #endif struct pfile_list { const char **names; int count; }; #ifdef WIN32 struct dirent { char d_name[1]; }; #endif struct column_data { bool newline; size_t col_pos; size_t line_len; size_t line_pos; size_t columns; size_t col_len; column_t type; void *to; LinkNext(Column); CheckValid; }; struct msp_data { const char *file; msp_t type; int volume; int loop; int priority; bool restart; const char *url; flag_t to; LinkNext(MspData); CheckValid; }; #define MAX_PARTS 3 struct name_profile { const char *title; const char *part[MAX_PARTS]; int part_count[MAX_PARTS]; bool valid; LinkNext(NameProfile); }; struct name_list { const char *name; LinkNext(NameList); bool valid; }; struct wiz_data { LinkNext(WizData); int level; const char *name; const char *email; const char *jobs; bool valid; }; struct change_data { bool valid; const char *change; const char *coder; time_t time; }; #endif