diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 195e87720c..d493b5b4d9 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -23,6 +23,12 @@ /obj/machinery/computer/camera_advanced/shuttle_docker/Initialize() . = ..() GLOB.navigation_computers += src + for(var/V in SSshuttle.stationary) + if(!V) + continue + var/obj/docking_port/stationary/S = V + if(jumpto_ports[S.id]) + z_lock |= S.z whitelist_turfs = typecacheof(whitelist_turfs) /obj/machinery/computer/camera_advanced/shuttle_docker/Destroy() @@ -129,6 +135,13 @@ to_chat(current_user, "Unknown object detected in landing zone. Please designate another location.") return + ///Make one use port that deleted after fly off, to don't lose info that need on to properly fly off. + if(my_port && my_port.get_docked()) + my_port.delete_after = TRUE + my_port.id = null + my_port.name = "Old [my_port.name]" + my_port = null + if(!my_port) my_port = new() my_port.name = shuttlePortName @@ -140,6 +153,7 @@ my_port.hidden = shuttle_port.hidden my_port.setDir(the_eye.dir) my_port.forceMove(locate(eyeobj.x - x_offset, eyeobj.y - y_offset, eyeobj.z)) + if(current_user.client) current_user.client.images -= the_eye.placed_images @@ -157,7 +171,7 @@ if(current_user.client) current_user.client.images += the_eye.placed_images to_chat(current_user, "Transit location designated") - return + return TRUE /obj/machinery/computer/camera_advanced/shuttle_docker/proc/canDesignateTarget() if(!designating_target_loc || !current_user || (eyeobj.loc != designating_target_loc) || (stat & (NOPOWER|BROKEN)) ) @@ -323,14 +337,25 @@ var/list/L = list() for(var/V in SSshuttle.stationary) if(!V) + stack_trace("SSshuttle.stationary have null entry!") continue var/obj/docking_port/stationary/S = V if(console.z_lock.len && !(S.z in console.z_lock)) continue if(console.jumpto_ports[S.id]) - L[S.name] = S + L["([L.len])[S.name]"] = S - playsound(console, 'sound/machines/terminal_prompt.ogg', 25, 0) + for(var/V in SSshuttle.beacons) + if(!V) + stack_trace("SSshuttle.beacons have null entry!") + continue + var/obj/machinery/spaceship_navigation_beacon/nav_beacon = V + if(!nav_beacon.locked || console.z_lock.len && !(nav_beacon.z in console.z_lock)) + L["([L.len]) [nav_beacon.name] located: [nav_beacon.x] [nav_beacon.y] [nav_beacon.z]"] = nav_beacon + else + L["([L.len]) [nav_beacon.name] locked"] = null + + playsound(console, 'sound/machines/terminal_prompt.ogg', 25, FALSE) var/selected = input("Choose location to jump to", "Locations", null) as null|anything in L if(QDELETED(src) || QDELETED(target) || !isliving(target)) return diff --git a/sandcode/code/modules/research/designs/machine_designs.dm b/sandcode/code/modules/research/designs/machine_designs.dm index 47454abfe2..f073c4fd89 100644 --- a/sandcode/code/modules/research/designs/machine_designs.dm +++ b/sandcode/code/modules/research/designs/machine_designs.dm @@ -71,5 +71,14 @@ desc = "The circuit board for a Bluespace Miner." id = "bluespace_miner" build_path = /obj/item/circuitboard/machine/bluespace_miner - category = list ("Misc. Machinery") + category = list("Misc. Machinery") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING + +//Spaceship beacon +/datum/design/board/spaceship_navigation_beacon + name = "Machine Design (Bluespace Navigation Gigabeacon)" + desc = "Allows the creation of a beacon that you can fly to with your ship." + id = "shuttle_beacon" + build_path = /obj/item/circuitboard/machine/spaceship_navigation_beacon + category = list("Misc. Machinery") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING diff --git a/sandcode/code/modules/research/techweb/all_nodes.dm b/sandcode/code/modules/research/techweb/all_nodes.dm index 68d5d62e42..f3a8a03924 100644 --- a/sandcode/code/modules/research/techweb/all_nodes.dm +++ b/sandcode/code/modules/research/techweb/all_nodes.dm @@ -50,3 +50,7 @@ /datum/techweb_node/nanite_smart/New() design_ids += "signaler_nanites" . = ..() + +/datum/techweb_node/basic_shuttle_tech/New() + design_ids += "shuttle_beacon" + . = ..() diff --git a/sandcode/code/modules/shuttle/spaceship_navigation_beacon.dm b/sandcode/code/modules/shuttle/spaceship_navigation_beacon.dm index d21f971ea3..5e75143987 100644 --- a/sandcode/code/modules/shuttle/spaceship_navigation_beacon.dm +++ b/sandcode/code/modules/shuttle/spaceship_navigation_beacon.dm @@ -1,8 +1,11 @@ /obj/item/circuitboard/machine/spaceship_navigation_beacon name = "Bluespace Navigation Gigabeacon (Machine Board)" build_path = /obj/machinery/spaceship_navigation_beacon - req_components = list() - + req_components = list( + /obj/item/stock_parts/subspace/transmitter = 1, + /obj/item/stock_parts/subspace/treatment = 1, + /obj/item/stock_parts/subspace/amplifier = 1, + /obj/item/stack/ore/bluespace_crystal/refined = 1) /obj/machinery/spaceship_navigation_beacon name = "Bluespace Navigation Gigabeacon" @@ -14,10 +17,8 @@ density = TRUE circuit = /obj/item/circuitboard/machine/spaceship_navigation_beacon light_power = 2 - var/locked = FALSE //Locked beacons don't allow to jump to it. - /obj/machinery/spaceship_navigation_beacon/Initialize() . = ..() SSshuttle.beacons |= src