diff --git a/src/p_map.c b/src/p_map.c index 1e512112b..950b9e750 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -997,7 +997,7 @@ bool P_IsInLiquid(mobj_t *thing) { sector_t *highestsector = thing->subsector->sector; - if (thing->player) + if (thing->player || (thing->flags & MF_SHOOTABLE)) for (const struct msecnode_s *seclist = thing->touching_sectorlist; seclist; seclist = seclist->m_tnext) { sector_t *sector = seclist->m_sector; @@ -1005,7 +1005,8 @@ bool P_IsInLiquid(mobj_t *thing) if (sector->floorheight > highestsector->floorheight) highestsector = sector; } - else if (thing->z > thing->floorz) + + if (!thing->player && thing->z > highestsector->floorheight + 2 * FRACUNIT) return false; return (highestsector->terraintype >= LIQUID);