diff --git a/src/p_map.cpp b/src/p_map.cpp index e36cb9316..4d30246f3 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -4460,7 +4460,7 @@ AActor *P_LinePickActor(AActor *t1, angle_t angle, fixed_t distance, int pitch, TData.hitGhosts = true; if (Trace(t1->X(), t1->Y(), shootz, t1->Sector, vx, vy, vz, distance, - actorMask, wallMask, t1, trace, TRACE_NoSky, CheckForActor, &TData)) + actorMask, wallMask, t1, trace, TRACE_NoSky | TRACE_PortalRestrict, CheckForActor, &TData)) { if (trace.HitType == TRACE_HitActor) { diff --git a/src/p_trace.h b/src/p_trace.h index 55447e021..ef082f788 100644 --- a/src/p_trace.h +++ b/src/p_trace.h @@ -84,6 +84,7 @@ enum TRACE_NoSky = 1, // Hitting the sky returns TRACE_HitNone TRACE_PCross = 2, // Trigger SPAC_PCROSS lines TRACE_Impact = 4, // Trigger SPAC_IMPACT lines + TRACE_PortalRestrict= 8, // Cannot go through portals without a static link offset. }; // return values from callback diff --git a/src/thingdef/thingdef_codeptr.cpp b/src/thingdef/thingdef_codeptr.cpp index 5f518fab0..98dd60f2d 100644 --- a/src/thingdef/thingdef_codeptr.cpp +++ b/src/thingdef/thingdef_codeptr.cpp @@ -3870,7 +3870,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CheckLOF) lof_data.Flags = flags; lof_data.BadActor = false; - Trace(pos.x, pos.y, pos.z, sec, vx, vy, vz, range, ActorFlags::FromInt(0xFFFFFFFF), ML_BLOCKEVERYTHING, self, trace, 0, + Trace(pos.x, pos.y, pos.z, sec, vx, vy, vz, range, ActorFlags::FromInt(0xFFFFFFFF), ML_BLOCKEVERYTHING, self, trace, TRACE_PortalRestrict, CheckLOFTraceFunc, &lof_data); if (trace.HitType == TRACE_HitActor ||