/obj/machinery/computer/launchpad name = "\improper launchpad control console" desc = "Used to teleport objects to and from a launchpad." icon_screen = "teleport" icon_keyboard = "teleport_key" circuit = /obj/item/circuitboard/computer/launchpad_console var/sending = TRUE var/current_pad //current pad viewed on the screen var/list/obj/machinery/launchpad/launchpads var/maximum_pads = 4 /obj/machinery/computer/launchpad/Initialize() launchpads = list() . = ..() /obj/machinery/computer/launchpad/attack_paw(mob/user) to_chat(user, "You are too primitive to use this computer!") return /obj/machinery/computer/launchpad/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/multitool)) var/obj/item/multitool/M = W if(M.buffer && istype(M.buffer, /obj/machinery/launchpad)) if(LAZYLEN(launchpads) < maximum_pads) launchpads |= M.buffer M.buffer = null to_chat(user, "You upload the data from the [W.name]'s buffer.") else to_chat(user, "[src] cannot handle any more connections!") else return ..() /obj/machinery/computer/launchpad/proc/pad_exists(number) var/obj/machinery/launchpad/pad = launchpads[number] if(QDELETED(pad)) return FALSE return TRUE /obj/machinery/computer/launchpad/proc/get_pad(number) var/obj/machinery/launchpad/pad = launchpads[number] return pad /obj/machinery/computer/launchpad/ui_interact(mob/user) . = ..() var/list/t = list() if(!LAZYLEN(launchpads)) obj_flags &= ~IN_USE //Yeah so if you deconstruct teleporter while its in the process of shooting it wont disable the console t += "
No launchpad located.

" else for(var/i in 1 to LAZYLEN(launchpads)) if(pad_exists(i)) var/obj/machinery/launchpad/pad = get_pad(i) if(pad.stat & NOPOWER) t+= "[pad.display_name]" else t+= "[pad.display_name]" else launchpads -= get_pad(i) t += "
" if(current_pad) var/obj/machinery/launchpad/pad = get_pad(current_pad) t += "
[pad.display_name]
" t += "Rename" t += "Remove

" t += "O" //up-left t += "^" //up t += "O
" //up-right t += "<"//left t += "R"//reset to 0 t += ">
"//right t += "O"//down-left t += "v"//down t += "O
"//down-right t += "
" t += "
Current offset:

" t += "
[abs(pad.y_offset)] [pad.y_offset > 0 ? "N":"S"]

" t += "
[abs(pad.x_offset)] [pad.x_offset > 0 ? "E":"W"]

" t += "
Launch" t += " Pull" var/datum/browser/popup = new(user, "launchpad", name, 300, 500) popup.set_content(t.Join()) popup.open() /obj/machinery/computer/launchpad/proc/teleport(mob/user, obj/machinery/launchpad/pad) if(QDELETED(pad)) to_chat(user, "ERROR: Launchpad not responding. Check launchpad integrity.") return if(!pad.isAvailable()) to_chat(user, "ERROR: Launchpad not operative. Make sure the launchpad is ready and powered.") return pad.doteleport(user, sending) /obj/machinery/computer/launchpad/Topic(href, href_list) var/obj/machinery/launchpad/pad if(href_list["pad"]) pad = get_pad(text2num(href_list["pad"])) if(..()) return if(!LAZYLEN(launchpads)) updateDialog() return if(href_list["choose_pad"]) current_pad = text2num(href_list["pad"]) if(href_list["raisex"]) if(pad.x_offset < pad.range) pad.x_offset++ if(href_list["lowerx"]) if(pad.x_offset > (pad.range * -1)) pad.x_offset-- if(href_list["raisey"]) if(pad.y_offset < pad.range) pad.y_offset++ if(href_list["lowery"]) if(pad.y_offset > (pad.range * -1)) pad.y_offset-- if(href_list["reset"]) pad.y_offset = 0 pad.x_offset = 0 if(href_list["change_name"]) var/new_name = stripped_input(usr, "What do you wish to name the launchpad?", "Launchpad", pad.display_name, 15) if(!new_name) return pad.display_name = new_name if(href_list["remove"]) if(usr && alert(usr, "Are you sure?", "Remove Launchpad", "I'm Sure", "Abort") != "Abort") launchpads -= pad if(href_list["launch"]) sending = TRUE teleport(usr, pad) if(href_list["pull"]) sending = FALSE teleport(usr, pad) updateDialog()