// 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
{
	1 = "blocking";
	2 = "blockmonsters";
	4 = "twosided";
	8 = "dontpegtop";
	16 = "dontpegbottom";
	32 = "skewtd";
	64 = "noclimb";
	128 = "noskew";
	256 = "midpeg";
	512 = "midsolid";
	1024 = "wrapmidtex";
	2048 = "netonly";
	4096 = "nonet";
	8192 = "effect6";
	16384 = "bouncy";
	32768 = "transfer";
}

linedefflags_udmf
{
	blocking = "Impassable";
	blockmonsters = "Block Enemies";
	twosided = "Double-Sided";
	dontpegtop = "Upper Unpegged";
	dontpegbottom = "Lower Unpegged";
	skewtd = "Slope Skew";
	noclimb = "Not Climbable";
	noskew = "No Midtexture Skew";
	midpeg = "Peg Midtexture";
	midsolid = "Solid Midtexture";
	wrapmidtex = "Repeat Midtexture";
	netonly = "Netgame Only";
	nonet = "No Netgame";
	bouncy = "Bouncy Wall";
	transfer = "Transfer Line";
}

linedefrenderstyles
{
	translucent = "Translucent";
	add = "Add";
	subtract = "Subtract";
	reversesubtract = "Reverse subtract";
	modulate = "Modulate";
	fog = "Fog";
}

sectorflags
{
	invertprecip = "Invert Precipitation";
	gravityflip = "Flip Objects in Reverse Gravity";
	heatwave = "Heat Wave";
	noclipcamera = "Intangible to the Camera";
	colormapfog = "Fog Planes";
	colormapfadesprites = "Fade Fullbright";
	colormapprotected = "Protected from Tagging";
	outerspace = "Space Countdown";
	doublestepup = "Ramp Sector (double step-up/down)";
	nostepdown = "Non-Ramp Sector (No step-down)";
	speedpad = "Speed Pad";
	starpostactivator = "Star Post Activator";
	exit = "Exit";
	specialstagepit = "Special Stage Pit";
	returnflag = "Return Flag";
	redteambase = "Red Team Base";
	blueteambase = "Blue Team Base";
	fan = "Fan Sector";
	supertransform = "Super Sonic Transform";
	forcespin = "Force Spin";
	zoomtubestart = "Zoom Tube Start";
	zoomtubeend = "Zoom Tube End";
	finishline = "Circuit Finish Line";
	ropehang = "Rope Hang";
	jumpflip = "Flip Gravity on Jump";
	gravityoverride = "Make Reverse Gravity Temporary";
	nophysics_floor = "Disable Floor Slope Physics";
	nophysics_ceiling = "Disable Ceiling Slope Physics";
	flipspecial_nofloor = "No Trigger on Floor Touch";
	flipspecial_ceiling = "Trigger on Ceiling Touch";
	triggerspecial_touch = "Trigger on Edge Touch";
	triggerspecial_headbump = "Trigger on Headbump";
	triggerline_plane = "Linedef Trigger Requires Plane Touch";
	triggerline_mobj = "Non-Pushables Can Trigger Linedef";
}

sectorflagscategories
{
	invertprecip = "regular";
	gravityflip = "regular";
	heatwave = "regular";
	noclipcamera = "regular";
	colormapfog = "colormap";
	colormapfadesprites = "colormap";
	colormapprotected = "colormap";
	outerspace = "special";
	doublestepup = "special";
	nostepdown = "special";
	speedpad = "special";
	starpostactivator = "special";
	exit = "special";
	specialstagepit = "special";
	returnflag = "special";
	redteambase = "special";
	blueteambase = "special";
	fan = "special";
	supertransform = "special";
	forcespin = "special";
	zoomtubestart = "special";
	zoomtubeend = "special";
	finishline = "special";
	ropehang = "special";
	jumpflip = "special";
	gravityoverride = "special";
	nophysics_floor = "special";
	nophysics_ceiling = "special";
	flipspecial_nofloor = "trigger";
	flipspecial_ceiling = "trigger";
	triggerspecial_touch = "trigger";
	triggerspecial_headbump = "trigger";
	triggerline_plane = "trigger";
	triggerline_mobj = "trigger";
}

