From 2da5b54e7383bb4017d310bd3d18f85cb1177b86 Mon Sep 17 00:00:00 2001
From: MascaraSnake <jonassauer27@gmail.com>
Date: Sun, 27 Jun 2021 12:21:26 +0200
Subject: [PATCH] Now that set flats linedef exists, simplify set heights
 linedef

---
 extras/conf/udb/Includes/SRB222_linedefs.cfg | 18 +++++-----------
 src/p_ceilng.c                               | 22 +++++++-------------
 src/p_floor.c                                |  6 ++----
 src/p_setup.c                                |  4 ++--
 src/p_spec.c                                 |  4 ++--
 5 files changed, 18 insertions(+), 36 deletions(-)

diff --git a/extras/conf/udb/Includes/SRB222_linedefs.cfg b/extras/conf/udb/Includes/SRB222_linedefs.cfg
index 0e110cfb6c..abe50c1b52 100644
--- a/extras/conf/udb/Includes/SRB222_linedefs.cfg
+++ b/extras/conf/udb/Includes/SRB222_linedefs.cfg
@@ -2434,23 +2434,15 @@ udmf
 			}
 			arg1
 			{
-				title = "Set heights?";
-				type = 12;
-				enum
-				{
-					1 = "Floor";
-					2 = "Ceiling";
-				}
+				title = "Affected planes";
+				type = 11;
+				enum = "floorceiling";
 			}
 			arg2
 			{
 				title = "Set flats?";
-				type = 12;
-				enum
-				{
-					1 = "Floor";
-					2 = "Ceiling";
-				}
+				type = 11;
+				enum = "noyes";
 			}
 		}
 
diff --git a/src/p_ceilng.c b/src/p_ceilng.c
index b64d496fbe..ed385be33a 100644
--- a/src/p_ceilng.c
+++ b/src/p_ceilng.c
@@ -273,27 +273,19 @@ INT32 EV_DoCeiling(mtag_t tag, line_t *line, ceiling_e type)
 			case instantMoveCeilingByFrontSector:
 				ceiling->speed = INT32_MAX/2;
 
-				if (lines->args[1] & 2)
+				if (line->frontsector->ceilingheight >= sec->ceilingheight) // Move up
 				{
-					if (line->frontsector->ceilingheight >= sec->ceilingheight) // Move up
-					{
-						ceiling->direction = 1;
-						ceiling->topheight = line->frontsector->ceilingheight;
-					}
-					else // Move down
-					{
-						ceiling->direction = -1;
-						ceiling->bottomheight = line->frontsector->ceilingheight;
-					}
+					ceiling->direction = 1;
+					ceiling->topheight = line->frontsector->ceilingheight;
 				}
-				else
+				else // Move down
 				{
-					ceiling->direction = 1;
-					ceiling->topheight = sec->ceilingheight;
+					ceiling->direction = -1;
+					ceiling->bottomheight = line->frontsector->ceilingheight;
 				}
 
 				// If flag is set, change ceiling texture after moving
-				ceiling->texture = (line->args[2] & 2) ? line->frontsector->ceilingpic : -1;
+				ceiling->texture = line->args[2] ? line->frontsector->ceilingpic : -1;
 				break;
 
 			case moveCeilingByDistance:
diff --git a/src/p_floor.c b/src/p_floor.c
index e388657cf2..eebb9366ea 100644
--- a/src/p_floor.c
+++ b/src/p_floor.c
@@ -1796,11 +1796,9 @@ void EV_DoFloor(mtag_t tag, line_t *line, floor_e floortype)
 				dofloor->floordestheight = P_FindLowestFloorSurrounding(sec);
 				break;
 
-			// Linedef executor command, linetype 101.
-			// Front sector floor = destination height.
 			case instantMoveFloorByFrontSector:
 				dofloor->speed = INT32_MAX/2; // as above, "instant" is one tic
-				dofloor->floordestheight = (line->args[1] & 1) ? line->frontsector->floorheight : sec->floorheight;
+				dofloor->floordestheight = line->frontsector->floorheight;
 
 				if (dofloor->floordestheight >= sec->floorheight)
 					dofloor->direction = 1; // up
@@ -1808,7 +1806,7 @@ void EV_DoFloor(mtag_t tag, line_t *line, floor_e floortype)
 					dofloor->direction = -1; // down
 
 				// If flag is set, change floor texture after moving
-				dofloor->texture = (line->args[2] & 1) ? line->frontsector->floorpic : -1;
+				dofloor->texture = line->args[2] ? line->frontsector->floorpic : -1;
 				break;
 
 			case moveFloorByFrontSector:
diff --git a/src/p_setup.c b/src/p_setup.c
index 56c3ed78ba..2b03fe173d 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -3548,8 +3548,8 @@ static void P_ConvertBinaryMap(void)
 		case 400: //Set tagged sector's floor height/texture
 		case 401: //Set tagged sector's ceiling height/texture
 			lines[i].args[0] = tag;
-			lines[i].args[1] = lines[i].special - 399;
-			lines[i].args[2] = (lines[i].flags & ML_NOCLIMB) ? 0 : lines[i].special - 399;
+			lines[i].args[1] = lines[i].special - 400;
+			lines[i].args[2] = !!(lines[i].flags & ML_NOCLIMB);
 			lines[i].special = 400;
 			break;
 		case 403: //Move tagged sector's floor
diff --git a/src/p_spec.c b/src/p_spec.c
index 66071d9c62..a3fdbe629e 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -2234,9 +2234,9 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
 	switch (line->special)
 	{
 		case 400: // Set tagged sector's heights/flats
-			if (line->args[1] & 1 || line->args[2] & 1)
+			if (line->args[1] != 1)
 				EV_DoFloor(line->args[0], line, instantMoveFloorByFrontSector);
-			if (line->args[1] & 2 || line->args[2] & 2)
+			if (line->args[1] != 0)
 				EV_DoCeiling(line->args[0], line, instantMoveCeilingByFrontSector);
 			break;
 
-- 
GitLab