// ***********************************************************
// *                                                         *
// * These values are the same for Doom format, Hexen format *
// * and UDMF; as well as for ZDoom, GZDoom and Zandronum     *
// *                                                         *
// ***********************************************************

common
{
	// Some common settings
	include("Common.cfg");

	// Default testing parameters
	include("Test_params.cfg", "modern");

	// Action special help (mxd)
	actionspecialhelp = "http://www.zdoom.org/wiki/index.php?title=%K";
	
	// Thing class help (mxd)
	thingclasshelp = "http://www.zdoom.org/wiki/Classes:%K";

	// Default nodebuilder configurations
	defaultsavecompiler = "zdbsp_normal";
	defaulttestcompiler = "zdbsp_fast";

	// Generalized actions
	// generalizedlinedefs is true for Doom format and false for
	// the other two, so it's not here.
	generalizedsectors = true;
	
	//mxd. Maximum safe map size check (0 means skip check)
	safeboundary = 0;

	// Texture loading options
	mixtexturesflats = true;
	defaulttexturescale = 1.0f;
	defaultflatscale = 1.0f;
	scaledtextureoffsets = true;
	
	//mxd. Sidedefs compression
	sidedefcompressionignoresaction = true;

	// Texture sources
	textures
	{
		include("Doom_misc.cfg", "textures");
		include("ZDoom_misc.cfg", "textures");
	}
	
	//mxd. HiRes sources
	hires
	{
		include("ZDoom_misc.cfg", "hires");
	}

	// Patch sources
	patches
	{
		include("Doom_misc.cfg", "patches");
	}

	// Sprite sources
	sprites
	{
		include("Doom_misc.cfg", "sprites");
	}

	// Flat sources
	flats
	{
		include("Doom_misc.cfg", "flats");
	}

	// Colormap sources
	colormaps
	{
		include("Boom_misc.cfg", "colormaps");
	}

	//mxd. Voxel sources
	voxels
	{
		include("ZDoom_misc.cfg", "voxels");
	}

	// Generalized sector types
	gen_sectortypes
	{
		include("ZDoom_generalized.cfg", "gen_sectortypes");
	}
	
	//mxd. Built-in Damage types
	damagetypes = "BFGSplash Drowning Slime Fire Crush Telefrag Falling Suicide Exit Melee Railgun Ice Disintegrate Poison PoisonCloud Electric Massacre DrainLife Extreme InstantDeath";
	
	//mxd. These logical sound names won't trigger a warning when they are not bound to actual sounds in SNDINFO
	internalsoundnames = "*death *xdeath *wimpydeath *crazydeath *burndeath *gibbed *splat *pain100 *pain75 *pain50 *pain25 *grunt *land *falling *jump *fist *fistgrunt *usefail *evillaugh *weaponlaugh *puzzfail *poison *dive *surface *gasp *taunt *regenerate *drainhealth misc/i_pkup";
	
	compatibility
	{
		fixnegativepatchoffsets = true;
		fixmaskedpatchoffsets = true;
	}

	filetitlestyle = "zdoom";
}

// ***********************************************************
// *                                                         *
// *                       Doom map format                   *
// *                                                         *
// ***********************************************************

