Boom compatibility and portability

edited 2014 Jan 22 in Technical Support
Two questions, one topic:

Is it possible to make Doomsday work properly in an USB stick (and changing folders as the user sees fit, without giving troubles)?

Is XG scripts a reliable way to open doors for Boom compatibility in Doomsday (so all one would need to activate Boom compatibility, is just loading it as a WAD file or something)? We would need a Boom specific reference for all sorts of lines it uses, though.

EDIT: I will dig through Doom Builder files to list Boom's exclusive lines, sectors and things types. The source is Boom.cfg.

Boom's thing types
		5001 = "Pusher";
		5002 = "Puller";

Boom things' flags
	32 = "Not Deathmatch";
	64 = "Not Cooperative";



Boom extended linedef types
	142 = "W1 Floor Raise by 512";
	143 = "W1 Lift Raise by 24 (changes texture)";
	144 = "W1 Lift Raise by 24 (remove effect)";
	145 = "W1 Ceiling Lower to Floor (fast)";
	146 = "W1 Donut Raise";
	147 = "WR Floor Raise by 512";
	148 = "WR Lift Raise by 24 (changes texture)";
	149 = "WR Lift Raise by 24 (remove effect)";
	150 = "WR Crusher Start (silent)";
	151 = "WR Ceiling Raise to Highest Ceiling";
	152 = "WR Ceiling Lower to Floor (fast)";
	153 = "W1 Change Texture And Effect";
	154 = "WR Change Texture And Effect";
	155 = "WR Donut Raise";
	156 = "WR Light Start Blinking";
	157 = "WR Light Change to Darkest";
	158 = "S1 Floor Raise by Shortest Lower Texture";
	159 = "S1 Floor Lower to Lowest Floor";
	160 = "S1 Floor Raise by 24 (changes texture and effect)";
	161 = "S1 Floor Raise by 24";
	162 = "S1 Lift Perpetual Lowest and Highest Floors";
	163 = "S1 Lift Stop";
	164 = "S1 Crusher Start (fast)";
	165 = "S1 Crusher Start (silent)";
	166 = "S1 Ceiling Raise to Highest Ceiling";
	167 = "S1 Ceiling Lower to 8 Above Floor";
	168 = "S1 Crusher Stop";
	169 = "S1 Light Change to Brightest";
	170 = "S1 Light Change to 35";
	171 = "S1 Light Change to 255";
	172 = "S1 Light Start Blinking";
	173 = "S1 Light Change to Darkest";
	174 = "S1 Teleport (also monsters)";
	175 = "S1 Door Close Wait Open (30 seconds)";
	176 = "SR Floor Raise by Shortest Lower Texture";
	177 = "SR Floor Lower to Lowest Floor";
	178 = "SR Floor Raise by 512";
	179 = "SR Floor Raise by 24 (changes texture and effect)";
	180 = "SR Floor Raise by 24";
	181 = "SR Lift Perpetual Lowest and Highest Floors";
	182 = "SR Lift Stop";
	183 = "SR Crusher Start (fast)";
	184 = "SR Crusher Start";
	185 = "SR Crusher Start (silent)";
	186 = "SR Ceiling Raise to Highest Ceiling";
	187 = "SR Ceiling Lower to 8 Above Floor";
	188 = "SR Crusher Stop";
	189 = "S1 Change Texture And Effect";
	190 = "SR Change Texture And Effect";
	191 = "SR Donut Raise";
	192 = "SR Light Change to Brightest";
	193 = "SR Light Start Blinking";
	194 = "SR Light Change to Darkest";
	195 = "SR Teleport (also monsters)";
	196 = "SR Door Close Wait Open (30 seconds)";
	197 = "G1 Exit Level";
	198 = "G1 Exit Level (goes to secret level)";
	199 = "W1 Ceiling Lower to Lowest Ceiling";
	200 = "W1 Ceiling Lower to Highest Floor";
	201 = "WR Ceiling Lower to Lowest Ceiling";
	202 = "WR Ceiling Lower to Highest Floor";
	203 = "S1 Ceiling Lower to Lowest Ceiling";
	204 = "S1 Ceiling Lower to Highest Floor";
	205 = "SR Ceiling Lower to Lowest Ceiling";
	206 = "SR Ceiling Lower to Highest Floor";
	207 = "W1 Teleport (also monsters, silent, same angle)";
	208 = "WR Teleport (also monsters, silent, same angle)";
	209 = "S1 Teleport (also monsters, silent, same angle)";
	210 = "SR Teleport (also monsters, silent, same angle)";
	211 = "SR Lift Raise to Ceiling (instantly)";
	212 = "WR Lift Raise to Ceiling (instantly)";
	213 = " Floor Change Brightness to this Brightness";
	214 = " Scroll Ceiling Accelerates when Sector Changes Height";
	215 = " Scroll Floor Accelerates when Sector Changes Height";
	216 = " Scroll Things Accelerates when Sector Changes Height";
	217 = " Scroll Floor/Things Accelerates when Sector Changes Height";
	218 = " Scroll Wall Accelerates when Sector Changes Height";
	219 = "W1 Floor Lower to Nearest Floor";
	220 = "WR Floor Lower to Nearest Floor";
	221 = "S1 Floor Lower to Nearest Floor";
	222 = "SR Floor Lower to Nearest Floor";
	223 = " Friction Tagged Sector: Drag < 100, Slide > 100";
	224 = " Wind according to Line Vector";
	225 = " Current according to Line Vector";
	226 = " Wind/Current by Push/Pull Thing In Sector";
	227 = "W1 Lift Raise to Next Highest Floor (fast)";
	228 = "WR Lift Raise to Next Highest Floor (fast)";
	229 = "S1 Lift Raise to Next Highest Floor (fast)";
	230 = "SR Lift Raise to Next Highest Floor (fast)";
	231 = "W1 Lift Lower to Next Lowest Floor (fast)";
	232 = "WR Lift Lower to Next Lowest Floor (fast)";
	233 = "S1 Lift Lower to Next Lowest Floor (fast)";
	234 = "SR Lift Lower to Next Lowest Floor (fast)";
	235 = "W1 Lift Move to Same Floor Height (fast)";
	236 = "WR Lift Move to Same Floor Height (fast)";
	237 = "S1 Lift Move to Same Floor Height (fast)";
	238 = "SR Lift Move to Same Floor Height (fast)";
	239 = "W1 Change Texture and Effect to Nearest";
	240 = "WR Change Texture and Effect to Nearest";
	241 = "S1 Change Texture and Effect to Nearest";
	242 = " Create Fake Ceiling and Floor";
	243 = "W1 Teleport to Line With Same Tag (silent, same angle)";
	244 = "WR Teleport to Line With Same Tag (silent, same angle)";
	245 = " Scroll Ceiling when Sector Changes Height";
	246 = " Scroll Floor when Sector Changes Height";
	247 = " Scroll Move Things when Sector Changes Height";
	248 = " Scroll Floor/Move Things when Sector Changes Height";
	249 = " Scroll Wall when Sector Changes Height";
	250 = " Scroll Ceiling according to Line Vector";
	251 = " Scroll Floor according to Line Vector";
	252 = " Scroll Move Things according to Line Vector";
	253 = " Scroll Floor, Move Things";
	254 = " Scroll Wall according to Line Vector";
	255 = " Scroll Wall using Sidedef Offsets";
	256 = "WR Stairs Raise by 8";
	257 = "WR Stairs Raise by 16 (fast)";
	258 = "SR Stairs Raise by 8";
	259 = "SR Stairs Raise by 16 (fast)";
	260 = " Translucent";
	261 = " Ceiling Brightness to this Brightness";
	262 = "W1 Teleport to Line With Same Tag (silent, reversed angle)";
	263 = "WR Teleport to Line With Same Tag (silent, reversed angle)";
	264 = "W1 Teleport to Line With Same Tag (also monsters, silent, reversed angle)";
	265 = "WR Teleport to Line With Same Tag (also monsters, reversed angle)";
	266 = "W1 Teleport to Line With Same Tag (monsters only, silent)";
	267 = "WR Teleport to Line With Same Tag (monsters only, silent)";
	268 = "W1 Teleport (monsters only, silent)";
	269 = "WR Teleport (monsters only, silent)";
	271 = " Transfer Sky Texture to Tagged Sectors";
	272 = " Transfer Sky Texture to Tagged Sectors (flipped)";

