wileymud-1.187b/
wileymud-1.187b/attic/
wileymud-1.187b/attic/bin/
wileymud-1.187b/attic/lib/
wileymud-1.187b/attic/lib/adm/
wileymud-1.187b/attic/lib/man/
wileymud-1.187b/attic/lib/new-wld/
wileymud-1.187b/attic/lib/new-wld/default/
wileymud-1.187b/attic/lib/old/
wileymud-1.187b/attic/lib/wld/
wileymud-1.187b/attic/public_html/
wileymud-1.187b/attic/public_html/gfx/
wileymud-1.187b/attic/src/bin/
wileymud-1.187b/attic/src/etc/
wileymud-1.187b/attic/src/libauth-4.0-p5/
wileymud-1.187b/attic/src/sedna/
wileymud-1.187b/backups/
wileymud-1.187b/bin/
wileymud-1.187b/docs/
wileymud-1.187b/etc/
wileymud-1.187b/lib/
wileymud-1.187b/lib/adm/
wileymud-1.187b/lib/boards/
wileymud-1.187b/lib/log/
wileymud-1.187b/lib/man/
wileymud-1.187b/lib/ply/
wileymud-1.187b/lib/ply/a/
wileymud-1.187b/lib/ply/b/
wileymud-1.187b/lib/ply/c/
wileymud-1.187b/lib/ply/d/
wileymud-1.187b/lib/ply/g/
wileymud-1.187b/lib/ply/k/
wileymud-1.187b/lib/ply/m/
wileymud-1.187b/lib/ply/s/
wileymud-1.187b/lib/ply/t/
wileymud-1.187b/public_html/gfx/
wileymud-1.187b/src/bin/
wileymud-1.187b/src/convert/attic/
wileymud-1.187b/src/convert/obj/
wileymud-1.187b/src/convert/perl/
wileymud-1.187b/src/convert/perl/MudConvert/
wileymud-1.187b/src/convert/perl/MudConvert/DUMP/
wileymud-1.187b/src/convert/perl/MudConvert/Report/
wileymud-1.187b/src/convert/perl/MudConvert/WileyMUD/
wileymud-1.187b/src/convert/perl/output/
wileymud-1.187b/src/convert/perl/output/DUMP/
wileymud-1.187b/src/convert/perl/output/Report/
wileymud-1.187b/src/convert/perl/output/WileyMUD/
wileymud-1.187b/src/etc/
wileymud-1.187b/src/etc/init.d/
wileymud-1.187b/src/etc/rc.d/
wileymud-1.187b/src/etc/rc.d/init.d/
wileymud-1.187b/src/lib/
wileymud-1.187b/src/lib/adm/
wileymud-1.187b/src/lib/boards/
wileymud-1.187b/src/lib/log/
wileymud-1.187b/src/lib/man/
wileymud-1.187b/src/lib/ply/
wileymud-1.187b/src/lib/ply/a/
wileymud-1.187b/src/lib/ply/b/
wileymud-1.187b/src/lib/ply/c/
wileymud-1.187b/src/lib/ply/d/
wileymud-1.187b/src/lib/ply/e/
wileymud-1.187b/src/lib/ply/f/
wileymud-1.187b/src/lib/ply/g/
wileymud-1.187b/src/lib/ply/h/
wileymud-1.187b/src/lib/ply/i/
wileymud-1.187b/src/lib/ply/j/
wileymud-1.187b/src/lib/ply/k/
wileymud-1.187b/src/lib/ply/l/
wileymud-1.187b/src/lib/ply/m/
wileymud-1.187b/src/lib/ply/n/
wileymud-1.187b/src/lib/ply/o/
wileymud-1.187b/src/lib/ply/p/
wileymud-1.187b/src/lib/ply/q/
wileymud-1.187b/src/lib/ply/r/
wileymud-1.187b/src/lib/ply/s/
wileymud-1.187b/src/lib/ply/t/
wileymud-1.187b/src/lib/ply/u/
wileymud-1.187b/src/lib/ply/v/
wileymud-1.187b/src/lib/ply/w/
wileymud-1.187b/src/lib/ply/x/
wileymud-1.187b/src/lib/ply/y/
wileymud-1.187b/src/lib/ply/z/
wileymud-1.187b/src/obj/
wileymud-1.187b/src/utils/
wileymud-1.187b/src/utils/mobmaker/
/*
 * file: db.h , Database module.                          Part of DIKUMUD
 * Usage: Loading/Saving chars booting world.
 */

