/*
===========================================================================

Doom 3 BFG Edition GPL Source Code
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company. 

This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").  

Doom 3 BFG Edition Source Code is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Doom 3 BFG Edition Source Code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Doom 3 BFG Edition Source Code.  If not, see <http://www.gnu.org/licenses/>.

In addition, the Doom 3 BFG Edition Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 BFG Edition Source Code.  If not, please request a copy in writing from id Software at the address below.

If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.

===========================================================================
*/

// the all-important zone //
memzone_t*	mainzone;

idFile *	wadFileHandles[MAXWADFILES];
int		numWadFiles;

//  am_map.vars begin // 
int 	cheating ;
int 	grid ;
int 	leveljuststarted ;
qboolean    	automapactive ;
int 	finit_width ;
int 	finit_height ;
int 	f_x;
int	f_y;
int 	f_w;
int	f_h;
int 	lightlev; 		// used for funky strobing effect
byte*	fb; 			// pseudo-frame buffer
int 	amclock;
mpoint_t m_paninc; // how far the window pans each tic (map coords)
fixed_t 	mtof_zoommul; // how far the window zooms in each tic (map coords)
fixed_t 	ftom_zoommul; // how far the window zooms in each tic (fb coords)
fixed_t 	m_x, m_y;   // LL x,y where the window is on the map (map coords)
fixed_t 	m_x2, m_y2; // UR x,y where the window is on the map (map coords)
fixed_t 	m_w;
fixed_t	m_h;
fixed_t 	min_x;
fixed_t	min_y; 
fixed_t 	max_x;
fixed_t  max_y;
fixed_t 	max_w; // max_x-min_x,
fixed_t  max_h; // max_y-min_y
fixed_t 	min_w;
fixed_t  min_h;
fixed_t 	min_scale_mtof; // used to tell when to stop zooming out
fixed_t 	max_scale_mtof; // used to tell when to stop zooming in
fixed_t old_m_w, old_m_h;
fixed_t old_m_x, old_m_y;
mpoint_t f_oldloc;
fixed_t scale_mtof ;
fixed_t scale_ftom;
player_t *amap_plr; // the player represented by an arrow
patch_t *marknums[10]; // numbers used for marking by the automap
mpoint_t markpoints[AM_NUMMARKPOINTS]; // where the points are
int markpointnum ;
int followplayer ;
qboolean stopped ;
int lastlevel ;
int lastepisode ;
int cheatstate;
int bigstate;
char buffer[20];
int nexttic ;
int litelevelscnt ;
// am_map.vars end // 
//  doomlib.vars begin // 
fixed_t realoffset;
fixed_t viewxoffset;
fixed_t viewyoffset;
// doomlib.vars end // 
//  doomstat.vars begin // 
GameMode_t gamemode ;
int	gamemission ;
Language_t   language ;
qboolean	modifiedgame;
// doomstat.vars end // 
//  d_main.vars begin // 
qboolean		devparm;	// started game with -devparm
qboolean         nomonsters;	// checkparm of -nomonsters
qboolean         respawnparm;	// checkparm of -respawn
qboolean         fastparm;	// checkparm of -fast
qboolean         drone;
qboolean		singletics ;
skill_t		startskill;
int             startepisode;
int		startmap;
qboolean		autostart;
FILE*		debugfile;
qboolean		advancedemo;
char		wadfile[1024];		// primary wad file
char		mapdir[1024];           // directory of development maps
char		basedefault[1024];      // default file
event_t         events[MAXEVENTS];
int             eventhead;
int 		eventtail;
gamestate_t     wipegamestate ;
 qboolean		viewactivestate ;
 qboolean		menuactivestate ;
 qboolean		inhelpscreensstate ;
 qboolean		fullscreen ;
 int			borderdrawcount;
