From 087d53cacc67ffb85762cbf33f8fcf95fed9fd55 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Sun, 22 Feb 2026 01:45:54 -0500 Subject: [PATCH] Prevent heavy airdrop softlocking in goo --- src/k_kart.c | 2 +- src/p_mobj.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/k_kart.c b/src/k_kart.c index b81dd4aae..025386663 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -7089,7 +7089,7 @@ static void K_AirDrop(player_t *player, ticcmd_t *cmd) player->airdropflags |= PAF_AIRDROP_LIGHT; } else if (player->airdroppredelay >= (airdropactive == AIRDROP_FUSION ? airbrakedelay_light : airbrakedelay_heavy) && - !(player->airdropflags & (PAF_AIRDROP_HEAVY))) // in fusion, fires if brake is held but not accel, and has the same delay as light airdrop (this makes it feel really really stiff but we're sacking feel for balance with light drop here 🥲) + !(player->airdropflags & (PAF_AIRDROP_HEAVY)) && !(player->mo->eflags & MFE_GOOWATER)) // in fusion, fires if brake is held but not accel, and has the same delay as light airdrop (this makes it feel really really stiff but we're sacking feel for balance with light drop here 🥲) { player->airdropflags |= PAF_AIRDROP_HEAVY; player->airdroptime = 0; diff --git a/src/p_mobj.c b/src/p_mobj.c index e55ac3e9a..f55f8f95b 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -13,6 +13,7 @@ #include "p_mobj.h" #include "d_netcmd.h" +#include "d_player.h" #include "d_think.h" #include "dehacked.h" #include "deh_tables.h" @@ -3403,6 +3404,14 @@ void P_MobjCheckWater(mobj_t *mobj) { if (P_MobjFlip(mobj)*mobj->momz < 0) // You are entering the goo? mobj->momz = FixedMul(mobj->momz, FixedDiv(2*FRACUNIT, 5*FRACUNIT)); // kill momentum significantly, to make the goo feel thick. + + // Kill heavy airdrop too so you don't get softlocked. + if (mobj->player && (mobj->player->airdropflags & PAF_AIRDROP_HEAVY)) + { + mobj->player->airdroptime = 0; + mobj->player->airdroppredelay = 0; + mobj->player->airdropflags &= ~PAF_AIRDROP_MASK; + } } else if (wasinwater && P_MobjFlip(mobj) * mobj->momz > 0) {