diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index fd989987ba0..c6b0edcff49 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -27,8 +27,8 @@ var/allow_admin_rev = 1 // allows admin revives var/vote_delay = 6000 // minimum time between voting sessions (deciseconds, 10 minute default) var/vote_period = 600 // length of voting period (deciseconds, default 1 minute) - var/vote_autotransfer_initial = 108000 // Length of time before the first autotransfer vote is called - var/vote_autotransfer_interval = 3600 // length of time before next sequential autotransfer vote + var/vote_autotransfer_initial = 72000 // Length of time before the first autotransfer vote is called + var/vote_autotransfer_interval = 18000 // length of time before next sequential autotransfer vote var/vote_no_default = 0 // vote does not default to nochange/norestart (tbi) var/vote_no_dead = 0 // dead people can't vote (tbi) // var/enable_authentication = 0 // goon authentication diff --git a/code/game/jobs/jobs.dm b/code/game/jobs/jobs.dm index 744ae823422..ccbef586672 100644 --- a/code/game/jobs/jobs.dm +++ b/code/game/jobs/jobs.dm @@ -122,7 +122,7 @@ var/list/nonhuman_positions = list( ) var/list/whitelisted_positions = list( - "Blueshield", + "Blueshield" ) /proc/guest_jobbans(var/job) diff --git a/code/game/jobs/whitelist.dm b/code/game/jobs/whitelist.dm index f28de56dc41..c7c037ddd5d 100644 --- a/code/game/jobs/whitelist.dm +++ b/code/game/jobs/whitelist.dm @@ -5,11 +5,39 @@ var/list/whitelist = list() /proc/load_whitelist() whitelist = file2list(WHITELISTFILE) if(!whitelist.len) whitelist = null - -/proc/check_whitelist(mob/M /*, var/rank*/) +/* +/proc/check_whitelist(mob/M, var/rank) if(!whitelist) return 0 return ("[M.ckey]" in whitelist) +*/ + +/proc/is_job_whitelisted(mob/M, var/rank) + if (guest_jobbans(rank)) + if(!config.usewhitelist) + return 1 + if(check_rights(R_ADMIN, 0)) + return 1 + if(!dbcon.IsConnected()) + usr << "\red Unable to connect to whitelist database. Please try again later.
" + return 0 + else + var/DBQuery/query = dbcon.NewQuery("SELECT job FROM whitelist WHERE ckey='[M.ckey]'") + query.Execute() + + + while(query.NextRow()) + var/joblist = query.item[1] + if(joblist!="*") + var/allowed_jobs = text2list(joblist,",") + if(rank in allowed_jobs) return 1 + else return 1 + return 0 + else + return 1 + + + var/list/alien_whitelist = list() @@ -30,13 +58,28 @@ proc/load_alienwhitelist() return 1 if(!alien_whitelist) return 0 + if(!dbcon.IsConnected()) + usr << "\red Unable to connect to whitelist database. Please try again later.
" + return 0 + else + var/DBQuery/query = dbcon.NewQuery("SELECT species FROM whitelist WHERE ckey='[M.ckey]'") + query.Execute() + + while(query.NextRow()) + var/specieslist = query.item[1] + if(specieslist!="*") + var/allowed_species = text2list(specieslist,",") + if(species in allowed_species) return 1 + else return 1 + return 0 +/* if(M && species) for (var/s in alien_whitelist) if(findtext(s,"[M.ckey] - [species]")) return 1 if(findtext(s,"[M.ckey] - All")) return 1 +*/ - return 0 #undef WHITELISTFILE \ No newline at end of file diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm index 3779a6e9fec..dff676bfbf8 100644 --- a/code/modules/admin/banjob.dm +++ b/code/modules/admin/banjob.dm @@ -19,10 +19,10 @@ var/jobban_keylist[0] //to store the keys & ranks //if(_jobban_isbanned(M, rank)) return "Reason Unspecified" //for old jobban if (guest_jobbans(rank)) - // if(config.guest_jobban && IsGuestKey(M.key)) - // return "Guest Job-ban" - if(config.usewhitelist && !check_whitelist(M)) - return "Karma Job" + if(config.guest_jobban && IsGuestKey(M.key)) + return "Guest Job-ban" +// if(config.usewhitelist && !check_whitelist(M)) +// return "Karma Job" for (var/s in jobban_keylist) if( findtext(s,"[M.ckey] - [rank]") == 1 ) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index e755856f20a..5ca753adace 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -413,6 +413,9 @@ datum/preferences HTML += "" var/rank = job.title lastJob = job + if(!is_job_whitelisted(user, rank)) + HTML += "[rank] \[KARMA]" + continue if(jobban_isbanned(user, rank)) HTML += "[rank] \[BANNED]" continue diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 5181c5c22a3..dd6ecc85ca4 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -135,7 +135,7 @@ usr << "\red The round is either not ready, or has already finished..." return - if(client.prefs.species != "Human") + if(client.prefs.species in whitelisted_species) if(!is_alien_whitelisted(src, client.prefs.species) && config.usealienwhitelist) src << alert("You are currently not whitelisted to play [client.prefs.species].") @@ -152,9 +152,10 @@ usr << "\blue There is an administrative lock on entering the game!" return - if(!is_alien_whitelisted(src, client.prefs.species) && config.usealienwhitelist) - src << alert("You are currently not whitelisted to play [client.prefs.species].") - return 0 + if(client.prefs.species in whitelisted_species) + if(!is_alien_whitelisted(src, client.prefs.species) && config.usealienwhitelist) + src << alert("You are currently not whitelisted to play [client.prefs.species].") + return 0 AttemptLateSpawn(href_list["SelectedJob"]) return @@ -263,6 +264,7 @@ if(!job) return 0 if((job.current_positions >= job.total_positions) && job.total_positions != -1) return 0 if(jobban_isbanned(src,rank)) return 0 + if(!is_job_whitelisted(src, rank)) return 0 if(!job.player_old_enough(src.client)) return 0 return 1