From 2a1f96aa3cecae4c41d5c6cee918a6c69e5213dc Mon Sep 17 00:00:00 2001
From: MascaraSnake <jonassauer27@gmail.com>
Date: Thu, 30 Dec 2021 14:26:51 +0100
Subject: [PATCH] Adapt linedef type 8 to UDMF

---
 extras/conf/udb/Includes/SRB222_linedefs.cfg |  6 +++++
 src/p_setup.c                                | 28 ++++++++++++++++++++
 src/p_spec.c                                 | 26 +++---------------
 3 files changed, 38 insertions(+), 22 deletions(-)

diff --git a/extras/conf/udb/Includes/SRB222_linedefs.cfg b/extras/conf/udb/Includes/SRB222_linedefs.cfg
index da54414da..e8ec7de2b 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 b83d950f2..987f4f6f5 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 37b077535..ef48fbf62 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
-- 
GitLab