diff --git a/extras/conf/udb/Includes/SRB222_linedefs.cfg b/extras/conf/udb/Includes/SRB222_linedefs.cfg
index c63947f658ad611b488f0455a44a91d052f9d345..0847826d43d71015907bc5621b95376c8d7f7e2f 100644
--- a/extras/conf/udb/Includes/SRB222_linedefs.cfg
+++ b/extras/conf/udb/Includes/SRB222_linedefs.cfg
@@ -1582,89 +1582,106 @@ udmf
 				}
 			}
 		}
-	}
 
-	200
-	{
-		title = "Light Block";
-		prefix = "(200);
-		arg0
-		{
-			title = "Target sector tag";
-			type = 13;
-		}
-		arg1
+		200
 		{
-			title = "Expand to bottom?";
-			type = 11;
-			enum = "noyes";
+			title = "Light Block";
+			prefix = "(200);
+			arg0
+			{
+				title = "Target sector tag";
+				type = 13;
+			}
+			arg1
+			{
+				title = "Expand to bottom?";
+				type = 11;
+				enum = "noyes";
+			}
 		}
-	}
 
-	202
-	{
-		title = "Fog Block";
-		prefix = "(202);
-		arg0
+		202
 		{
-			title = "Target sector tag";
-			type = 13;
+			title = "Fog Block";
+			prefix = "(202);
+			arg0
+			{
+				title = "Target sector tag";
+				type = 13;
+			}
 		}
-	}
 
-	223
-	{
-		title = "Intangible, Invisible";
-		prefix = "(223);
-		arg0
+		223
 		{
-			title = "Target sector tag";
-			type = 13;
+			title = "Intangible, Invisible";
+			prefix = "(223);
+			arg0
+			{
+				title = "Target sector tag";
+				type = 13;
+			}
 		}
-	}
 
-	250
-	{
-		title = "Mario Block";
-		prefix = "(250);
-		arg0
-		{
-			title = "Target sector tag";
-			type = 13;
-		}
-		arg1
+		250
 		{
-			title = "Block type";
-			type = 12;
-			enum
+			title = "Mario Block";
+			prefix = "(250);
+			arg0
 			{
-				1 = "Brick";
-				2 = "Invisible";
+				title = "Target sector tag";
+				type = 13;
+			}
+			arg1
+			{
+				title = "Block type";
+				type = 12;
+				enum
+				{
+					1 = "Brick";
+					2 = "Invisible";
+				}
 			}
 		}
-	}
 
-	251
-	{
-		title = "Thwomp Block";
-		prefix = "(251);
-		arg0
-		{
-			title = "Target sector tag";
-			type = 13;
-		}
-		arg1
-		{
-			title = "Falling speed";
-		}
-		arg2
+		251
 		{
-			title = "Rising speed";
+			title = "Thwomp Block";
+			prefix = "(251);
+			arg0
+			{
+				title = "Target sector tag";
+				type = 13;
+			}
+			arg1
+			{
+				title = "Falling speed";
+			}
+			arg2
+			{
+				title = "Rising speed";
+			}
+			stringarg0
+			{
+				title = "Crushing sound";
+				type = 2;
+			}
 		}
-		stringarg0
+
+		258
 		{
-			title = "Crushing sound";
-			type = 2;
+			title = "Laser";
+			prefix = "(258)";
+			arg0
+			{
+				title = "Target sector tag";
+				type = 13;
+			}
+			arg1
+			{
+				title = "Damage bosses?";
+				type = 11;
+				enum = "yesno";
+			}
 		}
 	}
 
diff --git a/src/p_setup.c b/src/p_setup.c
index 82671abb0165848a190937b9ce2ba399f5154bb8..7c8a8c1473246f8b8d4682f39fcff33a8635ed51 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -2958,6 +2958,11 @@ static void P_ConvertBinaryMap(void)
 				M_Memcpy(lines[i].stringargs[0], buffer, strlen(buffer) + 1);
 			}
 			break;
+		case 258: //FOF: Laser
+			lines[i].args[0] = lines[i].tag;
+			if (lines[i].flags & ML_EFFECT1)
+				lines[i].args[1] = 1;
+			break;
 		case 443: //Call Lua function
 			if (lines[i].text)
 			{
diff --git a/src/p_spec.c b/src/p_spec.c
index 774c7162ae9c4b575dbbf02a54fc6e4dc8ff8b04..5288d277322c87df056200a5ad4ef91e72d4c2e5 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -6293,7 +6293,7 @@ void T_LaserFlash(laserthink_t *flash)
 	{
 		thing = node->m_thing;
 
-		if ((fflr->master->flags & ML_EFFECT1)
+		if ((fflr->master->args[1])
 			&& thing->flags & MF_BOSS)
 			continue; // Don't hurt bosses
 
@@ -7045,7 +7045,7 @@ void P_SpawnSpecials(boolean fromnetsave)
 				sec = sides[*lines[i].sidenum].sector - sectors;
 
 				// No longer totally disrupts netgames
-				for (s = -1; (s = P_FindSectorFromLineTag(lines + i, s)) >= 0 ;)
+				for (s = -1; (s = P_FindSectorFromTag(lines[i].args[0], s)) >= 0 ;)
 					EV_AddLaserThinker(&sectors[s], &sectors[sec], lines + i, secthinkers);
 				break;