Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
/obj/machinery/computer/launchpad name = "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/selected_id var/list/obj/machinery/launchpad/launchpads var/maximum_pads = 4 // NO LOOKIE HERE /obj/machinery/computer/launchpad/Initialize() launchpads = list() . = ..() AddComponent(/datum/component/usb_port, list( /obj/item/circuit_component/bluespace_launchpad, )) /obj/item/circuit_component/bluespace_launchpad display_name = "Bluespace Launchpad Console" display_desc = "Teleports anything to and from any location on the station. Doesn't use actual GPS coordinates, but rather offsets from the launchpad itself." circuit_flags = CIRCUIT_FLAG_OUTPUT_SIGNAL var/list/obj/machinery/launchpad/launchpads var/datum/port/input/launchpad_id var/datum/port/input/x_pos var/datum/port/input/y_pos var/datum/port/input/send_trigger var/datum/port/input/retrieve_trigger var/datum/port/output/on_fail var/obj/machinery/computer/launchpad/attached_console /obj/item/circuit_component/bluespace_launchpad/Initialize() . = ..() launchpad_id = add_input_port("Launchpad ID", PORT_TYPE_NUMBER) x_pos = add_input_port("X offset", PORT_TYPE_NUMBER) y_pos = add_input_port("Y offset", PORT_TYPE_NUMBER) send_trigger = add_input_port("Send", PORT_TYPE_SIGNAL) retrieve_trigger = add_input_port("Retrieve", PORT_TYPE_SIGNAL) on_fail = add_output_port("Failed", PORT_TYPE_SIGNAL) /obj/item/circuit_component/bluespace_launchpad/Destroy() launchpad_id = null x_pos = null y_pos = null send_trigger = null retrieve_trigger = null on_fail = null return ..() /obj/item/circuit_component/bluespace_launchpad/register_usb_parent(atom/movable/parent) . = ..() if(istype(parent, /obj/machinery/computer/launchpad)) attached_console = parent /obj/item/circuit_component/bluespace_launchpad/unregister_usb_parent(atom/movable/parent) attached_console = null return ..() /obj/item/circuit_component/bluespace_launchpad/input_received(datum/port/input/port) . = ..() if(.) return if(!attached_console || length(launchpads) == 0) on_fail.set_output(COMPONENT_SIGNAL) return var/current_launchpad = launchpad_id.input_value if(isnull(current_launchpad)) return var/obj/machinery/launchpad/the_pad = launchpads[current_launchpad] if(isnull(the_pad)) on_fail.set_output(COMPONENT_SIGNAL) return var/x_dest = x_pos.input_value if(isnull(x_dest)) return var/y_dest = y_pos.input_value if(isnull(y_dest)) return the_pad.set_offset(x_dest, y_dest) if(COMPONENT_TRIGGERED_BY(send_trigger, port)) teleport(usr, the_pad, TRUE) //DOES NOT WORK if(COMPONENT_TRIGGERED_BY(retrieve_trigger, port)) teleport(usr, the_pad, FALSE) //DOES NOT WORK // NO LOOKIE HERE /obj/machinery/computer/launchpad/attack_paw(mob/user, list/modifiers) to_chat(user, span_warning("You are too primitive to use this computer!")) return /obj/machinery/computer/launchpad/attackby(obj/item/W, mob/user, params) if(W.tool_behaviour == TOOL_MULTITOOL) if(!multitool_check_buffer(user, W)) return 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, span_notice("You upload the data from the [W.name]'s buffer.")) else to_chat(user, span_warning("[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/teleport(mob/user, obj/machinery/launchpad/pad, sending) if(QDELETED(pad)) to_chat(user, span_warning("ERROR: Launchpad not responding. Check launchpad integrity.")) return if(!pad.isAvailable()) to_chat(user, span_warning("ERROR: Launchpad not operative. Make sure the launchpad is ready and powered.")) return pad.doteleport(user, sending) /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, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "LaunchpadConsole", name) ui.open() /obj/machinery/computer/launchpad/ui_data(mob/user) var/list/data = list() var/list/pad_list = list() for(var/i in 1 to LAZYLEN(launchpads)) if(pad_exists(i)) var/obj/machinery/launchpad/pad = get_pad(i) var/list/this_pad = list() this_pad["name"] = pad.display_name this_pad["id"] = i if(pad.machine_stat & NOPOWER) this_pad["inactive"] = TRUE pad_list += list(this_pad) else launchpads -= get_pad(i) data["launchpads"] = pad_list data["selected_id"] = selected_id if(selected_id) var/obj/machinery/launchpad/current_pad = launchpads[selected_id] data["x"] = current_pad.x_offset data["y"] = current_pad.y_offset data["pad_name"] = current_pad.display_name data["range"] = current_pad.range data["selected_pad"] = current_pad if(QDELETED(current_pad) || (current_pad.machine_stat & NOPOWER)) data["pad_active"] = FALSE return data data["pad_active"] = TRUE return data /obj/machinery/computer/launchpad/ui_act(action, params) . = ..() if(.) return var/obj/machinery/launchpad/current_pad = launchpads[selected_id] switch(action) if("select_pad") selected_id = text2num(params["id"]) . = TRUE if("set_pos") var/new_x = text2num(params["x"]) var/new_y = text2num(params["y"]) current_pad.set_offset(new_x, new_y) . = TRUE if("move_pos") var/plus_x = text2num(params["x"]) var/plus_y = text2num(params["y"]) current_pad.set_offset( x = current_pad.x_offset + plus_x, y = current_pad.y_offset + plus_y ) . = TRUE if("rename") . = TRUE var/new_name = params["name"] if(!new_name) return current_pad.display_name = new_name if("remove") if(usr && tgui_alert(usr, "Are you sure?", "Unlink Launchpad", list("I'm Sure", "Abort")) != "Abort") launchpads -= current_pad selected_id = null . = TRUE if("launch") teleport(usr, current_pad, TRUE) . = TRUE if("pull") teleport(usr, current_pad, FALSE) . = TRUE . = TRUE
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)