/************************************************************************
Realms of Aurealis James Rhone aka Vall of RoA
global.h Header file for global.c
******** 100% Completely Original Code ********
*** BE AWARE OF ALL RIGHTS AND RESERVATIONS ***
******** 100% Completely Original Code ********
All rights reserved henceforth.
Please note that no guarantees are associated with any code from
Realms of Aurealis. All code which has been released to the general
public has been done so with an 'as is' pretense. RoA is based on both
Diku and CircleMUD and ALL licenses from both *MUST* be adhered to as well
as the RoA license. *** Read, Learn, Understand, Improve ***
*************************************************************************/
#ifndef ROA_GLOBAL_H
#define ROA_GLOBAL_H
#include "plshop.h"
#include "quest.h"
#include "interpreter.h"
#include "magic.h"
#ifdef __ROA_GLOBAL_C__
#define EXTERN
#define EQ_ZERO = 0
#define EQ_ONE = 1
#else
#define EXTERN extern
#define EQ_ZERO
#define EQ_ONE
#endif /* __ROA_GLOBAL_C__ */
#define MAIN_CONFIG_FILE "config/roa.cfg"
// function prototypes
int load_configuration(BOOL first);
int save_configuration(void);
// G L O B A L V A R I A B L E S
// the spell_info array from magic
EXTERN struct spell_info_type spell_info[MAX_SPELLS];
// global list of skill names, assigned by spello() in sparse
EXTERN char skill_names[MAX_SKILLS][30];
EXTERN char gskill_names[MAX_GSKILLS+1][30];
#define languages gskill_names
EXTERN gskill gs_array[MAX_GSKILLS+1];
// for races and their associated info...
EXTERN rcinfo rcarray[NUM_RACES+1];
// for classes and their associated info...
EXTERN clinfo clarray[NUM_CLASSES+1];
// the memory file ptr
EXTERN FILE *memfp EQ_ZERO;
// the current top of the command table
EXTERN int top_of_cmds EQ_ZERO;
EXTERN struct command_info cmd_info[MAX_CMD_LIST];
EXTERN char local_sockname[64]; // name for local client socket...
EXTERN pid_t cli_router_pid EQ_ZERO;
EXTERN qslot qarray[NUM_QUESTS]; // global quest array
EXTERN clpid_info *cl_pids; // global client PID info
EXTERN struct time_info_data time_info; // global time info
EXTERN struct global_weather_type global_weather; // global weather info
// RoA olc structures used for OLCable help and socials
EXTERN struct roa_social_data roa_socials[MAX_SOCIALS];
EXTERN struct roa_help_data roa_help[MAX_HELPFILES];
EXTERN struct roa_help_data roa_wizhelp[MAX_WIZHELPFILES];
// RoAOLC flag for zone resetting and purging
EXTERN BOOL zlock_reset EQ_ZERO;
// Use/update the wizlist?
EXTERN int use_autowiz EQ_ONE;
EXTERN struct arena_data arena_info; // global Arena info
EXTERN int global_auc_id EQ_ZERO; // global auction id counter
EXTERN aucdata *auction_ptr; // global ptr to auction info list
EXTERN plshop *pls_global; // global ptr to plshop LL
EXTERN struct goss_data latest_gossip[GOSSIP_PAGE_LENGTH]; /* for www gossip */
EXTERN struct who_data who_list[MAX_PLAYERS]; /* struct to store who for sorting */
EXTERN struct message_list fight_messages[MAX_MESSAGES]; /* fighting messages */
// zone globals
EXTERN zndata zone_table[NUM_ZONES]; // array (pre allocated) of zones
EXTERN int zone_levels[NUM_ZONES]; // average levels for each zone
EXTERN struct reset_q_type reset_q; // the reset queue for zone resets
// world/Room globals
EXTERN rmdata *world EQ_ZERO; // list/array of rooms
EXTERN int top_of_sorted_world EQ_ZERO; // top of world loaded at boot time
EXTERN int top_of_world EQ_ZERO; // top of world during runtime
// character globals
EXTERN chdata *character_list EQ_ZERO; // global list of characters
// mobile (npc) globals
EXTERN chdata *mob_proto EQ_ZERO; // list/array of mobile prototypes
EXTERN indexdata *mob_index EQ_ZERO; // indexual data for the mob proto list
EXTERN int top_of_sorted_mobt EQ_ZERO; // top of mob_proto loaded at bootup
EXTERN int top_of_mobt EQ_ZERO; // top of mob_proto list during runtime
EXTERN struct pc_special_data dummy_mob; // filler pc_special struct for mobs
// all mob_protos point to this dummy
// object globals
EXTERN obdata *object_list EQ_ZERO; // global list of objects
EXTERN obdata *obj_proto EQ_ZERO; // list/array of object prototypes
EXTERN indexdata *obj_index EQ_ZERO; // indexual data for the obj proto list
EXTERN int top_of_sorted_objt EQ_ZERO; // top of obj_proto loaded at bootup
EXTERN int top_of_objt EQ_ZERO; // top of obj_protos during runtime
// player file globals
EXTERN struct player_index_element *player_table EQ_ZERO; /* index to player file */
EXTERN FILE *player_fl EQ_ZERO; /* file desc of player file */
EXTERN int top_of_p_table EQ_ZERO; /* ref to top of table */
EXTERN int top_of_p_file EQ_ZERO; /* ref of size of p file */
EXTERN long top_idnum EQ_ZERO; /* highest idnum in use */
// runtime globals
EXTERN int no_mail EQ_ONE; /* mail disabled? */
EXTERN int mini_mud EQ_ZERO; /* mini-mud mode? */
EXTERN int no_rent_check EQ_ZERO; /* skip rent check on boot? */
EXTERN long boot_time EQ_ZERO; /* time of mud boot */
EXTERN int restrict EQ_ZERO; /* level of game restriction */
EXTERN int max_on EQ_ZERO; /* max # ppl on this boot */
// default start rooms for people (RNUMs)
EXTERN int r_mortal_start_room; /* rnum of mortal start room */
EXTERN int r_immort_start_room; /* rnum of immort start room */
EXTERN int r_frozen_start_room; /* rnum of frozen start room */
EXTERN int r_newbie_start_room; /* rnum of newbie start room */
EXTERN int mortal_start_room; /* rnum of mortal start room */
EXTERN int immort_start_room; /* rnum of immort start room */
EXTERN int frozen_start_room; /* rnum of frozen start room */
EXTERN int newbie_start_room; /* rnum of newbie start room */
// various global string values, allocated in this file
// some are OLCable now via the RoAOLC texedit code
EXTERN char *credits EQ_ZERO; /* game credits */
EXTERN char *credit_sequence EQ_ZERO; /* game credit sequence */
EXTERN char *races EQ_ZERO; // small help file on races
EXTERN char *title0 EQ_ZERO; // mud title screen
EXTERN char *title1 EQ_ZERO; // mud title screen
EXTERN char *title2 EQ_ZERO; // mud title screen
EXTERN char *title3 EQ_ZERO; // mud title screen
EXTERN char *title4 EQ_ZERO; // mud title screen
EXTERN char *title5 EQ_ZERO; // mud title screen
EXTERN char *news EQ_ZERO; /* mud news */
EXTERN char *motd EQ_ZERO; /* message of the day - mortals */
EXTERN char *imotd EQ_ZERO; /* message of the day - immorts */
EXTERN char *info EQ_ZERO; /* info page */
EXTERN char *wizlist EQ_ZERO; /* list of higher gods */
EXTERN char *immlist EQ_ZERO; /* list of peon gods */
EXTERN char *background EQ_ZERO; /* background story */
EXTERN char *handbook EQ_ZERO; /* handbook for new immortals */
EXTERN char *policies EQ_ZERO; /* policies page */
EXTERN char *welcome EQ_ZERO; /* per login welcome msg */
EXTERN char *start EQ_ZERO; /* newbie 1st time msg */
EXTERN char *VTMENU EQ_ZERO; /* vt100 entrance menu */
EXTERN char *MENU EQ_ZERO; /* normal entrance menu */
// globals initialized by init_globals in global.c
EXTERN int level_can_shout;
EXTERN int holler_move_cost;
EXTERN int max_npc_corpse_time;
EXTERN int max_pc_corpse_time;
EXTERN int auto_save;
EXTERN int autosave_time;
EXTERN int nameserver_is_slow;
EXTERN int bin_socials;
EXTERN int min_wizlist_lev;
EXTERN int requirelongdesc;
EXTERN int mailcost;
EXTERN int maxnewbielevel;
EXTERN int minforarenawin;
EXTERN int maxfleeexploss;
EXTERN int maxdeathexploss;
EXTERN int max_aliases;
EXTERN int train_pracs;
EXTERN int useglobals; // use global channels?
EXTERN char *shortmudname;
EXTERN char *longmudname;
EXTERN char *currency_name;
EXTERN char *currency_name_plural;
EXTERN char *impname;
EXTERN char *cimpname;
EXTERN char *aimpname;
EXTERN char *godname;
EXTERN char *avtrname;
EXTERN char *trustedname;
EXTERN char *ambassname;
// for external editor
EXTERN char *spico_path;
// version info
EXTERN char *RoA_version;
EXTERN char *OLC_version;
// WWW info
EXTERN char *www_page;
EXTERN char *www_mailto;
EXTERN char *www_contact_name;
#undef EXTERN
#endif /* ROA_GLOBAL_H */