diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index dd1ca112e3d..d1363c55f80 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -45,7 +45,6 @@ var/global/floorIsLava = 0
body += "Mob type = [M.type]
"
body += "Kick | "
- body += "Warn | "
body += "Ban | "
body += "Jobban | "
body += "Identity Ban | "
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 384b2171c29..c13e1ac79d4 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -395,48 +395,6 @@ var/list/admin_verbs_hideable = list(
message_admins("[key_name_admin(usr)] has turned stealth mode [holder.fakekey ? "ON" : "OFF"]", 1)
feedback_add_details("admin_verb","SM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-#define MAX_WARNS 3
-#define AUTOBANTIME 10
-
-/client/proc/warn(warned_ckey)
- if(!check_rights(R_ADMIN)) return
-
- if(!warned_ckey || !istext(warned_ckey)) return
- if(warned_ckey in admin_datums)
- usr << "Error: warn(): You can't warn admins."
- return
-
- var/datum/preferences/D
- var/client/C = directory[warned_ckey]
- if(C) D = C.prefs
- else D = preferences_datums[warned_ckey]
-
- if(!D)
- src << "Error: warn(): No such ckey found."
- return
-
- if(++D.warns >= MAX_WARNS) //uh ohhhh...you'reee iiiiin trouuuubble O:)
- ban_unban_log_save("[ckey] warned [warned_ckey], resulting in a [AUTOBANTIME] minute autoban.")
- if(C)
- message_admins("[key_name_admin(src)] has warned [key_name_admin(C)] resulting in a [AUTOBANTIME] minute ban.")
- C << "You have been autobanned due to a warning by [ckey].
This is a temporary ban, it will be removed in [AUTOBANTIME] minutes."
- del(C)
- else
- message_admins("[key_name_admin(src)] has warned [warned_ckey] resulting in a [AUTOBANTIME] minute ban.")
- AddBan(warned_ckey, D.last_id, "Autobanning due to too many formal warnings", ckey, 1, AUTOBANTIME)
- feedback_inc("ban_warn",1)
- else
- if(C)
- C << "You have been formally warned by an administrator.
Further warnings will result in an autoban."
- message_admins("[key_name_admin(src)] has warned [key_name_admin(C)]. They have [MAX_WARNS-D.warns] strikes remaining.")
- else
- message_admins("[key_name_admin(src)] has warned [warned_ckey] (DC). They have [MAX_WARNS-D.warns] strikes remaining.")
-
- feedback_add_details("admin_verb","WARN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-
-#undef MAX_WARNS
-#undef AUTOBANTIME
-
/client/proc/drop_bomb()
set category = "Special Verbs"
set name = "Drop Bomb"
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 8335281cad1..e0375d13081 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -249,9 +249,6 @@
alert(usr, "This ban has already been lifted / does not exist.", "Error", "Ok")
unbanpanel()
- else if(href_list["warn"])
- usr.client.warn(href_list["warn"])
-
else if(href_list["unbane"])
if(!check_rights(R_BAN)) return
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index c7c038e13f9..392768a0f8a 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -27,7 +27,6 @@ datum/preferences
var/max_save_slots = 3
//non-preference stuff
- var/warns = 0
var/muted = 0
var/last_ip
var/last_id