diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 94121f3b65..8ab75002e6 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -354,6 +354,13 @@
playsound(src, pickup_sound, 20, preference = /datum/client_preference/pickup_sounds)
return
+<<<<<<< HEAD
+=======
+// As above but for items being equipped to an active module on a robot.
+/obj/item/proc/equipped_robot(var/mob/user)
+ return
+
+>>>>>>> 921ac67... Merge pull request #7980 from MistakeNot4892/gps
//Defines which slots correspond to which slot flags
var/list/global/slot_flags_enumeration = list(
"[slot_wear_mask]" = SLOT_MASK,
diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm
index 610ebbc26c..7621f09830 100644
--- a/code/game/objects/items/devices/gps.dm
+++ b/code/game/objects/items/devices/gps.dm
@@ -67,6 +67,10 @@ var/list/GPS_list = list()
. = ..()
update_holder()
+/obj/item/device/gps/equipped_robot()
+ . = ..()
+ update_holder()
+
/obj/item/device/gps/equipped()
. = ..()
update_holder()
@@ -107,6 +111,7 @@ var/list/GPS_list = list()
/obj/item/device/gps/proc/update_compass(var/update_compass_icon)
compass.hide_waypoints(FALSE)
+ var/turf/my_turf = get_turf(src)
for(var/thing in tracking_devices)
var/obj/item/device/gps/gps = locate(thing)
if(!istype(gps) || QDELETED(gps))
@@ -119,7 +124,7 @@ var/list/GPS_list = list()
compass.set_waypoint("\ref[gps]", gps_tag, gps_turf.x, gps_turf.y, gps_turf.z, LAZYACCESS(tracking_devices, "\ref[gps]"))
else
compass.set_waypoint("\ref[gps]", gps_tag, 0, 0, 0, LAZYACCESS(tracking_devices, "\ref[gps]"))
- if(can_track(gps))
+ if(can_track(gps) && gps_turf && my_turf && gps_turf.z == my_turf.z)
compass.show_waypoint("\ref[gps]")
compass.rebuild_overlay_lists(update_compass_icon)
@@ -183,11 +188,11 @@ var/list/GPS_list = list()
var/turf/curr = get_turf(src)
var/area/my_area = get_area(src)
- dat["my_area_name"] = my_area.name
+ dat["my_area_name"] = strip_improper(my_area.name)
dat["curr_x"] = curr.x
dat["curr_y"] = curr.y
dat["curr_z"] = curr.z
- dat["curr_z_name"] = using_map.get_zlevel_name(curr.z)
+ dat["curr_z_name"] = strip_improper(using_map.get_zlevel_name(curr.z))
dat["gps_list"] = list()
dat["z_level_detection"] = using_map.get_map_levels(curr.z, long_range)
@@ -201,10 +206,10 @@ var/list/GPS_list = list()
gps_data["gps_tag"] = G.gps_tag
var/area/A = get_area(G)
- gps_data["area_name"] = A.get_name()
+ gps_data["area_name"] = strip_improper(A.get_name())
var/turf/T = get_turf(G)
- gps_data["z_name"] = using_map.get_zlevel_name(T.z)
+ gps_data["z_name"] = strip_improper(using_map.get_zlevel_name(T.z))
gps_data["direction"] = get_adir(curr, T)
gps_data["degrees"] = round(Get_Angle(curr,T))
gps_data["distX"] = T.x - curr.x
@@ -221,7 +226,7 @@ var/list/GPS_list = list()
/obj/item/device/gps/proc/display(mob/user)
if(emped)
- to_chat(user, "It's busted!")
+ to_chat(user, SPAN_WARNING("It's busted!"))
return
var/list/dat = list()
@@ -229,9 +234,9 @@ var/list/GPS_list = list()
dat += "
"
if(!tracking)
- dat += " | \[Switch On]\]
"
+ dat += " | \[Switch On\]
"
else
- dat += " | \[Switch Off]\]
"
+ dat += " | \[Switch Off\]
"
dat += "| Current location | [gps_data["my_area_name"]] | ([gps_data["curr_x"]], [gps_data["curr_y"]], [gps_data["curr_z_name"]]) |
"
dat += "| [hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'. | "
dat += "\[Change Tag\]\[Toggle Scan Range\][can_hide_signal ? "\[Toggle Signal Visibility\]":""] |
"
@@ -244,13 +249,12 @@ var/list/GPS_list = list()
dat += "[gps["gps_tag"]] | [gps["area_name"]] | "
if(istype(gps_data["ref"], /obj/item/device/gps/internal/poi))
- dat += "[gps["local"] ? "[gps["direction"]] Dist: [round(gps["distance"], 10)]m" : "in \the [gps["z_name"]]"] | "
+ dat += "[gps["local"] ? "[gps["direction"]] Dist: [round(gps["distance"], 10)]m" : "[gps["z_name"]]"] | "
else
dat += "([gps["x"]], [gps["y"]], [gps["z_name"]]) | "
if(gps["local"])
- dat += "[gps["distance"]]m | "
- dat += "[gps["degrees"]]° ([gps["direction"]]) | "
+ dat += "[gps["distance"]]m | [gps["direction"]] | "
else
dat += "Non-local signal. | "
@@ -471,9 +475,9 @@ var/list/GPS_list = list()
dat += ""
if(!tracking)
- dat += " | \[Switch On]\]
"
+ dat += " | \[Switch On\]
"
else
- dat += " | \[Switch Off]\]
"
+ dat += " | \[Switch Off\]
"
dat += "| Current location | [gps_data["my_area_name"]] | ([gps_data["curr_x"]], [gps_data["curr_y"]], [gps_data["curr_z_name"]]) |
"
dat += "| [hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'. | "
dat += "\[Change Tag\]\[Toggle Scan Range\][can_hide_signal ? "\[Toggle Signal Visibility\]":""] |
"
@@ -485,8 +489,7 @@ var/list/GPS_list = list()
var/gps_ref = "\ref[gps["ref"]]"
dat += "[gps["gps_tag"]] | [gps["area_name"]] ([gps["x"]], [gps["y"]], [gps["z_name"]]) | "
if(gps["local"])
- dat += "[gps["distance"]]m | "
- dat += "[gps["degrees"]]° ([gps["direction"]]) | "
+ dat += "[gps["distance"]]m | [gps["direction"]] | "
else
dat += "Non-local signal. | "
if(LAZYACCESS(tracking_devices, gps_ref))
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 849696ea4c..73dcd6b2ae 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -906,18 +906,21 @@
if(!module_state_1)
module_state_1 = O
O.hud_layerise()
+ O.equipped_robot()
contents += O
if(istype(module_state_1,/obj/item/borg/sight))
sight_mode |= module_state_1:sight_mode
else if(!module_state_2)
module_state_2 = O
O.hud_layerise()
+ O.equipped_robot()
contents += O
if(istype(module_state_2,/obj/item/borg/sight))
sight_mode |= module_state_2:sight_mode
else if(!module_state_3)
module_state_3 = O
O.hud_layerise()
+ O.equipped_robot()
contents += O
if(istype(module_state_3,/obj/item/borg/sight))
sight_mode |= module_state_3:sight_mode