/client/proc/security_note(message, tell_user) log_access("client security: noting [key_name(src)] | [message]") message_admins("client security: noting [key_name(src)] for [message]") add_system_note("client-security", message) if(tell_user) to_chat(src, SPAN_BOLDANNOUNCE("CLIENT-SECURITY: [message]
Please correct this.")) /client/proc/security_kick(message, tell_user, immediate) log_access("client security: kicking [key_name(src)] | [message]") message_admins("client security: kicking [key_name(src)] | [message]") if(tell_user) to_chat(src, SPAN_BOLDANNOUNCE("CLIENT-SECURITY: [message]
Please correct this.
You will now be disconnected.")) disconnection_message(message) if(!immediate) queue_security_kick(5 SECONDS) queue_security_kick() /** * time is in minutes * tell_user is implicit */ /client/proc/security_ban(message, time = -1) var/time_displayed = time == -1? "(forever)" : "for [DisplayTimeText(time MINUTES)]" log_access("client security: banning [key_name(src)] [time == -1? "" : "for [time_displayed]"] | [message]") message_admins("client security: banning [key_name(src)] [time == -1? "" : "for [time_displayed]"] | [message]") add_system_note("client-security", "banned for [time_displayed]: [message]") SSbans.t_place_system_ban( time == -1 ? BANTYPE_PERMA : BANTYPE_TEMP, null, time, "client-security: [message]", banckey = ckey, banip = address, bancid = computer_id, ) disconnection_message("Client Security - Autoban: [message]") qdel(src) /** * queues a security kick * ensures the client's around for atleast delay or after current proc chain is over */ /client/proc/queue_security_kick(delay = 0) var/left = isnull(queued_security_kick)? null : timeleft(queued_security_kick) if(isnull(left) || left < delay) deltimer(queued_security_kick) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), delay, TIMER_STOPPABLE) /** * shows a disconnection message that's hopefully resistant to fast-disconnects */ /client/proc/disconnection_message(msg) var/content = {" Disconnection You have been intentionally disconnected by the server.

[msg]


If you feel this is in error, contact an administrator out of game (e.g. on Discord). "} src << browse(content, "window=droppedFromServer;size=480x360;can_close=1") window_flash(src)