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("") + var/r = t + if( findtext(r,"##") ) + r = copytext( r, 1, findtext(r,"##") )//removes the description + dat += text("") dat += "
[t]
[t] (unban)
" 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