diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index 0792cd95f10..57a2fa83699 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -213,6 +213,7 @@
var/client_error_message = "Your version of byond is too old, may have issues, and is blocked from accessing this server."
var/cross_name = "Other server"
+ var/showircname = 0
/datum/configuration/New()
var/list/L = subtypesof(/datum/game_mode)
@@ -380,6 +381,8 @@
global.medal_hub = value
if("medal_hub_password")
global.medal_pass = value
+ if("show_irc_name")
+ config.showircname = 1
if("see_own_notes")
config.see_own_notes = 1
if("soft_popcap")
diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index 7ea4d5bc710..af2f21907d6 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -1,4 +1,4 @@
-/proc/keywords_lookup(msg)
+/proc/keywords_lookup(msg,irc)
//This is a list of words which are ignored by the parser when comparing message contents for names. MUST BE IN LOWER CASE!
var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","alien","as", "i")
@@ -10,6 +10,7 @@
var/list/surnames = list()
var/list/forenames = list()
var/list/ckeys = list()
+ var/founds = ""
for(var/mob/M in mob_list)
var/list/indexing = list(M.real_name, M.name)
if(M.mind)
@@ -56,9 +57,16 @@
var/is_antag = 0
if(found.mind && found.mind.special_role)
is_antag = 1
+ founds += "Name: [found.name]([found.real_name]) Ckey: [found.ckey] [is_antag ? "(Antag)" : null] "
msg += "[original_word](?|F) "
continue
msg += "[original_word] "
+ if(irc)
+ if(founds == "")
+ return "Search Failed"
+ else
+ return founds
+
return msg
@@ -160,4 +168,4 @@
message["key"] = global.comms_key
message["crossmessage"] = type
- world.Export("[global.cross_address]?[list2params(message)]")
\ No newline at end of file
+ world.Export("[global.cross_address]?[list2params(message)]")
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index 1c705724097..eaa5871adca 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -190,6 +190,7 @@
var/client/C = directory[target]
var/static/stealthkey
+ var/adminname = config.showircname ? "[sender](IRC)" : "Administrator"
if(!C)
return "No client"
@@ -206,7 +207,7 @@
msg = emoji_parse(msg)
C << "-- Administrator private message --"
- C << "Admin PM from-Administrator: [msg]"
+ C << "Admin PM from-[adminname]: [msg]"
C << "Click on the administrator's name to reply."
//always play non-admin recipients the adminhelp sound
diff --git a/code/world.dm b/code/world.dm
index 83454220e28..245b94d02c8 100644
--- a/code/world.dm
+++ b/code/world.dm
@@ -169,6 +169,13 @@ var/last_irc_status = 0
else
return IrcPm(input["adminmsg"],input["msg"],input["sender"])
+ else if("namecheck" in input)
+ if(!key_valid)
+ return "Bad Key"
+ else
+ log_admin("IRC Name Check: [input["sender"]] on [input["namecheck"]]")
+ message_admins("IRC name checking on [input["namecheck"]] from [input["sender"]]")
+ return keywords_lookup(input["namecheck"],1)
/world/Reboot(var/reason, var/feedback_c, var/feedback_r, var/time)
diff --git a/config/config.txt b/config/config.txt
index 32b7a5549f7..46204abb1aa 100644
--- a/config/config.txt
+++ b/config/config.txt
@@ -172,6 +172,9 @@ ALLOW_HOLIDAYS
##Remove the # mark if you are going to use the SVN irc bot to relay adminhelps
#USEIRCBOT
+##Uncomment to show the names of the admin sending a pm from IRC instead of showing as a stealthmin.
+#SHOW_IRC_NAME
+
##Defines the ticklag for the world. 0.9 is the normal one, 0.5 is smoother.
TICKLAG 0.5