/obj/machinery/pipedispenser name = "pipe dispenser" icon = 'icons/obj/stationobjs.dmi' icon_state = "pipe_d" desc = "Dispenses countless types of pipes. Very useful if you need pipes." density = TRUE anchored = TRUE var/wait = 0 var/piping_layer = PIPING_LAYER_DEFAULT /obj/machinery/pipedispenser/attack_paw(mob/user) return attack_hand(user) /obj/machinery/pipedispenser/attack_hand(mob/user) if(..()) return 1 var/dat = "PIPING LAYER: --[piping_layer]++
" var/recipes = GLOB.atmos_pipe_recipes for(var/category in recipes) var/list/cat_recipes = recipes[category] dat += "[category]:" user << browse("[src][dat]", "window=pipedispenser") onclose(user, "pipedispenser") return /obj/machinery/pipedispenser/Topic(href, href_list) if(..()) return 1 if(!anchored|| !usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) usr << browse(null, "window=pipedispenser") return 1 usr.set_machine(src) add_fingerprint(usr) if(href_list["makepipe"]) if(wait < world.time) var/p_type = text2path(href_list["makepipe"]) var/p_dir = text2num(href_list["dir"]) var/obj/item/pipe/P = new (loc, p_type, p_dir) P.setPipingLayer(piping_layer) P.add_fingerprint(usr) wait = world.time + 10 if(href_list["makemeter"]) if(wait < world.time ) new /obj/item/pipe_meter(loc) wait = world.time + 15 if(href_list["layer_up"]) piping_layer = CLAMP(++piping_layer, PIPING_LAYER_MIN, PIPING_LAYER_MAX) if(href_list["layer_down"]) piping_layer = CLAMP(--piping_layer, PIPING_LAYER_MIN, PIPING_LAYER_MAX) return /obj/machinery/pipedispenser/attackby(obj/item/W, mob/user, params) add_fingerprint(user) if (istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter)) to_chat(usr, "You put [W] back into [src].") qdel(W) return else if (istype(W, /obj/item/wrench)) if (!anchored && !isinspace()) playsound(src, W.usesound, 50, 1) to_chat(user, "You begin to fasten \the [src] to the floor...") if (do_after(user, 40*W.toolspeed, target = src)) add_fingerprint(user) user.visible_message( \ "[user] fastens \the [src].", \ "You fasten \the [src]. Now it can dispense pipes.", \ "You hear ratchet.") anchored = TRUE stat &= MAINT if (usr.machine==src) usr << browse(null, "window=pipedispenser") else if(anchored) playsound(src, W.usesound, 50, 1) to_chat(user, "You begin to unfasten \the [src] from the floor...") if (do_after(user, 20*W.toolspeed, target = src)) add_fingerprint(user) user.visible_message( \ "[user] unfastens \the [src].", \ "You unfasten \the [src]. Now it can be pulled somewhere else.", \ "You hear ratchet.") anchored = FALSE stat |= ~MAINT power_change() else return ..() /obj/machinery/pipedispenser/disposal name = "disposal pipe dispenser" icon = 'icons/obj/stationobjs.dmi' icon_state = "pipe_d" desc = "Dispenses pipes that will ultimately be used to move trash around." density = TRUE anchored = TRUE //Allow you to drag-drop disposal pipes and transit tubes into it /obj/machinery/pipedispenser/disposal/MouseDrop_T(obj/structure/pipe, mob/usr) if(!usr.canmove || usr.stat || usr.restrained()) return if (!istype(pipe, /obj/structure/disposalconstruct) && !istype(pipe, /obj/structure/c_transit_tube) && !istype(pipe, /obj/structure/c_transit_tube_pod)) return if (get_dist(usr, src) > 1 || get_dist(src,pipe) > 1 ) return if (pipe.anchored) return qdel(pipe) /obj/machinery/pipedispenser/disposal/attack_hand(mob/user) if(..()) return 1 var/dat = "" var/recipes = GLOB.disposal_pipe_recipes for(var/category in recipes) var/list/cat_recipes = recipes[category] dat += "[category]:" user << browse("[src][dat]", "window=pipedispenser") return /obj/machinery/pipedispenser/disposal/Topic(href, href_list) if(..()) return 1 usr.set_machine(src) add_fingerprint(usr) if(href_list["dmake"]) if(wait < world.time) var/p_type = text2path(href_list["dmake"]) var/obj/structure/disposalconstruct/C = new (loc, p_type) if(!C.can_place()) to_chat(usr, "There's not enough room to build that here!") qdel(C) return if(href_list["dir"]) C.setDir(text2num(href_list["dir"])) C.add_fingerprint(usr) C.update_icon() wait = world.time + 15 return //transit tube dispenser //inherit disposal for the dragging proc /obj/machinery/pipedispenser/disposal/transit_tube name = "transit tube dispenser" icon = 'icons/obj/stationobjs.dmi' icon_state = "pipe_d" density = TRUE desc = "Dispenses pipes that will move beings around." anchored = TRUE /obj/machinery/pipedispenser/disposal/transit_tube/attack_hand(mob/user) if(..()) return 1 var/dat = {"Transit Tubes:
Straight Tube
Straight Tube with Crossing
Curved Tube
Diagonal Tube
Diagonal Tube with Crossing
Junction
Station Equipment:
Through Tube Station
Terminus Tube Station
Transit Tube Pod
"} user << browse("[src][dat]", "window=pipedispenser") return /obj/machinery/pipedispenser/disposal/transit_tube/Topic(href, href_list) if(..()) return 1 usr.set_machine(src) add_fingerprint(usr) if(wait < world.time) if(href_list["tube"]) var/tube_type = text2num(href_list["tube"]) var/obj/structure/C switch(tube_type) if(TRANSIT_TUBE_STRAIGHT) C = new /obj/structure/c_transit_tube(loc) if(TRANSIT_TUBE_STRAIGHT_CROSSING) C = new /obj/structure/c_transit_tube/crossing(loc) if(TRANSIT_TUBE_CURVED) C = new /obj/structure/c_transit_tube/curved(loc) if(TRANSIT_TUBE_DIAGONAL) C = new /obj/structure/c_transit_tube/diagonal(loc) if(TRANSIT_TUBE_DIAGONAL_CROSSING) C = new /obj/structure/c_transit_tube/diagonal/crossing(loc) if(TRANSIT_TUBE_JUNCTION) C = new /obj/structure/c_transit_tube/junction(loc) if(TRANSIT_TUBE_STATION) C = new /obj/structure/c_transit_tube/station(loc) if(TRANSIT_TUBE_TERMINUS) C = new /obj/structure/c_transit_tube/station/reverse(loc) if(TRANSIT_TUBE_POD) C = new /obj/structure/c_transit_tube_pod(loc) if(C) C.add_fingerprint(usr) wait = world.time + 15 return