From 0b0984b88eb35ccb5f5c431109403a0ea1fd670f Mon Sep 17 00:00:00 2001 From: Major Cooke Date: Thu, 14 Nov 2019 11:48:50 -0600 Subject: [PATCH] Added STOPRAILS actor flag. - An actor with this flag will prevent railgun shots from penetrating further. --- src/playsim/actor.h | 1 + src/playsim/p_map.cpp | 3 ++- src/scripting/thingdef_data.cpp | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/playsim/actor.h b/src/playsim/actor.h index 0b76592e2..32ea5dfd1 100644 --- a/src/playsim/actor.h +++ b/src/playsim/actor.h @@ -411,6 +411,7 @@ enum ActorFlag8 MF8_NOFRICTIONBOUNCE = 0x00000040, // don't bounce off walls when on icy floors MF8_RETARGETAFTERSLAM = 0x00000080, // Forces jumping to the idle state after slamming into something MF8_RECREATELIGHTS = 0x00000100, // Internal flag that signifies that the light attachments need to be recreated at the + MF8_STOPRAILS = 0x00000200, // [MC] Prevent rails from going further if an actor has this flag. }; // --- mobj.renderflags --- diff --git a/src/playsim/p_map.cpp b/src/playsim/p_map.cpp index 08525e6d6..068e1cbf5 100644 --- a/src/playsim/p_map.cpp +++ b/src/playsim/p_map.cpp @@ -5127,7 +5127,8 @@ static ETraceStatus ProcessRailHit(FTraceResults &res, void *userdata) { data->count++; } - return (data->StopAtOne || (data->limit && (data->count >= data->limit))) ? TRACE_Stop : TRACE_Continue; + return (data->StopAtOne || (data->limit && (data->count >= data->limit)) || (res.Actor->flags8 & MF8_STOPRAILS)) + ? TRACE_Stop : TRACE_Continue; } //========================================================================== diff --git a/src/scripting/thingdef_data.cpp b/src/scripting/thingdef_data.cpp index efb630891..c308b00e3 100644 --- a/src/scripting/thingdef_data.cpp +++ b/src/scripting/thingdef_data.cpp @@ -323,6 +323,7 @@ static FFlagDef ActorFlagDefs[]= DEFINE_FLAG(MF8, NOFRICTION, AActor, flags8), DEFINE_FLAG(MF8, NOFRICTIONBOUNCE, AActor, flags8), DEFINE_FLAG(MF8, RETARGETAFTERSLAM, AActor, flags8), + DEFINE_FLAG(MF8, STOPRAILS, AActor, flags8), // Effect flags DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects),