/********************************************************** *************** S U N D E R M U D *** 2 . 0 ************** ********************************************************** * The unique portions of the SunderMud code as well as * * the integration efforts for code from other sources is * * based primarily on the efforts of: * * * * Lotherius <aelfwyne@operamail.com> (Alvin W. Brinson) * * and many others, see "help sundermud" in the mud. * **********************************************************/ #ifndef _GLOBALMERC_H # define _GLOBALMERC_H 1 /* * This file contains all the structs and globals. */ /* * TYPEDEF STRUCTS */ typedef struct i3_chardata I3_CHARDATA; typedef struct affect_data AFFECT_DATA; typedef struct area_data AREA_DATA; typedef struct ban_data BAN_DATA; typedef struct char_data CHAR_DATA; typedef struct descriptor_data DESCRIPTOR_DATA; typedef struct exit_data EXIT_DATA; typedef struct extra_descr_data EXTRA_DESCR_DATA; typedef struct help_data HELP_DATA; typedef struct kill_data KILL_DATA; typedef struct mob_index_data MOB_INDEX_DATA; typedef struct obj_data OBJ_DATA; typedef struct obj_index_data OBJ_INDEX_DATA; typedef struct pc_data PC_DATA; typedef struct reset_data RESET_DATA; typedef struct room_index_data ROOM_INDEX_DATA; typedef struct shop_data SHOP_DATA; typedef struct time_info_data TIME_INFO_DATA; typedef struct mud_data MUD_DATA; typedef struct weather_data WEATHER_DATA; typedef struct prog_list PROG_LIST; typedef struct prog_code PROG_CODE; typedef struct lease_data LEASE; typedef struct note_data NOTE_DATA; typedef struct board_data BOARD_DATA; /* * FUNCTION TYPES */ /* * Function types. */ typedef void DO_FUN args( ( CHAR_DATA *ch, char *argument ) ); typedef bool SPEC_FUN args( ( CHAR_DATA *ch ) ); typedef void SPELL_FUN args( ( int sn, int level, CHAR_DATA *ch, void *vo ) ); typedef void OBJ_FUN args( ( OBJ_DATA *obj, char *argument ) ); typedef void ROOM_FUN args( ( ROOM_INDEX_DATA *room, char *argument ) ); /* * EXTERN STRUCTS & GLOBAL VARIABLES */ extern struct disable_cmd_type *disable_cmd_list; extern struct crier_type *crier_list; extern struct account_type *account_list; extern struct lease_data *lease_list; extern struct race_type race_table []; extern struct skill_type skill_table [MAX_SKILL]; extern struct social_type social_table [MAX_SOCIALS]; extern const struct str_app_type str_app [26]; extern const struct int_app_type int_app [26]; extern const struct wis_app_type wis_app [26]; extern const struct dex_app_type dex_app [26]; extern const struct con_app_type con_app [26]; extern const struct class_type class_table [MAX_CLASS]; extern const struct attack_type attack_table []; extern const struct pc_race_type pc_race_table []; extern const struct liq_type liq_table [LIQ_MAX]; extern const struct material_data material_table []; extern const struct wear_data wear_info[]; extern const struct spec_type spec_table[]; extern const struct cmd_type cmd_table []; //extern struct work_type *work_orders; /* Was for threading */ extern const char *size_table []; extern const char *day_name []; extern const char *month_name []; extern char * const dir_name[]; extern const sh_int rev_dir[]; extern HELP_DATA * help_first; extern SHOP_DATA * shop_first; extern BAN_DATA * ban_list; extern CHAR_DATA * char_list; extern DESCRIPTOR_DATA * descriptor_list; extern NOTE_DATA * note_list; extern OBJ_DATA * object_list; extern PROG_CODE * mprog_list; extern PROG_CODE * rprog_list; extern PROG_CODE * oprog_list; extern AFFECT_DATA * affect_free; extern BAN_DATA * ban_free; extern CHAR_DATA * char_free; extern DESCRIPTOR_DATA * descriptor_free; extern EXTRA_DESCR_DATA * extra_descr_free; extern NOTE_DATA * note_free; extern OBJ_DATA * obj_free; extern PC_DATA * pcdata_free; extern struct char_group * group_free; extern time_t current_time; extern bool fLogAll; extern FILE * fpReserve; extern KILL_DATA kill_table []; extern TIME_INFO_DATA time_info; extern WEATHER_DATA weather_info; extern MUD_DATA mud; extern bool MOBtrigger; extern AREA_DATA * area_first; extern AREA_DATA * area_last; extern SHOP_DATA * shop_last; extern int top_affect; extern int top_area; extern int top_ed; extern int top_exit; extern int top_help; extern int top_mob_index; extern int top_obj_index; extern int top_reset; extern int top_room; extern int top_shop; extern int top_vnum_mob; extern int top_vnum_obj; extern int top_vnum_room; extern char str_empty [1]; extern MOB_INDEX_DATA * mob_index_hash [MAX_KEY_HASH]; extern OBJ_INDEX_DATA * obj_index_hash [MAX_KEY_HASH]; extern ROOM_INDEX_DATA * room_index_hash [MAX_KEY_HASH]; extern BOARD_DATA boards[MAX_BOARD]; /* Structures */ /*------------------------ * System-Level Structures *-----------------------*/ /* Global Structure for globally accessed "Generic Data". * I know some people don't like the idea of a "Global Structure, however * there are way too many globals floating around in different source files, * and we need to get handle on them for organization. * All of these are accessed with the mud.xxxx pointer style. * Expect more stuff to be moved in. -- Lotherius */ struct mud_data { /* These things are loaded from the RC file */ bool verify; /* Require verification of Emails? */ sh_int clogin; /* Color Login? */ sh_int death; /* Level of death "reality" */ int port; /* Port Number to operate on */ int fordemi; /* How many mortal heroes needed for a demigod */ sh_int mudxp; /* How hard is it to level */ int makelevel; /* Minlevel to make a clan */ int makecost; /* Min gold cost to make a clan */ int makeqp; /* Questpoints to make a clan */ /* These are not. */ bool nonotify; /* Used when something spammy is about to happen */ int renumber; /* If an area needs renumbered, the modifier is stored here. */ /* Memlog Stuff. */ char *ml_ident [MAX_MEMLOG]; /* Use a txt identifier for readability */ int ml_perm_alloc[MAX_MEMLOG]; /* Allocated Perms. Not freed. */ int ml_mem_alloc [MAX_MEMLOG]; /* Allocated memory that can be freed */ int ml_mem_dalloc[MAX_MEMLOG]; /* De-allocated memory (with free_mem */ }; struct time_info_data { int hour; int day; int month; int year; }; struct weather_data { int mmhg; int change; int sky; int sunlight; }; /* Site Ban Structure */ struct ban_data { BAN_DATA *next; char *name; }; /* Disabled Commands */ struct disable_cmd_type { char *name; int level; struct disable_cmd_type *next; DO_FUN *disable_fcn; }; /* Command Table Definition */ struct cmd_type { char *const name; DO_FUN *do_fun; sh_int position; sh_int level; sh_int log; bool show; char *const helpmsg; /* Text to show on enhanced "commands" listing. */ long category; // Possible Categories for commands bool disabled; int disabled_level; }; /* Help table */ struct help_data { HELP_DATA *next; sh_int level; char *keyword; char *text; }; /* Town Crier Messages */ struct crier_type { struct crier_type *next; char *text; /* Message the town crier will shout */ }; /* Socials */ struct social_type { char name[20]; char * char_no_arg; char * others_no_arg; char * char_found; char * others_found; char * vict_found; char * char_not_found; char * char_auto; char * others_auto; }; /* Attack types */ struct attack_type { char *name; /* name and message */ int damage; /* damage class */ }; /*------------------------- * Descriptors and Accounts *------------------------*/ /* * * Descriptor (channel) structure. * */ struct descriptor_data { DESCRIPTOR_DATA *next; DESCRIPTOR_DATA *snoop_by; CHAR_DATA *character; CHAR_DATA *original; char *host; sh_int descriptor; sh_int connected; bool fcommand; char inbuf[4 * MAX_INPUT_LENGTH]; char incomm[MAX_INPUT_LENGTH]; char inlast[MAX_INPUT_LENGTH]; int repeat; int outsize; int outtop; char *outbuf; char *afk_outbuf; bool multi_comm; char *showstr_head; char *showstr_point; void *pEdit; char **pString; int editor; bool ansi; /* Ansi/VT colour, so can ask at startup */ bool pueblo; /* Pueblo enabled? */ bool msp; bool mxp; char *client; /* MXP Client Version... */ char *support; /* Client support string. */ time_t save_time; /* Last save time */ # if !defined (NOZLIB) z_stream *out_compress; /* MCCP Compression Stream */ unsigned char *out_compress_buf; /* MCCP Buffer */ # endif }; /* * Data for player accounts, this is kept online so keep it small. */ struct account_type { struct account_type *next; char *acc_name; /* Email Address of the Account */ char *password; /* Password for Account */ short status; /* Account Status */ int permadead; /* Number of players Permadeathed */ int heroes; /* Number of Mortal Heroes ever */ int demigods; /* Number of Demigods ever */ char *char_name[MAX_CHARS]; /* Characters Belonging to this Account */ int vcode; /* Verification Code - NOT SAVED */ }; /*------------------ * Character Classes *-----------------*/ struct class_type { char *name; /* the full name of the class */ char who_name[4]; /* Three-letter name for 'who' */ sh_int attr_prime; /* Prime attribute */ int weapon; /* First weapon */ sh_int guild[MAX_GUILD]; /* No Longer Used */ sh_int skill_adept; /* Maximum skill level */ sh_int thac0_00; /* Thac0 for level 0 */ sh_int thac0_32; /* Thac0 for level 32 */ sh_int hp_min; /* Min hp gained on leveling */ sh_int hp_max; /* Max hp gained on leveling */ bool fMana; /* Class gains mana on level */ }; /*------------------ * Skills and Spells *-----------------*/ struct skill_type { char * name; /* Name of skill */ sh_int skill_level[MAX_CLASS]; /* Level needed by class */ SPELL_FUN * spell_fun; /* Spell pointer */ sh_int target; /* Legal targets */ sh_int minimum_position; /* Position for caster / user */ sh_int * pgsn; /* Pointer to associated gsn */ sh_int slot; /* Slot for #OBJECT loading */ sh_int min_mana; /* Minimum mana used */ sh_int beats; /* Waiting time after use */ char * noun_damage; /* Damage message */ char * msg_off; /* Wear off message */ char * component; /* component */ sh_int bon_stat; /* Stat that gives bonus/penalty to prac */ // Skill Tree Info bool isgroup; /* This is a group, not a skill */ sh_int parent; /* Parent group (slot) */ sh_int sibling; /* Previous skill in group required */ sh_int kissing_cousin; /* Related skill required */ sh_int distant_cousin; /* Related skill that gives bonus */ sh_int bastard_child; /* If primary, bastard_child gets penalty */ bool matriarch; /* This is allowed to be primary */ }; /*---------------- * Race Types *---------------*/ struct race_type { char *name; /* call name of the race */ bool pc_race; /* can be chosen by pcs */ long act; /* act bits for the race */ long aff; /* aff bits for the race */ long detect; /* Detect bits for the race */ long protect; /* Protect bits for the race */ long off; /* off bits for the race */ long imm; /* imm bits for the race */ long res; /* res bits for the race */ long vuln; /* vuln bits for the race */ long form; /* default form flag for the race */ long parts; /* default parts for the race */ sh_int encumbrance; /* emcumbrance value */ }; /* We're no longer going to depend on the records to line up between the two race tables. Yay. */ struct pc_race_type /* additional data for pc races */ { char *name; /* MUST be the same as in race_type */ char who_name[10]; sh_int points; /* cost in points of the race */ sh_int maxage; /* Maximum years old */ sh_int startage; /* Starting Age */ sh_int class_mult[MAX_CLASS]; /* exp multiplier for class, * 100 */ // Not used char *skills[5]; /* bonus skills for the race */ int recall; /* room # of this race's recall */ int healer; /* room # of this race's healer */ sh_int stats[MAX_STATS]; /* starting stats */ sh_int max_stats[MAX_STATS]; /* maximum stats */ sh_int size; /* aff bits for the race */ /* size should be on race_type, not pc_race_type */ }; /*------------------- * Note Board Structs *------------------*/ /* Notes */ struct note_data { NOTE_DATA *next; char *sender; char *date; char *to_list; char *subject; char *text; time_t date_stamp; time_t expire; }; /* Data about a board */ struct board_data { char *short_name; /* Max 8 chars */ char *long_name; /* Explanatory text, should be no more than 40 ? chars */ int read_level; /* minimum level to see board */ int write_level; /* minimum level to post notes */ char *names; /* Default recipient */ int force_type; /* Default action (DEF_XXX) */ int purge_days; /* Default expiration */ /* Non-constant data */ NOTE_DATA *note_first; /* pointer to board's first note */ bool changed; /* currently unused */ }; /*----------------------------------------- * Mobs | Chars | Players | Objects | Rooms *----------------------------------------*/ /* An affect */ struct affect_data { AFFECT_DATA *next; sh_int type; sh_int level; sh_int duration; sh_int location; sh_int modifier; sh_int where; /* Added for protect/detect fields */ int bitvector; char *caster; }; /* Improved materials code - Lotherius */ struct material_data { char *name; /* What it is... */ sh_int type; /* the identifier */ long vuln_flag; /* set if applicable, otherwise 0 */ int durable; /* The material's durability */ int difficult; /* Material's repair difficulty */ int pierce; /* Object's resistence to pierce */ int slash; /* To bash */ int bash; /* To slash */ int exotic; /* To exotic */ long flags; /* Material Flags */ }; /* data for wear_info.. unsure where this fits in the organization :) */ struct wear_data { char *name; // Name of the body part or location bool ispart; // Is this a body part? int hitpct; // Percent chance to hit (all must add up to 100%) long wear_flag; // Which piece of armor relates to this body part. long item_flag; // Flag on associated items. long part_req; // Flag required on target to be protected on this part. bool has_ac; // Is this body part protectable by armor (Has its own AC) long supercede; // Wear slot that supercedes this one (is outside of) // // Determines what AC to use and and which eq to damage }; /* * Attribute bonus structures. * Many of these need Implemented, that will wait for Sunder > 2.0 * Of those that are used, they may be underused. * CAVEAT: Not all of this has been done! */ struct str_app_type { sh_int tohit; /* Modifier to chance to hit beyond hitroll */ /* Unused */ sh_int todam; /* Modifier to damage beyond damroll */ /* Unused */ sh_int carry; /* Amount of weight ch can carry */ sh_int wield; /* How large of a weapon ch can wield */ }; struct int_app_type { sh_int learn; /* How well one learns INT based skills */ sh_int mspell; /* Effectiveness of mage-style spells */ sh_int languages; /* Max # of languages ch may learn */ /* Unused */ }; struct wis_app_type { sh_int practice; /* How many practices ch gets per level */ sh_int cspell; /* Effectiveness of cleric-style spells */ sh_int perception; /* Character's perceptiveness */ /* Unused */ }; struct dex_app_type { sh_int defensive; /* Bonus to dodge, parry, etc */ /* Unused */ sh_int dualmod; /* Modifier to dual wielding */ /* Unused */ sh_int xhit; /* Chance for extra attack */ /* Unused */ }; struct con_app_type { sh_int hitp; /* Extra hitpoints upon level */ sh_int shock; /* Modifier to avoid Bad Things (TM) */ /* Unused */ }; //struct cha_app_type /* charisma */ //{ // sh_int bluff; /* Mod to not getting caught by guards when flagged Thief or Killer */ // sh_int charm; /* Mod to how well your charm spells/skills work on others */ // sh_int seduce; /* Mod to not be attacked by mobs of opposite gender */ //}; /* Shops */ struct shop_data { SHOP_DATA *next; /* Next shop in list */ int keeper; /* Vnum of shop keeper mob */ sh_int buy_type [MAX_TRADE]; /* Item types shop will buy */ sh_int profit_buy; /* Cost multiplier for buying */ sh_int profit_sell; /* Cost multiplier for selling */ sh_int open_hour; /* First opening hour */ sh_int close_hour; /* First closing hour */ }; /* Grouping */ struct char_group { struct char_group *next; CHAR_DATA *gch; }; /* Aliases on Players */ struct alias_data { char *name; char *command_string; }; /* Missed Tells */ struct afk_tell_type { char *message; struct afk_tell_type *next; }; /* A kill structure (indexed by level). */ struct kill_data { sh_int number; sh_int killed; }; /* * This structure is used in special.c to lookup spec funcs and * also in olc_act.c to display listings of spec funcs. */ struct spec_type { char * spec_name; SPEC_FUN * spec_fun; }; /* * This structure is used in bit.c to lookup flags and stats. */ struct flag_type { char * name; int bit; bool settable; }; /* Liquids */ struct liq_type { char * liq_name; char * liq_color; sh_int liq_affect[3]; }; /* Extended Descriptions */ struct extra_descr_data { EXTRA_DESCR_DATA *next; /* Next in list */ char *keyword; /* Keyword in look/examine */ char *description; /* What to see */ }; /*------------------- * The Larger Structs *------------------*/ /* * Prototype for a mob. * This is the in-memory version of #MOBILES. */ struct mob_index_data { MOB_INDEX_DATA * next; SPEC_FUN * spec_fun; SHOP_DATA * pShop; PROG_LIST * mprogs; AREA_DATA * area; /* OLC */ int vnum; bool new_format; sh_int count; sh_int killed; char * player_name; /* Odd... why player_name? No players here... */ char * short_descr; char * long_descr; char * description; char * notes; long act; long affected_by; /* Old affected_by */ long detections; /* affected bits 2 */ long protections; /* affected bits 3 */ sh_int alignment; sh_int level; sh_int hitroll; sh_int hit[3]; sh_int mana[3]; sh_int damage[3]; sh_int dam_type; long off_flags; long imm_flags; long res_flags; long vuln_flags; sh_int start_pos; sh_int default_pos; sh_int sex; sh_int race; long gold; long form; long parts; sh_int size; sh_int material; int total_teach_skills; char *teach_skills[MAX_TEACH_SKILLS]; long mprog_flags; }; /* * One character (PC or NPC). Be sure to add fields here always! * Actually, only if you need them for mobs dammit. * Otherwise use pcdata, that's why it's called pcdata! * Need to move a lot of those over to pcdata sometime, the only reason I haven't done so * yet is each requires a lot of sanity checking in the code to keep from trying to access pcdata * on an NPC. * Would save lots of space. */ struct char_data { CHAR_DATA * next; CHAR_DATA * next_in_room; CHAR_DATA * master; CHAR_DATA * leader; CHAR_DATA * fighting; CHAR_DATA * reply; CHAR_DATA * pet; CHAR_DATA * mprog_target; SPEC_FUN * spec_fun; MOB_INDEX_DATA * pIndexData; RESET_DATA * reset; DESCRIPTOR_DATA * desc; AFFECT_DATA * affected; OBJ_DATA * carrying; OBJ_DATA * on; /* furniture */ ROOM_INDEX_DATA * in_room; ROOM_INDEX_DATA * was_in_room; PC_DATA * pcdata; struct char_group *group[MAX_GMEMBERS]; /* Lotherius */ char * name; sh_int version; char * short_descr; char * long_descr; char * description; /* Zeran - orig fields are for polyself spell handling */ char * poly_name; char * short_descr_orig; char * long_descr_orig; char * description_orig; sh_int sex; sh_int race; sh_int level; sh_int trust; int recall_perm; /*vnum of permanent recall room*/ int recall_temp; /*vnum of temp recall room, ie, psychic anchor*/ int played; /* Move to pcdata */ int lines; /* for the pager */ /* Move to pcdata */ time_t logon; /* Move to pcdata */ time_t last_note; /* Move to pcdata */ sh_int note_type; /* Move to pcdata */ sh_int timer; sh_int wait; sh_int hit; sh_int max_hit; sh_int mana; sh_int max_mana; sh_int move; sh_int max_move; long gold; int exp; long act; long comm; /* RT added to pad the vector */ long imm_flags; long res_flags; long vuln_flags; sh_int invis_level; sh_int cloak_level; /* Move to pcdata */ long affected_by; long detections; /* Affected bits 2 */ long protections; /* Affected bits 3 */ sh_int position; sh_int carry_weight; sh_int carry_number; sh_int saving_throw; sh_int alignment; sh_int hitroll; sh_int damroll; sh_int armor; /* Now just armor, for magical modifiers */ sh_int wimpy; /* Move to pcdata */ /* stats */ sh_int perm_stat[MAX_STATS]; sh_int mod_stat[MAX_STATS]; /* parts stuff */ long form; long parts; sh_int size; /* Zeran - added encumbrance */ sh_int encumbrance; sh_int material; /* mobile stuff */ long off_flags; sh_int damage[3]; sh_int dam_type; sh_int start_pos; sh_int default_pos; bool searching; bool quitting; char * speaking; /* Here for the day when mobiles speak their own languages too */ sh_int mprog_delay; }; /* * * Data which only PC's have. * */ struct pc_data { PC_DATA * next; char * pwd; int pwd_tries; char * bamfin; char * bamfout; char * title; char * email; char * immtitle; char * mplaying; /* Music playing, not multi .. heh */ struct alias_data * aliases[MAX_ALIAS]; bool has_alias; struct afk_tell_type * afk_tell_first; struct afk_tell_type * afk_tell_last; sh_int pcrace; /* For pc racetable */ int startyear; int startmonth; int startday; int age_mod; /* for youth spells, etc */ sh_int perm_hit; sh_int perm_mana; sh_int perm_move; sh_int true_sex; bool mortal; /* True for mortal, False for Demi-God */ int last_level; int security; /* OLC */ /* Builder security */ sh_int condition[3]; char * prompt; sh_int learned[MAX_SKILL]; sh_int points; bool confirm_delete; int battle_rating; int pkill_wins; int pkill_losses; int home_room; /*for immortals*/ long mob_rating; /* same as battle rating but for mobs */ long mob_wins; long mob_losses; struct account_type * account; struct clan_main_type * clan; struct clan_main_type * cedit; /* Clan being edited. */ struct clan_main_type * petition; /* Clan trying to join */ sh_int clrank; /* Clan rank */ BOARD_DATA * board; /* The current board */ time_t last_note[MAX_BOARD]; /* last note for the boards */ NOTE_DATA * in_progress; CHAR_DATA * questgiver; long questpoints; sh_int nextquest; sh_int countdown; int questobj; int questmob; long questearned; /* lotherius - total ever earned */ sh_int mvolume; sh_int svolume; sh_int mode; /* MODE... used to flag a few functions */ long bankaccount; sh_int pclass; long notify; long wiznet; sh_int practice; sh_int train; I3_CHARDATA *i3chardata; }; /* * Prototype for an object. */ struct obj_index_data { AREA_DATA *area; OBJ_INDEX_DATA *next; EXTRA_DESCR_DATA *extra_descr; AFFECT_DATA *affected; PROG_LIST * oprogs; long oprog_flags; bool new_format; char * name; char * short_descr; char * description; char * notes; int vnum; sh_int repop; sh_int reset_num; sh_int material; sh_int item_type; int extra_flags; int wear_flags; long vflags; // Flags of this object sh_int level; sh_int condition; sh_int count; sh_int weight; sh_int size; int cost; int value[5]; }; /* * One object. */ struct obj_data { OBJ_DATA * next; OBJ_DATA * next_content; OBJ_DATA * contains; OBJ_DATA * in_obj; CHAR_DATA * on; /* furniture */ CHAR_DATA * carried_by; RESET_DATA * reset; EXTRA_DESCR_DATA * extra_descr; AFFECT_DATA * affected; OBJ_INDEX_DATA * pIndexData; ROOM_INDEX_DATA * in_room; CHAR_DATA * oprog_target; sh_int oprog_delay; bool enchanted; char * owner; /* Current Owner */ char * name; char * short_descr; char * description; int serialnum; sh_int item_type; int extra_flags; int wear_flags; long vflags; sh_int wear_loc; sh_int weight; int cost; sh_int level; sh_int condition; sh_int material; sh_int size; /* Zeran - added for equipment size restrictions */ sh_int timer; int value[5]; int valueorig[5]; /* Zeran - added for condition changes */ char * origin; /* Where the object came from - for lore. autogenerated by code */ }; /* * Exit data. */ struct exit_data { union { ROOM_INDEX_DATA * to_room; int vnum; } u1; sh_int exit_info; int key; char * keyword; char * description; EXIT_DATA * next; int rs_flags; int orig_door; }; /* * Reset commands: * '*': comment * 'M': read a mobile * 'O': read an object * 'P': put object in object * 'G': give object to mobile * 'E': equip object to mobile * 'D': set state of door * 'R': randomize room exits * 'S': stop (end of list) */ /* * Area-reset definition. * Zeran - modified for better functionality */ struct reset_data { RESET_DATA * next; char command; int arg1; int arg2; int arg3; int count; }; /* * Area definition. */ struct area_data { AREA_DATA * next; char * name; int zone; int age; int nplayer; bool empty; char * filename; char * builders; /* Listing of */ char * soundfile; /* The name of the midi for this area */ char * credits; /* Credits */ int security; /* Value 1-9 */ int lvnum; /* Lower vnum */ int uvnum; /* Upper vnum */ int vnum; /* Area vnum */ int llev; /* Low Level Suggested */ int hlev; /* High Level Suggested */ int area_flags; }; struct lease_data { LEASE *next; ROOM_INDEX_DATA *room; struct clan_main_type *clan; bool valid; int room_rent; char *rented_by; bool owner_only; int paid_month; int paid_day; int paid_year; char *lease_descr; char *lease_name; sh_int shop_type; int shop_gold; bool changed; }; /* * Room type. */ struct room_index_data { ROOM_INDEX_DATA *next; CHAR_DATA *people; OBJ_DATA *contents; // AFFECT_DATA *affected; EXTRA_DESCR_DATA *extra_descr; AREA_DATA *area; EXIT_DATA *exit[6]; RESET_DATA *reset_first; RESET_DATA *reset_last; PROG_LIST * rprogs; CHAR_DATA * rprog_target; long rprog_flags; sh_int rprog_delay; char *name; char *description; char *notes; int vnum; int room_flags; sh_int light; sh_int sector_type; LEASE *lease; }; /*------------------- * MobProg Structures *------------------*/ struct prog_list { int trig_type; char * trig_phrase; int vnum; char * code; PROG_LIST * next; bool valid; }; struct prog_code { int vnum; char * code; PROG_CODE * next; }; #endif /* GLOBALMERC_H */