From 4f56006cc857ee999d138f361aa8e69080f1b2aa Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 9 Jan 2024 23:43:35 -0800 Subject: [PATCH 1/3] Battle UFO: tractor account for underwater gravity --- src/p_map.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/p_map.c b/src/p_map.c index ca91cfbe2..b5dbc9df3 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -789,7 +789,14 @@ static BlockItReturn_t PIT_CheckThing(mobj_t *thing) { fixed_t tractorHeight = 211*mapobjectscale; fixed_t zRange = FixedDiv(thing->z - tm.thing->z, tractorHeight); - P_SetObjectMomZ(tm.thing, max(zRange, FRACUNIT/16), true); + fixed_t momZ = max(zRange, FRACUNIT/16); + + if (tm.thing->eflags & MFE_UNDERWATER) + { + momZ = (117 * momZ) / 200; + } + + P_SetObjectMomZ(tm.thing, momZ, true); } fixed_t friction = 33*FRACUNIT/35; From b678b320af47109327493715587632364e35c13b Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 9 Jan 2024 23:45:00 -0800 Subject: [PATCH 2/3] Fix Banana not checking for water state --- src/p_mobj.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 689970281..2e2bafc31 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1048,6 +1048,20 @@ static void P_PlayerFlip(mobj_t *mo) // Flip aiming to match! } +static boolean P_UseUnderwaterGravity(mobj_t *mo) +{ + switch (mo->type) + { + case MT_BANANA: + return false; + + default: + break; + } + + return true; +} + // // P_GetMobjGravity // @@ -1106,7 +1120,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo) } // Less gravity underwater. - if ((mo->eflags & MFE_UNDERWATER) && !goopgravity) + if ((mo->eflags & MFE_UNDERWATER) && !goopgravity && P_UseUnderwaterGravity(mo)) { if (mo->momz * P_MobjFlip(mo) <= 0) { @@ -7601,6 +7615,8 @@ static boolean P_MobjRegularThink(mobj_t *mobj) mobj->rollangle -= spin; } + P_MobjCheckWater(mobj); + if (mobj->threshold > 0) mobj->threshold--; break; From 9504981346f4d35a2d75f97b7ee14c463bbab2b4 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 9 Jan 2024 23:45:22 -0800 Subject: [PATCH 3/3] Fix tossed Gachabom gravity underwater Parity with Banana --- src/p_mobj.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 2e2bafc31..e0758c7dd 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1055,6 +1055,13 @@ static boolean P_UseUnderwaterGravity(mobj_t *mo) case MT_BANANA: return false; + case MT_GACHABOM: + if (Obj_GachaBomWasTossed(mo)) + { + return false; + } + break; + default: break; } @@ -1248,12 +1255,8 @@ fixed_t P_GetMobjGravity(mobj_t *mo) gravityadd /= 2; break; case MT_GACHABOM: - // Use normal gravity, unless if it was tossed. - if (!Obj_GachaBomWasTossed(mo)) - { - break; - } - /*FALLTHRU*/ + gravityadd = (5*gravityadd)/2; + break; case MT_BANANA: case MT_EGGMANITEM: case MT_SSMINE: