diff --git a/code/defines/mob/simple_animal/life.dm b/code/defines/mob/simple_animal/life.dm
index 11a8db6b1ef8f..011d975fade4f 100644
--- a/code/defines/mob/simple_animal/life.dm
+++ b/code/defines/mob/simple_animal/life.dm
@@ -39,6 +39,7 @@
var/min_n2 = 0
var/max_n2 = 0
var/unsuitable_atoms_damage = 2 //This damage is taken when atmos doesn't fit all the requirements above.
+
//Cat
/mob/living/simple_animal/cat
@@ -66,8 +67,6 @@
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
- var/turns_since_scan = 0
- var/obj/movement_target
//Corgi
/mob/living/simple_animal/corgi
diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm
index 6982f98e2e2eb..6409834955bc4 100644
--- a/code/modules/admin/NewBan.dm
+++ b/code/modules/admin/NewBan.dm
@@ -115,6 +115,7 @@ var/savefile/Banlist
log_admin("Ban Expired: [key]")
message_admins("Ban Expired: [key]")
else
+ ban_unban_log_save("[key_name_admin(usr)] unbanned [key]")
log_admin("[key_name_admin(usr)] unbanned [key]")
message_admins("[key_name_admin(usr)] unbanned: [key]")
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 8d7be4bbba591..7818e40366dbe 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -103,6 +103,8 @@
return
log_admin("[key_name(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [GetExp(mins)]")
+
+ ban_unban_log_save("[key_name(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [GetExp(mins)]")
message_admins("\blue [key_name_admin(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [GetExp(mins)]", 1)
Banlist.cd = "/base/[banfolder]"
Banlist["reason"] << reason
@@ -162,11 +164,13 @@
return
if (jobban_isbanned(M, job))
log_admin("[key_name(usr)] unbanned [key_name(M)] from [job]")
+ ban_unban_log_save("[key_name(usr)] unjobbanned [key_name(M)] from [job]")
M << "\redYou have been un-jobbanned by [usr.client.ckey] from [job]."
message_admins("\blue [key_name_admin(usr)] unbanned [key_name_admin(M)] from [job]", 1)
jobban_unban(M, job)
href_list["jobban2"] = 1
else
+ ban_unban_log_save("[key_name(usr)] jobbanned [key_name(M)] from [job]")
log_admin("[key_name(usr)] banned [key_name(M)] from [job]")
M << "\redYou have been jobbanned by [usr.client.ckey] from [job]."
M << "\red Jooban can be lifted only on demand."
@@ -182,6 +186,7 @@
if ((M.client && M.client.holder && (M.client.holder.level >= src.level)))
alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null)
return
+ M << "\red You have been kicked from the server"
log_admin("[key_name(usr)] booted [key_name(M)].")
message_admins("\blue [key_name_admin(usr)] booted [key_name_admin(M)].", 1)
//M.client = null
@@ -213,6 +218,7 @@
if(!reason)
return
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins)
+ ban_unban_log_save("[usr.client.ckey] has banned [M.ckey]. - Reason: [reason] - This will be removed in [mins] minutes.")
M << "\redYou have been banned by [usr.client.ckey].\nReason: [reason]."
M << "\red This is a temporary ban, it will be removed in [mins] minutes."
if(config.banappeals)
@@ -235,6 +241,7 @@
M << "\red To try to resolve this matter head to [config.banappeals]"
else
M << "\red No ban appeals URL has been set."
+ ban_unban_log_save("[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.")
log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
message_admins("\blue[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
@@ -311,6 +318,7 @@
M << "\red To try to resolve this matter head to [config.banappeals]"
else
M << "\red No ban appeals URL has been set."
+ ban_unban_log_save("[usr.client.ckey] has jobbanned [M.ckey] from [job]. - Reason: [reason] - This will be removed in [mins] minutes.")
log_admin("[usr.client.ckey] has banned [M.ckey] from [job].\nReason: [reason]\nThis will be removed in [mins] minutes.")
message_admins("\blue[usr.client.ckey] has banned [M.ckey] from [job].\nReason: [reason]\nThis will be removed in [mins] minutes.")
@@ -327,6 +335,7 @@
M << "\red To try to resolve this matter head to [config.banappeals]"
else
M << "\red No ban appeals URL has been set."
+ ban_unban_log_save("[usr.client.ckey] has banned [M.ckey] from [job]. - Reason: [reason] - This is a permanent ban.")
log_admin("[usr.client.ckey] has banned [M.ckey] from [job].\nReason: [reason]\nThis is a permanent ban.")
message_admins("\blue[usr.client.ckey] has banned [M.ckey] from [job].\nReason: [reason]\nThis is a permanent ban.")
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index be7c2b88300a2..1d3967dfa19b7 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -512,6 +512,7 @@
M << "\redYou have been autobanned by [ckey]. This is what we in the biz like to call a \"second warning\"."
M << "\red This is a temporary ban; it will automatically be removed in [AUTOBATIME] minutes."
log_admin("[ckey] warned [M.ckey], resulting in a [AUTOBATIME] minute autoban.")
+ ban_unban_log_save("[ckey] warned [M.ckey], resulting in a [AUTOBATIME] minute autoban.")
message_admins("\blue [ckey] warned [M.ckey], resulting in a [AUTOBATIME] minute autoban.")
del(M.client)
diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm
index b445ac408d44a..bfae7336d98da 100644
--- a/code/modules/admin/banjob.dm
+++ b/code/modules/admin/banjob.dm
@@ -35,12 +35,15 @@ var
var/savefile/S=new("data/job_full.ban")
S["keys[0]"] << jobban_keylist
-
/proc/jobban_unban(mob/M, rank)
jobban_keylist.Remove(text("[M.ckey] - [rank]"))
jobban_savebanfile()
+/proc/ban_unban_log_save(var/formatted_log)
+ text2file(formatted_log,"data/ban_unban_log.txt")
+
+
/proc/jobban_updatelegacybans()
if(!jobban_runonce)
log_admin("Updating jobbanfile!")
diff --git a/code/modules/admin/newbanjob.dm b/code/modules/admin/newbanjob.dm
index cd30de3fd054b..ee55fd8538520 100644
--- a/code/modules/admin/newbanjob.dm
+++ b/code/modules/admin/newbanjob.dm
@@ -177,6 +177,7 @@ var/savefile/Banlistjob
else
log_admin("[key_name_admin(usr)] unjobbanned [key] from [rank]")
message_admins("[key_name_admin(usr)] unjobbanned:[key] from [rank]")
+ ban_unban_log_save("[key_name_admin(usr)] unjobbanned [key] from [rank]")
for (var/A in Banlistjob.dir)
Banlistjob.cd = "/base/[A]"
diff --git a/data/ban_unban_log.txt b/data/ban_unban_log.txt
new file mode 100644
index 0000000000000..e69de29bb2d1d