diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index caa051f8748..83531c9b0b9 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -279,6 +279,9 @@
/datum/pm_tracker/proc/add_message(client/title, client/sender, message, mob/user)
if(!pms[title.key])
pms[title.key] = new /datum/pm_convo(title)
+ else if(!pms[title.key].client)
+ // If they DCed earlier, we need to add the client reference back
+ pms[title.key].client = title
pms[title.key].add(sender, message)
if(!open)
@@ -308,16 +311,25 @@
dat += "[label]"
var/datum/pm_convo/convo = pms[current_title]
+ var/datum/browser/popup = new(user, window_id, "Messages", 1000, 600, src)
if(convo)
+ popup.add_head_content(@{""})
convo.read = TRUE
dat += "
[check_rights(R_ADMIN, FALSE, user) ? fancy_title(current_title) : current_title]
"
dat += ""
- dat += "
"
+ dat += ""
+ dat += "
"
for(var/message in convo.messages)
dat += "| [message] |
"
dat += "
"
+ dat += "
"
if(convo.typing)
dat += "[current_title] is typing"
dat += "
"
@@ -327,17 +339,23 @@
if(check_rights(R_ADMIN, FALSE, user))
dat += "Ping"
- var/datum/browser/popup = new(user, window_id, "Messages", 1000, 600, src)
popup.set_content(dat)
popup.open()
open = TRUE
/datum/pm_tracker/proc/fancy_title(title)
- var/client/C = pms[title].client
+ var/client/C = pms[title].client || update_client(title)
if(!C)
return "[title] (Disconnected)"
return "[key_name(C, FALSE)] ([ADMIN_QUE(C.mob,"?")]) ([ADMIN_PP(C.mob,"PP")]) ([ADMIN_VV(C.mob,"VV")]) ([ADMIN_SM(C.mob,"SM")]) ([admin_jump_link(C.mob)]) (CA)"
+/datum/pm_tracker/proc/update_client(title)
+ var/client/C = GLOB.directory[ckey(title)]
+ if(C)
+ pms[title].client = C
+ return C
+ return null
+
/datum/pm_tracker/Topic(href, href_list)
if(href_list["archive"])
pms[href_list["archive"]].archived = !pms[href_list["archive"]].archived