linedefflags
{
    1024 = "3D middle texture";
}

linedefflagstranslation
{
	1024 = "midtex3d";
}

thingflags
{
	128 = "Friendly";
	512 = "Dormant";
}

thingflagstranslation
{
	128 = "friend";
	512 = "dormant";
}

/*
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
	{
		comment
		{
			type = 2;
			default = "";
		}
/* FIXME: should I add renderstyle and alpha? */
		tranmap
		{
			type = 2;
			default = "";
		}
		portal
		{
			type = 0;
			default = 0;
		}
	}
	
	sidedef
	{
		comment
		{
			type = 2;
			default = "";
		}
	}
	
	thing
	{
		comment
		{
			type = 2;
			default = "";
		}
	}
	
	sector
	{
		comment
		{
			type = 2;
			default = "";
		}
		friction
		{
			type = 0;
			default = -1;
		}
/* FIXME: should I add damagetype? Or lightfloor, lightceiling, 
floorterain, ceilingterrain, floor/ceiling panning/rotation */
		colormaptop
		{
			type = 2;
			default = "@default";
		}
		colormapmid
		{
			type = 2;
			default = "@default";
		}
		colormapbottom
		{
			type = 2;
			default = "@default";
		}
		portal_ceil_overlaytype
		{
			type = 2;
			default = "none";
		}
		alphaceiling
		{
			type = 1;
			default = 1;
		}
		portal_floor_overlaytype
		{
			type = 2;
			default = "none";
		}
		alphafloor
		{
			type = 1;
			default = 1;
		}
		portalfloor
		{
			type = 0;
			associations
			{
				0
				{
					elements { sector; }
					property = "portalfloor";
					modify = "abs";
					//nevershoweventlines = true;
					consolidateeventlines = true;
				}
				1
				{
					elements { sector; }
					property = "portalceiling";
					modify = "abs";
					//nevershoweventlines = true;
					consolidateeventlines = true;
				}
			}
		}
		portalceiling
		{
			type = 0;
			associations
			{
				0
				{
					elements { sector; }
					property = "portalfloor";
					modify = "abs";
					consolidateeventlines = true;
				}
				1
				{
					elements { sector; }
					property = "portalceiling";
					modify = "abs";
					consolidateeventlines = true;
				}
			}			
		}
		
		floorid
		{
			type = 0;
			associations
			{
				0
				{
					elemets { sector; }
					property = "attachfloor";
					modify = "abs";
					consolidateeventlines = true;
				}
				1
				{
					elemets { sector; }
					property = "attachceiling";
					modify = "abs";
					consolidateeventlines = true;
				}
			}
		}
		ceilingid
		{
			type = 0;
			associations
			{
				0
				{
					elemets { sector; }
					property = "attachfloor";
					modify = "abs";
					consolidateeventlines = true;
				}
				1
				{
					elemets { sector; }
					property = "attachceiling";
					modify = "abs";
					consolidateeventlines = true;
				}
			}			
		}
		attachfloor
		{
			type = 0;
			associations
			{
				0
				{
					elemets { sector; }
					property = "floorid";
					modify = "abs";
					consolidateeventlines = true;
				}
				1
				{
					elemets { sector; }
					property = "ceilingid";
					modify = "abs";
					consolidateeventlines = true;
				}
				2
				{
					elemets { sector; }
					property = "attachfloor";
					modify = "abs";
					consolidateeventlines = true;
				}
				3
				{
					elemets { sector; }
					property = "attachceiling";
					modify = "abs";
					consolidateeventlines = true;
				}				
			}
		}
		attachceiling
		{
			type = 0;
			associations
			{
				0
				{
					elemets { sector; }
					property = "floorid";
					modify = "abs";
					consolidateeventlines = true;
				}
				1
				{
					elemets { sector; }
					property = "ceilingid";
					modify = "abs";
					consolidateeventlines = true;
				}
				2
				{
					elemets { sector; }
					property = "attachfloor";
					modify = "abs";
					consolidateeventlines = true;
				}
				3
				{
					elemets { sector; }
					property = "attachceiling";
					modify = "abs";
					consolidateeventlines = true;
				}				
			}			
		}
		scroll_ceil_x
		{
			type = 1;
		}
		scroll_ceil_y
		{
			type = 1;
		}
		scroll_ceil_type
		{
			type = 2;
			default = "none";
			tooltip = "Available options: none, visual. Controls whether to scroll the texture. Currently thing transporting is not supported for ceiling scrollers.";
		}
		scroll_floor_x
		{
			type = 1;
		}
		scroll_floor_y
		{
			type = 1;
		}
		scroll_floor_type
		{
			type = 2;
			default = "none";
			tooltip = "Available options: none, visual, physical or both. Controls whether to scroll the texture and/or transport the things";
		}
		
	}
}

