Handle obscure lava edge case

I would convert with args but that overlaps with offroad, so this will do.
This commit is contained in:
NepDisk 2025-07-12 13:30:57 -04:00
parent 2cdf420226
commit 6b2770f608

View file

@ -3084,6 +3084,24 @@ boolean P_CanRunOnWater(mobj_t *mobj, ffloor_t *rover)
return false;
}
// Of course this shit is different.
static boolean P_HandleSolidLavaCompat(mobj_t *mobj, ffloor_t *rover)
{
if (mapnamespace == MNS_SRB2KART)
{
I_Assert(mobj != NULL);
I_Assert(!P_MobjWasRemoved(mobj));
fixed_t topheight = P_GetFFloorTopZAt(rover, mobj->x, mobj->y);
if (rover->fofflags & FOF_SWIMMABLE && GETSECSPECIAL(rover->master->frontsector->special, 1) == 3
&& !(rover->master->flags & ML_BLOCKMONSTERS)
&& ((rover->master->flags & ML_MIDPEG) || mobj->z-mobj->momz > topheight - FixedMul(16*FRACUNIT, mobj->scale)))
return true;
}
return P_CheckSolidLava(rover);
}
boolean P_CheckSolidFFloorSurface(mobj_t *mobj, ffloor_t *rover)
{
if (!mobj->player)
@ -3092,7 +3110,9 @@ boolean P_CheckSolidFFloorSurface(mobj_t *mobj, ffloor_t *rover)
return P_CanRunOnWater(mobj, rover);
}
return P_CheckSolidLava(rover) ||
return P_HandleSolidLavaCompat(mobj, rover) ||
P_CanRunOnWater(mobj, rover);
}