diff --git a/code/ATMOSPHERICS/he_pipes.dm b/code/ATMOSPHERICS/he_pipes.dm index 5c3392da42d..606cbca154a 100644 --- a/code/ATMOSPHERICS/he_pipes.dm +++ b/code/ATMOSPHERICS/he_pipes.dm @@ -9,7 +9,7 @@ minimum_temperature_difference = 20 thermal_conductivity = OPEN_HEAT_TRANSFER_COEFFICIENT - var/const/RADIATION_CAPACITY = 32000 // Radiation isn't particularly effective (TODO BALANCE) + var/RADIATION_CAPACITY = 32000 // Radiation isn't particularly effective (TODO BALANCE) // Plate value is 30000, increased it a bit because of additional surface area. - N3X var/const/ENERGY_MULT = 6.4 // Not sure what this is, keeping it the same as plates. @@ -209,3 +209,106 @@ /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/hidden level=1 icon_state="intact-f" + +///////////////////////////////// +// Manifold +///////////////////////////////// +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold + icon = 'icons/obj/pipe-item.dmi' + icon_state = "he_manifold" + var/obj/machinery/atmospherics/node3 + RADIATION_CAPACITY = 24000 + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold/New() + .. () + switch(dir) + if(NORTH) + initialize_directions_he = EAST|SOUTH|WEST + if(SOUTH) + initialize_directions_he = NORTH|EAST|WEST + if(EAST) + initialize_directions_he = NORTH|SOUTH|WEST + if(WEST) + initialize_directions_he = NORTH|EAST|SOUTH + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold/buildFrom(var/mob/usr,var/obj/item/pipe/pipe) + dir = pipe.dir + initialize_directions_he = pipe.get_hdir() + initialize(1) + if (!node1 && !node2 && !node3) + to_chat(usr, "There's nothing to connect this manifold to!") + return 0 + build_network() + if (node1) + node1.initialize() + node1.build_network() + if (node2) + node2.initialize() + node2.build_network() + if (node3) + node3.initialize() + node3.build_network() + return 1 + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold/update_icon() + if(!node1&&!node2&&!node3) + qdel(src) + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold/pipeline_expansion() + return list(node1, node2, node3) + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold/initialize(var/suppress_icon_check=0) + findAllConnections(initialize_directions_he) + + if(!suppress_icon_check) + update_icon() + +///////////////////////////////// +// 4-Way Manifold +///////////////////////////////// +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold4w + icon = 'icons/obj/pipe-item.dmi' + icon_state = "he_manifold4w" + var/obj/machinery/atmospherics/node3 + var/obj/machinery/atmospherics/node4 + RADIATION_CAPACITY = 24000 + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold4w/New() + .. () + initialize_directions_he = NORTH|SOUTH|EAST|WEST + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold4w/buildFrom(var/mob/usr,var/obj/item/pipe/pipe) + dir = pipe.dir + initialize_directions_he = pipe.get_hdir() + initialize(1) + if (!node1 && !node2 && !node3 && !node4) + to_chat(usr, "There's nothing to connect this manifold to!") + return 0 + build_network() + if (node1) + node1.initialize() + node1.build_network() + if (node2) + node2.initialize() + node2.build_network() + if (node3) + node3.initialize() + node3.build_network() + if (node4) + node4.initialize() + node4.build_network() + return 1 + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold4w/update_icon() + if(!node1&&!node2&&!node3&&!node4) + qdel(src) + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold4w/pipeline_expansion() + return list(node1, node2, node3, node4) + + +/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold4w/initialize(var/suppress_icon_check=0) + findAllConnections(initialize_directions_he) + + if(!suppress_icon_check) + update_icon() diff --git a/code/ATMOSPHERICS/pipe/construction.dm b/code/ATMOSPHERICS/pipe/construction.dm index 8b36afcd9e3..db54afff2f0 100644 --- a/code/ATMOSPHERICS/pipe/construction.dm +++ b/code/ATMOSPHERICS/pipe/construction.dm @@ -35,6 +35,8 @@ Buildable meters #define PIPE_INSUL_MANIFOLD4W 28 #define PIPE_LAYER_MANIFOLD 29 #define PIPE_LAYER_ADAPTER 30 +#define PIPE_HE_MANIFOLD 31 +#define PIPE_HE_MANIFOLD4W 32 //Disposal piping numbers - do NOT hardcode these, use the defines #define DISP_PIPE_STRAIGHT 0 @@ -49,7 +51,7 @@ Buildable meters #define DISP_SORT_WRAP_JUNCTION 9 var/global/list/unstackable_pipes = list(PIPE_LAYER_MANIFOLD) -var/global/list/heat_pipes = list(PIPE_HE_STRAIGHT, PIPE_HE_BENT, PIPE_JUNCTION) +var/global/list/heat_pipes = list(PIPE_HE_STRAIGHT, PIPE_HE_BENT, PIPE_JUNCTION, PIPE_HE_MANIFOLD, PIPE_HE_MANIFOLD4W) /obj/item/pipe_spawner name = "Pipe Spawner" @@ -129,6 +131,10 @@ var/list/bent_dirs = list(NORTH|SOUTH, WEST|EAST) is_bent = 1 if (istype(make_from, /obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction)) src.pipe_type = PIPE_JUNCTION + else if(istype(make_from, /obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold4w)) + src.pipe_type = PIPE_HE_MANIFOLD4W + else if(istype(make_from, /obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold)) + src.pipe_type = PIPE_HE_MANIFOLD else if(istype(make_from, /obj/machinery/atmospherics/pipe/simple/heat_exchanging)) src.pipe_type = PIPE_HE_STRAIGHT + is_bent else if(istype(make_from, /obj/machinery/atmospherics/pipe/simple/insulated)) @@ -243,6 +249,8 @@ var/global/list/pipeID2State = list( "insulated_manifold4w", "manifoldlayer", "layeradapter", + "he_manifold", + "he_manifold4w", ) var/global/list/nlist = list( \ "pipe", \ @@ -276,6 +284,8 @@ var/global/list/nlist = list( \ "insulated 4-way manifold", \ "pipe alignment converter", \ "pipe alignment adapter", + "h/e manifold", \ + "h/e 4-way manifold", \ ) /obj/item/pipe/proc/update() @@ -294,7 +304,7 @@ var/global/list/nlist = list( \ // rotate the pipe item clockwise var/list/straight_pipes = list(PIPE_SIMPLE_STRAIGHT, PIPE_HE_STRAIGHT, PIPE_INSULATED_STRAIGHT, PIPE_MVALVE, PIPE_DVALVE) var/list/bent_pipes = list(PIPE_SIMPLE_BENT, PIPE_HE_BENT, PIPE_INSULATED_BENT) -var/list/manifold_pipes = list(PIPE_MANIFOLD4W, PIPE_INSUL_MANIFOLD4W) +var/list/manifold_pipes = list(PIPE_MANIFOLD4W, PIPE_INSUL_MANIFOLD4W, PIPE_HE_MANIFOLD4W) /obj/item/pipe/verb/rotate() set category = "Object" set name = "Rotate Pipe" @@ -349,9 +359,9 @@ var/list/manifold_pipes = list(PIPE_MANIFOLD4W, PIPE_INSUL_MANIFOLD4W) return dir //dir|acw if(PIPE_CONNECTOR,PIPE_UVENT,PIPE_PASV_VENT,PIPE_SCRUBBER,PIPE_HEAT_EXCHANGE,PIPE_THERMAL_PLATE,PIPE_INJECTOR) return dir - if(PIPE_MANIFOLD4W, PIPE_INSUL_MANIFOLD4W) + if(PIPE_MANIFOLD4W, PIPE_INSUL_MANIFOLD4W, PIPE_HE_MANIFOLD4W) return dir|flip|cw|acw - if(PIPE_MANIFOLD, PIPE_INSUL_MANIFOLD) + if(PIPE_MANIFOLD, PIPE_INSUL_MANIFOLD, PIPE_HE_MANIFOLD) return flip|cw|acw if(PIPE_GAS_FILTER, PIPE_GAS_MIXER,PIPE_MTVALVE,PIPE_DTVALVE) return dir|flip|cw @@ -387,6 +397,10 @@ var/list/manifold_pipes = list(PIPE_MANIFOLD4W, PIPE_INSUL_MANIFOLD4W) return get_pipe_dir() if(PIPE_HE_BENT) return get_pipe_dir() + if (PIPE_HE_MANIFOLD) + return get_pipe_dir() + if (PIPE_HE_MANIFOLD4W) + return get_pipe_dir() if(PIPE_JUNCTION) return dir else @@ -425,6 +439,12 @@ var/list/manifold_pipes = list(PIPE_MANIFOLD4W, PIPE_INSUL_MANIFOLD4W) if(PIPE_HE_STRAIGHT, PIPE_HE_BENT) P=new/obj/machinery/atmospherics/pipe/simple/heat_exchanging(loc) + if(PIPE_HE_MANIFOLD4W) + P=new/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold4w( src.loc ) + + if(PIPE_HE_MANIFOLD) + P=new/obj/machinery/atmospherics/pipe/simple/heat_exchanging/he_manifold( src.loc ) + if(PIPE_CONNECTOR) // connector P=new/obj/machinery/atmospherics/unary/portables_connector(loc) diff --git a/code/modules/RCD/RPD.dm b/code/modules/RCD/RPD.dm index 3f25f333c11..6052f9546c3 100644 --- a/code/modules/RCD/RPD.dm +++ b/code/modules/RCD/RPD.dm @@ -46,6 +46,8 @@ /datum/rcd_schematic/pipe/he_bent, /datum/rcd_schematic/pipe/juntion, /datum/rcd_schematic/pipe/heat_exchanger, + /datum/rcd_schematic/pipe/he_manifold, + /datum/rcd_schematic/pipe/he_manifold4w, /* Insulated Pipes */ /datum/rcd_schematic/pipe/insulated, @@ -74,7 +76,7 @@ /obj/item/device/rcd/rpd/pickup(var/mob/living/L) ..() - + hook_key = L.on_clickon.Add(src, "mob_onclickon") /obj/item/device/rcd/rpd/dropped(var/mob/living/L) @@ -89,7 +91,7 @@ /obj/item/device/rcd/rpd/proc/mob_onclickon(var/list/event_args, var/mob/living/L) if (L.get_active_hand() != src) return - + var/list/modifiers = event_args["modifiers"] modifiers -= list("alt", "shift", "ctrl") - + diff --git a/code/modules/RCD/schematics/pipe.dm b/code/modules/RCD/schematics/pipe.dm index f70d9e7ad6b..ba34c0760a7 100644 --- a/code/modules/RCD/schematics/pipe.dm +++ b/code/modules/RCD/schematics/pipe.dm @@ -654,6 +654,20 @@ var/global/list/disposalpipeID2State = list( pipe_id = PIPE_HEAT_EXCHANGE pipe_type = PIPE_UNARY +/datum/rcd_schematic/pipe/he_manifold + name = "Manifold" + category = "Heat Exchange" + + pipe_id = PIPE_HE_MANIFOLD + pipe_type = PIPE_TRINARY + +/datum/rcd_schematic/pipe/he_manifold4w + name = "4-Way Manifold" + category = "Heat Exchange" + + pipe_id = PIPE_HE_MANIFOLD4W + pipe_type = PIPE_BINARY + //INSULATED PIPES. /datum/rcd_schematic/pipe/insulated diff --git a/icons/obj/pipe-item.dmi b/icons/obj/pipe-item.dmi index 220bd4f6fea..8977de5fc6a 100644 Binary files a/icons/obj/pipe-item.dmi and b/icons/obj/pipe-item.dmi differ