diff --git a/src/p_map.cpp b/src/p_map.cpp index 4dba7aa8e..15223df83 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -3524,8 +3524,18 @@ bool P_BounceWall(AActor *mo) extern FRandom pr_bounce; bool P_BounceActor(AActor *mo, AActor *BlockingMobj, bool ontop) { + if (mo && (mo->flags & MF_MISSILE) && BlockingMobj) + { + switch (mo->SpecialMissileHit(BlockingMobj)) + { + case 1: return true; + case 0: return false; + default: break; + } + } + //Don't go through all of this if the actor is reflective and wants things to pass through them. - if (BlockingMobj && ((BlockingMobj->flags2 & MF2_REFLECTIVE) && (BlockingMobj->flags7 & MF7_THRUREFLECT))) return true; + if (BlockingMobj && ((BlockingMobj->flags2 & MF2_REFLECTIVE) && (BlockingMobj->flags7 & MF7_THRUREFLECT))) return true; if (mo && BlockingMobj && ((mo->BounceFlags & BOUNCE_AllActors) || ((mo->flags & MF_MISSILE) && (!(mo->flags2 & MF2_RIP) || (BlockingMobj->flags5 & MF5_DONTRIP)