mapformat_doom
{
	// The format interface handles the map data format
	formatinterface = "DoomMapSetIO";

	maplumpnames
	{
		include("Doom_misc.cfg", "doommaplumpnames");
		include("ZDoom_misc.cfg", "doommaplumpnames");
		include("ZDoom_misc.cfg", "glmaplumpnames");
	}

	// When this is set to true, sectors with the same tag will light up when a line is highlighted
	linetagindicatesectors = true;

	// Special linedefs
	include("ZDoom_misc.cfg", "speciallinedefs_doomhexen");

	// Default flags for first new thing
	defaultthingflags
	{
		include("Doom_misc.cfg", "defaultthingflags");
	}

	// Door making
	include("ZDoom_misc.cfg", "doormaking_doom");

	// Generalized actions
	generalizedlinedefs = true;

	// GENERALIZED LINEDEF TYPES
	gen_linedeftypes
	{
		include("Boom_generalized.cfg", "gen_linedeftypes");
	}
	
	// DEFAULT SECTOR BRIGHTNESS LEVELS
	sectorbrightness
	{
		include("Doom_misc.cfg", "sectorbrightness");
	}

	// SECTOR TYPES
	sectortypes
	{
		include("Doom_sectors.cfg");
		include("ZDoom_sectors.cfg", "doom");
	}

	// LINEDEF FLAGS
	linedefflags
	{
		include("Doom_misc.cfg", "linedefflags");
		include("Boom_misc.cfg", "linedefflags");
	}

	// LINEDEF ACTIVATIONS
	linedefactivations
	{
	}

	// Linedef flags UDMF translation table
	// This is needed for copy/paste and prefabs to work properly
	// When the UDMF field name is prefixed with ! it is inverted
	linedefflagstranslation
	{
		include("Doom_misc.cfg", "linedefflagstranslation");
		include("Boom_misc.cfg", "linedefflagstranslation");
	}

	// LINEDEF TYPES
	linedeftypes
	{
		include("Doom_linedefs.cfg");
		include("Boom_linedefs.cfg");
		include("ZDoom_linedefs.cfg", "doom");
	}

	// THING FLAGS
	thingflags
	{
		include("Doom_misc.cfg", "thingflags");
		include("Boom_misc.cfg", "thingflags");
	}

	// Thing flags UDMF translation table
	// This is needed for copy/paste and prefabs to work properly
	// When the UDMF field name is prefixed with ! it is inverted
	thingflagstranslation
	{
		include("Doom_misc.cfg", "thingflagstranslation");
		include("Boom_misc.cfg", "thingflagstranslation");
	}
	
	// How to compare thing flags (for the stuck things error checker)
	thingflagscompare
	{
		include("Doom_misc.cfg", "thingflagscompare");
	}

	// Things flags masks
	include("Doom_misc.cfg", "thingflagsmasks");

}

// ***********************************************************
// *                                                         *
// *                      Hexen map format                   *
// *                                                         *
// ***********************************************************