Boom's Linedef flag
	512 = "PassThru";


The major issue I found, is that Boom's generalized linedef types uses a Quake-styled dmflags scheme, for every category/flag you change, it adds a certain value to the category's number. Here is the raw data, hopefully it is clear enough.

Normal
	normal
	{
		title = "Normal";
		offset = 0;
		length = 0;
	}

Floors
floors
	{
		title = "Floor";
		offset = 24576;  // category number when all flags are zero
		length = 8192;   // goes up to 24576 + 8192 = 32768.
		
		trigger
		{
			0 = "Walk Over Once";
			1 = "Walk Over Repeatable";
			2 = "Switch Once";
			3 = "Switch Repeatable";
			4 = "Gunfire Once";
			5 = "Gunfire Repeatable";
			6 = "Door Once";
			7 = "Door Repeatable";
		}
		
		direction
		{
			0 = "Down";
			64 = "Up";
		}
		
		target
		{
			0 = "Highest Adjacent Floor";
			128 = "Lowest Adjacent Floor";
			256 = "Next Adjacent Floor";
			384 = "Lowest Adjacent Ceiling";
			512 = "Ceiling";
			640 = "Shortest Lower Texture";
			768 = "24 Map Pixels (relative)";
			896 = "32 Map Pixels (relative)";
		}
		
		speed
		{
			0 = "Slow";
			8 = "Normal";
			16 = "Fast";
			24 = "Turbo";
		}
		
		model
		{
			0 = "Trigger";
			32 = "Numeric";
		}
		
		change
		{
			0 = "None";
			1024 = "Change Texture and Remove Effect";
			2048 = "Change Texture Only";
			3072 = "Change Texture and Effect";
		}
		
		crusher
		{
			0 = "No";
			4096 = "Yes";
		}
	}

