From fbd7a5ae59b2149eeedec9e43b4309764a94a523 Mon Sep 17 00:00:00 2001 From: MascaraSnake 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 6e4d38119..39dcdf654 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 906ca8c51..abd4174d6 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 7163dbe79..d9210441a 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);