// THING FLAGS
thingflags_udmf
{
	flip = "Flip";
	absolutez = "Absolute Z height";
}

// 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
{
	1 = "extra";
	2 = "flip";
	4 = "special";
	8 = "ambush";
	16 = "absolutez";
}

// DEFAULT SECTOR BRIGHTNESS LEVELS
sectorbrightness
{
	255;
	248;
	240;
	232;
	224;
	216;
	208;
	200;
	192;
	184;
	176;
	168;
	160;
	152;
	144;
	136;
	128;
	120;
	112;
	104;
	96;
	88;
	80;
	72;
	64;
	56;
	48;
	40;
	32;
	24;
	16;
	8;
	0;
}

numbrightnesslevels = 32;

/*
TEXTURES AND FLAT SOURCES
This tells Doom Builder where to find the information for textures
and flats in the IWAD file, Addition WAD file and Map WAD file.

Start and end lumps must be given in a structure (of which the
key name doesnt matter) and any textures or flats in between them
are loaded in either the textures category or flats category.

For textures: PNAMES, TEXTURE1 and TEXTURE2 are loaded by default.
*/
textures
{
	zdoom1
	{
		start = "TX_START";
		end = "TX_END";
	}
}

/*
ADDITIONAL UNIVERSAL DOOM MAP FORMAT FIELD DEFINITIONS
Only add fields here that Doom Builder does not edit with its own user-interface!
The "default" field must match the UDMF specifications!

Field data types:
0 = integer *
1 = float
2 = string
3 = bool
4 = linedef action (integer) *
5 = sector effect (integer) *
6 = texture (string)
7 = flat (string)
8 = angle in degrees (integer)
9 = angle in radians (float)
10 = XXRRGGBB color (integer)
11 = enum option (integer) *
12 = enum bits (integer) *
13 = sector tag (integer) *
14 = thing tag (integer) *
15 = linedef tag (integer) *
16 = enum option (string)
17 = angle in degrees (float)
22 = byte angle (integer)
*/
universalfields
{
	linedef
	{
		alpha
		{
			type = 1;
			default = 1.0;
		}

		comment
		{
			type = 2;
			default = "";
		}

		renderstyle
		{
			type = 2;
			default = "";
		}

		stringarg0
		{
			type = 2;
			default = "";
		}

		stringarg1
		{
			type = 2;
			default = "";
		}

		executordelay
		{
			type = 0;
			default = 0;
		}
	}

	sidedef
	{
		comment
		{
			type = 2;
			default = "";
		}

		light
		{
			type = 0;
			default = 0;
		}

		lightabsolute
		{
			type = 3;
			default = false;
		}

		//light_top
		//{
		//	type = 0;
		//	default = 0;
		//}
		//
		//lightabsolute_top
		//{
		//	type = 3;
		//	default = false;
		//}
		//
		//light_mid
		//{
		//	type = 0;
		//	default = 0;
		//}
		//
		//lightabsolute_mid
		//{
		//	type = 3;
		//	default = false;
		//}
		//
		//light_bottom
		//{
		//	type = 0;
		//	default = 0;
		//}
		//
		//lightabsolute_bottom
		//{
		//	type = 3;
		//	default = false;
		//}

		offsetx_bottom
		{
			type = 1;
			default = 0.0;
		}

		offsetx_mid
		{
			type = 1;
			default = 0.0;
		}

		offsetx_top
		{
			type = 1;
			default = 0.0;
		}

		offsety_bottom
		{
			type = 1;
			default = 0.0;
		}

		offsety_mid
		{
			type = 1;
			default = 0.0;
		}

		offsety_top
		{
			type = 1;
			default = 0.0;
		}

		scalex_bottom
		{
			type = 1;
			default = 1.0;
		}

		scalex_mid
		{
			type = 1;
			default = 1.0;
		}

		scalex_top
		{
			type = 1;
			default = 1.0;
		}

		scaley_bottom
		{
			type = 1;
			default = 1.0;
		}

		scaley_mid
		{
			type = 1;
			default = 1.0;
		}

		scaley_top
		{
			type = 1;
			default = 1.0;
		}
	}

	thing
	{
		comment
		{
			type = 2;
			default = "";
		}

		pitch
		{
			type = 0;
		}

		roll
		{
			type = 0;
		}

		scalex
		{
			type = 1;
			default = 1.0;
		}

		scaley
		{
			type = 1;
			default = 1.0;
		}

		stringarg0
		{
			type = 2;
			default = "";
		}

		stringarg1
		{
			type = 2;
			default = "";
		}

		mobjscale
		{
			type = 1;
			default = 1.0;
			managed = false;
		}
	}

	sector
	{
		comment
		{
			type = 2;
			default = "";
		}

		damagetype
		{
			type = 2;
			default = "";
		}

		gravity
		{
			type = 1;
			default = 1.0;
		}

		lightcolor
		{
			type = 0;
			default = 0;
		}

		fadecolor
		{
			type = 0;
			default = 0;
		}

		lightalpha
		{
			type = 0;
			default = 25;
		}

		fadealpha
		{
			type = 0;
			default = 25;
		}

		fadestart
		{
			type = 0;
			default = 0;
		}

		fadeend
		{
			type = 0;
			default = 31;
		}

		xpanningfloor
		{
			type = 1;
			default = 0.0;
		}

		ypanningfloor
		{
			type = 1;
			default = 0.0;
		}

		rotationfloor
		{
			type = 1;
			default = 0.0;
		}

		xscalefloor
		{
			type = 1;
			default = 1.0;
		}

		yscalefloor
		{
			type = 1;
			default = 1.0;
		}

		lightfloor
		{
			type = 0;
			default = 0;
		}

		lightfloorabsolute
		{
			type = 3;
			default = false;
		}

		xpanningceiling
		{
			type = 1;
			default = 0.0;
		}

		ypanningceiling
		{
			type = 1;
			default = 0.0;
		}

		rotationceiling
		{
			type = 1;
			default = 0.0;
		}

		xscaleceiling
		{
			type = 1;
			default = 1.0;
		}

		yscaleceiling
		{
			type = 1;
			default = 1.0;
		}

		lightceiling
		{
			type = 0;
			default = 0;
		}

		lightceilingabsolute
		{
			type = 3;
			default = false;
		}

		triggertag
		{
			type = 0;
			default = 0;
		}
	}
}