Ceilings
ceilings
	{
		title = "Ceiling";
		offset = 16384;
		length = 8192;
		
		trigger
		{
			0 = "Walk Over Once";
			1 = "Walk Over Repeatable";
			2 = "Switch Once";
			3 = "Switch Repeatable";
			4 = "Gunfire Once";
			5 = "Gunfire Repeatable";
			6 = "Door Once";
			7 = "Door Repeatable";
		}
		
		direction
		{
			0 = "Down";
			64 = "Up";
		}
		
		target
		{
			0 = "Highest Adjacent Ceiling";
			128 = "Lowest Adjacent Ceiling";
			256 = "Next Adjacent Ceiling";
			384 = "Highest Adjacent Floor";
			512 = "Floor";
			640 = "Shortest Lower Texture";
			768 = "24 Map Pixels (relative)";
			896 = "32 Map Pixels (relative)";
		}
		
		speed
		{
			0 = "Slow";
			8 = "Normal";
			16 = "Fast";
			24 = "Turbo";
		}
		
		model
		{
			0 = "Trigger";
			32 = "Numeric";
		}
		
		change
		{
			0 = "None";
			1024 = "Change Texture and Remove Effect";
			2048 = "Change Texture Only";
			3072 = "Change Texture and Effect";
		}
		
		crusher
		{
			0 = "No";
			4096 = "Yes";
		}
	}

Doors
doors
	{
		title = "Door";
		offset = 15360;
		length = 1024;
		
		trigger
		{
			0 = "Walk Over Once";
			1 = "Walk Over Repeatable";
			2 = "Switch Once";
			3 = "Switch Repeatable";
			4 = "Gunfire Once";
			5 = "Gunfire Repeatable";
			6 = "Door Once";
			7 = "Door Repeatable";
		}
		
		action
		{
			0 = "Open Wait Close";
			32 = "Open Only";
			64 = "Close Wait Open";
			96 = "Close Only";
		}
		
		speed
		{
			0 = "Slow";
			8 = "Normal";
			16 = "Fast";
			24 = "Turbo";
		}
		
		wait
		{
			0 = "1 Second";
			256 = "4 Seconds";
			512 = "9 Seconds";
			768 = "30 Seconds";
		}
		
		monsters
		{
			0 = "No";
			128 = "Yes";
		}
	}

