From 225bf884b85b44518d424b4092e9f126db5fedf4 Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Wed, 21 Mar 2012 20:21:59 -0400 Subject: [PATCH] mains pipes for hawk --- baystation12.dme | 1 + code/WorkInProgress/Tastyfish/mainspipe.dm | 495 +++++++++++++++++++++ icons/obj/atmospherics/mainspipe.dmi | Bin 0 -> 28706 bytes 3 files changed, 496 insertions(+) create mode 100644 code/WorkInProgress/Tastyfish/mainspipe.dm create mode 100644 icons/obj/atmospherics/mainspipe.dmi diff --git a/baystation12.dme b/baystation12.dme index 821d43b85ec..0d083ef85af 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1101,6 +1101,7 @@ #include "code\WorkInProgress\Tastyfish\Eliza.dm" #include "code\WorkInProgress\Tastyfish\Eliza_Data.dm" #include "code\WorkInProgress\Tastyfish\livestock.dm" +#include "code\WorkInProgress\Tastyfish\mainspipe.dm" #include "code\WorkInProgress\Tastyfish\paiLiza.dm" #include "code\WorkInProgress\Tastyfish\Parser.dm" #include "code\WorkInProgress\Tastyfish\wallmount_frame.dm" diff --git a/code/WorkInProgress/Tastyfish/mainspipe.dm b/code/WorkInProgress/Tastyfish/mainspipe.dm new file mode 100644 index 00000000000..3d320a4cab9 --- /dev/null +++ b/code/WorkInProgress/Tastyfish/mainspipe.dm @@ -0,0 +1,495 @@ +// internal pipe, don't actually place or use these +obj/machinery/atmospherics/pipe/mains_component + var/obj/machinery/atmospherics/mains_pipe/parent_pipe + var/list/obj/machinery/atmospherics/pipe/mains_component/nodes = new() + + New(loc) + ..(loc) + parent_pipe = loc + + check_pressure(pressure) + var/datum/gas_mixture/environment = loc.loc.return_air() + + var/pressure_difference = pressure - environment.return_pressure() + + if(pressure_difference > parent_pipe.maximum_pressure) + mains_burst() + + else if(pressure_difference > parent_pipe.fatigue_pressure) + //TODO: leak to turf, doing pfshhhhh + if(prob(5)) + mains_burst() + + else return 1 + + pipeline_expansion() + return nodes + + disconnect(obj/machinery/atmospherics/reference) + if(nodes.Find(reference)) + nodes.Remove(reference) + + proc/mains_burst() + parent_pipe.burst() + +obj/machinery/atmospherics/mains_pipe + icon = 'mainspipe.dmi' + layer = 2.4 //under wires with their 2.5 + + var/volume = 0 + var/force = 20 + + var/alert_pressure = 80*ONE_ATMOSPHERE + + var/initialize_mains_directions = 0 + + var/list/obj/machinery/atmospherics/mains_pipe/nodes = new() + var/obj/machinery/atmospherics/pipe/mains_component/supply + var/obj/machinery/atmospherics/pipe/mains_component/scrubbers + var/obj/machinery/atmospherics/pipe/mains_component/aux + + var/minimum_temperature_difference = 300 + var/thermal_conductivity = 0 //WALL_HEAT_TRANSFER_COEFFICIENT No + + var/maximum_pressure = 70*ONE_ATMOSPHERE + var/fatigue_pressure = 55*ONE_ATMOSPHERE + alert_pressure = 55*ONE_ATMOSPHERE + + New() + ..() + + supply = new(src) + supply.volume = volume + supply.nodes.len = nodes.len + scrubbers = new(src) + scrubbers.volume = volume + scrubbers.nodes.len = nodes.len + aux = new(src) + aux.volume = volume + aux.nodes.len = nodes.len + + hide(var/i) + if(level == 1 && istype(loc, /turf/simulated)) + invisibility = i ? 101 : 0 + update_icon() + + proc/burst() + ..() + for(var/obj/machinery/atmospherics/pipe/mains_component/pipe in contents) + burst() + + proc/check_pressure(pressure) + var/datum/gas_mixture/environment = loc.return_air() + + var/pressure_difference = pressure - environment.return_pressure() + + if(pressure_difference > maximum_pressure) + burst() + + else if(pressure_difference > fatigue_pressure) + //TODO: leak to turf, doing pfshhhhh + if(prob(5)) + burst() + + else return 1 + + disconnect() + ..() + for(var/obj/machinery/atmospherics/pipe/mains_component/node in nodes) + node.disconnect() + + Del() + disconnect() + ..() + + initialize() + for(var/i = 1 to nodes.len) + var/obj/machinery/atmospherics/mains_pipe/node = nodes[i] + if(node) + supply.nodes[i] = node.supply + scrubbers.nodes[i] = node.scrubbers + aux.nodes[i] = node.aux + +obj/machinery/atmospherics/mains_pipe/simple + name = "mains pipe" + desc = "A one meter section of 3-line mains pipe" + + dir = SOUTH + initialize_directions = SOUTH|NORTH + + New() + nodes.len = 2 + ..() + switch(dir) + if(SOUTH || NORTH) + initialize_mains_directions = SOUTH|NORTH + if(EAST || WEST) + initialize_mains_directions = EAST|WEST + if(NORTHEAST) + initialize_mains_directions = NORTH|EAST + if(NORTHWEST) + initialize_mains_directions = NORTH|WEST + if(SOUTHEAST) + initialize_mains_directions = SOUTH|EAST + if(SOUTHWEST) + initialize_mains_directions = SOUTH|WEST + + proc/normalize_dir() + if(dir==3) + dir = 1 + else if(dir==12) + dir = 4 + + update_icon() + if(nodes[1] && nodes[2]) + icon_state = "intact[invisibility ? "-f" : "" ]" + + //var/node1_direction = get_dir(src, node1) + //var/node2_direction = get_dir(src, node2) + + //dir = node1_direction|node2_direction + + else + if(!nodes[1]&&!nodes[2]) + del(src) //TODO: silent deleting looks weird + var/have_node1 = nodes[1]?1:0 + var/have_node2 = nodes[2]?1:0 + icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]" + + initialize() + normalize_dir() + var/node1_dir + var/node2_dir + + for(var/direction in cardinal) + if(direction&initialize_mains_directions) + if (!node1_dir) + node1_dir = direction + else if (!node2_dir) + node2_dir = direction + + for(var/obj/machinery/atmospherics/mains_pipe/target in get_step(src,node1_dir)) + if(target.initialize_mains_directions & get_dir(target,src)) + nodes[1] = target + break + for(var/obj/machinery/atmospherics/mains_pipe/target in get_step(src,node2_dir)) + if(target.initialize_mains_directions & get_dir(target,src)) + nodes[2] = target + break + + ..() // initialize internal pipes + + var/turf/T = src.loc // hide if turf is not intact + hide(T.intact) + update_icon() + + hidden + level = 1 + icon_state = "intact-f" + + visible + level = 2 + icon_state = "intact" + +obj/machinery/atmospherics/mains_pipe/manifold + name = "manifold pipe" + desc = "A manifold composed of mains pipes" + + dir = SOUTH + initialize_directions = EAST|NORTH|WEST + volume = 105 + + New() + nodes.len = 3 + ..() + initialize_mains_directions = (NORTH|SOUTH|EAST|WEST) & ~dir + + initialize() + var/connect_directions = initialize_mains_directions + + for(var/direction in cardinal) + if(direction&connect_directions) + for(var/obj/machinery/atmospherics/mains_pipe/target in get_step(src,direction)) + if(target.initialize_mains_directions & get_dir(target,src)) + nodes[1] = target + connect_directions &= ~direction + break + if (nodes[1]) + break + + + for(var/direction in cardinal) + if(direction&connect_directions) + for(var/obj/machinery/atmospherics/mains_pipe/target in get_step(src,direction)) + if(target.initialize_mains_directions & get_dir(target,src)) + nodes[2] = target + connect_directions &= ~direction + break + if (nodes[2]) + break + + + for(var/direction in cardinal) + if(direction&connect_directions) + for(var/obj/machinery/atmospherics/mains_pipe/target in get_step(src,direction)) + if(target.initialize_mains_directions & get_dir(target,src)) + nodes[3] = target + connect_directions &= ~direction + break + if (nodes[3]) + break + + ..() // initialize internal pipes + + var/turf/T = src.loc // hide if turf is not intact + hide(T.intact) + update_icon() + + update_icon() + icon_state = "manifold[invisibility ? "-f" : "" ]" + + hidden + level = 1 + icon_state = "manifold-f" + + visible + level = 2 + icon_state = "manifold" + +obj/machinery/atmospherics/mains_pipe/split + name = "mains splitter" + desc = "A splitter for connected to a single pipe off a mains." + + var/obj/machinery/atmospherics/pipe/mains_component/split_node + var/obj/machinery/atmospherics/node3 + var/icon_type + + New() + nodes.len = 2 + ..() + initialize_mains_directions = turn(dir, 90) | turn(dir, -90) + initialize_directions = dir // actually have a normal connection too + + initialize() + var/node1_dir + var/node2_dir + var/node3_dir + + node1_dir = turn(dir, 90) + node2_dir = turn(dir, -90) + node3_dir = dir + + for(var/obj/machinery/atmospherics/mains_pipe/target in get_step(src,node1_dir)) + if(target.initialize_mains_directions & get_dir(target,src)) + nodes[1] = target + break + for(var/obj/machinery/atmospherics/mains_pipe/target in get_step(src,node2_dir)) + if(target.initialize_mains_directions & get_dir(target,src)) + nodes[2] = target + break + for(var/obj/machinery/atmospherics/target in get_step(src,node3_dir)) + if(target.initialize_directions & get_dir(target,src)) + node3 = target + break + + ..() // initialize internal pipes + + // bind them + spawn(5) + if(node3 && split_node) + var/datum/pipe_network/N1 = node3.return_network(src) + var/datum/pipe_network/N2 = split_node.return_network(split_node) + if(N1 && N2) + N1.merge(N2) + + var/turf/T = src.loc // hide if turf is not intact + hide(T.intact) + update_icon() + + update_icon() + icon_state = "split-[icon_type][invisibility ? "-f" : "" ]" + + return_network(A) + return split_node.return_network(A) + + supply + icon_type = "supply" + + New() + ..() + split_node = supply + + hidden + level = 1 + icon_state = "split-supply-f" + + visible + level = 2 + icon_state = "split-supply" + + scrubbers + icon_type = "scrubbers" + + New() + ..() + split_node = scrubbers + + hidden + level = 1 + icon_state = "split-scrubbers-f" + + visible + level = 2 + icon_state = "split-scrubbers" + + aux + icon_type = "aux" + + New() + ..() + split_node = aux + + hidden + level = 1 + icon_state = "split-aux-f" + + visible + level = 2 + icon_state = "split-aux" + +obj/machinery/atmospherics/mains_pipe/cap + name = "pipe cap" + desc = "A cap for the end of a mains pipe" + + dir = SOUTH + initialize_directions = SOUTH + volume = 35 + + New() + nodes.len = 1 + ..() + initialize_mains_directions = dir + + update_icon() + icon_state = "cap[invisibility ? "-f" : ""]" + + initialize() + for(var/obj/machinery/atmospherics/mains_pipe/target in get_step(src,dir)) + if(target.initialize_mains_directions & get_dir(target,src)) + nodes[1] = target + break + + ..() + + var/turf/T = src.loc // hide if turf is not intact + hide(T.intact) + update_icon() + + hidden + level = 1 + icon_state = "cap-f" + + visible + level = 2 + icon_state = "cap" + +obj/machinery/atmospherics/mains_pipe/valve + icon_state = "mvalve0" + + name = "mains shutoff valve" + desc = "A mains pipe valve" + + var/open = 1 + + dir = SOUTH + initialize_mains_directions = SOUTH|NORTH + + New() + nodes.len = 2 + ..() + initialize_mains_directions = dir | turn(dir, 180) + + update_icon(animation) + var/turf/simulated/floor = loc + var/hide = istype(floor) ? floor.intact : 0 + level = 1 + for(var/obj/machinery/atmospherics/mains_pipe/node in nodes) + if(node.level == 2) + hide = 0 + level = 2 + break + + if(animation) + flick("[hide?"h":""]mvalve[src.open][!src.open]",src) + else + icon_state = "[hide?"h":""]mvalve[open]" + + initialize() + normalize_dir() + var/node1_dir + var/node2_dir + + for(var/direction in cardinal) + if(direction&initialize_mains_directions) + if (!node1_dir) + node1_dir = direction + else if (!node2_dir) + node2_dir = direction + + for(var/obj/machinery/atmospherics/mains_pipe/target in get_step(src,node1_dir)) + if(target.initialize_mains_directions & get_dir(target,src)) + nodes[1] = target + break + for(var/obj/machinery/atmospherics/mains_pipe/target in get_step(src,node2_dir)) + if(target.initialize_mains_directions & get_dir(target,src)) + nodes[2] = target + break + + if(open) + ..() // initialize internal pipes + + update_icon() + + proc/normalize_dir() + if(dir==3) + dir = 1 + else if(dir==12) + dir = 4 + + proc/open() + if(open) return 0 + + open = 1 + update_icon() + + initialize() + + return 1 + + proc/close() + if(!open) return 0 + + open = 0 + update_icon() + + for(var/obj/machinery/atmospherics/pipe/mains_component/node in src) + for(var/obj/machinery/atmospherics/pipe/mains_component/o in node.nodes) + o.disconnect(node) + o.build_network() + + return 1 + + attack_ai(mob/user as mob) + return + + attack_paw(mob/user as mob) + return attack_hand(user) + + attack_hand(mob/user as mob) + src.add_fingerprint(usr) + update_icon(1) + sleep(10) + if (open) + close() + else + open() \ No newline at end of file diff --git a/icons/obj/atmospherics/mainspipe.dmi b/icons/obj/atmospherics/mainspipe.dmi new file mode 100644 index 0000000000000000000000000000000000000000..efcc9f271a88d692b173f1888ddae67a435403ce GIT binary patch literal 28706 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 U{qhL-(LdNZ4ITBIGdFzxA3|VABme*a literal 0 HcmV?d00001