defaultthingflags_udmf
{
	skill1;
	skill2;
	skill3;
	skill4;
	skill5;
	single;
	coop;
	dm;
	class1;
	class2;
	class3;
}

doormaking_udmf
{
	makedooraction = 12;	// See linedeftypes
	makedoorflags { playeruse; repeatspecial; }
	makedoorarg0 = 0;
	makedoorarg1 = 16;
	makedoorarg2 = 150;
	makedoorarg3 = 0;
	makedoorarg4 = 0;
}

sectorflags_udmf
{
//	silent = "Silent";
	secret = "Secret";
//	hidden = "Not shown on automap";
//	nofallingdamage = "No falling damage";
//	waterzone = "Sector is under water and swimmable";
//	norespawn = "Players can't respawn in this sector";
//	dropactors = "Actors drop with instantly moving floors";
	damage_endgodmode = "Damage disables god mode cheat";
	damage_exitlevel = "Damage and exit level when < 10%";
	damageterraineffect = "Spawn terrain splashes on damage";
//	damagehazard = "Strife damage model";
}

// These are instead of Doom sector types in UDMF and Hexen format
sectors_udmf
{
	0 = "None";
	1 = "Light Phased";
	2 = "Light Sequence Start";
	3 = "Light Sequence Special 1";
	4 = "Light Sequence Special 2";
//	26 = "Stairs Special 1";
//	27 = "Stairs Special 2";
	40 = "Wind East weak";
	41 = "Wind East medium";
	42 = "Wind East strong";
	43 = "Wind North weak";
	44 = "Wind North medium";
	45 = "Wind North strong";
	46 = "Wind South weak";
	47 = "Wind South medium";
	48 = "Wind South strong";
	49 = "Wind West weak";
	50 = "Wind West medium";
	51 = "Wind West strong";
	65 = "Light Flicker";
	66 = "Light Strobe Fast";
	67 = "Light Strobe Slow";
	68 = "Light Strobe Hurt -20% health";
	69 = "Damage Hellslime -10% health";
	71 = "Damage Nukage -5% health";
	72 = "Light Glow";
	74 = "Sector Door Close (30 sec)";
	75 = "Damage End Level -20% health";
	76 = "Light StrobeSlowSync";
	77 = "Light StrobeFastSync";
	78 = "Sector Door Raise (5 min)";
	79 = "Low Friction";
	80 = "Damage Super Hellslime -20% health";
	81 = "Light Fire Flicker";
	82 = "Damage -5% health (no protection)";
	83 = "Damage -8% health (no protection)";
	84 = "Scroll east + -2 or -5% health (no protection)";
	85 = "Damage Sludge -4% health";
//	87 = "Sector uses outside fog";
//	90 = "Skybox sector (GZDoom only)";
//	105 = "Delayed damage weak (hazardcount +2/16 per second)";
//	115 = "Instant death";
//	116 = "Delayed damage strong (hazardcount +4/16 per second)";
//	118 = "Carry player by tag";
//	196 = "Healing Sector";
//	197 = "Lightning Outdoor";
//	198 = "Lightning Indoor 2";
//	199 = "Lightning Indoor 1";
//	200 = "Sky 2 (MAPINFO)";
//	201 = "Scroll North (slow)";
//	202 = "Scroll North (medium)";
//	203 = "Scroll North (fast)";
//	204 = "Scroll East (slow)";
//	205 = "Scroll East (medium)";
//	206 = "Scroll East (fast)";
//	207 = "Scroll South (slow)";
//	208 = "Scroll South (medium)";
//	209 = "Scroll South (fast)";
//	210 = "Scroll West (slow)";
//	211 = "Scroll West (medium)";
//	212 = "Scroll West (fast)";
//	213 = "Scroll NorthWest (slow)";
//	214 = "Scroll NorthWest (medium)";
//	215 = "Scroll NorthWest (fast)";
//	216 = "Scroll NorthEast (slow)";
//	217 = "Scroll NorthEast (medium)";
//	218 = "Scroll NorthEast (fast)";
//	219 = "Scroll SouthEast (slow)";
//	220 = "Scroll SouthEast (medium)";
//	221 = "Scroll SouthEast (fast)";
//	222 = "Scroll SouthWest (slow)";
//	223 = "Scroll SouthWest (medium)";
//	224 = "Scroll SouthWest (fast)";
	225 = "Carry East Slow";
	226 = "Carry East Med.Slow";
	227 = "Carry East Medium";
	228 = "Carry East Med.Fast";
	229 = "Carry East Fast";
	230 = "Carry North Slow";
	231 = "Carry North Med.Slow";
	232 = "Carry North Medium";
	233 = "Carry North Med.Fast";
	234 = "Carry North Fast";
	235 = "Carry South Slow";
	236 = "Carry South Med.Slow";
	237 = "Carry South Medium";
	238 = "Carry South Med.Fast";
	239 = "Carry South Fast";
	240 = "Carry West Slow";
	241 = "Carry West Med.Slow";
	242 = "Carry West Medium";
	243 = "Carry West Med.Fast";
	244 = "Carry West Fast";
}

