diff --git a/code/game/antagonist/antagonist_print.dm b/code/game/antagonist/antagonist_print.dm
index c25ea20747..750a3ceb35 100644
--- a/code/game/antagonist/antagonist_print.dm
+++ b/code/game/antagonist/antagonist_print.dm
@@ -72,13 +72,26 @@
if(H && H.uplink_owner && H.uplink_owner == ply)
TC_uses += H.used_TC
uplink_true = 1
- var/list/refined_log = new()
- for(var/datum/uplink_item/UI in H.purchase_log)
- refined_log.Add("[H.purchase_log[UI]]x[UI.log_icon()][UI.name]")
- purchases = english_list(refined_log, nothing_text = "")
+ purchases += get_uplink_purchases(H)
if(uplink_true)
text += " (used [TC_uses] TC)"
if(purchases)
text += "
[purchases]"
- return text
\ No newline at end of file
+ return text
+
+/proc/print_ownerless_uplinks()
+ var/has_printed = 0
+ for(var/obj/item/device/uplink/H in world_uplinks)
+ if(isnull(H.uplink_owner) && H.used_TC)
+ if(!has_printed)
+ has_printed = 1
+ world << "Ownerless Uplinks"
+ world << "[H.loc] (used [H.used_TC] TC)"
+ world << get_uplink_purchases(H)
+
+/proc/get_uplink_purchases(var/obj/item/device/uplink/H)
+ var/list/refined_log = new()
+ for(var/datum/uplink_item/UI in H.purchase_log)
+ refined_log.Add("[H.purchase_log[UI]]x[UI.log_icon()][UI.name]")
+ . = english_list(refined_log, nothing_text = "")
diff --git a/code/game/antagonist/outsider/mercenary.dm b/code/game/antagonist/outsider/mercenary.dm
index f703818e47..7315eb418f 100644
--- a/code/game/antagonist/outsider/mercenary.dm
+++ b/code/game/antagonist/outsider/mercenary.dm
@@ -45,9 +45,7 @@ var/datum/antagonist/mercenary/mercs
player.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/cyanide(player), slot_in_backpack)
if (player.mind == leader)
- var/obj/item/device/radio/uplink/U = new(player.loc)
- U.hidden_uplink.uplink_owner = player.mind
- U.hidden_uplink.uses = 40
+ var/obj/item/device/radio/uplink/U = new(player.loc, player.mind, 40)
player.put_in_hands(U)
player.update_icons()
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 18e9e83bdf..fcb8fa3eac 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -292,6 +292,8 @@ var/global/list/additional_antag_types = list()
sleep(10)
antag.check_victory()
antag.print_player_summary()
+ sleep(10)
+ print_ownerless_uplinks()
var/clients = 0
var/surviving_humans = 0
diff --git a/code/game/objects/items/devices/uplink.dm b/code/game/objects/items/devices/uplink.dm
index 2023c881a9..5675877d39 100644
--- a/code/game/objects/items/devices/uplink.dm
+++ b/code/game/objects/items/devices/uplink.dm
@@ -7,13 +7,13 @@ A list of items and costs is stored under the datum of every game mode, alongsid
*/
/obj/item/device/uplink
- var/welcome // Welcoming menu message
- var/uses // Numbers of crystals
- var/list/ItemsCategory // List of categories with lists of items
- var/list/ItemsReference // List of references with an associated item
- var/list/nanoui_items // List of items for NanoUI use
- var/nanoui_menu = 0 // The current menu we are in
- var/list/nanoui_data = new // Additional data for NanoUI use
+ var/welcome = "Welcome, Operative" // Welcoming menu message
+ var/uses // Numbers of crystals
+ var/list/ItemsCategory // List of categories with lists of items
+ var/list/ItemsReference // List of references with an associated item
+ var/list/nanoui_items // List of items for NanoUI use
+ var/nanoui_menu = 0 // The current menu we are in
+ var/list/nanoui_data = new // Additional data for NanoUI use
var/list/purchase_log = new
var/datum/mind/uplink_owner = null
@@ -22,11 +22,12 @@ A list of items and costs is stored under the datum of every game mode, alongsid
/obj/item/device/uplink/nano_host()
return loc
-/obj/item/device/uplink/New(var/location, var/datum/mind/owner)
+/obj/item/device/uplink/New(var/location, var/datum/mind/owner, var/telecrystals = DEFAULT_TELECRYSTAL_AMOUNT)
..()
src.uplink_owner = owner
purchase_log = list()
world_uplinks += src
+ uses = telecrystals
/obj/item/device/uplink/Destroy()
world_uplinks -= src
@@ -212,4 +213,4 @@ A list of items and costs is stored under the datum of every game mode, alongsid
/obj/item/device/radio/headset/uplink/New()
..()
hidden_uplink = new(src)
- hidden_uplink.uses = 10
+ hidden_uplink.uses = DEFAULT_TELECRYSTAL_AMOUNT