dawn/notes/
dawn/src/
dawn/src/docs/
/**************************************************************************/
// global.h - Global variable system details see below
/***************************************************************************
 * The Dawn of Time v1.69r (c)1997-2004 Michael Garratt                    *
 * >> A number of people have contributed to the Dawn codebase, with the   *
 *    majority of code written by Michael Garratt - www.dawnoftime.org     *
 * >> To use this source code, you must fully comply with the dawn license *
 *    in licenses.txt... In particular, you may not remove this copyright  *
 *    notice.                                                              *
 **************************************************************************/
/***************************************************************************
 *  FILE: global.h - To add a global just add a SINGLE entry into 
 *        global.h prefixed with the word EXTERN (all uppercase)... 
 *        compiler macros do the rest.
 ***************************************************************************/
#ifndef GLOBAL_H
#define GLOBAL_H

EXTERN  MOOT_DATA *moot;
EXTERN  char EXE_FILE[30];
EXTERN  char MACHINE_NAME[MSL];
EXTERN  char PLATFORM_INFO[2048];

// for do_count - act_info.c 
EXTERN  int max_on;
EXTERN  int true_count;
EXTERN  time_t          maxon_time;				// Time of master maxon
EXTERN  int				hotrebootmaxon;         // maxon since last hotreboot
EXTERN  time_t          hotrebootmaxon_time;    // maxon since last hotreboot 
                                                // was at what time

EXTERN  connection_data *   connection_free;	// Free list for connections
EXTERN  connection_data *   connection_list;    // All open connections
EXTERN  connection_data *   c_next; // the next connection used in a number of loops

EXTERN  char_data *			player_list;
EXTERN  race_data *			race_list;

// Reserved file handles
// - Secondary is reserved so we can do 2 lots of file io - in handler.c
EXTERN  FILE *          fpReserve;
EXTERN  FILE *          fpAppend2FilReserve;
EXTERN  FILE *          fpReserveFileExists;

EXTERN  RUNLEVEL_TYPE	runlevel;				// Used to mark bootup, mainloop and shutdown
EXTERN  char            str_boot_time[MIL];
EXTERN  time_t          boot_time;              // Time we last hotrebooted
EXTERN  time_t          lastreboot_time;         // Time we started up 
EXTERN  time_t          current_time;           // time of this pulse
EXTERN  long            tick_counter;           // counter of the ticks
EXTERN  int             note_notify_counter;    // notification of new mail
EXTERN  char            shutdown_filename[MSL];
EXTERN  bool            MOBtrigger;             // act() switch
EXTERN  int				mainport;               // the mainport value specified on startup
EXTERN  int				parsed_mainport;               // the mainport value specified on startup

EXTERN  int				resolver_stdinout;			// Pipe to hostname lookup resolver stdin/stdout
EXTERN  int				resolver_stderr;		// Pipe to hostname lookup resolver stderr
EXTERN  int				resolver_version;		// resolver version, * 1000
EXTERN  int				resolver_running;

EXTERN  bool            fBootTestOnly;	// used to check if the mud will bootup

EXTERN	DEITY_DATA	*	deity_first;
EXTERN	DEITY_DATA	*	deity_last;

// area related
EXTERN  AREA_DATA *     area_first;
EXTERN  AREA_DATA *     area_vnumsort_first;
EXTERN  AREA_DATA *     area_levelsort_first;
EXTERN  AREA_DATA *     area_arealist_first;
EXTERN  AREA_DATA *     area_last;
EXTERN  SHOP_DATA *     shop_last;
EXTERN	cInnData*		pLastInn;
EXTERN  int	resaveCounter;

// moons code - affects casting level of mages
EXTERN  int		moon_day;	// 1->28
EXTERN  int     moon_month;	// 1-12
EXTERN  int     moon_cast_modifier;

// MPINFO stuff - program_flow() callstack stuff
EXTERN  vn_int callstack_pvnum[MAX_CALL_LEVEL];
EXTERN  vn_int callstack_mvnum[MAX_CALL_LEVEL];
EXTERN  vn_int callstack_rvnum[MAX_CALL_LEVEL];
EXTERN  vn_int callstack_line[MAX_CALL_LEVEL];
EXTERN  bool callstack_aborted[MAX_CALL_LEVEL];
EXTERN  int call_level; // Keep track of nested "mpcall"s
EXTERN  bool mobprog_preventtrain_used;
EXTERN  bool mobprog_preventprac_used;


