diff --git a/extras/conf/udb/Includes/SRB222_linedefs.cfg b/extras/conf/udb/Includes/SRB222_linedefs.cfg
index da54414da166ba09be21f84ca103d31e73ec0781..e8ec7de2b74f7e1d69defd544e9f3cde876f122e 100644
--- a/extras/conf/udb/Includes/SRB222_linedefs.cfg
+++ b/extras/conf/udb/Includes/SRB222_linedefs.cfg
@@ -1721,6 +1721,12 @@ udmf
 			}
 		}
 
+		8
+		{
+			title = "Set Camera Collision Planes";
+			prefix = "(8)";
+		}
+
 		11
 		{
 			title = "Rope Hang Parameters";
diff --git a/src/p_setup.c b/src/p_setup.c
index b83d950f2305feb5acb17e3402fe2b400c074977..987f4f6f5a0ac6823413b6262decfbba065a9a3a 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -3245,6 +3245,34 @@ static void P_ConvertBinaryMap(void)
 				lines[i].special = 0;
 			}
 			break;
+		case 8: //Special sector properties
+		{
+			INT32 s;
+
+			TAG_ITER_SECTORS(tag, s)
+			{
+				if (lines[i].flags & ML_NOCLIMB)
+				{
+					sectors[s].flags &= ~MSF_FLIPSPECIAL_FLOOR;
+					sectors[s].flags |= MSF_FLIPSPECIAL_CEILING;
+				}
+				else if (lines[i].flags & ML_EFFECT4)
+					sectors[s].flags |= MSF_FLIPSPECIAL_BOTH;
+
+				if (lines[i].flags & ML_EFFECT3)
+					sectors[s].flags |= MSF_TRIGGERSPECIAL_TOUCH;
+				if (lines[i].flags & ML_EFFECT2)
+					sectors[s].flags |= MSF_TRIGGERSPECIAL_HEADBUMP;
+
+				if (lines[i].flags & ML_EFFECT1)
+					sectors[s].flags |= MSF_INVERTPRECIP;
+			}
+
+			if (GETSECSPECIAL(lines[i].frontsector->special, 4) != 12)
+				lines[i].special = 0;
+
+			break;
+		}
 		case 10: //Culling plane
 			lines[i].args[0] = tag;
 			lines[i].args[1] = !!(lines[i].flags & ML_NOCLIMB);
diff --git a/src/p_spec.c b/src/p_spec.c
index 37b07753560aa35a7465749c62958aae3e3bc7b4..ef48fbf62565520862605afd6038d5ff7899f7e8 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -6143,28 +6143,10 @@ void P_SpawnSpecials(boolean fromnetsave)
 				break;
 			}
 
-			case 8: // Sector Parameters
-				TAG_ITER_SECTORS(tag, s)
-				{
-					if (lines[i].flags & ML_NOCLIMB)
-					{
-						sectors[s].flags &= ~MSF_FLIPSPECIAL_FLOOR;
-						sectors[s].flags |= MSF_FLIPSPECIAL_CEILING;
-					}
-					else if (lines[i].flags & ML_EFFECT4)
-						sectors[s].flags |= MSF_FLIPSPECIAL_BOTH;
-
-					if (lines[i].flags & ML_EFFECT3)
-						sectors[s].flags |= MSF_TRIGGERSPECIAL_TOUCH;
-					if (lines[i].flags & ML_EFFECT2)
-						sectors[s].flags |= MSF_TRIGGERSPECIAL_HEADBUMP;
-
-					if (lines[i].flags & ML_EFFECT1)
-						sectors[s].flags |= MSF_INVERTPRECIP;
-
-					if (lines[i].frontsector && GETSECSPECIAL(lines[i].frontsector->special, 4) == 12)
-						sectors[s].camsec = sides[*lines[i].sidenum].sector-sectors;
-				}
+			case 8: // Set camera collision planes
+				if (lines[i].frontsector)
+					TAG_ITER_SECTORS(tag, s)
+						sectors[s].camsec = lines[i].frontsector-sectors;
 				break;
 
 			case 10: // Vertical culling plane for sprites and FOFs