From 5425aa979d66fc39a99b2db4974a6a019b9551df Mon Sep 17 00:00:00 2001 From: Major Cooke Date: Thu, 14 Nov 2019 11:51:36 -0600 Subject: [PATCH] - Fixed: Invulnerability checking for rails was done before the various THRU actor flags instead of after, meaning actors could block shots regardless of those flags. This was never intended. --- src/playsim/p_map.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/playsim/p_map.cpp b/src/playsim/p_map.cpp index 068e1cbf5..00d47aa37 100644 --- a/src/playsim/p_map.cpp +++ b/src/playsim/p_map.cpp @@ -5089,12 +5089,6 @@ static ETraceStatus ProcessRailHit(FTraceResults &res, void *userdata) return TRACE_Stop; } - // Invulnerable things completely block the shot - if (data->StopAtInvul && res.Actor->flags2 & MF2_INVULNERABLE) - { - return TRACE_Stop; - } - // Skip actors if the puff has: // 1. THRUACTORS (This one did NOT include a check for spectral) // 2. MTHRUSPECIES on puff and the shooter has same species as the hit actor @@ -5109,6 +5103,12 @@ static ETraceStatus ProcessRailHit(FTraceResults &res, void *userdata) return TRACE_Skip; } + // Invulnerable things completely block the shot + if (data->StopAtInvul && res.Actor->flags2 & MF2_INVULNERABLE) + { + return TRACE_Stop; + } + // Save this thing for damaging later, and continue the trace SRailHit newhit; newhit.HitActor = res.Actor;