Locked Doors
lockeddoors
	{
		title = "Locked Door";
		offset = 14336;
		length = 1024;
		
		trigger
		{
			0 = "Walk Over Once";
			1 = "Walk Over Repeatable";
			2 = "Switch Once";
			3 = "Switch Repeatable";
			4 = "Gunfire Once";
			5 = "Gunfire Repeatable";
			6 = "Door Once";
			7 = "Door Repeatable";
		}
		
		action
		{
			0 = "Open Wait Close";
			32 = "Open Only";
		}
		
		speed
		{
			0 = "Slow";
			8 = "Normal";
			16 = "Fast";
			24 = "Turbo";
		}
		
		lock
		{
			0 = "Any";
			64 = "Red Keycard";
			128 = "Blue Keycard";
			192 = "Yellow Keycard";
			256 = "Red Skullkey";
			320 = "Blue Skullkey";
			384 = "Yellow Skullkey";
			448 = "All";
		}
		
		combination
		{
			0 = "No (each is a different key)";
			512 = "Keycard and Skullkey are same";
		}
	}

Lifts
lifts
	{
		title = "Lift";
		offset = 13312;
		length = 1024;
		
		trigger
		{
			0 = "Walk Over Once";
			1 = "Walk Over Repeatable";
			2 = "Switch Once";
			3 = "Switch Repeatable";
			4 = "Gunfire Once";
			5 = "Gunfire Repeatable";
			6 = "Door Once";
			7 = "Door Repeatable";
		}
		
		target
		{
			0 = "Lowest adjacent Floor";
			256 = "Next adjacent Floor";
			512 = "Lowest adjacent Ceiling";
			768 = "Perpetual Lowest and Highest Floors";
		}
		
		speed
		{
			0 = "Slow";
			8 = "Normal";
			16 = "Fast";
			24 = "Turbo";
		}
		
		delay
		{
			0 = "1 Second";
			64 = "3 Seconds";
			128 = "5 Seconds";
			192 = "10 Seconds";
		}
		
		monsters
		{
			0 = "No";
			32 = "Yes";
		}
	}

Stairs
stairs
	{
		title = "Stairs";
		offset = 12288;
		length = 1024;
		
		trigger
		{
			0 = "Walk Over Once";
			1 = "Walk Over Repeatable";
			2 = "Switch Once";
			3 = "Switch Repeatable";
			4 = "Gunfire Once";
			5 = "Gunfire Repeatable";
			6 = "Door Once";
			7 = "Door Repeatable";
		}
		
		direction
		{
			0 = "Down";
			256 = "Up";
		}
		
		step
		{
			0 = "4 Map Pixels";
			64 = "8 Map Pixels";
			128 = "16 Map Pixels";
			192 = "24 Map Pixels";
		}
		
		speed
		{
			0 = "Slow";
			8 = "Normal";
			16 = "Fast";
			24 = "Turbo";
		}
		
		break
		{
			0 = "At different texture";
			512 = "No";
		}
		
		monsters
		{
			0 = "No";
			32 = "Yes";
		}
	}

Crushers
crushers
	{
		title = "Crusher";
		offset = 12160;
		length = 128;
		
		trigger
		{
			0 = "Walk Over Once";
			1 = "Walk Over Repeatable";
			2 = "Switch Once";
			3 = "Switch Repeatable";
			4 = "Gunfire Once";
			5 = "Gunfire Repeatable";
			6 = "Door Once";
			7 = "Door Repeatable";
		}
		
		speed
		{
			0 = "Slow";
			8 = "Normal";
			16 = "Fast";
			24 = "Turbo";
		}
		
		silent
		{
			0 = "No";
			64 = "Yes";
		}
		
		monsters
		{
			0 = "No";
			32 = "Yes";
		}

The same rule applies for generalized sector types, except that there are no categories here, value may go up to 1009 (correct me if I am wrong):
	lighting
	{
		0 = "Normal";
		1 = "Light Blinks (randomly)";
		2 = "Light Blinks (0.5 sec)";
		3 = "Light Blinks (1 sec)";
		4 = "Light Blinks (0.5 sec) and Damage 10 or 20";
		8 = "Light Glows (1+ sec)";
		12 = "Light Blinks (0.5 sec sync)";
		13 = "Light Blinks (1 sec sync)";
		17 = "Light Flickers (randomly)";
	}
	
	damage
	{
		0 = "None";
		32 = "Damage 5 per second";
		64 = "Damage 10 per second";
		96 = "Damage 20 per second";
	}
	
	secret
	{
		0 = "No";
		128 = "Yes";
	}
	
	friction
	{
		0 = "Disabled";
		256 = "Enabled";
	}
	
	wind
	{
		0 = "Disabled";
		512 = "Enabled";
	}
Sign In or Register to comment.