From 0a2e42c090bfa1679d5835607663d12a3309bb1a Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Thu, 14 Feb 2013 04:40:29 +0000 Subject: [PATCH] - Skip the MF2_PASSMOBJ height checks in PIT_CheckThing() for ripper missiles. SVN r4135 (trunk) --- src/p_map.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/p_map.cpp b/src/p_map.cpp index 289f146bb5..7cdf90ee89 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -905,13 +905,17 @@ bool PIT_CheckThing (AActor *thing, FCheckPosition &tm) // you can use a scrolling floor to move scenery items underneath a bridge. if ((tm.thing->flags2 & MF2_PASSMOBJ || thing->flags4 & MF4_ACTLIKEBRIDGE) && !(i_compatflags & COMPATF_NO_PASSMOBJ)) { // check if a mobj passed over/under another object - if (tm.thing->flags3 & thing->flags3 & MF3_DONTOVERLAP) - { // Some things prefer not to overlap each other, if possible - return unblocking; - } - if ((tm.thing->z >= topz) || (tm.thing->z + tm.thing->height <= thing->z)) + if (!(tm.thing->flags & MF_MISSILE) || + !(tm.thing->flags2 & MF2_RIP) || + (thing->flags5 & MF5_DONTRIP) || + (tm.thing->flags6 & MF6_NOBOSSRIP) && (thing->flags2 & MF2_BOSS)) { - return true; + if (tm.thing->flags3 & thing->flags3 & MF3_DONTOVERLAP) + { // Some things prefer not to overlap each other, if possible + return unblocking; + } + if ((tm.thing->z >= topz) || (tm.thing->z + tm.thing->height <= thing->z)) + return true; } } @@ -2878,7 +2882,7 @@ extern FRandom pr_bounce; bool P_BounceActor (AActor *mo, AActor *BlockingMobj, bool ontop) { if (mo && BlockingMobj && ((mo->BounceFlags & BOUNCE_AllActors) - || ((mo->flags & MF_MISSILE) && (BlockingMobj->flags2 & MF2_REFLECTIVE)) + || ((mo->flags & MF_MISSILE) && (!(mo->flags2 & MF2_RIP) || (BlockingMobj->flags5 & MF5_DONTRIP) || ((mo->flags6 & MF6_NOBOSSRIP) && (BlockingMobj->flags2 & MF2_BOSS))) && (BlockingMobj->flags2 & MF2_REFLECTIVE)) || ((BlockingMobj->player == NULL) && (!(BlockingMobj->flags3 & MF3_ISMONSTER))) )) {