diff --git a/code/__DEFINES/pipe_construction.dm b/code/__DEFINES/pipe_construction.dm index b8a83ee3fa..2d15b8aed3 100644 --- a/code/__DEFINES/pipe_construction.dm +++ b/code/__DEFINES/pipe_construction.dm @@ -12,6 +12,7 @@ Construction breaks otherwise #define PIPE_HE_MANIFOLD /obj/machinery/atmospherics/pipe/heat_exchanging/manifold #define PIPE_HE_4WAYMANIFOLD /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w #define PIPE_JUNCTION /obj/machinery/atmospherics/pipe/heat_exchanging/junction +#define PIPE_BLUESPACE /obj/machinery/atmospherics/pipe/bluespace //Unary #define PIPE_CONNECTOR /obj/machinery/atmospherics/components/unary/portables_connector #define PIPE_UVENT /obj/machinery/atmospherics/components/unary/vent_pump @@ -56,4 +57,4 @@ Construction breaks otherwise #define STATION_TUBE_OPEN 0 #define STATION_TUBE_OPENING 1 #define STATION_TUBE_CLOSED 2 -#define STATION_TUBE_CLOSING 3 \ No newline at end of file +#define STATION_TUBE_CLOSING 3 diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 4a5e32d4e8..3fb3447f61 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -30,6 +30,7 @@ Buildable meters PIPE_HE_MANIFOLD, \ PIPE_HE_4WAYMANIFOLD, \ PIPE_JUNCTION, \ + PIPE_BLUESPACE, \ \ PIPE_CONNECTOR, \ PIPE_UVENT, \ @@ -90,6 +91,7 @@ GLOBAL_LIST_INIT(pipeID2State, list( "[PIPE_HE_MANIFOLD]" = "he_manifold", \ "[PIPE_HE_4WAYMANIFOLD]" = "he_manifold4w", \ "[PIPE_JUNCTION]" = "junction", \ + "[PIPE_BLUESPACE]" = "bluespace", \ \ "[PIPE_CONNECTOR]" = "connector", \ "[PIPE_UVENT]" = "uvent", \ @@ -118,6 +120,7 @@ GLOBAL_LIST_INIT(pipeID2State, list( "[PIPE_HE_MANIFOLD]" = "h/e manifold", \ "[PIPE_HE_4WAYMANIFOLD]"= "h/e 4-way manifold", \ "[PIPE_JUNCTION]" = "junction", \ + "[PIPE_BLUESPACE]" = "bluespace pipe", \ \ "[PIPE_CONNECTOR]" = "connector", \ "[PIPE_UVENT]" = "vent", \ diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 456fc1d0bd..39b3760f7e 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -13,13 +13,14 @@ if(..()) return 1 var/dat = {" -Regular pipes:
+Pipes:
Pipe
Bent Pipe
Manifold
4-Way Manifold
Manual Valve
Digital Valve
+Bluespace Pipe
Devices:
Connector
Vent
diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 4aa37253c4..15abe72a52 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -79,13 +79,14 @@ GLOBAL_LIST_INIT(disposalpipeID2State, list( //find these defines in code\game\machinery\pipe\consruction.dm GLOBAL_LIST_INIT(RPD_recipes, list( - "Regular Pipes" = list( + "Pipes" = list( "Pipe" = new /datum/pipe_info(PIPE_SIMPLE, 1, PIPE_BENDABLE), //"Bent Pipe" = new /datum/pipe_info(PIPE_SIMPLE, 5, PIPE_BENT), "Manifold" = new /datum/pipe_info(PIPE_MANIFOLD, 1, PIPE_TRINARY), "Manual Valve" = new /datum/pipe_info(PIPE_MVALVE, 1, PIPE_BINARY), "Digital Valve" = new /datum/pipe_info(PIPE_DVALVE, 1, PIPE_BINARY), "4-Way Manifold" = new /datum/pipe_info(PIPE_4WAYMANIFOLD, 1, PIPE_QUAD), + "Bluespace Pipe" = new /datum/pipe_info(PIPE_BLUESPACE, 1, PIPE_UNARY), ), "Devices"=list( "Connector" = new /datum/pipe_info(PIPE_CONNECTOR, 1, PIPE_UNARY), diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm index fdcf781a4d..19a81e8640 100644 --- a/code/game/objects/items/devices/pipe_painter.dm +++ b/code/game/objects/items/devices/pipe_painter.dm @@ -1,3 +1,4 @@ +GLOBAL_LIST_INIT(pipe_paint_colors, list("grey"=rgb(255,255,255), "red"=rgb(255,0,0), "blue"=rgb(0,0,255), "cyan"=rgb(0,256,249), "green"=rgb(30,255,0), "yellow"=rgb(255,198,0), "purple"=rgb(130,43,255))) /obj/item/device/pipe_painter name = "pipe painter" @@ -5,16 +6,7 @@ icon_state = "labeler1" item_state = "flight" flags_1 = NOBLUDGEON_1 - var/list/modes = list( - "grey" = rgb(255,255,255), - "red" = rgb(255,0,0), - "blue" = rgb(0,0,255), - "cyan" = rgb(0,256,249), - "green" = rgb(30,255,0), - "yellow" = rgb(255,198,0), - "purple" = rgb(130,43,255) - ) - var/mode = "grey" + var/paint_color = "grey" materials = list(MAT_METAL=5000, MAT_GLASS=2000) @@ -27,14 +19,13 @@ return var/obj/machinery/atmospherics/pipe/P = A - P.add_atom_colour(modes[mode], FIXED_COLOUR_PRIORITY) - P.pipe_color = modes[mode] - user.visible_message("[user] paints \the [P] [mode].","You paint \the [P] [mode].") - P.update_node_icon() //updates the neighbors + if(P.paint(GLOB.pipe_paint_colors[paint_color])) + playsound(src, 'sound/machines/click.ogg', 50, 1) + user.visible_message("[user] paints \the [P] [paint_color].","You paint \the [P] [paint_color].") /obj/item/device/pipe_painter/attack_self(mob/user) - mode = input("Which colour do you want to use?","Pipe painter") in modes + paint_color = input("Which colour do you want to use?","Pipe painter") in GLOB.pipe_paint_colors -/obj/item/device/pipe_painter/examine() +/obj/item/device/pipe_painter/examine(mob/user) ..() - to_chat(usr, "It is set to [mode].") + to_chat(user, "It is set to [paint_color].") diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 977d48fbd7..585b4c4550 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -91,7 +91,7 @@ Pipelines + Other Objects -> Pipe network /obj/machinery/atmospherics/proc/can_be_node(obj/machinery/atmospherics/target) if(target.initialize_directions & get_dir(target,src)) - return 1 + return TRUE /obj/machinery/atmospherics/proc/pipeline_expansion() return nodes @@ -208,6 +208,17 @@ Pipelines + Other Objects -> Pipe network pipe_overlay = . = pipeimages[identifier] = image(iconset, iconstate, dir = direction) pipe_overlay.color = col +/obj/machinery/atmospherics/proc/icon_addintact(var/obj/machinery/atmospherics/node) + var/image/img = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', "pipe_intact", get_dir(src,node), node.pipe_color) + underlays += img + return img.dir + +/obj/machinery/atmospherics/proc/icon_addbroken(var/connected = FALSE) + var/unconnected = (~connected) & initialize_directions + for(var/direction in GLOB.cardinals) + if(unconnected & direction) + underlays += getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', "pipe_exposed", direction) + /obj/machinery/atmospherics/on_construction(pipe_type, obj_color) if(can_unwrench) add_atom_colour(obj_color, FIXED_COLOUR_PRIORITY) @@ -275,7 +286,7 @@ Pipelines + Other Objects -> Pipe network /obj/machinery/atmospherics/proc/can_crawl_through() - return 1 + return TRUE /obj/machinery/atmospherics/proc/returnPipenets() return list() @@ -288,4 +299,5 @@ Pipelines + Other Objects -> Pipe network //Used for certain children of obj/machinery/atmospherics to not show pipe vision when mob is inside it. /obj/machinery/atmospherics/proc/can_see_pipes() - return 1 \ No newline at end of file + return TRUE + diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm index 95357a4a7f..5fb4611d92 100644 --- a/code/modules/atmospherics/machinery/components/components_base.dm +++ b/code/modules/atmospherics/machinery/components/components_base.dm @@ -23,18 +23,6 @@ On top of that, now people can add component-speciic procs/vars if they want! Iconnery */ -/obj/machinery/atmospherics/components/proc/icon_addintact(var/obj/machinery/atmospherics/node) - var/image/img = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', "pipe_intact", get_dir(src,node), node.pipe_color) - underlays += img - - return img.dir - -/obj/machinery/atmospherics/components/proc/icon_addbroken(var/connected = FALSE) - var/unconnected = (~connected) & initialize_directions - for(var/direction in GLOB.cardinals) - if(unconnected & direction) - underlays += getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', "pipe_exposed", direction) - /obj/machinery/atmospherics/components/proc/update_icon_nopipes() return @@ -52,7 +40,7 @@ Iconnery if(!showpipe) return //no need to update the pipes if they aren't showing - var/connected = FALSE + var/connected = 0 //Direction bitset for(DEVICE_TYPE_LOOP) //adds intact pieces if(NODE_I) diff --git a/code/modules/atmospherics/machinery/pipes/bluespace_pipe.dm b/code/modules/atmospherics/machinery/pipes/bluespace_pipe.dm new file mode 100644 index 0000000000..476235d3d9 --- /dev/null +++ b/code/modules/atmospherics/machinery/pipes/bluespace_pipe.dm @@ -0,0 +1,47 @@ +GLOBAL_LIST_EMPTY(bluespace_pipes) + +/obj/machinery/atmospherics/pipe/bluespace + name = "bluespace pipe" + desc = "Transmits gas across large distances of space. Developed using bluespace technology." + icon = 'icons/obj/atmospherics/pipes/bluespace.dmi' + icon_state = "map" + dir = SOUTH + initialize_directions = SOUTH + device_type = UNARY + can_buckle = FALSE + +/obj/machinery/atmospherics/pipe/bluespace/New() + icon_state = "pipe" + GLOB.bluespace_pipes += src + ..() + +/obj/machinery/atmospherics/pipe/bluespace/Destroy() + GLOB.bluespace_pipes -= src + for(var/p in GLOB.bluespace_pipes) + var/obj/machinery/atmospherics/pipe/bluespace/P = p + QDEL_NULL(P.parent) + P.build_network() + return ..() + +/obj/machinery/atmospherics/pipe/bluespace/SetInitDirections() + initialize_directions = dir + +/obj/machinery/atmospherics/pipe/bluespace/pipeline_expansion() + return ..() + GLOB.bluespace_pipes - src + +/obj/machinery/atmospherics/components/pipe/bluespace/hide() + update_icon() + +/obj/machinery/atmospherics/pipe/bluespace/update_icon(showpipe) + underlays.Cut() + var/turf/T = loc + if(level != 2 && T.intact) + return //no need to update the pipes if they aren't showing + var/connected = 0 //Direction bitset + for(DEVICE_TYPE_LOOP) //adds intact pieces + if(NODE_I) + connected |= icon_addintact(NODE_I) + icon_addbroken(connected) //adds broken pieces + +/obj/machinery/atmospherics/pipe/bluespace/paint() + return FALSE diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm index 53f7050e05..49383a74cb 100644 --- a/code/modules/atmospherics/machinery/pipes/pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/pipes.dm @@ -98,3 +98,10 @@ if(damage_flag == "melee" && damage_amount < 12) return 0 . = ..() + +/obj/machinery/atmospherics/pipe/proc/paint(paint_color) + add_atom_colour(paint_color, FIXED_COLOUR_PRIORITY) + pipe_color = paint_color + update_node_icon() + return TRUE + diff --git a/icons/obj/atmospherics/pipes/bluespace.dmi b/icons/obj/atmospherics/pipes/bluespace.dmi new file mode 100644 index 0000000000..866e6f9b84 Binary files /dev/null and b/icons/obj/atmospherics/pipes/bluespace.dmi differ diff --git a/icons/obj/atmospherics/pipes/pipe_item.dmi b/icons/obj/atmospherics/pipes/pipe_item.dmi index 7503e09e88..7b9185aba0 100644 Binary files a/icons/obj/atmospherics/pipes/pipe_item.dmi and b/icons/obj/atmospherics/pipes/pipe_item.dmi differ diff --git a/tgstation.dme b/tgstation.dme index eb1bfd6c11..2d99d5777a 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1153,6 +1153,7 @@ #include "code\modules\atmospherics\machinery\other\meter.dm" #include "code\modules\atmospherics\machinery\other\miner.dm" #include "code\modules\atmospherics\machinery\other\zvent.dm" +#include "code\modules\atmospherics\machinery\pipes\bluespace_pipe.dm" #include "code\modules\atmospherics\machinery\pipes\manifold.dm" #include "code\modules\atmospherics\machinery\pipes\manifold4w.dm" #include "code\modules\atmospherics\machinery\pipes\pipes.dm"