#ifndef _DB_H
#define _DB_H

/* data files used by the game system */

#define DFLT_DIR          "../lib"			       /* default data directory */
#define WORLD_FILE        "wld/tinyworld.wld"		       /* room definitions */
#define MOB_FILE          "wld/tinyworld.mob"		       /* monster prototypes */
#define OBJ_FILE          "wld/tinyworld.obj"		       /* object prototypes */
#define ZONE_FILE         "wld/tinyworld.zon"		       /* zone defs & command tables */
#define SHOP_FILE	  "wld/tinyworld.shp"
#define CREDITS_FILE      "etc/credits"			       /* for the 'credits' command */
#define NEWS_FILE         "etc/news"			       /* for the 'news' command */
#define MOTD_FILE         "etc/motd"			       /* messages of today */
#define WMOTD_FILE        "etc/wmotd"			       /* messages of today */
#define GREETINGS_FILE    "etc/greetings"
#define LOGIN_MENU_FILE   "etc/login.menu"
#define SEX_MENU_FILE     "etc/sex.menu"
#define RACE_MENU_FILE    "etc/race.menu"
#define CLASS_MENU_FILE   "etc/class.menu"
#define RACE_HELP_FILE    "etc/race.help"
#define CLASS_HELP_FILE   "etc/class.help"
#define STORY_FILE        "etc/story"
#define SUICIDE_WARN_FILE "etc/suicide.warn"
#define SUICIDE_DONE_FILE "etc/suicide.done"
#define PLAYER_FILE       "adm/players"			       /* the player database */
#define TIME_FILE         "etc/time"			       /* game calendar information */
#define MESS_FILE         "etc/messages"		       /* damage message */
#define SOCMESS_FILE      "etc/actions"			       /* messgs for social acts */
#define INFO_FILE         "etc/info"			       /* for INFO */
#define WIZLIST_FILE      "etc/wizlist"			       /* for WIZLIST */
#define POSEMESS_FILE     "etc/poses"			       /* for 'pose'-command */
#define HELP_KWRD_FILE    "man/help_table"		       /* for HELP <keywrd> */
#define HELP_PAGE_FILE    "man/help"			       /* for HELP <CR> */
#define WIZHELP_KWRD_FILE "man/wizhelp_table"		       /* for WIZHELP <keywrd> */
#define WIZHELP_PAGE_FILE "man/wizhelp"			       /* for WIZHELP <CR> */
#define BOARD_FILE_PATH   "boards"
#define OBJ_SAVE_FILE	  "ply/pcobjs.obj"
#define MKZONE_PATH	  "wld/mkzone"
#define IDEA_FILE         "log/ideas"			       /* for the 'idea'-command */
#define TYPO_FILE         "log/typos"			       /* 'typo' */
#define BUG_FILE          "log/bugs"			       /* 'bug' */
#define REBOOT_FILE	  "adm/reboot"
#define REBOOTTIME_FILE	  "adm/reboot.times"
#define PASSWD_FILE       "adm/passwd"
#define PASSWD_NEW        "adm/passwd.new"
#define PASSWD_OFF        "adm/passwd.off"
#define RENTCOST_FILE     "adm/rent"

#define DEFAULT_HOME		3001			       /* when a player is created */

#define KEY(literal, field, value) \
if (!str_cmp((word), (literal))) { \
  field  = (value); \
  fMatch = TRUE; \
  break; \
}