mapformat_hexen
{
	// The format interface handles the map data format
	formatinterface = "HexenMapSetIO";

	//mxd. The default script compiler to use
	defaultscriptcompiler = "zdoom_acs.cfg";

	maplumpnames
	{
		include("Doom_misc.cfg", "hexenmaplumpnames");
		include("ZDoom_misc.cfg", "hexenmaplumpnames");
		include("ZDoom_misc.cfg", "glmaplumpnames");
	}

	// When this is set to true, sectors with the same tag will light up when a line is highlighted
	linetagindicatesectors = false;
	
	// Enables support for 3D floors (not really, since support for 3D floors is pretty much hard-coded, but
	// this tells plugins that the game supports 3D floors)
	effect3dfloorsupport = true;	

	// Special linedefs
	include("ZDoom_misc.cfg", "speciallinedefs_doomhexen");

	// Default flags for first new thing
	defaultthingflags
	{
		include("ZDoom_misc.cfg", "defaultthingflags");
	}

	// Door making
	include("ZDoom_misc.cfg", "doormaking_hexen");

	// Generalized actions
	generalizedlinedefs = false;
	
	// DEFAULT SECTOR BRIGHTNESS LEVELS
	sectorbrightness
	{
		include("ZDoom_misc.cfg", "sectorbrightness");
	}

	// SECTOR TYPES
	sectortypes
	{
		include("ZDoom_sectors.cfg", "zdoom");
	}

	// LINEDEF FLAGS
	linedefflags
	{
		include("Doom_misc.cfg", "linedefflags");
		include("Hexen_misc.cfg", "linedefflags");
		include("ZDoom_misc.cfg", "linedefflags");
	}

	// Activations filter for Hexen type activations
	// This filters the activation bits from the flags
	include("Hexen_misc.cfg", "linedefactivationsfilter");

	// LINEDEF ACTIVATIONS
	// Make sure these are in order from lowest value to highest value
	linedefactivations
	{
		include("Hexen_misc.cfg", "linedefactivations");
		include("ZDoom_misc.cfg", "linedefactivations");
	}

	// Linedef flags UDMF translation table
	// This is needed for copy/paste and prefabs to work properly
	// When the UDMF field name is prefixed with ! it is inverted
	linedefflagstranslation
	{
		include("Doom_misc.cfg", "linedefflagstranslation");
		include("Hexen_misc.cfg", "linedefflagstranslation");
		include("ZDoom_misc.cfg", "linedefflagstranslation");
	}

	// LINEDEF TYPES
	linedeftypes
	{
		include("Hexen_linedefs.cfg");
		include("ZDoom_linedefs.cfg", "zdoom");
		include("ZDoom_linedefs.cfg", "hexen");
	}

	// THING FLAGS
	thingflags
	{
		include("Doom_misc.cfg", "thingflags");
		include("Hexen_misc.cfg", "thingflags");
		include("ZDoom_misc.cfg", "thingflags");
	}

	// Thing flags UDMF translation table
	// This is needed for copy/paste and prefabs to work properly
	// When the UDMF field name is prefixed with ! it is inverted
	thingflagstranslation
	{
		include("Doom_misc.cfg", "thingflagstranslation");
		include("Hexen_misc.cfg", "thingflagstranslation");
		include("ZDoom_misc.cfg", "thingflagstranslation");
	}
	
	// How to compare thing flags (for the stuck things error checker)
	thingflagscompare
	{
		include("Hexen_misc.cfg", "thingflagscompare");
	}

	// Things flags masks
	include("Hexen_misc.cfg", "thingflagsmasks");

}

// ***********************************************************
// *                                                         *
// *                       Text map format                   *
// *                                                         *
// ***********************************************************

