diff --git a/src/playsim/p_map.cpp b/src/playsim/p_map.cpp index 94f987904..ad04adafc 100644 --- a/src/playsim/p_map.cpp +++ b/src/playsim/p_map.cpp @@ -1324,8 +1324,14 @@ bool PIT_CheckThing(FMultiBlockThingsIterator &it, FMultiBlockThingsIterator::Ch (thing->flags5 & MF5_DONTRIP) || ((tm.thing->flags6 & MF6_NOBOSSRIP) && (thing->flags2 & MF2_BOSS))) { + if (thing->flags & MF_SPECIAL) + { + // Vanilla condition, i.e. without equality, for item pickups + if ((tm.thing->Z() > topz) || (tm.thing->Top() < thing->Z())) + return true; + } // Some things prefer not to overlap each other, if possible (Q: Is this even needed anymore? It was just for dealing with some deficiencies in the code below in Heretic.) - if (!(tm.thing->flags3 & thing->flags3 & MF3_DONTOVERLAP)) + else if (!(tm.thing->flags3 & thing->flags3 & MF3_DONTOVERLAP)) { if ((tm.thing->Z() >= topz) || (tm.thing->Top() <= thing->Z())) return true;