diff --git a/src/p_mobj.c b/src/p_mobj.c index b9412ee77..5d4defb4f 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6648,6 +6648,17 @@ void P_MobjThinker(mobj_t *mobj) } else switch (mobj->type) { + case MT_FALLINGROCK: + // Despawn rocks here in case zmovement code can't do so (blame slopes) + if (!mobj->momx && !mobj->momy && !mobj->momz + && ((mobj->z <= mobj->floorz && !(mobj->eflags & MFE_VERTICALFLIP)) + || (mobj->z + mobj->height >= mobj->ceilingz && mobj->eflags & MFE_VERTICALFLIP))) + { + P_RemoveMobj(mobj); + return; + } + P_MobjCheckWater(mobj); + break; case MT_EMERALDSPAWN: if (mobj->threshold) {