diff --git a/code/datums/components/reagent_hose/connector.dm b/code/datums/components/reagent_hose/connector.dm index d909da9c0c..bd07f4b3b0 100644 --- a/code/datums/components/reagent_hose/connector.dm +++ b/code/datums/components/reagent_hose/connector.dm @@ -219,3 +219,43 @@ /datum/component/hose_connector/output/handle_pump(var/datum/reagents/connected_to) ASSERT(connected_to) connected_to.trans_to_holder(reagents, reagents.maximum_volume) + +/// Endless source, produces a reagent and pumps it out forever. Does not require attached object to have reagents. +/datum/component/hose_connector/endless_source + name = "source connector" + flow_direction = HOSE_OUTPUT + var/reagent_id = null + +/datum/component/hose_connector/endless_source/Initialize() + . = ..() + name = initial(name) + +/datum/component/hose_connector/endless_source/connected_reagents() + if(!carrier) + return null + return reagents // Ourselves, not our carrier + +/datum/component/hose_connector/endless_source/handle_pump(var/datum/reagents/connected_to) + ASSERT(connected_to) + connected_to.add_reagent(reagent_id,5) + +/datum/component/hose_connector/endless_source/water + reagent_id = REAGENT_ID_WATER + +/// Endless drain, removes reagents from existance +/datum/component/hose_connector/endless_drain + name = "drain connector" + flow_direction = HOSE_INPUT + +/datum/component/hose_connector/endless_drain/Initialize() + . = ..() + name = initial(name) + +/datum/component/hose_connector/endless_drain/connected_reagents() + if(!carrier) + return null + return reagents // Ourselves, not our carrier + +/datum/component/hose_connector/endless_drain/handle_pump(var/datum/reagents/connected_to) + ASSERT(connected_to) + connected_to.clear_reagents() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 0b4ca498a7..9cb17b244a 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -500,6 +500,11 @@ anchored = TRUE var/busy = 0 //Something's being washed at the moment +/obj/structure/sink/Initialize(mapload) + . = ..() + AddComponent(/datum/component/hose_connector/endless_source/water) + AddComponent(/datum/component/hose_connector/endless_drain) + /obj/structure/sink/MouseDrop_T(var/obj/item/thing, var/mob/user) ..() if(!istype(thing) || !thing.is_open_container())