From b036b1e5199d4f8aeb7a4a4fb81e002885eb7c6b Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Sat, 12 May 2018 17:28:24 -0400 Subject: [PATCH 1/2] Makes the redirect component able to transfer with changeturfs (#37697) --- code/__DEFINES/components.dm | 3 +++ code/datums/components/signal_redirect.dm | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index b59ebfe7aa..a5aa63e6a1 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -143,6 +143,9 @@ /*******Non-Signal Component Related Defines*******/ +//Redirection component init flags +#define REDIRECT_TRANSFER_WITH_TURF 1 + //Arch #define ARCH_PROB "probability" //Probability for each item #define ARCH_MAXDROP "max_drop_amount" //each item's max drop amount diff --git a/code/datums/components/signal_redirect.dm b/code/datums/components/signal_redirect.dm index 764a44e4a9..8828c03c2d 100644 --- a/code/datums/components/signal_redirect.dm +++ b/code/datums/components/signal_redirect.dm @@ -1,8 +1,13 @@ /datum/component/redirect dupe_mode = COMPONENT_DUPE_ALLOWED -/datum/component/redirect/Initialize(list/signals, datum/callback/_callback) +/datum/component/redirect/Initialize(list/signals, datum/callback/_callback, flags=NONE) //It's not our job to verify the right signals are registered here, just do it. if(!LAZYLEN(signals) || !istype(_callback)) return COMPONENT_INCOMPATIBLE + if(flags & REDIRECT_TRANSFER_WITH_TURF && isturf(parent)) + RegisterSignal(COMSIG_TURF_CHANGE, .proc/turf_change) RegisterSignal(signals, _callback) + +/datum/component/redirect/proc/turf_change(path, new_baseturfs, flags, list/transfers) + transfers += src