qboolean			wipe ;
int				wipestart;
qboolean			wipedone;
int             demosequence;
int             pagetic;
char                    *pagename;
char            title[128];
// d_main.vars end // 
//  d_net.vars begin // 
doomcom_t	doomcom;
doomdata_t*	netbuffer;		// points inside doomcom
ticcmd_t	localcmds[BACKUPTICS];
ticcmd_t        netcmds[MAXPLAYERS][BACKUPTICS];
int         	nettics[MAXNETNODES];
qboolean		nodeingame[MAXNETNODES];		// set false as nodes leave game
qboolean		remoteresend[MAXNETNODES];		// set when local needs tics
int		resendto[MAXNETNODES];			// set when remote needs tics
int		resendcount[MAXNETNODES];
int		nodeforplayer[MAXPLAYERS];
int             maketic;
int		lastnettic;
int		skiptics;
int		ticdup;		
int		maxsend;	// BACKUPTICS/(2*ticdup)-1
qboolean		reboundpacket;
doomdata_t	reboundstore;
char    exitmsg[80];
int      gametime;
qboolean	gotinfo[MAXNETNODES];
int	frametics[4];
int	frameon;
int	frameskip[4];
int	oldnettics;
int	oldtrt_entertics;
int trt_phase ;
int		trt_lowtic;
int		trt_entertic;
int		trt_realtics;
int		trt_availabletics;
int		trt_counts;
int		trt_numplaying;
// d_net.vars end // 
//  f_finale.vars begin // 
int		finalestage;
int		finalecount;
int		castnum;
int		casttics;
state_t*	caststate;
qboolean		castdeath;
int		castframes;
int		castonmelee;
int		caststartmenu;
qboolean		castattacking;
int	laststage;
// f_finale.vars end // 
//  f_wipe.vars begin // 
qboolean	go ;
byte*	wipe_scr_start;
byte*	wipe_scr_end;
byte*	wipe_scr;
void *g_tempPointer;
int*	wipe_y;
// f_wipe.vars end // 
//  g_game.vars begin // 
gameaction_t    gameaction; 
gamestate_t     gamestate;
gamestate_t		oldgamestate;
skill_t         gameskill; 
qboolean		respawnmonsters;
int             gameepisode; 
int             gamemap; 
qboolean         paused; 
qboolean         sendpause;             	// send a pause event next tic 
qboolean         sendsave;             	// send a save event next tic 
qboolean         usergame;               // ok to save / end game 
qboolean         timingdemo;             // if true, exit with report on completion 
qboolean         nodrawers;              // for comparative timing purposes 
qboolean         noblit;                 // for comparative timing purposes 
int             starttime;          	// for comparative timing purposes  	 
qboolean         viewactive; 
qboolean         deathmatch;           	// only if started as net death 
qboolean         netgame;                // only true if packets are broadcast 
qboolean         playeringame[MAXPLAYERS]; 
player_t        players[MAXPLAYERS]; 
int             consoleplayer;          // player taking events and displaying 
int             displayplayer;          // view being displayed 
int             gametic; 
int             levelstarttic;          // gametic at level start 
int             totalkills, totalitems, totalsecret;    // for intermission 
char            demoname[32]; 
qboolean        demoplayback;
qboolean        demorecording;
qboolean		netdemo; 
byte*		demobuffer;
byte*		demo_p;
byte*		demoend; 
qboolean         singledemo;            	// quit after playing a demo from cmdline 
qboolean         precache ;
wbstartstruct_t wminfo;               	// parms for world map / intermission 
short		consistancy[MAXPLAYERS][BACKUPTICS]; 
byte*		savebuffer;
int			savebufferSize;
int             key_right;
int		key_left;
int		key_up;
int		key_down; 
int             key_strafeleft;
int		key_straferight; 
int             key_fire;
int		key_use;
int		key_strafe;
int		key_speed; 
int             mousebfire; 
int             mousebstrafe; 
int             mousebforward; 
int             joybfire; 
int             joybstrafe; 
int             joybuse; 
int             joybspeed; 
fixed_t		forwardmove[2];
fixed_t		sidemove[2];
fixed_t		angleturn[3];
qboolean         gamekeydown[NUMKEYS]; 
int             turnheld;				// for accelerative turning 
qboolean		mousearray[4]; 
qboolean*	mousebuttons ;
int             mousex;
int		mousey;         
int             dclicktime;
int		dclickstate;
int		dclicks; 
int             dclicktime2;
int		dclickstate2;
int		dclicks2;
int             joyxmove;
int		joyymove;
qboolean         joyarray[5]; 
qboolean*	joybuttons ;
int		savegameslot; 
char		savedescription[32]; 
mobj_t*		bodyque[BODYQUESIZE]; 
int		bodyqueslot; 
char turbomessage[80];
qboolean		secretexit; 
char	savename[256];
skill_t	d_skill; 
int     d_episode; 
int     d_map; 
int		d_mission;
char*	defdemoname; 
// g_game.vars end // 
//  hu_lib.vars begin // 
qboolean	lastautomapactive ;
// hu_lib.vars end // 
//  hu_stuff.vars begin // 
char			chat_char; // remove later.
player_t*	plr;
patch_t*		hu_font[HU_FONTSIZE];
hu_textline_t	w_title;
qboolean			chat_on;
hu_itext_t	w_chat;
qboolean		always_off ;
char		chat_dest[MAXPLAYERS];
hu_itext_t w_inputbuffer[MAXPLAYERS];
qboolean		message_on;
qboolean			message_dontfuckwithme;
qboolean		message_nottobefuckedwith;
hu_stext_t	w_message;
int		message_counter;
qboolean		headsupactive ;
char	chatchars[QUEUESIZE];
int	head ;
int	tail ;
char		lastmessage[HU_MAXLINELENGTH+1];
qboolean	shiftdown ;
qboolean	altdown ;
int		num_nobrainers ;
// hu_stuff.vars end // 
//  i_input.vars begin // 
InputEvent mouseEvents[2];
InputEvent joyEvents[18];
// i_input.vars end // 
//  i_net_xbox.vars begin // 
int			sendsocket;
int			insocket;
//struct	sockaddr_in	sendaddress[MAXNETNODES];
// i_net_xbox.vars end // 
//  i_system.vars begin // 
int	mb_used ;
ticcmd_t	emptycmd;
int current_time ;
// i_system.vars end // 
//  i_video_xbox.vars begin // 

