diff --git a/code/ATMOSPHERICS/components/tvalve.dm b/code/ATMOSPHERICS/components/tvalve.dm
index 7d15ffd19df..c0c005572e2 100644
--- a/code/ATMOSPHERICS/components/tvalve.dm
+++ b/code/ATMOSPHERICS/components/tvalve.dm
@@ -339,6 +339,18 @@ obj/machinery/atmospherics/tvalve
obj/machinery/atmospherics/tvalve/mirrored
icon_state = "tvalvem0"
+ New()
+ switch(dir)
+ if(NORTH)
+ initialize_directions = SOUTH|NORTH|WEST
+ if(SOUTH)
+ initialize_directions = NORTH|SOUTH|EAST
+ if(EAST)
+ initialize_directions = WEST|EAST|NORTH
+ if(WEST)
+ initialize_directions = EAST|WEST|SOUTH
+ ..()
+
initialize()
var/node1_dir
var/node2_dir
diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm
index 71d9490160a..b186603a44c 100644
--- a/code/ATMOSPHERICS/pipes.dm
+++ b/code/ATMOSPHERICS/pipes.dm
@@ -1015,10 +1015,22 @@ obj/machinery/atmospherics/pipe
volume = 35
dir = SOUTH
- initialize_directions = SOUTH
+ initialize_directions = NORTH
var/obj/machinery/atmospherics/node
+ New()
+ ..()
+ switch(dir)
+ if(SOUTH)
+ initialize_directions = NORTH
+ if(NORTH)
+ initialize_directions = SOUTH
+ if(WEST)
+ initialize_directions = EAST
+ if(EAST)
+ initialize_directions = WEST
+
hide(var/i)
if(level == 1 && istype(loc, /turf/simulated))
invisibility = i ? 101 : 0
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index f0388c880c1..4dd15eac30e 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -19,6 +19,7 @@ Buildable meters
#define PIPE_GAS_MIXER 14
#define PIPE_MTVALVE 15
#define PIPE_MANIFOLD4W 16
+#define PIPE_CAP 17
/obj/item/pipe
name = "pipe"
@@ -72,6 +73,8 @@ Buildable meters
src.pipe_type = PIPE_MTVALVE
else if(istype(make_from, /obj/machinery/atmospherics/pipe/manifold))
src.pipe_type = PIPE_MANIFOLD4W
+ else if(istype(make_from, /obj/machinery/atmospherics/pipe/cap))
+ src.pipe_type = PIPE_CAP
else
src.pipe_type = pipe_type
src.dir = dir
@@ -101,6 +104,7 @@ Buildable meters
"gas mixer", \
"t-valve", \
"4-way manifold", \
+ "pipe cap", \
)
name = nlist[pipe_type+1] + " fitting"
var/list/islist = list( \
@@ -121,6 +125,7 @@ Buildable meters
"mixer", \
"mtvalve", \
"manifold4w", \
+ "cap", \
)
icon_state = islist[pipe_type + 1]
@@ -187,6 +192,8 @@ Buildable meters
return flip|cw|acw
if(PIPE_GAS_FILTER, PIPE_GAS_MIXER,PIPE_MTVALVE)
return dir|flip|cw
+ if(PIPE_CAP)
+ return flip
return 0
/obj/item/pipe/proc/get_pdir() //endpoints for regular pipes
@@ -510,6 +517,16 @@ Buildable meters
V.node3.initialize()
V.node3.build_network()
+ if(PIPE_CAP)
+ var/obj/machinery/atmospherics/pipe/cap/C = new(src.loc)
+ C.dir = dir
+ C.initialize_directions = pipe_dir
+ C.initialize()
+ C.build_network()
+ if(C.node)
+ C.node.initialize()
+ C.node.build_network()
+
playsound(src.loc, 'Ratchet.ogg', 50, 1)
user.visible_message( \
"[user] fastens the [src].", \
diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm
index 68ae5bd58f6..20323f858ea 100644
--- a/code/game/machinery/pipe/pipe_dispenser.dm
+++ b/code/game/machinery/pipe/pipe_dispenser.dm
@@ -16,6 +16,7 @@
var/dat = {"
Regular pipes:
Pipe
+Pipe Cap
``
Bent Pipe
Manifold
4-Way Manifold
@@ -33,9 +34,6 @@
Pipe
Bent Pipe
Junction
-Insulated pipes:
-Pipe
-Bent Pipe
"}
diff --git a/icons/obj/pipe-item.dmi b/icons/obj/pipe-item.dmi
index 96cf274c7b8..4ea680ac809 100644
Binary files a/icons/obj/pipe-item.dmi and b/icons/obj/pipe-item.dmi differ