diff --git a/baystation12.dme b/baystation12.dme
index a1637015425..c7929f31df1 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -490,6 +490,7 @@
#include "code\game\objects\items\devices\lightreplacer.dm"
#include "code\game\objects\items\devices\multitool.dm"
#include "code\game\objects\items\devices\paicard.dm"
+#include "code\game\objects\items\devices\pipe_painter.dm"
#include "code\game\objects\items\devices\powersink.dm"
#include "code\game\objects\items\devices\scanners.dm"
#include "code\game\objects\items\devices\taperecorder.dm"
diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm
index c9e763e8390..5baffbcb615 100644
--- a/code/ATMOSPHERICS/pipes.dm
+++ b/code/ATMOSPHERICS/pipes.dm
@@ -527,7 +527,7 @@ obj/machinery/atmospherics/pipe
var/build_killswitch = 1
var/obj/machinery/atmospherics/node1
- New()
+ New()
initialize_directions = dir
..()
@@ -722,7 +722,7 @@ obj/machinery/atmospherics/pipe
icon_state = "manifold_[connected]_[unconnected]"
- if(!connected)
+ if(!connected)
del(src)
return
@@ -951,7 +951,7 @@ obj/machinery/atmospherics/pipe
return
initialize()
-
+
for(var/obj/machinery/atmospherics/target in get_step(src,1))
if(target.initialize_directions & 2)
node1 = target
@@ -1028,7 +1028,7 @@ obj/machinery/atmospherics/pipe
manifold4w/general/hidden
level = 1
icon_state = "manifold4w-f"
-
+
cap
name = "pipe endcap"
desc = "An endcap for pipes"
@@ -1117,28 +1117,9 @@ obj/machinery/atmospherics/pipe/attackby(var/obj/item/weapon/W as obj, var/mob/u
if (istype(src, /obj/machinery/atmospherics/pipe/vent))
return ..()
- // ===== Handle paints =====
- if(istype(W, /obj/item/weapon/reagent_containers/glass/paint/red))
- src.color = "red"
- user << "\red You paint the pipe red."
- update_icon()
+ if(istype(W,/obj/item/device/pipe_painter))
return 1
- if(istype(W, /obj/item/weapon/reagent_containers/glass/paint/blue))
- src.color = "blue"
- user << "\red You paint the pipe blue."
- update_icon()
- return 1
- if(istype(W, /obj/item/weapon/reagent_containers/glass/paint/green))
- src.color = "green"
- user << "\red You paint the pipe green."
- update_icon()
- return 1
- if(istype(W, /obj/item/weapon/reagent_containers/glass/paint/yellow))
- src.color = "yellow"
- user << "\red You paint the pipe yellow."
- update_icon()
- return 1
-
+
if (!istype(W, /obj/item/weapon/wrench))
return ..()
var/turf/T = src.loc
diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm
new file mode 100644
index 00000000000..da297fbb55b
--- /dev/null
+++ b/code/game/objects/items/devices/pipe_painter.dm
@@ -0,0 +1,22 @@
+/obj/item/device/pipe_painter
+ name = "pipe painter"
+ icon = 'icons/obj/bureaucracy.dmi'
+ icon_state = "labeler1"
+ item_state = "flight"
+ var/list/modes = list("grey","red","blue","cyan","green","yellow","purple")
+ var/mode = "grey"
+
+/obj/item/device/pipe_painter/afterattack(atom/A, mob/user as mob)
+ if(!istype(A,/obj/machinery/atmospherics/pipe) || istype(A,/obj/machinery/atmospherics/pipe/tank) || istype(A,/obj/machinery/atmospherics/pipe/vent) || istype(A,/obj/machinery/atmospherics/pipe/simple/heat_exchanging) || istype(A,/obj/machinery/atmospherics/pipe/simple/insulated))
+ return
+ var/obj/machinery/atmospherics/pipe/P = A
+ P.color = mode
+ user.visible_message("[user] paints \the [P] [mode].","You paint \the [P] [mode].")
+ P.update_icon()
+
+/obj/item/device/pipe_painter/attack_self(mob/user as mob)
+ mode = input("Which colour do you want to use?","Pipe painter") in modes
+
+/obj/item/device/pipe_painter/examine()
+ ..()
+ usr << "It is in [mode] mode."
\ No newline at end of file
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index b67b38324d6..fd525eacdb5 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -103,9 +103,8 @@
icon_state = "hazard"
item_state = "hazard"
blood_overlay_type = "armor"
- allowed = list (/obj/item/device/analyzer, /obj/item/device/flashlight, /obj/item/device/multitool, /obj/item/device/radio, /obj/item/device/t_scanner, \
- /obj/item/weapon/crowbar, /obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, \
- /obj/item/weapon/tank/emergency_oxygen)
+ allowed = list (/obj/item/device/analyzer, /obj/item/device/flashlight, /obj/item/device/multitool, /obj/item/device/pipe_painter, /obj/item/device/radio, /obj/item/device/t_scanner, \
+ /obj/item/weapon/crowbar, /obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, /obj/item/weapon/tank/emergency_oxygen)
//Lawyer
/obj/item/clothing/suit/storage/lawyer/bluejacket
diff --git a/html/Thumbs.db b/html/Thumbs.db
new file mode 100644
index 00000000000..1529ed02d67
Binary files /dev/null and b/html/Thumbs.db differ
diff --git a/maps/tgstation.2.1.0.0.1.dmm b/maps/tgstation.2.1.0.0.1.dmm
index 8f3f9d4ea9b..35d839fa22f 100644
--- a/maps/tgstation.2.1.0.0.1.dmm
+++ b/maps/tgstation.2.1.0.0.1.dmm
@@ -6011,7 +6011,7 @@
"clE" = (/obj/machinery/light,/obj/structure/closet,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/xenobiology)
"clF" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/machinery/door_control{desc = "A remote control-switch for a door to space."; id = "xenobioout6"; name = "Containment Release Switch"; pixel_x = 24; pixel_y = 4; req_access = "55"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/xenobiology)
"clG" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless,/area/solar/starboard)
-"clH" = (/obj/structure/table,/obj/item/device/t_scanner,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/radio/headset/headset_eng,/obj/item/weapon/cartridge/atmos,/obj/item/weapon/cartridge/atmos,/turf/simulated/floor,/area/atmos)
+"clH" = (/obj/structure/table,/obj/item/device/t_scanner,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/radio/headset/headset_eng,/obj/item/weapon/cartridge/atmos,/obj/item/weapon/cartridge/atmos,/obj/item/device/pipe_painter,/turf/simulated/floor,/area/atmos)
"clI" = (/obj/structure/stool,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft)
"clJ" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/maintenance{name = "Engineering Maintainance"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor/plating,/area/engine/engineering)
"clK" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/atmos)