Prevent heavy airdrop softlocking in goo

This commit is contained in:
NepDisk 2026-02-22 01:45:54 -05:00
parent 926e5b6edf
commit 087d53cacc
2 changed files with 10 additions and 1 deletions

View file

@ -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;

View file

@ -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)
{