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