mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
201 lines
4.8 KiB
Plaintext
201 lines
4.8 KiB
Plaintext
|
|
/*
|
|
3-Way Manifold
|
|
*/
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold
|
|
icon = 'icons/obj/atmospherics/pipes/manifold.dmi'
|
|
icon_state = "manifold"
|
|
|
|
name = "pipe manifold"
|
|
desc = "A manifold composed of regular pipes"
|
|
|
|
volume = 105
|
|
|
|
dir = SOUTH
|
|
initialize_directions = EAST|NORTH|WEST
|
|
|
|
var/obj/machinery/atmospherics/node1
|
|
var/obj/machinery/atmospherics/node2
|
|
var/obj/machinery/atmospherics/node3
|
|
|
|
level = 1
|
|
layer = 2.4 //under wires with their 2.44
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/New()
|
|
color = pipe_color
|
|
|
|
..()
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/SetInitDirections()
|
|
switch(dir)
|
|
if(NORTH)
|
|
initialize_directions = EAST|SOUTH|WEST
|
|
if(SOUTH)
|
|
initialize_directions = WEST|NORTH|EAST
|
|
if(EAST)
|
|
initialize_directions = SOUTH|WEST|NORTH
|
|
if(WEST)
|
|
initialize_directions = NORTH|EAST|SOUTH
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/atmosinit()
|
|
for(var/D in cardinal)
|
|
if(D == dir)
|
|
continue
|
|
for(var/obj/machinery/atmospherics/target in get_step(src, D))
|
|
if(target.initialize_directions & get_dir(target,src))
|
|
if(turn(dir, 90) == D)
|
|
node1 = target
|
|
if(turn(dir, 270) == D)
|
|
node2 = target
|
|
if(turn(dir, 180) == D)
|
|
node3 = target
|
|
break
|
|
var/turf/T = src.loc // hide if turf is not intact
|
|
hide(T.intact)
|
|
update_icon()
|
|
..()
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/Destroy()
|
|
if(node1)
|
|
var/obj/machinery/atmospherics/A = node1
|
|
node1.disconnect(src)
|
|
node1 = null
|
|
A.build_network()
|
|
if(node2)
|
|
var/obj/machinery/atmospherics/A = node2
|
|
node2.disconnect(src)
|
|
node2 = null
|
|
A.build_network()
|
|
if(node3)
|
|
var/obj/machinery/atmospherics/A = node3
|
|
node3.disconnect(src)
|
|
node3 = null
|
|
A.build_network()
|
|
releaseAirToTurf()
|
|
return ..()
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/disconnect(obj/machinery/atmospherics/reference)
|
|
if(reference == node1)
|
|
if(istype(node1, /obj/machinery/atmospherics/pipe))
|
|
qdel(parent)
|
|
node1 = null
|
|
if(reference == node2)
|
|
if(istype(node2, /obj/machinery/atmospherics/pipe))
|
|
qdel(parent)
|
|
node2 = null
|
|
if(reference == node3)
|
|
if(istype(node3, /obj/machinery/atmospherics/pipe))
|
|
qdel(parent)
|
|
node3 = null
|
|
update_icon()
|
|
..()
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/update_icon()
|
|
var/invis = invisibility ? "-f" : ""
|
|
|
|
icon_state = "manifold_center[invis]"
|
|
|
|
overlays.Cut()
|
|
|
|
//Add non-broken pieces
|
|
if(node1)
|
|
overlays += getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src,node1))
|
|
|
|
if(node2)
|
|
overlays += getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src,node2))
|
|
|
|
if(node3)
|
|
overlays += getpipeimage('icons/obj/atmospherics/pipes/manifold.dmi', "manifold_full[invis]", get_dir(src,node3))
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/hide(i)
|
|
if(level == 1 && istype(loc, /turf/simulated))
|
|
invisibility = i ? 101 : 0
|
|
update_icon()
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/pipeline_expansion()
|
|
return list(node1, node2, node3)
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/update_node_icon()
|
|
..()
|
|
if(node1)
|
|
node1.update_icon()
|
|
if(node2)
|
|
node2.update_icon()
|
|
if(node3)
|
|
node3.update_icon()
|
|
|
|
|
|
//Colored pipes, use these for mapping
|
|
/obj/machinery/atmospherics/pipe/manifold/general
|
|
name="pipe"
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/general/visible
|
|
level = 2
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/general/hidden
|
|
level = 1
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/scrubbers
|
|
name="scrubbers pipe"
|
|
pipe_color=rgb(255,0,0)
|
|
color=rgb(255,0,0)
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible
|
|
level = 2
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden
|
|
level = 1
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/supply
|
|
name="air supply pipe"
|
|
pipe_color=rgb(0,0,255)
|
|
color=rgb(0,0,255)
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/supply/visible
|
|
level = 2
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/supply/hidden
|
|
level = 1
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/supplymain
|
|
name="main air supply pipe"
|
|
pipe_color=rgb(130,43,272)
|
|
color=rgb(130,43,272)
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/supplymain/visible
|
|
level = 2
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden
|
|
level = 1
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/yellow
|
|
pipe_color=rgb(255,198,0)
|
|
color=rgb(255,198,0)
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/yellow/visible
|
|
level = 2
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/yellow/hidden
|
|
level = 1
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/cyan
|
|
pipe_color=rgb(0,256,249)
|
|
color=rgb(0,256,249)
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/cyan/visible
|
|
level = 2
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/cyan/hidden
|
|
level = 1
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/green
|
|
pipe_color=rgb(30,256,0)
|
|
color=rgb(30,256,0)
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/green/visible
|
|
level = 2
|
|
|
|
/obj/machinery/atmospherics/pipe/manifold/green/hidden
|
|
level = 1
|