#define CKEY(literal, field, value) \
if (!str_cmp((word), (literal))) { \
  char *v; \
  v= (value); \
  strcpy((field), v?v:""); \
  fMatch = TRUE; \
  break; \
}

#define SKEY(string, field) { \
  if (!str_cmp((word), (string))) { \
    if(field) free(field); \
    field = fread_string(fp); \
    fMatch = TRUE; \
    break; \
  } \
}

#define REAL 0
#define VIRTUAL 1

#define LOG_ZONE_ERROR(ch, type, zone, cmd) {\
  log_error("error in zone %s cmd %d (%c) resolving %s number", \
    zone_table[zone].name, cmd, ch, type); \
  }

#define ZO_DEAD  999
#define ZCMD zone_table[zone].cmd[cmd_no]
#define ZNAME zone_table[zone].name

/* structure for the reset commands */
struct reset_com {
  char                                    command;	       /* current command */
  char                                    if_flag;	       /* if TRUE: exe only if preceding exe'd */
  int                                     arg1;		       /* */
  int                                     arg2;		       /* Arguments to the command */
  int                                     arg3;		       /* */

  /*
   * *  Commands:              *
   * *  'M': Read a mobile     *
   * *  'O': Read an object    *
   * *  'L': Has a leader      *
   * *  'G': Give obj to mob   *
   * *  'P': Put obj in obj    *
   * *  'G': Obj to char       *
   * *  'E': Obj to char equip *
   * *  'D': Set state of door *
   */
};

/* zone definition structure. for the 'zone-table'   */
struct zone_data {
  char                                   *name;		       /* name of this zone */
  int                                     lifespan;	       /* how long between resets (minutes) */
  int                                     age;		       /* current age of this zone (minutes) */
  int                                     top;		       /* upper limit for rooms in this zone */

  int                                     reset_mode;	       /* conditions for reset (see below) */
  struct reset_com                       *cmd;		       /* command table for reset */

  /*
   * *  Reset mode:                              *
   * *  0: Don't reset, and don't update age.    *
   * *  1: Reset if no PC's are located in zone. *
   * *  2: Just reset.                           *
   */
};

/* element in monster and object index-tables   */
struct index_data {
  int                                     virtual;	       /* virtual number of this mob/obj */
  long                                    pos;		       /* file position of this field */
  int                                     number;	       /* number of existing units of this mob/obj */
  ifuncp                                  func;
  char                                   *name;
};

struct obj_index_data {
  int                                     virtual;	       /* virtual number of this mob/obj */
  long                                    pos;		       /* file position of this field */
  int                                     number;	       /* number of existing units of this mob/obj */
  ifuncp                                  func;
  char                                   *name;
  struct obj_data                        *template;	       /* for preloading of objects */
};

/* for queueing zones for update   */
struct reset_q_element {
  int                                     zone_to_reset;       /* ref to zone_data */
  struct reset_q_element                 *next;
};

/* structure for the update queue     */
struct reset_q_type {
  struct reset_q_element                 *head;
  struct reset_q_element                 *tail;
};							       /* reset_q; */

struct player_index_element {
  char                                   *name;
  int                                     nr;
};

struct help_index_element {
  char                                   *keyword;
  long                                    pos;
};

struct player_list_entry {
  char                                  name[80];
  char                                  last_site[80];
  char                                  last_login[80];
  int                                   max_level;
};

#ifndef _DB_C
extern int                              top_of_world;
extern struct hash_header               room_db;
extern struct reset_q_type              reset_q;

extern struct obj_data                 *object_list;
extern struct char_data                *character_list;

extern struct zone_data                *zone_table;
extern int                              top_of_zone_table;
extern struct message_list              fight_messages[MAX_MESSAGES];
extern struct player_index_element     *player_table;
extern int                              top_of_p_table;
extern int                              top_of_p_file;