/*
MAP LUMP NAMES
Map lumps are loaded with the map as long as they are right after each other. When the editor
meets a lump which is not defined in this list it will ignore the map if not satisfied.
The order of items defines the order in which lumps will be written to WAD file on save.
To indicate the map header lump, use ~MAP

Legenda:
required = Lump is required to exist.
blindcopy = Lump will be copied along with the map blindly. (useful for lumps Doom Builder doesn't use)
nodebuild = The nodebuilder generates this lump.
allowempty = The nodebuilder is allowed to leave this lump empty.
scriptbuild = This lump is a text-based script, which should be compiled using current script compiler;
script = This lump is a text-based script. Specify the filename of the script configuration to use.
*/
udmfmaplumpnames
{
	ZNODES
	{
		required = false;
		nodebuild = true;
		allowempty = false;
	}

	REJECT
	{
		required = false;
		nodebuild = true;
		allowempty = false;
	}

	BLOCKMAP
	{
		required = false;
		nodebuild = true;
		allowempty = true;
	}
}

// ENUMERATIONS
// These are enumerated lists for linedef types and UDMF fields.
// Reserved names are: angledeg, anglerad, color, texture, flat
enums
{
	falsetrue
	{
		0 = "False";
		1 = "True";
	}

	yesno
	{
		0 = "Yes";
		1 = "No";
	}

	noyes
	{
		0 = "No";
		1 = "Yes";
	}

	setadd
	{
		0 = "Set";
		1 = "Add";
	}

	onoff
	{
		0 = "On";
		1 = "Off";
	}

	offon
	{
		0 = "Off";
		1 = "On";
	}

	updown
	{
		0 = "Up";
		1 = "Down";
	}

	downup
	{
		0 = "Down";
		1 = "Up";
	}

	frontback
	{
		0 = "None";
		1 = "Front";
		2 = "Back";
	}

	frontbackboth
	{
		0 = "Front";
		1 = "Back";
		2 = "Front and back";
	}

	tangibility
	{
		1 = "Intangible from top";
		2 = "Intangible from bottom";
		4 = "Don't block players";
		8 = "Don't block non-players";
	}

	floorceiling
	{
		0 = "Floor";
		1 = "Ceiling";
		2 = "Both";
	}

	scrollcarry
	{
		0 = "Scroll and carry";
		1 = "Scroll";
		2 = "Carry";
	}

	scrolltype
	{
		0 = "Regular";
		1 = "Accelerative";
		2 = "Displacement";
	}

	comparison
	{
		0 = "Equal";
		1 = "Less than or equal";
		2 = "Greater than or equal";
	}

	triggertype
	{
		0 = "Continuous";
		1 = "Once";
		2 = "Each time on entry";
		3 = "Each time on entry/exit";
	}

	xtriggertype
	{
		0 = "Continuous";
		1 = "Each time on entry";
		2 = "Each time on entry/exit";
	}

	team
	{
		0 = "Red";
		1 = "Blue";
	}

	flagcheck
	{
		0 = "Has all";
		1 = "Has any";
		2 = "Has exactly";
		3 = "Doesn't have all";
		4 = "Doesn't have any";
	}

	maceflags
	{
		1 = "Double size";
		2 = "No sounds";
		4 = "Player-turnable chain";
		8 = "Swing instead of spin";
		16 = "Make chain from end item";
		32 = "Spawn link at origin";
		64 = "Clip inside ground";
		128 = "No distance check";
	}

	pushablebehavior
	{
		0 = "Normal";
		1 = "Slide";
		2 = "Immovable";
		3 = "Classic";
	}

	monitorrespawn
	{
		0 = "Same item";
		1 = "Random (Weak)";
		2 = "Random (Strong)";
	}

	blendmodes
	{
		0 = "Translucent";
		1 = "Add";
		2 = "Subtract";
		3 = "Reverse subtract";
		4 = "Modulate";
	}
}

