diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 09e3cc4484c..93da6704f1f 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -88,6 +88,23 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," msg = "HELP: [key_name(src, 1)] (?) (PP) (VV) (SM) (JMP) (CA) [ai_found ? " (CL)" : ""]: [msg]" //send this msg to all admins + + for(var/client/X in admins) + if(X.prefs.toggles & SOUND_ADMINHELP) + X << 'sound/effects/adminhelp.ogg' + X << msg + + + //show it to the person adminhelping too + src << "PM to-Admins: [original_msg]" + + //send it to irc if nobody is on and tell us how many were on + var/admin_number_present = send2irc_adminless_only(original_msg) + log_admin("HELP: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins who have +BAN.") + feedback_add_details("admin_verb","AH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + return + +proc/send2irc_adminless_only(source, msg, requiredflags = R_BAN) var/admin_number_total = 0 //Total number of admins var/admin_number_afk = 0 //Holds the number of admins who are afk var/admin_number_ignored = 0 //Holds the number of admins without +BAN (so admins who are not really admins) @@ -95,30 +112,24 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," for(var/client/X in admins) admin_number_total++; var/invalid = 0 - if(!check_rights_for(X, R_BAN)) + if(requiredflags != 0 && !check_rights_for(X, requiredflags)) admin_number_ignored++ invalid = 1 if(X.is_afk()) admin_number_afk++ invalid = 1 + if(X.holder.fakekey) + admin_number_ignored++ + invalid = 1 if(invalid) admin_number_decrease++ - if(X.prefs.toggles & SOUND_ADMINHELP) - X << 'sound/effects/adminhelp.ogg' - X << msg - - //show it to the person adminhelping too - src << "PM to-Admins: [original_msg]" - var/admin_number_present = admin_number_total - admin_number_decrease //Number of admins who are neither afk nor invalid - log_admin("HELP: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins who have +BAN.") if(admin_number_present <= 0) if(!admin_number_afk && !admin_number_ignored) - send2irc(ckey, "[original_msg] - No admins online") + send2irc(source, "[msg] - No admins online") else - send2irc(ckey, "[original_msg] - All admins AFK ([admin_number_afk]/[admin_number_total]) or skipped ([admin_number_ignored]/[admin_number_total])") - feedback_add_details("admin_verb","AH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return + send2irc(source, "[msg] - All admins AFK ([admin_number_afk]/[admin_number_total]) or skipped ([admin_number_ignored]/[admin_number_total])") + return admin_number_present proc/send2irc(msg,msg2) if(config.useircbot) diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 51ca6ecf703..4bc8b7f6504 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -90,7 +90,9 @@ var/list/external_rsc_urls var/next_external_rsc = 0 #endif + /client/New(TopicData) + TopicData = null //Prevent calls to client.Topic from connect if(connection != "seeker") //Invalid connection type. @@ -144,9 +146,8 @@ var/next_external_rsc = 0 if (config.notify_new_player_age >= 0) message_admins("New user: [key_name_admin(src)] is connecting here for the first time.") - - if (config.irc_first_connection_alert) - send2irc("New user", "[key_name(src)] is connecting for the first time!") + if (config.irc_first_connection_alert) + send2irc_adminless_only("New user", "[key_name(src)] is connecting for the first time!") player_age = 0 // set it from -1 to 0 so the job selection code doesn't have a panic attack