/* ************************************************************************
* File: db.h EmpireMUD AD 1.0 *
* Usage: header file for database handling *
* *
* All rights reserved. See license.doc for complete information. *
* *
* Code base by Paul Clarke. EmpireMUD Project, a tbgMUD Production. *
* Based upon CircleMUD 3.0, beta patch level 17, by Jeremy Elson. *
* *
* 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_EMP 4
#define LIB_WORLD "world/"
#define LIB_TEXT "text/"
#define LIB_TEXT_HELP "text/help/"
#define LIB_MISC "misc/"
#define LIB_ETC "etc/"
#define LIB_BOARD "boards/"
#define LIB_PLRTEXT "plrtext/"
#define LIB_PLROBJS "plrobjs/"
#define LIB_PLRALIAS "plralias/"
#define LIB_OBJPACK "packs/"
#define LIB_EMPIRE "empires/"
#define LIB_PLRREC "plrrec/"
#define LIB_PLRLORE "plrlore/"
#define SUF_OBJS "objs"
#define SUF_TEXT "text"
#define SUF_ALIAS "alias"
#define SUF_PACK "pack"
#define SUF_EMPIRE "empire"
#define SUF_REC "rec"
#define SUF_LORE "lore"
#define KILLSCRIPT_FILE "../.killscript" /* autorun: shut mud down */
#define PAUSE_FILE "../pause" /* autorun: don't restart mud */
/* names of various files and directories */
#define INDEX_FILE "index" /* index of world files */
#define WLD_PREFIX LIB_WORLD"wld/" /* room definitions */
#define MOB_PREFIX LIB_WORLD"mob/" /* monster prototypes */
#define OBJ_PREFIX LIB_WORLD"obj/" /* object prototypes */
#define ZON_PREFIX LIB_WORLD"zon/" /* zon defs & command tables */
#define HLP_PREFIX LIB_TEXT"help/" /* for HELP <keyword> */
#define CREDITS_FILE LIB_TEXT"credits" /* for the 'credits' command */
#define SCREDITS_FILE LIB_TEXT"credits.short" /* short version of credits */
#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 MENU_FILE LIB_TEXT"menu" /* The main menu 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 GODLIST_FILE LIB_TEXT"godlist" /* for GODLIST */
#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 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" /* messgs for social acts */
#define XNAME_FILE LIB_MISC"xnames" /* invalid name substrings */
#define PLAYER_FILE LIB_ETC"players" /* the player database */
#define MAIL_FILE LIB_ETC"plrmail" /* for the mudmail system */
#define BAN_FILE LIB_ETC"badsites" /* for the siteban system */
#define TIME_FILE LIB_ETC"time" /* for recording the big bang */
#define EXP_FILE LIB_ETC"exp_cycle" /* for experience cycling */
#define NUM_ZONE_UPDATES 10
/* public procedures in db.c */
void boot_db(void);
int create_entry(char *name);
void zone_update(bool all);
room_rnum real_room(room_vnum vnum);
char *fread_string(FILE *fl, char *error);
long get_id_by_name(char *name);
char *get_name_by_id(long id);
void char_to_store(Creature ch, struct char_file_u *st);
void store_to_char(struct char_file_u *st, Creature ch);
int load_char(char *name, struct char_file_u *char_element);
void init_char(Creature ch);
struct char_data* create_char(void);
Creature read_mobile(mob_vnum nr, int type);
mob_rnum real_mobile(mob_vnum vnum);
int vnum_mobile(char *searchname, Creature ch);
void clear_char(Creature ch);
void reset_char(Creature ch);
void free_char(Creature ch);
Object create_obj(void);
void clear_object(Object obj);
void free_obj(Object obj);
obj_rnum real_object(obj_vnum vnum);
Object read_object(obj_vnum nr, int type);
int vnum_object(char *searchname, Creature ch);
#define REAL 0
#define VIRTUAL 1
/* structure for the reset commands */
struct reset_com {
char command; /* current command */
int arg1; /* */
int arg2; /* Arguments to the command */
};
/* zone definition structure. for the 'zone-table' */
struct zone_data {
room_vnum top; /* upper limit for rooms in this zone */
zone_vnum number; /* virtual number of this zone */
struct reset_com *cmd; /* command table for reset */
byte rotation;
};
struct player_index_element {
char *name;
long id;
};
struct help_index_element {
char *keyword;
char *entry;
int level;
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 {
char site[BANNED_SITE_LENGTH+1];
int type;
time_t date;
char name[MAX_NAME_LENGTH+1];
struct ban_list_element *next;
};
/* global buffering system */
#ifdef __DB_C__
char buf[MAX_STRING_LENGTH];
char buf1[MAX_STRING_LENGTH];
char buf2[MAX_STRING_LENGTH];
char arg[MAX_STRING_LENGTH];
#else
extern struct player_special_data dummy_mob;
extern char buf[MAX_STRING_LENGTH];
extern char buf1[MAX_STRING_LENGTH];
extern char buf2[MAX_STRING_LENGTH];
extern char arg[MAX_STRING_LENGTH];
#endif
#ifndef __CONFIG_C__
extern char *OK;
extern char *NOPERSON;
extern char *NOEFFECT;
extern char *HUH;
#endif
extern int real_zone(int number);
extern int Global_ignore_dark;
/* Global Externs, for Convenience */
extern Room world;
extern struct zone_data *zone_table;
extern Descr descriptor_list;
extern Creature character_list;
extern struct index_data *mob_index;
extern Object object_list;
extern struct index_data *obj_index;
extern zone_rnum top_of_zone_table;
extern mob_rnum top_of_mobt;
extern obj_rnum top_of_objt;
extern room_rnum top_of_world;