unsigned int	XColorMap[256];
unsigned int *ImageBuff;
unsigned int *ImageBuffs[2];

// i_video_xbox.vars end // 
//  m_argv.vars begin // 
int		myargc;
char**		myargv;
// m_argv.vars end // 
//  m_cheat.vars begin // 
int		firsttime ;
unsigned char	cheat_xlate_table[256];
unsigned char cheatbuffer[256];
int usedcheatbuffer ;
// m_cheat.vars end // 
//  m_menu.vars begin // 
int			mouseSensitivity;       // has default
int			showMessages;
int			detailLevel;		
int			screenblocks;		// has default
int			screenSize;		
int			quickSaveSlot;          
int			messageToPrint;
char*			messageString;		
int			messx;			
int			messy;
int			messageLastMenuActive;
qboolean			messageNeedsInput;     
messageRoutine_t messageRoutine;
int			saveStringEnter;              
int             	saveSlot;	// which slot to save in
int			saveCharIndex;	// which char we're editing
char			saveOldString[SAVESTRINGSIZE];  
qboolean			inhelpscreens;
qboolean			menuactive;
char			savegamestrings[10][SAVESTRINGSIZE];
char			savegamepaths[10][MAX_PATH];
char	endstring[160];
short		itemOn;			// menu item skull is on
short		skullAnimCounter;	// skull animation counter
short		whichSkull;		// which skull to draw
menu_t*	currentMenu;                          
menuitem_t MainMenu[5];
menu_t  QuitDef;
menuitem_t QuitMenu[3];
menu_t  MainDef;
menuitem_t EpisodeMenu[4];
menu_t  EpiDef;
menuitem_t ExpansionMenu[2];
menu_t  ExpDef;
menuitem_t NewGameMenu[5];
menu_t  NewDef;
menuitem_t OptionsMenu[8];
menu_t  OptionsDef;
menuitem_t SoundMenu[4];
menu_t  SoundDef;
menuitem_t LoadMenu[6];
menu_t  LoadDef;
menuitem_t LoadExpMenu[2];
menu_t  LoadExpDef;
menuitem_t SaveMenu[6];
menu_t  SaveDef;
char    tempstring[128];    // SRS - extended from 80 to 128 to handle worst case string length (gcc 11 error checking)
int     epi;
int     exp;
int     quitsounds[8];
int     quitsounds2[8];
 int     joywait ;
 int     mousewait ;
 int     mmenu_mousey ;
 int     lasty ;
 int     mmenu_mousex ;
 int     lastx ;
