Handle obscure lava edge case
I would convert with args but that overlaps with offroad, so this will do.
This commit is contained in:
parent
2cdf420226
commit
6b2770f608
1 changed files with 21 additions and 1 deletions
22
src/p_mobj.c
22
src/p_mobj.c
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue