diff --git a/code/__defines/dcs/signals.dm b/code/__defines/dcs/signals.dm index c4290a9456..873e6776ed 100644 --- a/code/__defines/dcs/signals.dm +++ b/code/__defines/dcs/signals.dm @@ -857,6 +857,9 @@ ///from /datum/species/xenochimera/handle_environment_special() #define COMSIG_XENOCHIMERA_COMPONENT "xenochimera_component" +// Hose Connector Component +#define COMSIG_HOSE_FORCEPUMP "hose_force_pump" + //Unittest data update #ifdef UNIT_TEST #define COMSIG_UNITTEST_DATA "unittest_send_data" diff --git a/code/datums/components/reagent_hose/connector.dm b/code/datums/components/reagent_hose/connector.dm index 749eac99b5..d909da9c0c 100644 --- a/code/datums/components/reagent_hose/connector.dm +++ b/code/datums/components/reagent_hose/connector.dm @@ -18,6 +18,7 @@ connector_number = CL.len + 1 RegisterSignal(carrier, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) RegisterSignal(carrier, COMSIG_MOVABLE_MOVED, PROC_REF(move_react)) + RegisterSignal(carrier, COMSIG_HOSE_FORCEPUMP, PROC_REF(force_pump)) carrier.verbs |= /atom/proc/disconnect_hose START_PROCESSING(SSobj, src) @@ -26,6 +27,7 @@ STOP_PROCESSING(SSobj, src) UnregisterSignal(carrier, COMSIG_PARENT_EXAMINE) UnregisterSignal(carrier, COMSIG_MOVABLE_MOVED) + UnregisterSignal(carrier, COMSIG_HOSE_FORCEPUMP) carrier.verbs -= /atom/proc/disconnect_hose carrier = null if(my_hose) @@ -72,6 +74,7 @@ connected_to.trans_to_holder(reagents, rand(1,reagents.maximum_volume)) /datum/component/hose_connector/proc/force_pump() + SIGNAL_HANDLER process() if(prob(5)) carrier.visible_message(span_infoplain(span_bold("\The [carrier]") + " gurgles as it pumps fluid.")) diff --git a/code/modules/power/fusion/core/_core.dm b/code/modules/power/fusion/core/_core.dm index 8d3f415fb9..aab9561092 100644 --- a/code/modules/power/fusion/core/_core.dm +++ b/code/modules/power/fusion/core/_core.dm @@ -63,8 +63,7 @@ GLOBAL_LIST_EMPTY(fusion_cores) if((stat & BROKEN) || !powernet || !owned_field) Shutdown() - var/datum/component/hose_connector/HC = GetComponent(/datum/component/hose_connector) - HC.force_pump() + SEND_SIGNAL(src, COMSIG_HOSE_FORCEPUMP) if(owned_field) diff --git a/code/modules/reagents/machinery/pump.dm b/code/modules/reagents/machinery/pump.dm index 7e91cf4db9..e9e77f5548 100644 --- a/code/modules/reagents/machinery/pump.dm +++ b/code/modules/reagents/machinery/pump.dm @@ -92,8 +92,7 @@ T.pump_reagents(reagents, reagents_per_cycle) update_icon() - var/datum/component/hose_connector/HC = GetComponent(/datum/component/hose_connector) - HC.force_pump() + SEND_SIGNAL(src, COMSIG_HOSE_FORCEPUMP) // Sets the power state, if possible. // Returns TRUE/FALSE on power state changing diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index fe52cf22e0..3470f9af4e 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -240,8 +240,8 @@ /obj/item/reagent_containers/spray/chemsprayer/hosed/proc/update_hose(atom/source, atom/oldloc, direction, forced, list/old_locs, momentum_change) SIGNAL_HANDLER - var/datum/component/hose_connector/HC = GetComponent(/datum/component/hose_connector) - HC.update_hose_beam() + for(var/datum/component/hose_connector/HC in GetComponents(/datum/component/hose_connector)) + HC.update_hose_beam() /obj/item/reagent_containers/spray/chemsprayer/hosed/update_icon() ..() @@ -251,9 +251,10 @@ if(!hose_overlay) hose_overlay = new/icon(icon, "[icon_state]+hose") - var/datum/component/hose_connector/HC = GetComponent(/datum/component/hose_connector) - if(HC.get_pairing()) - add_overlay(hose_overlay) + for(var/datum/component/hose_connector/HC in GetComponents(/datum/component/hose_connector)) + if(HC.get_pairing()) + add_overlay(hose_overlay) + break /obj/item/reagent_containers/spray/chemsprayer/hosed/AltClick(mob/living/carbon/user) if(++spray_particles > 3) spray_particles = 1