short	md_x;
short	md_y;
// m_menu.vars end // 
//  m_misc.vars begin // 
const char * g_pszSaveFile ;
const char * g_pszImagePath ;
const char * g_pszImageMeta ;
int		usemouse;
int		usejoystick;
char*		mousetype;
char*		mousedev;
default_t	defaults[35];
int	numdefaults;
const char*	defaultfile;
// m_misc.vars end // 
//  m_random.vars begin // 
int	rndindex ;
int	prndindex ;
// m_random.vars end // 
//  p_ceilng.vars begin // 
ceiling_t*	activeceilings[MAXCEILINGS];
// p_ceilng.vars end // 
//  p_enemy.vars begin // 
mobj_t*		soundtarget;
int	TRACEANGLE ;
mobj_t*		corpsehit;
mobj_t*		vileobj;
fixed_t		viletryx;
fixed_t		viletryy;
mobj_t*		braintargets[32];
int		numbraintargets;
int		braintargeton;
int	easy ;
// p_enemy.vars end // 
//  p_map.vars begin // 
fixed_t		tmbbox[4];
mobj_t*		tmthing;
int		tmflags;
fixed_t		tmx;
fixed_t		tmy;
qboolean		floatok;
fixed_t		tmfloorz;
fixed_t		tmceilingz;
fixed_t		tmdropoffz;
line_t*		ceilingline;
line_t*		spechit[MAXSPECIALCROSS];
int		numspechit;
fixed_t		bestslidefrac;
fixed_t		secondslidefrac;
line_t*		bestslideline;
line_t*		secondslideline;
mobj_t*		slidemo;
fixed_t		tmxmove;
fixed_t		tmymove;
mobj_t*		linetarget;	// who got hit (or NULL)
mobj_t*		shootthing;
fixed_t		shootz;	
int		la_damage;
fixed_t		attackrange;
fixed_t		aimslope;
mobj_t*		usething;
mobj_t*		bombsource;
mobj_t*		bombspot;
int		bombdamage;
qboolean		crushchange;
qboolean		nofit;
// p_map.vars end // 
//  p_maputl.vars begin // 
fixed_t opentop;
fixed_t openbottom;
fixed_t openrange;
fixed_t	lowfloor;
intercept_t	intercepts[MAXINTERCEPTS];
intercept_t*	intercept_p;
divline_t 	trace;
qboolean 	earlyout;
int		ptflags;
// p_maputl.vars end // 
//  p_mobj.vars begin // 
int test;
mapthing_t	itemrespawnque[ITEMQUESIZE];
int		itemrespawntime[ITEMQUESIZE];
int		iquehead;
int		iquetail;
// p_mobj.vars end // 
//  p_plats.vars begin // 
plat_t*		activeplats[MAXPLATS];
// p_plats.vars end // 
//  p_pspr.vars begin // 
fixed_t		swingx;
fixed_t		swingy;
fixed_t		bulletslope;
// p_pspr.vars end // 
//  p_saveg.vars begin // 
byte*		save_p;
// p_saveg.vars end // 
//  p_setup.vars begin // 
int		numvertexes;
vertex_t*	vertexes;
int		numsegs;
seg_t*		segs;
int		numsectors;
sector_t*	sectors;
int		numsubsectors;
subsector_t*	subsectors;
int		numnodes;
node_t*		nodes;
int		numlines;
line_t*		lines;
int		numsides;
side_t*		sides;
int		bmapwidth;
int		bmapheight;	// size in mapblocks
short*		blockmap;	// int for larger maps
short*		blockmaplump;		
fixed_t		bmaporgx;
fixed_t		bmaporgy;
mobj_t**	blocklinks;		
mapthing_t	deathmatchstarts[MAX_DEATHMATCH_STARTS];
mapthing_t*	deathmatch_p;
mapthing_t	playerstarts[MAXPLAYERS];
// p_setup.vars end // 
//  p_sight.vars begin // 
fixed_t		sightzstart;		// eye z of looker
fixed_t		topslope;
fixed_t		bottomslope;		// slopes to top and bottom of target
divline_t	strace;			// from t1 to t2
fixed_t		t2x;
fixed_t		t2y;
int		sightcounts[2];
// p_sight.vars end // 
//  p_spec.vars begin // 
anim_t2		anims[MAXANIMS];
anim_t2*		lastanim;
qboolean		levelTimer;
int		levelTimeCount;
int		levelFragCount;
short		numlinespecials;
line_t*		linespeciallist[MAXLINEANIMS];
// p_spec.vars end // 
//  p_switch.vars begin // 
int		switchlist[MAXSWITCHES * 2];
int		numswitches;
button_t        buttonlist[MAXBUTTONS];
// p_switch.vars end // 
//  p_tick.vars begin // 
int	leveltime;
thinker_t	thinkercap;
// p_tick.vars end // 
//  p_user.vars begin // 
qboolean		onground;
// p_user.vars end // 
//  r_bsp.vars begin // 
seg_t*		curline;
side_t*		sidedef;
line_t*		linedef;
sector_t*	frontsector;
sector_t*	backsector;
drawseg_t	drawsegs[MAXDRAWSEGS];
drawseg_t*	ds_p;
cliprange_t*	newend;
cliprange_t	solidsegs[MAXSEGS];
int	checkcoord[12][4];
// r_bsp.vars end // 
//  r_data.vars begin // 
int		firstflat;
int		lastflat;
int		numflats;
int		firstpatch;
int		lastpatch;
int		numpatches;
int		firstspritelump;
int		lastspritelump;
int		numspritelumps;
int*		flattranslation;
int*		texturetranslation;
fixed_t*	spritewidth;	
fixed_t*	spriteoffset;
fixed_t*	spritetopoffset;
lighttable_t	*colormaps;
int		flatmemory;
int		texturememory;
int		spritememory;
// r_data.vars end // 
//  r_draw.vars begin // 
byte*		viewimage; 
int		viewwidth;
int		scaledviewwidth;
int		viewheight;
int		viewwindowx;
int		viewwindowy; 
byte*		ylookup[MAXHEIGHT]; 
int		columnofs[MAXWIDTH]; 
byte		translations[3][256];	
lighttable_t*		dc_colormap; 
int			dc_x; 
int			dc_yl; 
int			dc_yh; 
fixed_t			dc_iscale; 
fixed_t			dc_texturemid;
byte*			dc_source;		
int			dccount;
int	fuzzoffset[FUZZTABLE];
int	fuzzpos ;
byte*	dc_translation;
byte*	translationtables;
int			ds_y; 
int			ds_x1; 
int			ds_x2;
lighttable_t*		ds_colormap; 
fixed_t			ds_xfrac; 
fixed_t			ds_yfrac; 
fixed_t			ds_xstep; 
fixed_t			ds_ystep;
byte*			ds_source;	
int			dscount;
// r_draw.vars end // 
//  r_main.vars begin // 
int			viewangleoffset;
int			validcount ;
lighttable_t*		fixedcolormap;
int			centerx;
int			centery;
fixed_t			centerxfrac;
fixed_t			centeryfrac;
fixed_t			projection;
int			framecount;	
int			sscount;
int			linecount;
int			loopcount;
fixed_t			viewx;
fixed_t			viewy;
fixed_t			viewz;
angle_t			viewangle;
fixed_t			viewcos;
fixed_t			viewsin;
player_t*		viewplayer;
int			detailshift;	
angle_t			clipangle;
int			viewangletox[FINEANGLES/2];
angle_t			xtoviewangle[SCREENWIDTH+1];
lighttable_t*		scalelight[LIGHTLEVELS][MAXLIGHTSCALE];
lighttable_t*		scalelightfixed[MAXLIGHTSCALE];
lighttable_t*		zlight[LIGHTLEVELS][MAXLIGHTZ];
int			extralight;			
qboolean		setsizeneeded;
int		setblocks;
int		setdetail;
// r_main.vars end // 
//  r_plane.vars begin // 
planefunction_t		floorfunc;
planefunction_t		ceilingfunc;
short			openings[MAXOPENINGS];
short*			lastopening;
short			floorclip[SCREENWIDTH];
short			ceilingclip[SCREENWIDTH];
int			spanstart[SCREENHEIGHT];
int			spanstop[SCREENHEIGHT];
lighttable_t**		planezlight;
fixed_t			planeheight;
fixed_t			yslope[SCREENHEIGHT];
fixed_t			distscale[SCREENWIDTH];
fixed_t			basexscale;
fixed_t			baseyscale;
fixed_t			cachedheight[SCREENHEIGHT];
fixed_t			cacheddistance[SCREENHEIGHT];
fixed_t			cachedxstep[SCREENHEIGHT];
fixed_t			cachedystep[SCREENHEIGHT];
// r_plane.vars end // 
//  r_segs.vars begin // 
qboolean		segtextured;	
qboolean		markfloor;	
qboolean		markceiling;
qboolean		maskedtexture;
int		toptexture;
int		bottomtexture;
int		midtexture;
angle_t		rw_normalangle;
int		rw_angle1;	
int		rw_x;
int		rw_stopx;
angle_t		rw_centerangle;
fixed_t		rw_offset;
fixed_t		rw_distance;
fixed_t		rw_scale;
fixed_t		rw_scalestep;
fixed_t		rw_midtexturemid;
fixed_t		rw_toptexturemid;
fixed_t		rw_bottomtexturemid;
int		worldtop;
int		worldbottom;
int		worldhigh;
int		worldlow;
fixed_t		pixhigh;
fixed_t		pixlow;
fixed_t		pixhighstep;
fixed_t		pixlowstep;
fixed_t		topfrac;
fixed_t		topstep;
fixed_t		bottomfrac;
fixed_t		bottomstep;
lighttable_t**	walllights;
short*		maskedtexturecol;
// r_segs.vars end // 
//  r_sky.vars begin // 
int			skyflatnum;
int			skytexture;
int			skytexturemid;
// r_sky.vars end // 
//  r_things.vars begin // 
fixed_t		pspritescale;
fixed_t		pspriteiscale;
lighttable_t**	spritelights;
short		negonearray[SCREENWIDTH];
short		screenheightarray[SCREENWIDTH];
spritedef_t*	sprites;
int		numsprites;
spriteframe_t	sprtemp[29];
int		maxframe;
vissprite_t	vissprites[MAXVISSPRITES];
vissprite_t*	vissprite_p;
int		newvissprite;
vissprite_t	overflowsprite;
short*		mfloorclip;
short*		mceilingclip;
fixed_t		spryscale;
fixed_t		sprtopscreen;
vissprite_t	vsprsortedhead;
// r_things.vars end // 
//  sounds.vars begin // 
musicinfo_t S_music[80];
// sounds.vars end // 
//  st_lib.vars begin // 
patch_t*		sttminus;
// st_lib.vars end // 
//  st_stuff.vars begin // 
player_t*	plyr; 
qboolean		st_firsttime;
int		veryfirsttime ;
int		lu_palette;
unsigned int	st_clock;
int		st_msgcounter;
st_chatstateenum_t	st_chatstate;
st_stateenum_t	st_gamestate;
qboolean		st_statusbaron;
qboolean		st_chat;
qboolean		st_oldchat;
qboolean		st_cursoron;
qboolean		st_notdeathmatch; 
qboolean		st_armson;
qboolean		st_fragson; 
patch_t*		sbar; // AffLANHACK IGNORE
patch_t*		tallnum[10]; // AffLANHACK IGNORE
patch_t*		tallpercent; // AffLANHACK IGNORE
patch_t*		shortnum[10]; // AffLANHACK IGNORE
patch_t*		keys[NUMCARDS];  // AffLANHACK IGNORE
patch_t*		faces[ST_NUMFACES]; // AffLANHACK IGNORE
patch_t*		faceback; // AffLANHACK IGNORE
patch_t*		armsbg; // AffLANHACK IGNORE
patch_t*		arms[6][2];  // AffLANHACK IGNORE
st_number_t	w_ready;
st_number_t	w_frags;
st_percent_t	w_health;
st_binicon_t	w_armsbg; 
st_multicon_t	w_arms[6];
st_multicon_t	w_faces; 
st_multicon_t	w_keyboxes[3];
st_percent_t	w_armor;
st_number_t	w_ammo[4];
st_number_t	w_maxammo[4]; 
int	st_fragscount;
int	st_oldhealth ;
qboolean	oldweaponsowned[NUMWEAPONS]; 
int	st_facecount ;
int	st_faceindex ;
int	keyboxes[3]; 
int	st_randomnumber;  
cheatseq_t	cheat_powerup[7]; 
int	lastcalc;
int	oldhealth ;
int	lastattackdown ;
int	priority ;
int	largeammo ;
int st_palette ;
qboolean	st_stopped ;
// st_stuff.vars end // 
//  s_sound.vars begin // 
channel_t*	channels;
qboolean		mus_paused;	
qboolean		mus_looping;
musicinfo_t*	mus_playing;
int			numChannels;	
int		nextcleanup;
// s_sound.vars end // 
//  v_video.vars begin // 
byte*				screens[5];	
int				dirtybox[4]; 
int	usegamma;
// v_video.vars end // 
//  wi_stuff.vars begin // 
anim_t epsd0animinfo[10];
anim_t epsd1animinfo[9];
anim_t epsd2animinfo[6];
anim_t* wi_stuff_anims[NUMEPISODES];
int NUMANIMS[NUMEPISODES];
const char* chat_macros[10];
int acceleratestage;
int me;
stateenum_t state;
wbstartstruct_t* wbs;
int cnt;  
int bcnt;
int firstrefresh; 
int cnt_kills[MAXPLAYERS];
int cnt_items[MAXPLAYERS];
int cnt_secret[MAXPLAYERS];
int cnt_time;
int cnt_par;
int cnt_pause;
int NUMCMAPS; 
patch_t* colon;
qboolean		snl_pointeron ;
int		dm_state;
int		dm_frags[MAXPLAYERS][MAXPLAYERS];
int		dm_totals[MAXPLAYERS];
int	cnt_frags[MAXPLAYERS];
int	dofrags;
int	ng_state;
int	sp_state;
// wi_stuff.vars end // 
//  w_wad.vars begin // 
int			reloadlump;
// w_wad.vars end // 
//  z_zone.vars begin // 
int sizes[NUM_ZONES+1];
memzone_t*	zones[NUM_ZONES+1] ;        // SRS - Added +1 so NUM_ZONES index is not beyond end of array
int NumAlloc ;
// z_zone.vars end // 
// info vars begin //
state_t	states[NUMSTATES];
// info vars end //
// p_local begin //
byte*		rejectmatrix;
// p_local end //
// r_data begin //
int		s_numtextures;
texture_t**	s_textures;
int*			s_texturewidthmask;
// needed for texture pegging 
fixed_t*		s_textureheight;
short**			s_texturecolumnlump;
unsigned short**	s_texturecolumnofs;
byte**			s_texturecomposite;
int*			s_texturecompositesize;
// r_data end //
// r_plane begin //
visplane_t		visplanes[MAXVISPLANES]; 
visplane_t*		lastvisplane; 
visplane_t*		floorplane; 
visplane_t*		ceilingplane; 
// r_plane end //

// wi_stuff
// background (map of levels).
patch_t* bg; 

// You Are Here graphic
patch_t* yah[2];  

// splat
patch_t* splat; 

// %, : graphics
patch_t* percent; 

// 0-9 graphic
patch_t* num[10]; 

// minus sign
patch_t* wiminus; 

// "Finished!" graphics
patch_t* finished; 

// "Entering" graphic
patch_t* entering;  

// "secret"
patch_t* sp_secret; 

 // "Kills", "Scrt", "Items", "Frags"
patch_t* kills;
patch_t* secret;
patch_t* items;
patch_t* wistuff_frags;

// Time sucks.
patch_t* time;
patch_t* par;
patch_t* sucks;

// "killers", "victims"
patch_t* killers;
patch_t* victims; 

// "Total", your face, your dead face
patch_t* total;
patch_t* star;
patch_t* bstar;

// "red P[1..MAXPLAYERS]"
patch_t* wistuff_p[MAXPLAYERS];

// "gray P[1..MAXPLAYERS]"
patch_t* wistuff_bp[MAXPLAYERS];

 // Name graphics of each level (centered)
patch_t** lnames;

const char*		spritename;