//Default things filters
thingsfilters
{

	filter0
	{
		name = "Player starts";
		category = "starts";
		type = -1;
	}


	filter1
	{
		name = "Enemies";
		category = "enemies";
		type = -1;

	}


	filter2
	{
		name = "NiGHTS Track";
		category = "nightstrk";
		type = -1;

	}

	//filter3
	//{
	//	name = "Normal Gravity";
	//	category = "";
	//	type = -1;
	//
	//	fields
	//	{
	//		2 = false;
	//	}
	//}

	//filter4
	//{
	//	name = "Reverse Gravity";
	//	category = "";
	//	type = -1;
	//
	//	fields
	//	{
	//		2 = true;
	//	}
	//}
}

// Special linedefs
speciallinedefs_udmf
{
	soundlinedefflag = "noclimb";
	singlesidedflag = "blocking";
	doublesidedflag = "twosided";
	impassableflag = "blocking";
	upperunpeggedflag = "dontpegtop";
	lowerunpeggedflag = "dontpegbottom";
	repeatmidtextureflag = "wrapmidtex";
	pegmidtextureflag = "midpeg";
	slopeskewflag = "skewtd";
	nomidtextureskewflag = "noskew";
}

scriptlumpnames
{
	MAINCFG
	{
		script = "SOC.cfg";
	}

	OBJCTCFG
	{
		script = "SOC.cfg";
	}

	SOC_
	{
		script = "SOC.cfg";
		isprefix = true;
	}

	LUA_
	{
		script = "Lua.cfg";
		isprefix = true;
	}
}

// Texture sources
textures
{
	zdoom1
	{
		start = "TX_START";
		end = "TX_END";
	}
}

// Patch sources
patches
{
	standard1
	{
		start = "P_START";
		end = "P_END";
	}

	standard2
	{
		start = "PP_START";
		end = "PP_END";
	}
}

// Sprite sources
sprites
{
	standard1
	{
		start = "S_START";
		end = "S_END";
	}

	standard2
	{
		start = "SS_START";
		end = "SS_END";
	}
}

// Flat sources
flats
{
	standard1
	{
		start = "F_START";
		end = "F_END";
	}

	standard2
	{
		start = "FF_START";
		end = "FF_END";
	}

	standard3
	{
		start = "FF_START";
		end = "F_END";
	}

	standard4
	{
		start = "F_START";
		end = "FF_END";
	}
}
