diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 2bc1258b51b..e236922d377 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -255,13 +255,17 @@
jobban_unban(M, job)
href_list["jobban2"] = 1
else
- ban_unban_log_save("[key_name(usr)] jobbanned [key_name(M)] from [job]")
+ var/reason = input(usr,"Reason?","reason","griefer") as text|null
+ if(!reason)
+ return
+ ban_unban_log_save("[key_name(usr)] jobbanned [key_name(M)] from [job]. reason: [reason]")
log_admin("[key_name(usr)] banned [key_name(M)] from [job]")
feedback_inc("ban_job",1)
M << "\redYou have been jobbanned by [usr.client.ckey] from [job]."
+ M << "\red The reason is: [reason]"
M << "\red Jooban can be lifted only on demand."
message_admins("\blue [key_name_admin(usr)] banned [key_name_admin(M)] from [job]", 1)
- jobban_fullban(M, job)
+ jobban_fullban(M, job, reason)
href_list["jobban2"] = 1 // lets it fall through and refresh
@@ -1945,10 +1949,14 @@
return
/obj/admins/proc/Jobbans()
+
if ((src.rank in list( "Game Admin", "Game Master" )))
var/dat = "Job Bans!
"
for(var/t in jobban_keylist)
- dat += text("| [t] |
")
+ var/r = t
+ if( findtext(r,"##") )
+ r = copytext( r, 1, findtext(r,"##") )//removes the description
+ dat += text("| [t] (unban) |
")
dat += "
"
usr << browse(dat, "window=ban;size=400x400")
diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm
index 4f37d15adce..d9cdc9be652 100644
--- a/code/modules/admin/banjob.dm
+++ b/code/modules/admin/banjob.dm
@@ -1,10 +1,15 @@
var
- jobban_runonce // Updates legacy bans with new info
+ jobban_runonce // Updates legacy bans with new info
jobban_keylist[0] //to store the keys & ranks
-/proc/jobban_fullban(mob/M, rank)
+/proc/jobban_fullban(mob/M, rank, reason)
if (!M || !M.key || !M.client) return
- jobban_keylist.Add(text("[M.ckey] - [rank]"))
+ jobban_keylist.Add(text("[M.ckey] - [rank] ## [reason]"))
+ jobban_savebanfile()
+
+/proc/jobban_client_fullban(ckey, rank)
+ if (!ckey || !rank) return
+ jobban_keylist.Add(text("[ckey] - [rank]"))
jobban_savebanfile()
/proc/jobban_isbanned(mob/M, rank)
@@ -15,17 +20,41 @@ var
return 1
if(config.usewhitelist && !check_whitelist(M))
return 1
- if (jobban_keylist.Find(text("[M.ckey] - [rank]")))
- return 1
- else
- return 0
+ for (var/s in jobban_keylist)
+ if( findtext(s,"[M.ckey] - [rank]") )
+ return 1
+ return 0
+
+/*
+DEBUG
+/mob/verb/list_all_jobbans()
+ set name = "list all jobbans"
+
+ for(var/s in jobban_keylist)
+ world << s
+
+/mob/verb/reload_jobbans()
+ set name = "reload jobbans"
+
+ jobban_loadbanfile()
+*/
/proc/jobban_loadbanfile()
var/savefile/S=new("data/job_full.ban")
S["keys[0]"] >> jobban_keylist
log_admin("Loading jobban_rank")
S["runonce"] >> jobban_runonce
+
+ /*
+ for(var/i = 1; i <= length(jobban_keylist); i++)
+ if( findtext(jobban_keylist[i],"##") )
+ var/index = findtext(jobban_keylist[i],"##")
+ var/s = jobban_keylist[i]
+ s = copytext( s , 1 , index ) //Removes the reason for the ban from this list
+ jobban_keylist[i] = s
+ world << "DEBUG: index: [index] - s: [s] - jobban_keylist\[[i]\] = [jobban_keylist[i]]"*/
+
if (!length(jobban_keylist))
jobban_keylist=list()
log_admin("jobban_keylist was empty")
@@ -36,7 +65,7 @@ var
S["keys[0]"] << jobban_keylist
/proc/jobban_unban(mob/M, rank)
- jobban_keylist.Remove(text("[M.ckey] - [rank]"))
+ jobban_remove("[M.ckey] - [rank]")
jobban_savebanfile()
@@ -54,8 +83,9 @@ var
/proc/jobban_remove(X)
- if(jobban_keylist.Find(X))
- jobban_keylist.Remove(X)
- jobban_savebanfile()
- return 1
- return 0
+ for (var/i = 1; i <= length(jobban_keylist); i++)
+ if( findtext(jobban_keylist[i], "[X]") )
+ jobban_keylist.Remove(jobban_keylist[i])
+ jobban_savebanfile()
+ return 1
+ return 0
\ No newline at end of file