From fbd7a5ae59b2149eeedec9e43b4309764a94a523 Mon Sep 17 00:00:00 2001
From: MascaraSnake <jonassauer27@gmail.com>
Date: Sun, 16 Jun 2019 17:57:03 +0200
Subject: [PATCH] Finetuned the saloon door swinging

---
 src/info.c   |  2 +-
 src/p_map.c  |  2 +-
 src/p_mobj.c | 13 +++++++++++++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/info.c b/src/info.c
index 6e4d381190..39dcdf6548 100644
--- a/src/info.c
+++ b/src/info.c
@@ -12066,7 +12066,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
 		100,            // mass
 		0,              // damage
 		sfx_s3k90,      // activesound
-		MF_SOLID|MF_NOGRAVITY|MF_RUNSPAWNFUNC|MF_PAPERCOLLISION, // flags
+		MF_SOLID|MF_NOGRAVITY|MF_RUNSPAWNFUNC|MF_PAPERCOLLISION|MF_NOCLIPHEIGHT, // flags
 		S_NULL          // raisestate
 	},
 
diff --git a/src/p_map.c b/src/p_map.c
index 906ca8c519..abd4174d67 100644
--- a/src/p_map.c
+++ b/src/p_map.c
@@ -844,7 +844,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
 			angle_t ang = R_PointToAngle2(0, 0, dx, dy) - thing->angle;
 			fixed_t s = FINESINE((ang >> ANGLETOFINESHIFT) & FINEMASK);
 			S_StartSound(tmthing, thing->info->activesound);
-			thing->extravalue2 += FixedMul(s, dm);
+			thing->extravalue2 += 2*FixedMul(s, dm)/3;
 			return true;
 		}
 	}
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 7163dbe79f..d9210441ac 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -8536,6 +8536,7 @@ void P_MobjThinker(mobj_t *mobj)
 					fixed_t s0 = -96*FINESINE(fa);
 					angle_t fma;
 					fixed_t c, s;
+					angle_t angdiff;
 
 					// Adjust angular speed
 					fixed_t da = AngleFixed(mobj->angle - oang);
@@ -8546,6 +8547,18 @@ void P_MobjThinker(mobj_t *mobj)
 					// Update angle
 					mobj->angle += FixedAngle(mobj->extravalue2);
 
+					angdiff = mobj->angle - FixedAngle(mobj->extravalue1);
+					if (angdiff > (ANGLE_90 - ANG2) && angdiff < ANGLE_180)
+					{
+						mobj->angle = FixedAngle(mobj->extravalue1) + (ANGLE_90 - ANG2);
+						mobj->extravalue2 /= 2;
+					}
+					else if (angdiff < (ANGLE_270 + ANG2) && angdiff >= ANGLE_180)
+					{
+						mobj->angle = FixedAngle(mobj->extravalue1) + (ANGLE_270 + ANG2);
+						mobj->extravalue2 /= 2;
+					}
+
 					// Update position
 					fma = (mobj->angle >> ANGLETOFINESHIFT) & FINEMASK;
 					c = 48*FINECOSINE(fma);
-- 
GitLab