diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index 64767dc7ff0..de609d10d9f 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -167,10 +167,10 @@ client
if(istype(D,/atom))
var/atom/A = D
- body += "[D]"
- if(A.dir)
- body += "
<< [dir2text(A.dir)] >>"
if(ismob(A))
+ body += "[D]"
+ if(A.dir)
+ body += "
<< [dir2text(A.dir)] >>"
var/mob/M = A
body += "
[M.ckey ? M.ckey : "No ckey"] / [M.real_name ? M.real_name : "No real name"]"
body += {"
@@ -185,6 +185,10 @@ client
"}
+ else
+ body += "[D]"
+ if(A.dir)
+ body += "
<< [dir2text(A.dir)] >>"
else
body += "[D]"
@@ -389,6 +393,30 @@ client
if (href_list["Vars"])
debug_variables(locate(href_list["Vars"]))
+
+ //~CARN: for renaming mobs (updates their real_name and their ID/PDA if applicable).
+ else if (href_list["rename"])
+ var/new_name = input(usr,"What would you like to name this mob?","Input a name") as text|null
+ if(!new_name) return
+ var/mob/M = locate(href_list["rename"])
+ if(!istype(M)) return
+
+ message_admins("Admin [key_name_admin(usr)] renamed [key_name_admin(M)] to [new_name].", 1)
+ if(istype(M, /mob/living/carbon/human))
+ for(var/obj/item/weapon/card/id/ID in M.contents)
+ if(ID.registered == M.real_name)
+ ID.name = "[new_name]'s ID Card ([ID.assignment])"
+ ID.registered = new_name
+ break
+ for(var/obj/item/device/pda/PDA in M.contents)
+ if(PDA.owner == M.real_name)
+ PDA.name = "PDA-[new_name] ([PDA.ownjob])"
+ PDA.owner = new_name
+ break
+ M.real_name = new_name
+ M.name = new_name
+ href_list["datumrefresh"] = href_list["rename"]
+
else if (href_list["varnameedit"])
if(!href_list["datumedit"] || !href_list["varnameedit"])
usr << "Varedit error: Not all information has been sent Contact a coder."