diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index b95a20d23b6..f19b2b9121b 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -47,9 +47,11 @@ var/list/uplink_items = list()
var/list/job = null
/datum/uplink_item/proc/spawn_item(var/turf/loc, var/obj/item/device/uplink/U)
- U.uses -= max(cost, 0)
- feedback_add_details("traitor_uplink_items_bought", name)
- return new item(loc)
+ if(item)
+ U.uses -= max(cost, 0)
+ U.used_TC += cost
+ feedback_add_details("traitor_uplink_items_bought", name)
+ return new item(loc)
/datum/uplink_item/proc/buy(var/obj/item/device/uplink/hidden/U, var/mob/user)
@@ -74,7 +76,12 @@ var/list/uplink_items = list()
if(ishuman(user))
var/mob/living/carbon/human/A = user
A.put_in_any_hand_if_possible(I)
- U.purchase_log += "[user] ([user.ckey]) bought [name] for [cost]."
+
+ if(istype(I,/obj/item/weapon/storage/box/) && I.contents.len>0)
+ for(var/atom/o in I)
+ U.purchase_log += "\icon[o]"
+ else
+ U.purchase_log += "\icon[I]"
U.interact(user)
return 1
@@ -481,4 +488,4 @@ var/list/uplink_items = list()
var/datum/uplink_item/I = pick(possible_items)
U.uses -= max(0, I.cost)
feedback_add_details("traitor_uplink_items_bought","RN")
- return new I.item(loc)
\ No newline at end of file
+ return new I.item(loc)
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index 74d7fe81acc..06e1fcb0a19 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -332,6 +332,9 @@ proc/issyndicate(mob/living/M as mob)
if( syndicates.len || (ticker && istype(ticker.mode,/datum/game_mode/nuclear)) )
var/text = "The syndicate operatives were:"
+ var/purchases = ""
+ var/TC_uses = 0
+
for(var/datum/mind/syndicate in syndicates)
text += "
[syndicate.key] was [syndicate.name] ("
@@ -346,6 +349,14 @@ proc/issyndicate(mob/living/M as mob)
text += "body destroyed"
text += ")"
+ for(var/obj/item/device/uplink/H in world_uplinks)
+ if(H && H.uplink_owner && H.uplink_owner==syndicate.name)
+ TC_uses += H.used_TC
+ purchases += H.purchase_log
+
+
+ text += "(Syndicates used [TC_uses] TC) [purchases]"
+
world << text
return 1
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index 815a766f805..6a839c60a3b 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -236,6 +236,19 @@
text += "body destroyed"
text += ")"
+
+ var/TC_uses = 0
+ var/uplink_true = 0
+ var/purchases = ""
+ for(var/obj/item/device/uplink/H in world_uplinks)
+ if(H && H.uplink_owner && H.uplink_owner==traitor.name)
+ TC_uses += H.used_TC
+ uplink_true=1
+ purchases += H.purchase_log
+
+ if(uplink_true) text += " (used [TC_uses] TC) [purchases]"
+
+
if(traitor.objectives.len)//If the traitor had no objectives, don't need to process this.
var/count = 1
for(var/datum/objective/objective in traitor.objectives)
@@ -254,6 +267,7 @@
else
special_role_text = "antagonist"
+
if(traitorwin)
text += "
The [special_role_text] was successful!"
feedback_add_details("traitor_success","SUCCESS")
@@ -261,6 +275,7 @@
text += "
The [special_role_text] has failed!"
feedback_add_details("traitor_success","FAIL")
+
world << text
return 1
@@ -299,6 +314,7 @@
var/obj/item/device/uplink/hidden/T = new(R)
target_radio.hidden_uplink = T
+ T.uplink_owner = "[traitor_mob]"
target_radio.traitor_frequency = freq
traitor_mob << "The Syndicate have cunningly disguised a Syndicate Uplink as your [R.name] [loc]. Simply dial the frequency [format_frequency(freq)] to unlock its hidden features."
traitor_mob.mind.store_memory("Radio Freq: [format_frequency(freq)] ([R.name] [loc]).")
@@ -308,6 +324,7 @@
var/obj/item/device/uplink/hidden/T = new(R)
R.hidden_uplink = T
+ T.uplink_owner = "[traitor_mob]"
var/obj/item/device/pda/P = R
P.lock_code = pda_pass
@@ -393,4 +410,4 @@
traitor_mind.special_role = null
update_traitor_icons_removed(traitor_mind)
//world << "Removed [traitor_mind.current.name] from traitor shit"
- traitor_mind.current << "\red The fog clouding your mind clears. You remember nothing from the moment you were implanted until now.(You don't remember who implanted you)"
\ No newline at end of file
+ traitor_mind.current << "\red The fog clouding your mind clears. You remember nothing from the moment you were implanted until now.(You don't remember who implanted you)"
diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm
index 054ebe36b31..4e7d8d0244b 100644
--- a/code/game/objects/items/devices/uplinks.dm
+++ b/code/game/objects/items/devices/uplinks.dm
@@ -6,20 +6,30 @@ A list of items and costs is stored under the datum of every game mode, alongsid
*/
+var/list/world_uplinks = list()
+
/obj/item/device/uplink
var/welcome // Welcoming menu message
var/uses // Numbers of crystals
// List of items not to shove in their hands.
- var/list/purchase_log = list()
+ var/purchase_log = ""
var/show_description = null
var/active = 0
var/job = null
+ var/uplink_owner = null//text-only
+ var/used_TC = 0
+
/obj/item/device/uplink/New()
..()
+ world_uplinks+=src
welcome = ticker.mode.uplink_welcome
uses = ticker.mode.uplink_uses
+/obj/item/device/uplink/Del()
+ world_uplinks-=src
+ ..()
+
//Let's build a menu!
/obj/item/device/uplink/proc/generate_menu(mob/user as mob)
if(!job)
diff --git a/code/game/objects/items/weapons/implants/implantuplink.dm b/code/game/objects/items/weapons/implants/implantuplink.dm
index 2cba026e320..a42287920a5 100644
--- a/code/game/objects/items/weapons/implants/implantuplink.dm
+++ b/code/game/objects/items/weapons/implants/implantuplink.dm
@@ -14,6 +14,7 @@
activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
source.mind.store_memory("Uplink implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate.", 0, 0)
source << "The implanted uplink implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate."
+ hidden_uplink.uplink_owner="[source]"
return 1
diff --git a/code/stylesheet.dm b/code/stylesheet.dm
index ffdc718eba8..b4c096562be 100644
--- a/code/stylesheet.dm
+++ b/code/stylesheet.dm
@@ -71,4 +71,7 @@ h1.alert, h2.alert {color: #000000;}
.say_quote {font-family: Georgia, Verdana, sans-serif;}
.interface {color: #330033;}
-"}
+BIG IMG.icon {width: 32px; height: 32px;}
+
+
+"}
\ No newline at end of file