diff --git a/extras/conf/udb/Includes/SRB222_linedefs.cfg b/extras/conf/udb/Includes/SRB222_linedefs.cfg
index 448e98dc77f7669a34ae8426aac4b9089be879a7..84ff06385940faf1162c1cdf4d92ec440c5b8321 100644
--- a/extras/conf/udb/Includes/SRB222_linedefs.cfg
+++ b/extras/conf/udb/Includes/SRB222_linedefs.cfg
@@ -2152,9 +2152,13 @@ udmf
 			}
 			arg2
 			{
-				title = "Damage bosses?";
-				type = 11;
-				enum = "yesno";
+				title = "Flags";
+				type = 12;
+				enum
+				{
+					1 = "Don't damage bosses";
+					2 = "Cut cyan flat pixels";
+				}
 			}
 		}
 
diff --git a/src/p_setup.c b/src/p_setup.c
index c72887c7a80d427af3f460fd27e675b9a6a39804..2ae01f86930416c4d108427f7a57277a796a4ec7 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -3373,12 +3373,19 @@ static void P_ConvertBinaryMap(void)
 			break;
 		case 258: //FOF: Laser
 			lines[i].args[0] = lines[i].tag;
+
+			//Alpha
 			if (sides[lines[i].sidenum[0]].toptexture > 0)
 				lines[i].args[1] = sides[lines[i].sidenum[0]].toptexture;
 			else
 				lines[i].args[1] = 128;
+
+			//Flags
 			if (lines[i].flags & ML_EFFECT1)
-				lines[i].args[2] = 1;
+				lines[i].args[2] = TMFL_NOBOSSES;
+			if (lines[i].flags & ML_EFFECT6)
+				lines[i].args[2] = TMFL_SPLAT;
+
 			break;
 		case 259: //Custom FOF
 			if (lines[i].sidenum[1] == 0xffff)
diff --git a/src/p_spec.c b/src/p_spec.c
index 214e7e1c088f8d4c51f6d7b96fbc0287d68877d9..66ad1893a847b545103fb894fb9dd905b0ef83ed 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -6927,8 +6927,11 @@ void P_SpawnSpecials(boolean fromnetsave)
 				break;
 
 			case 258: // Laser block
-				P_AddLaserThinker(lines[i].args[0], lines + i, !!(lines[i].args[2]));
-				P_AddFakeFloorsByLine(i, lines[i].args[1], FF_EXISTS|FF_RENDERALL|FF_NOSHADE|FF_EXTRA|FF_CUTEXTRA|FF_TRANSLUCENT, secthinkers);
+				ffloorflags = FF_EXISTS|FF_RENDERALL|FF_NOSHADE|FF_EXTRA|FF_CUTEXTRA|FF_TRANSLUCENT;
+				P_AddLaserThinker(lines[i].args[0], lines + i, !!(lines[i].args[2] & TMFL_NOBOSSES));
+				if (lines[i].args[2] & TMFL_SPLAT)
+					ffloorflags |= FF_SPLAT;
+				P_AddFakeFloorsByLine(i, lines[i].args[1], ffloorflags, secthinkers);
 				break;
 
 			case 259: // Custom FOF
diff --git a/src/p_spec.h b/src/p_spec.h
index 59aeb9f4d8434ed8c07999ee8662f90e12d32abd..661b74738778c00d0b0ae8acd33ca5408eab0077 100644
--- a/src/p_spec.h
+++ b/src/p_spec.h
@@ -97,6 +97,12 @@ typedef enum
 	TMFB_ONLYBOTTOM  = 1<<2,
 } textmapfofbustflags_t;
 
+typedef enum
+{
+	TMFL_NOBOSSES = 1,
+	TMFL_SPLAT    = 1<<1,
+} textmapfoflaserflags_t;
+
 // GETSECSPECIAL (specialval, section)
 //
 // Pulls out the special # from a particular section.