extern char                             credits[MAX_STRING_LENGTH];
extern char                             news[MAX_STRING_LENGTH];
extern char                             motd[MAX_STRING_LENGTH];
extern char                             help[MAX_STRING_LENGTH];
extern char                             wizhelp[MAX_STRING_LENGTH];
extern char                             info[MAX_STRING_LENGTH];
extern char                             wizlist[MAX_STRING_LENGTH];
extern char                             wmotd[MAX_STRING_LENGTH];
extern char                             greetings[MAX_STRING_LENGTH];
extern char                             login_menu[MAX_STRING_LENGTH];
extern char                             sex_menu[MAX_STRING_LENGTH];
extern char                             race_menu[MAX_STRING_LENGTH];
extern char                             class_menu[MAX_STRING_LENGTH];
extern char                             race_help[MAX_STRING_LENGTH];
extern char                             class_help[MAX_STRING_LENGTH];
extern char                             the_story[MAX_STRING_LENGTH];
extern char                             suicide_warn[MAX_STRING_LENGTH];
extern char                             suicide_done[MAX_STRING_LENGTH];

extern FILE                            *mob_f;
extern FILE                            *obj_f;
extern FILE                            *help_fl;
extern FILE                            *wizhelp_fl;

extern struct index_data               *mob_index;
extern struct index_data               *obj_index;
extern struct help_index_element       *help_index;
extern struct help_index_element       *wizhelp_index;

extern int                              top_of_mobt;
extern int                              top_of_objt;
extern int                              top_of_helpt;
extern int                              top_of_wizhelpt;

extern struct time_info_data            time_info;
extern struct weather_data              weather_info;

extern char                             TMPbuff[1620];
extern int                              TMPbuff_ptr;
extern int                              ROOMcount;
extern int                              GLINEcount;
extern int                              LASTroomnumber;

extern char                           **list_of_players;
extern int                              number_of_players;
extern int                              actual_players;

#endif

void                                    load_db(void);
void                                    unload_db(void);

#if 0
void                                    build_player_index(void);

#endif
struct index_data                      *generate_indices(FILE * fl, int *top);
void                                    cleanout_room(struct room_data *rp);
void                                    completely_cleanout_room(struct room_data *rp);
void                                    load_one_room(FILE * fl, struct room_data *rp);
void                                    boot_world(void);
void                                    allocate_room(int room_number);
void                                    setup_dir(FILE * fl, int room, int dir);
void                                    renum_zone_table(void);
void                                    boot_zones(void);
void                                    fread_dice(FILE * fp, long int *x, long int *y,
						   long int *z);
struct char_data                       *read_mobile(int nr, int type);
struct obj_data                        *read_object(int nr, int type);
void                                    zone_update(void);
void                                    reset_zone(int zone);
int                                     is_empty(int zone_nr);
int                                     load_char(char *name, struct char_file_u *char_element);
void                                    store_to_char(struct char_file_u *st,
						      struct char_data *ch);
void                                    char_to_store(struct char_data *ch,
						      struct char_file_u *st);
int                                     create_entry(char *name);
void                                    save_char(struct char_data *ch, short int load_room);
void                                    new_save_char(struct char_file_u *ch, char *filename, struct char_data *xch);
int                                     compare(struct player_index_element *arg1,
						struct player_index_element *arg2);
void                                    free_char(struct char_data *ch);
void                                    free_obj(struct obj_data *obj);
int                                     file_to_string(const char *name, char *buf);
int                                     file_to_prompt(const char *name, char *buf);
void                                    reset_char(struct char_data *ch);
void                                    clear_char(struct char_data *ch);
void                                    clear_object(struct obj_data *obj);
void                                    init_char(struct char_data *ch);
struct room_data                       *real_roomp(int virtual);
int                                     real_mobile(int virtual);
int                                     real_object(int virtual);

char                                   *fix_string(const char *str);
char                                   *fread_string(FILE * fl);
char                                   *fread_word(FILE * fp);
int                                     fread_number(FILE * fp);
void                                    fread_to_eol(FILE * fp);
int                                     fread_char(char *name,
						   struct char_file_u *char_element,
                                                   struct char_data *xch);
char                                   *new_fread_string(FILE * fp);

#endif