From 720df51b6edd031050411d1c268b311703bcb4b8 Mon Sep 17 00:00:00 2001
From: MascaraSnake <jonassauer27@gmail.com>
Date: Mon, 27 Dec 2021 17:58:18 +0100
Subject: [PATCH] Adapt most flame jet settings to UDMF

---
 extras/conf/udb/Includes/SRB222_things.cfg | 24 ++++++++++++++++++++++
 src/p_mobj.c                               | 16 +++++----------
 src/p_setup.c                              |  6 ++++++
 3 files changed, 35 insertions(+), 11 deletions(-)

diff --git a/extras/conf/udb/Includes/SRB222_things.cfg b/extras/conf/udb/Includes/SRB222_things.cfg
index 7032dcca56..b07a7f8a73 100644
--- a/extras/conf/udb/Includes/SRB222_things.cfg
+++ b/extras/conf/udb/Includes/SRB222_things.cfg
@@ -6110,6 +6110,18 @@ udmf
 			sprite = "internal:flameh";
 			width = 16;
 			height = 40;
+			arg0
+			{
+				title = "On time";
+			}
+			arg1
+			{
+				title = "Off time";
+			}
+			arg2
+			{
+				title = "Strength";
+			}
 		}
 		1301
 		{
@@ -6117,6 +6129,18 @@ udmf
 			sprite = "internal:flamev";
 			width = 16;
 			height = 40;
+			arg0
+			{
+				title = "On time";
+			}
+			arg1
+			{
+				title = "Off time";
+			}
+			arg2
+			{
+				title = "Strength";
+			}
 		}
 		1302
 		{
diff --git a/src/p_mobj.c b/src/p_mobj.c
index b1b9db68a3..7a9b50c3da 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -7226,8 +7226,7 @@ static void P_FlameJetSceneryThink(mobj_t *mobj)
 	else
 		flame->angle += FixedAngle(mobj->fuse<<FRACBITS);
 
-	strength = 20*FRACUNIT;
-	strength -= ((20*FRACUNIT)/16)*mobj->movedir;
+	strength = (mobj->movedir ? mobj->movedir : 80)<<(FRACBITS-2);
 
 	P_InstaThrust(flame, flame->angle, strength);
 	S_StartSound(flame, sfx_fire);
@@ -7257,8 +7256,7 @@ static void P_VerticalFlameJetSceneryThink(mobj_t *mobj)
 
 	flame = P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_FLAMEJETFLAME);
 
-	strength = 20*FRACUNIT;
-	strength -= ((20*FRACUNIT)/16)*mobj->movedir;
+	strength = (mobj->movedir ? mobj->movedir : 80)<<(FRACBITS-2);
 
 	// If deaf'd, the object spawns on the ceiling.
 	if (mobj->flags2 & MF2_AMBUSH)
@@ -12797,13 +12795,9 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
 		break;
 	case MT_FLAMEJET:
 	case MT_VERTICALFLAMEJET:
-		mobj->threshold = (mthing->angle >> 10) & 7;
-		mobj->movecount = (mthing->angle >> 13);
-
-		mobj->threshold *= (TICRATE/2);
-		mobj->movecount *= (TICRATE/2);
-
-		mobj->movedir = mthing->extrainfo;
+		mobj->movecount = mthing->args[0];
+		mobj->threshold = mthing->args[1];
+		mobj->movedir = mthing->args[2];
 		break;
 	case MT_MACEPOINT:
 	case MT_CHAINMACEPOINT:
diff --git a/src/p_setup.c b/src/p_setup.c
index 5e9daa327c..dee0c86dea 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -5141,6 +5141,12 @@ static void P_ConvertBinaryMap(void)
 			P_WriteConstant(MT_ROCKCRUMBLE1 + (sides[lines[j].sidenum[0]].rowoffset >> FRACBITS), &mapthings[i].stringargs[0]);
 			break;
 		}
+		case 1300: //Flame jet (horizontal)
+		case 1301: //Flame jet (vertical)
+			mapthings[i].args[0] = (mapthings[i].angle >> 13)*TICRATE/2;
+			mapthings[i].args[1] = ((mapthings[i].angle >> 10) & 7)*TICRATE/2;
+			mapthings[i].args[2] = 80 - 5*mapthings[i].extrainfo;
+			break;
 		case 1700: //Axis
 			mapthings[i].args[2] = mapthings[i].angle & 16383;
 			mapthings[i].args[3] = !!(mapthings[i].angle & 16384);
-- 
GitLab