linedefflags_udmf
{
	twosided = "Doublesided";
	dontpegtop = "Upper unpegged";
	dontpegbottom = "Lower unpegged";

	blocking = "Impassable";
	blockeverything = "Block everything"; 
//	blockplayers = "Block players";
	blockmonsters = "Block monsters";
//	blockfloaters = "Block floating monsters";
	blocksound = "Block sound";
//	blockprojectiles = "Block projectiles";
//	blockhitscan = "Block hitscans";
//	blockuse = "Block use actions";
//	blocksight = "Block monster line of sight";

	jumpover = "Jump-over railing";
	clipmidtex = "Clip middle texture";
//	wrapmidtex = "Wrap middle texture";
	midtex3d = "Walkable middle texture";
	midtex3dimpassible = "Projectile shoot-through middle texture";

	mapped = "Initially shown on map";
	secret = "Shown as 1-sided on map";
	dontdraw = "Not shown on map";
//	transparent = "Transparent (25% opacity)";
	translucent = "Translucent (obsolete)";
//	monsteractivate = "Monster activates";
	zoneboundary = "Sound zone boundary";

	upperportal = "Upper part copies backsector's portal";
	lowerportal = "Lower part copies backsector's portal";
}

linedefactivations_udmf
{
	repeatspecial
	{
		name = "Repeatable action";
		istrigger = false;
	}
	playeruse = "When player presses use";
	playercross = "When player walks over";
	playerpush = "When player bumps";
	monsteruse = "When monster presses use";
	monstercross = "When monster walks over";
	monsterpush = "When monsters bumps";
	monstershoot = "On monster hitscan impact";
//	anycross = "Any crossing non-missile activates";
	missilecross = "When projectile crosses";
    polycross = "When polyobject moves over";
	impact = "On player hitscan impact";
//	checkswitchrange = "Switch height check";
	passuse
	{
		name = "Pass use on";
		istrigger = false;
	}
	firstsideonly
	{
		name = "Front side only";
		istrigger = false;
	}
//	playeruseback = "Player can use from back side";
}

sidedefflags
{
//	clipmidtex = "Clip middle texture";
//	wrapmidtex = "Wrap middle texture";
//	smoothlighting = "Smooth lighting";
//	nofakecontrast = "Even lighting";
//	nodecals = "No decals";
//	lightfog = "Use sidedef brightness on fogged walls";
}

// Basic UDMF stuff.
thingflags_udmf
{
	skill1 = "Skill 1";
	skill2 = "Skill 2";
	skill3 = "Skill 3";
	skill4 = "Skill 4";
	skill5 = "Skill 5";
	single = "Singleplayer";
	coop = "Cooperative";
	dm = "Deathmatch";
	friend = "Friendly (MBF logic)";
	strifeally = "Friendly (Strife logic)";
	ambush = "Ambush players";
	standing = "Stand still";
	dormant = "Dormant";
	translucent = "Translucent (25%)";
	invisible = "Invisible";
	class1 = "Class 1";
	class2 = "Class 2";
	class3 = "Class 3";
}

// How thing flags should be compared (for the stuck thing error check)
thingflagscompare_udmf
{
	skills
	{
		skill1;
		skill2;
		skill3;
		skill4;
		skill5;
	}

	gamemodes
	{
		single { requiredgroups = "skills"; }
		coop   { requiredgroups = "skills"; }
		dm      { ignoredgroups = "skills"; }
	}

	classes
	{
		class1;
		class2;
		class3;
	}
}

enums
{
	change
	{
		0 = "No texture or type change";
		1 = "Copy texture, zero type; trigger model";
		2 = "Copy texture, zero type; numeric model";
		3 = "Copy texture, preserve type; trigger model";
		4 = "Copy texture, preserve type; numeric model";
		5 = "Copy texture and type; trigger model";
		6 = "Copy texture and type; numeric model";
	}
}