EXTERN  sh_int		top_helpfile;

// WEBSERVER related
//EXTERN  bool webRunning;
EXTERN  int  webHits;
EXTERN  int  webHelpHits;
EXTERN  int  webWhoHits;

// DEFAULT CHARACTER TEMPLATES
EXTERN  char_data * chImmortal;

// mudftp code
EXTERN  int ftp_control;

// pkill port details
EXTERN  int p9999maxpk, p9999maxpklevel;
EXTERN  char p9999maxpkname[50];
EXTERN  int p9999maxpd, p9999maxpdlevel;
EXTERN  char p9999maxpdname[50];

// GSN numbers - being moved into here
#include "gsn.h"

// races stuff
EXTERN  int total_npcracescount;
EXTERN  int total_npcareacount;

// log memory
EXTERN  bool log_memory;
EXTERN  int free_mem_count;
EXTERN  int alloc_mem_count;

// linked list of all pMobIndex records
EXTERN  MOB_INDEX_DATA *pMobIndexlist;

// disabled commands system
EXTERN  DISABLED_DATA *disabled_first; 

// new dynamic skill system
EXTERN  sh_int	FIRST_SPELL;
EXTERN  sh_int	LAST_SPELL;
EXTERN  sh_int	SKILL_TABLE_FLAGS;
EXTERN  sh_int	TOP_SKILL;

// supports letgain system
EXTERN  letgain_data *letgain_list;

// dyn command related
EXTERN	sh_int	COM_TABLE_FLAGS;
EXTERN	sh_int	DEITY_FLAGS;
EXTERN	sh_int	HERB_FLAGS;
EXTERN	sh_int	MIX_FLAGS;
EXTERN	sh_int	CLAN_FLAGS;
EXTERN	sh_int	SKILLGROUPEDIT_FLAGS;

// olc based resave flags
EXTERN	bool	LANGUAGE_NEEDS_SAVING;

// classedit related globals
EXTERN  sh_int	CLASS_TABLE_FLAGS;

// DEBUG system - COMMANDS IN DEBUG TO ALLOW YOU TO SET THE ROOM, OBJ, MOB
//                THEN USE 'MAKECOREFILE' TO HAVE A LOOKY AT WHAT YOU HAVE SET
EXTERN	ROOM_INDEX_DATA *DEBUG_ROOM;
EXTERN	char_data		*DEBUG_MOB;
EXTERN	OBJ_DATA		*DEBUG_OBJECT;

EXTERN	vn_int			DEBUG_LAST_NON_EXISTING_REQUESTED_ROOM_VNUM;
EXTERN	vn_int			DEBUG_LAST_NON_EXISTING_REQUESTED_OBJECT_VNUM;
EXTERN	vn_int			DEBUG_LAST_NON_EXISTING_REQUESTED_MOBILE_VNUM;

// check_immtalk system
EXTERN	char check_immtalk_replay_text[MAX_CHECK_IMMTALK][MIL+30];
EXTERN	int check_immtalk_replay_index;

// use command tail to record the last commands leading up to a crash 
// - olc or interp based
EXTERN char inputtail[MAX_INPUTTAIL][MIL+250]; // 250 bytes for details
EXTERN int inputtail_index;

EXTERN char temp_HSL_workspace[HSL];
EXTERN int mobprog_count;

EXTERN mob_index_data *limbo_mob_index_data; // used when we need a temp mob template 

// Array of containers read for proper re-nesting of objects.
EXTERN OBJ_DATA *   rgObjNest[MAX_NEST];

// raceedit stuff
EXTERN  sh_int	RACEEDIT_FLAGS;
EXTERN  class race_data** race_table; // dynamically allocated

EXTERN  bool EXECUTING_SOCIAL;
EXTERN  bool RECORD_TO_REPLAYROOM;

// channeloff macros use the following variable to avoid following a null pointer
EXTERN  long __CHANNEL_OFF_CRASH_PROTECTOR_VARIABLE;

EXTERN  continent_type *continent_list;

EXTERN  int lockers_total_count;
EXTERN  int lockers_object_count;

// system languages
EXTERN  language_data *language_unknown;
EXTERN  language_data *language_native;
EXTERN  language_data *language_alwaysunderstood;
EXTERN  language_data *language_reverse;

#endif // GLOBAL_H