mapformat_udmf
{
	// The format interface handles the map data format
	formatinterface = "UniversalMapSetIO";

	//mxd. The default script compiler to use
	defaultscriptcompiler = "zdoom_acs.cfg"; 

	// Enables support for long (> 8 chars) texture names
	// WARNING: this should only be enabled for UDMF game configurations!
	// WARNING: enabling this will make maps incompatible with Doom Builder 2 and can lead to problems in Slade 3!
	longtexturenames = true;

	// Enables support for individual offsets of upper/middle/lower sidedef textures
	localsidedeftextureoffsets = true;
	
	// Enables support for 3D floors (not really, since support for 3D floors is pretty much hard-coded, but
	// this tells plugins that the game supports 3D floors)
	effect3dfloorsupport = true;
	
	// Enables support for plane equation slopes
	planeequationsupport = true;

	// Enables support for vertex heights
	vertexheightsupport = true;
	
	// Enables setting brightness for floor, ceiling, and walls independently from each other
	distinctfloorandceilingbrightness = true;
	distinctwallbrightness = true;
	
	// Enabled setting brightness for upper, middle, and lower sidedef independently from each other
	distinctsidedefpartbrightness = true;

	// Enables support for skewing sidedef textures
	sidedeftextureskewing = true;
	
	// Enables multiple tags on sectors
	sectormultitag = true;
	
	// Default nodebuilder configurations
	defaultsavecompiler = "zdbsp_udmf_normal";
	defaulttestcompiler = "zdbsp_udmf_fast";
	
	engine = "zdoom"; // override that so that DB2 uses the correct namespace

	maplumpnames
	{
		include("UDMF_misc.cfg", "udmfmaplumpnames_begin");
		include("ZDoom_misc.cfg", "udmfmaplumpnames");
		include("UDMF_misc.cfg", "udmfmaplumpnames_end");
	}

	universalfields
	{
		include("ZDoom_misc.cfg", "universalfields");
	}

	// When this is set to true, sectors with the same tag will light up when a line is highlighted
	linetagindicatesectors = false;

	// Special linedefs
	include("ZDoom_misc.cfg", "speciallinedefs_udmf");

	// Default flags for first new thing
	defaultthingflags
	{
		include("ZDoom_misc.cfg", "defaultthingflags_udmf");
	}

	// Door making
	include("ZDoom_misc.cfg", "doormaking_udmf");

	// Generalized actions
	generalizedlinedefs = false;

	// SECTOR FLAGS
	sectorflags
	{
		include("UDMF_misc.cfg", "sectorflags");
	}
	
	// Sector portal flags (ceiling)
	ceilingportalflags
	{
		portal_ceil_disabled = "Disabled";
		portal_ceil_blocksound = "Block sound";
		portal_ceil_nopass = "Impassable";
		portal_ceil_norender = "Not rendered";
	}
	
	// Sector portal flags (floor)
	floorportalflags
	{
	  portal_floor_disabled = "Disabled";
		portal_floor_blocksound = "Block sound";
		portal_floor_nopass = "Impassable";
		portal_floor_norender = "Not rendered";
	}
	
	// Sector portal renderstyles
	sectorportalrenderstyles
	{
		translucent = "Translucent";
		additive = "Additive";
	}
	
	// DEFAULT SECTOR BRIGHTNESS LEVELS
	sectorbrightness
	{
		include("ZDoom_misc.cfg", "sectorbrightness");
	}

	// SECTOR TYPES
	sectortypes
	{
		include("ZDoom_sectors.cfg", "zdoom");
	}

	// SECTOR RENSERSTYLES
	sectorrenderstyles
	{
		include("UDMF_misc.cfg", "sectorrenderstyles");
	}

	// LINEDEF FLAGS
	linedefflags
	{
		include("ZDoom_misc.cfg", "linedefflags_udmf");
	}

	// LINEDEF ACTIVATIONS
	linedefactivations
	{
		include("ZDoom_misc.cfg", "linedefactivations_udmf");
	}
	
	//mxd. Linedef flags UDMF translation table
	// This is needed for copy/paste and prefabs to work properly
	// When the UDMF field name is prefixed with ! it is inverted
	linedefflagstranslation
	{
		include("Doom_misc.cfg", "linedefflagstranslation");
		include("Hexen_misc.cfg", "linedefflagstranslation");
		include("ZDoom_misc.cfg", "linedefflagstranslation");
	} 

	// LINEDEF RENSERSTYLES
	linedefrenderstyles
	{
		include("UDMF_misc.cfg", "linedefrenderstyles");
	}

	//SIDEDEF FLAGS
	sidedefflags
	{
		include("UDMF_misc.cfg", "sidedefflags");  
	}

	// THING FLAGS
	thingflags
	{
		include("UDMF_misc.cfg", "thingflags");
		include("ZDoom_misc.cfg", "thingflags_udmf");
	}
	
	// THING RENSERSTYLES
	thingrenderstyles
	{
		include("UDMF_misc.cfg", "thingrenderstyles");
	}

	// How to compare thing flags (for the stuck things error checker)
	thingflagscompare
	{
		include("UDMF_misc.cfg", "thingflagscompare");
		include("ZDoom_misc.cfg", "thingflagscompare_udmf");
	}

	//mxd. Thing flags UDMF translation table
	// This is needed for copy/paste and prefabs to work properly
	// When the UDMF field name is prefixed with ! it is inverted
	thingflagstranslation
	{
		include("Doom_misc.cfg", "thingflagstranslation");
		include("Hexen_misc.cfg", "thingflagstranslation");
		include("ZDoom_misc.cfg", "thingflagstranslation");
	}

	// Things flags masks
	include("Hexen_misc.cfg", "thingflagsmasks");

	// LINEDEF TYPES
	linedeftypes
	{
		include("Hexen_linedefs.cfg");
		include("ZDoom_linedefs.cfg", "zdoom");
		include("ZDoom_linedefs.cfg", "udmf");
	}

}