/************************************************************************** * # # # ## # # ### ## ## ### http://www.lyonesse.it * * # # # # # ## # # # # # * * # # # # # ## ## # # ## ## ## # # ## * * # # # # # ## # # # # # # # # # # # * * ### # ## # # ### ## ## ### # # #### ## Ver. 1.0 * * * * -Based on CircleMud & Smaug- Copyright (c) 2001-2002 by Mithrandir * * * * ********************************************************************** */ /* ************************************************************************ * File: db.h Part of CircleMUD * * Usage: header file for database handling * * * * All rights reserved. See license.doc for complete information. * * * * Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University * * CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991. * ************************************************************************ */ /* arbitrary constants used by index_boot() (must be unique) */ #define DB_BOOT_WLD 0 #define DB_BOOT_MOB 1 #define DB_BOOT_OBJ 2 #define DB_BOOT_ZON 3 #define DB_BOOT_SHP 4 #define DB_BOOT_HLP 5 #if defined(CIRCLE_MACINTOSH) #define LIB_WORLD ":world:" #define LIB_TEXT ":text:" #define LIB_TEXT_HELP ":text:help:" #define LIB_MISC ":misc:" #define LIB_ETC ":etc:" #define LIB_PLRTEXT ":plrtext:" #define LIB_PLROBJS ":plrobjs:" #define LIB_PLRALIAS ":plralias:" #define LIB_HOUSE ":house:" #define SLASH ":" #elif defined(CIRCLE_AMIGA) || defined(CIRCLE_UNIX) || defined(CIRCLE_WINDOWS) || defined(CIRCLE_ACORN) || defined(CIRCLE_VMS) #define LIB_WORLD "world/" #define LIB_TEXT "text/" #define LIB_TEXT_HELP "text/help/" #define LIB_MISC "misc/" #define LIB_ETC "etc/" #define LIB_PLRTEXT "plrtext/" #define LIB_PLROBJS "plrobjs/" #define LIB_PLRALIAS "plralias/" #define LIB_PLAYERS "plrsave/" #define LIB_HOUSE "house/" #define LIB_STABLES "stables/" #define LIB_BUILDINGS "buildings/" #define LIB_GOODS "goods/" #define LIB_CLANS "clans/" #define LIB_SHIPS "ships/" #define LIB_AREA "area/" #define LIB_DATA "data/" #define SLASH "/" #else #error "Unknown path components." #endif #define SUF_OBJS "objs" #define SUF_TEXT "text" #define SUF_ALIAS "alias" #define SUF_PLAYERS "txt" #if defined(CIRCLE_AMIGA) #define FASTBOOT_FILE "/.fastboot" /* autorun: boot without sleep */ #define KILLSCRIPT_FILE "/.killscript" /* autorun: shut mud down */ #define PAUSE_FILE "/pause" /* autorun: don't restart mud */ #elif defined(CIRCLE_MACINTOSH) #define FASTBOOT_FILE "::.fastboot" /* autorun: boot without sleep */ #define KILLSCRIPT_FILE "::.killscript" /* autorun: shut mud down */ #define PAUSE_FILE "::pause" /* autorun: don't restart mud */ #else #define FASTBOOT_FILE "../.fastboot" /* autorun: boot without sleep */ #define KILLSCRIPT_FILE "../.killscript" /* autorun: shut mud down */ #define PAUSE_FILE "../pause" /* autorun: don't restart mud */ #endif /* names of various files and directories */ #define INDEX_FILE "index" /* index of world files */ #define MINDEX_FILE "index.mini" /* ... and for mini-mud-mode */ #define WLD_PREFIX LIB_WORLD"wld"SLASH /* room definitions */ #define MOB_PREFIX LIB_WORLD"mob"SLASH /* monster prototypes */ #define OBJ_PREFIX LIB_WORLD"obj"SLASH /* object prototypes */ #define ZON_PREFIX LIB_WORLD"zon"SLASH /* zon defs & command tables */ #define SHP_PREFIX LIB_WORLD"shp"SLASH /* shop definitions */ #define HLP_PREFIX LIB_TEXT"help"SLASH /* for HELP <keyword> */ #define WLS_PREFIX LIB_WORLD"wls"SLASH /* wilderness definitions */ #define BLD_PREFIX LIB_WORLD"bld"SLASH /* For building templates */ #define SHIP_PREFIX LIB_WORLD"ship"SLASH /* For ship templates */ #define CREDITS_FILE LIB_TEXT"credits" /* for the 'credits' command */ #define NEWS_FILE LIB_TEXT"news" /* for the 'news' command */ #define MOTD_FILE LIB_TEXT"motd" /* messages of the day / mortal */ #define IMOTD_FILE LIB_TEXT"imotd" /* messages of the day / immort */ #define GREETINGS_FILE LIB_TEXT"greetings" /* The opening screen. */ #define HELP_PAGE_FILE LIB_TEXT_HELP"screen" /* for HELP <CR> */ #define INFO_FILE LIB_TEXT"info" /* for INFO */ #define WIZLIST_FILE LIB_TEXT"wizlist" /* for WIZLIST */ #define IMMLIST_FILE LIB_TEXT"immlist" /* for IMMLIST */ #define BACKGROUND_FILE LIB_TEXT"background" /* for the background story */ #define POLICIES_FILE LIB_TEXT"policies" /* player policies/rules */ #define HANDBOOK_FILE LIB_TEXT"handbook" /* handbook for new immorts */ #define NEWSPAPER_FILE LIB_TEXT"newspaper" /* Trade Newspaper */ #define IDEA_FILE LIB_MISC"ideas" /* for the 'idea'-command */ #define TYPO_FILE LIB_MISC"typos" /* 'typo' */ #define BUG_FILE LIB_MISC"bugs" /* 'bug' */ #define MESS_FILE LIB_MISC"messages" /* damage messages */ #define SOCMESS_FILE LIB_MISC"socials" /* messages for social acts */ #define XNAME_FILE LIB_MISC"xnames" /* invalid name substrings */ #define MAIL_FILE LIB_ETC"plrmail" /* for the mudmail system */ #define BAN_FILE LIB_ETC"badsites" /* for the siteban system */ #define HCONTROL_FILE LIB_ETC"hcontrol" /* for the house system */ #define TIME_FILE LIB_ETC"time" /* for calendar system */ #define USERCNT_FILE LIB_ETC"usercnt" /* for counting users */ #define CLAN_DIP_FILE LIB_CLANS"clandata" /* stores clan diplomacy data */ #define PLR_INDEX_FILE "plrsave"SLASH"plr_index" #define SECT_FILE LIB_DATA"sectors.data" #define LIFE_FILE LIB_DATA"life.data" /* public procedures in db.c */ CHAR_DATA *create_char(void); CHAR_DATA *read_mobile(mob_vnum nr, int type); ROOM_DATA *get_room(room_vnum vnum); ROOM_DATA *new_room( void ); OBJ_DATA *create_obj(void); OBJ_DATA *read_object(obj_vnum nr, int type); char *fread_string(FILE *fl, const char *error); char *get_name_by_id(long id); int create_entry(char *name); int load_char(char *name, CHAR_DATA *ch); int vnum_mobile(char *searchname, CHAR_DATA *ch); int vnum_object(char *searchname, CHAR_DATA *ch); int vnum_weapon(int attacktype, CHAR_DATA *ch); long get_id_by_name(const char *name); void zone_update(void); void boot_db(void); void save_mud_time(TIME_INFO_DATA *when); void init_char(CHAR_DATA *ch); void clear_char(CHAR_DATA *ch); void reset_char(CHAR_DATA *ch); void free_char(CHAR_DATA *ch); void save_player_index(void); void SaveAll(bool bQuit); void save_char(CHAR_DATA *ch, ROOM_DATA *load_room); void SaveCharObj(CHAR_DATA *ch, bool quitting); void clear_object(OBJ_DATA *obj); void free_obj(OBJ_DATA *obj); zone_rnum real_zone(zone_vnum vnum); mob_rnum real_mobile(mob_vnum vnum); obj_rnum real_object(obj_vnum vnum); char *fread_string_nospace( FILE *fp ); char *fread_line( FILE *fp ); char *fread_word( FILE *fp ); char fread_letter( FILE *fp ); int fread_number( FILE *fp ); void fread_to_eol( FILE *fp ); /* ========================================= */ #define REAL 0 #define VIRTUAL 1 /* structure for the reset commands */ /* ***************************************************************** * Commands: * * * * 'D': Set state of door * * * * 'E': Obj to char equip * * * * 'G': Obj to char * * * * 'H': Random Obj to room * * - arg1 : item type (add 100 for magical item) * * - arg2 : item level * * - arg3 : room vnum * * * * 'I': Random Obj to char * * - arg1 : item type (add 100 for magical item) * * - arg2 : unused * * - arg3 : unused * * * * 'J': Random Obj to char equip * * - arg1 : item type (add 100 for magical item) * * - arg2 : unused * * - arg3 : unused * * * * 'M': Read a mobile * * * * 'O': Read an object * * * * 'P': Put obj in obj * * * * 'R': Remove obj from room * * * * 'Z': Create a maze * * - arg1 : unused * * - arg2 : unused * * - arg3 : unused * * * ***************************************************************** */ struct reset_com { char command; /* current command */ bool if_flag; /* if TRUE: exe only if preceding exe'd */ int arg1; /* */ int arg2; /* Arguments to the command */ int arg3; /* */ int line; /* line number this command appears on */ }; struct zone_wild_data { COORD_DATA z_start; COORD_DATA z_end; char *survey; /* description when see from wilderness */ char *flyto; /* keyword for targeting with dragons */ int dist; /* how far is visible? */ }; /* zone definition structure. for the 'zone-table' */ /* * Reset mode: * 0: Don't reset, and don't update age. * 1: Reset if no PC's are located in zone. * 2: Just reset. */ struct zone_data { RESET_COM *cmd; /* command table for reset */ ZONE_WILD wild; /* wilderness info for zone */ char *name; /* name of this zone */ int lifespan; /* how long between resets (minutes) */ int age; /* current age of this zone (minutes) */ int reset_mode; /* conditions for reset (see below) */ room_vnum bot; /* starting room number for this zone */ room_vnum top; /* upper limit for rooms in this zone */ zone_vnum number; /* virtual number of this zone */ }; /* for queueing zones for update */ struct reset_q_element { RESET_Q_ELEM *next; zone_rnum zone_to_reset; /* ref to zone_data */ }; /* structure for the update queue */ struct reset_q_type { RESET_Q_ELEM *head; RESET_Q_ELEM *tail; }; struct player_index_element { char *name; long id; }; struct help_index_element { char *keyword; char *entry; int duplicate; }; /* don't change these */ #define BAN_NOT 0 #define BAN_NEW 1 #define BAN_SELECT 2 #define BAN_ALL 3 #define BANNED_SITE_LENGTH 50 struct ban_list_element { BAN_LIST_ELEM *next; char site[BANNED_SITE_LENGTH+1]; char name[MAX_NAME_LENGTH+1]; int type; time_t date; }; /* global buffering system */ #ifdef __DB_C__ char buf[MAX_STRING_LENGTH]; char buf1[MAX_STRING_LENGTH]; char buf2[MAX_STRING_LENGTH]; char buf3[MAX_STRING_LENGTH]; char arg[MAX_STRING_LENGTH]; #else extern room_vnum top_of_world; extern obj_rnum top_of_objt; extern mob_rnum top_of_mobt; extern zone_rnum top_of_zone_table; extern int top_of_p_table; extern int top_idnum; extern ROOM_DATA *World[ROOM_HASH]; extern ZONE_DATA *zone_table; extern DESCRIPTOR_DATA *descriptor_list; extern CHAR_DATA *character_list; extern PLAYER_SPECIAL dummy_mob; extern INDEX_DATA *mob_index; extern CHAR_DATA *mob_proto; extern INDEX_DATA *obj_index; extern OBJ_DATA *first_object; extern OBJ_DATA *last_object; extern OBJ_DATA *obj_proto; extern TERRAIN_DATA *terrain_type[MAX_SECT]; extern PLR_INDEX_ELEM *player_table; extern SURVEY_DATA *survey_table; extern ROOM_AFFECT *raff_list; extern ROOM_DATA *r_mortal_start_room; extern ROOM_DATA *r_immort_start_room; extern ROOM_DATA *r_frozen_start_room; extern char buf[MAX_STRING_LENGTH]; extern char buf1[MAX_STRING_LENGTH]; extern char buf2[MAX_STRING_LENGTH]; extern char buf3[MAX_STRING_LENGTH]; extern char arg[MAX_STRING_LENGTH]; extern int Sunlight; extern int MoonPhase; #endif #ifndef __CONFIG_C__ extern char *OK; extern char *NOPERSON; extern char *NOEFFECT; #endif