diff --git a/code/modules/admin/banappearance.dm b/code/modules/admin/banappearance.dm index 1fabfcc5b03..2a89cc41ac9 100644 --- a/code/modules/admin/banappearance.dm +++ b/code/modules/admin/banappearance.dm @@ -1,61 +1,13 @@ -//ban people from using custom names and appearances. that'll show 'em. - -var/appearanceban_runonce //Updates legacy bans with new info -var/appearance_keylist[0] //to store the keys - -/proc/appearance_fullban(mob/M, reason) - if (!M || !M.key) return - appearance_keylist.Add(text("[M.ckey] ## [reason]")) - appearance_savebanfile() - -/proc/appearance_client_fullban(ckey) - if (!ckey) return - appearance_keylist.Add(text("[ckey]")) - appearance_savebanfile() - -//returns a reason if M is banned, returns 0 otherwise -/proc/appearance_isbanned(mob/M) - if(M) - for(var/s in appearance_keylist) - if(findtext(s, "[M.ckey]") == 1) - var/startpos = findtext(s, "## ") + 3 - if(startpos && startpos < length(s)) - var/text = copytext(s, startpos, 0) - if(text) - return text - return "Reason Unspecified" - return 0 - -/* -DEBUG -/mob/verb/list_all_appearances() - set name = "list all appearances" - - for(var/s in appearance_keylist) - world << s - -/mob/verb/reload_appearances() - set name = "reload appearances" - - appearance_loadbanfile() -*/ +//Code to update legacy appearance bans to jobbans /proc/appearance_loadbanfile() if(config.ban_legacy_system) - var/savefile/S=new("data/appearance_full.ban") - S["keys[0]"] >> appearance_keylist - log_admin("Loading appearance_rank") - S["runonce"] >> appearanceban_runonce - - if (!length(appearance_keylist)) - appearance_keylist=list() - log_admin("appearance_keylist was empty") + return else if(!establish_db_connection()) - world.log << "Database connection failed. Reverting to the legacy ban system." - diary << "Database connection failed. Reverting to the legacy ban system." + world.log << "Database connection failed." + diary << "Database connection failed." config.ban_legacy_system = 1 - appearance_loadbanfile() return //appearance bans @@ -63,48 +15,20 @@ DEBUG query.Execute() while(query.NextRow()) - var/ckey = query.item[1] + var/ckeyb = query.item[1] - appearance_keylist.Add("[ckey]") + var/datum/admins/db = new() + db.DB_ban_unban(ckeyb, BANTYPE_APPEARANCE) -/proc/appearance_savebanfile() - var/savefile/S=new("data/appearance_full.ban") - S["keys[0]"] << appearance_keylist + var/mob/playermob + var/exist = 0 + for(var/mob/M in player_list) + if(M.ckey == ckeyb) + playermob = M + exist = 1 + break -/proc/appearance_unban(mob/M) - appearance_remove("[M.ckey]") - appearance_savebanfile() + if(!exist) + playermob.ckey = ckeyb - -/proc/appearance_updatelegacybans() - if(!appearanceban_runonce) - log_admin("Updating appearancefile!") - // Updates bans.. Or fixes them. Either way. - for(var/T in appearance_keylist) - if(!T) - continue - appearanceban_runonce++ //don't run this update again - - -/proc/appearance_remove(X) - for (var/i = 1; i <= length(appearance_keylist); i++) - if( findtext(appearance_keylist[i], "[X]") ) - appearance_keylist.Remove(appearance_keylist[i]) - appearance_savebanfile() - return 1 - return 0 - -/* -/proc/DB_ban_isappearancebanned(var/playerckey) - establish_db_connection() - if(!dbcon.IsConnected()) - return - - var/sqlplayerckey = sanitizeSQL(ckey(playerckey)) - - var/DBQuery/query = dbcon.NewQuery("SELECT id FROM [format_table_name("ban")] WHERE CKEY = '[sqlplayerckey]' AND ((bantype = 'APPEARANCE_PERMABAN') OR (bantype = 'APPEARANCE_TEMPBAN' AND expiration_time > Now())) AND unbanned != 1") - query.Execute() - while(query.NextRow()) - return 1 - return 0 -*/ \ No newline at end of file + db.DB_ban_record(BANTYPE_JOB_PERMA, playermob, -1, "Legacy", "Appearance") diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 220b1b4c9e9..26b130b6751 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -346,7 +346,7 @@ for(var/datum/mind/N in ticker.mode.syndicates) var/mob/M = N.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" else @@ -375,20 +375,20 @@ dat += "[N.name]([N.key])Head Revolutionary body destroyed!" dat += "PM" else - dat += "[M.real_name] (Leader)[M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name] (Leader)[M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" for(var/datum/mind/N in ticker.mode.revolutionaries) var/mob/M = N.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "" for(var/datum/mind/N in ticker.mode.get_living_heads()) var/mob/M = N.current if(M) - dat += "" + dat += "" dat += "" dat += "" var/turf/mob_loc = get_turf(M) @@ -406,13 +406,13 @@ dat += "" dat += "" else - dat += "" + dat += "" dat += "" dat += "" for(var/datum/mind/N in G.gangsters) var/mob/M = N.current if(M) - dat += "" + dat += "" dat += "" dat += "
Target(s)Location
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]
[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]PMFLW
[N.name]([N.key])Gang Boss body destroyed!PM
[M.real_name] (Boss)[M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]
[M.real_name] (Boss)[M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]PMFLW
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]
[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]PM
" @@ -421,7 +421,7 @@ for(var/datum/mind/changeling in ticker.mode.changelings) var/mob/M = changeling.current if(M) - dat += "[M.mind.changeling.changelingID] as [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.mind.changeling.changelingID] as [M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "Show Objective" @@ -435,7 +435,7 @@ for(var/datum/mind/wizard in ticker.mode.wizards) var/mob/M = wizard.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "Show Objective" @@ -449,7 +449,7 @@ for(var/datum/mind/apprentice in ticker.mode.apprentices) var/mob/M = apprentice.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "Show Objective" @@ -463,7 +463,7 @@ for(var/datum/mind/N in ticker.mode.cult) var/mob/M = N.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "" @@ -473,7 +473,7 @@ for(var/datum/mind/N in ticker.mode.red_deities) var/mob/M = N.current if(M) - dat += "Red Deity: [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "Red Deity: [M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "" @@ -483,7 +483,7 @@ for(var/datum/mind/N in ticker.mode.blue_deities) var/mob/M = N.current if(M) - dat += "Blue Deity: [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "Blue Deity: [M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "" @@ -493,7 +493,7 @@ for(var/datum/mind/N in ticker.mode.red_deity_prophets) var/mob/M = N.current if(M) - dat += "Red Deity Prophet: [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "Red Deity Prophet: [M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "" @@ -503,7 +503,7 @@ for(var/datum/mind/N in ticker.mode.blue_deity_prophets) var/mob/M = N.current if(M) - dat += "Blue Deity Prophet: [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "Blue Deity Prophet: [M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "" @@ -513,7 +513,7 @@ for(var/datum/mind/N in ticker.mode.red_deity_followers) var/mob/M = N.current if(M) - dat += "Red Deity Followers: [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "Red Deity Followers: [M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "" @@ -523,7 +523,7 @@ for(var/datum/mind/N in ticker.mode.blue_deity_followers) var/mob/M = N.current if(M) - dat += "Blue Deity Followers: [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "Blue Deity Followers: [M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "" @@ -533,7 +533,7 @@ for(var/datum/mind/traitor in ticker.mode.traitors) var/mob/M = traitor.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "Show Objective" @@ -547,7 +547,7 @@ for(var/datum/mind/N in ticker.mode.shadows) var/mob/M = N.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" else @@ -560,7 +560,7 @@ for(var/datum/mind/N in ticker.mode.thralls) var/mob/M = N.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "" @@ -570,7 +570,7 @@ for(var/datum/mind/abductor in ticker.mode.abductors) var/mob/M = abductor.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "Show Objective" @@ -583,7 +583,7 @@ for(var/datum/mind/abductee in E.abductee_minds) var/mob/M = abductee.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" dat += "Show Objective" @@ -598,7 +598,7 @@ var/datum/mind/devil = X var/mob/M = devil.current if(M) - dat += "[M.real_name] : [devil.devilinfo.truename][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name] : [devil.devilinfo.truename][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "Show Objective" dat += "Show all devil info" @@ -613,7 +613,7 @@ var/datum/mind/sintouched = X var/mob/M = sintouched.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "Show Objective" else @@ -635,7 +635,7 @@ for(var/datum/mind/blob in blob_minds) var/mob/M = blob.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" else @@ -651,7 +651,7 @@ for(var/datum/mind/eek in mode.ape_infectees) var/mob/M = eek.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[M.real_name][M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" dat += "FLW" else diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 4b0278dac25..b3062660abf 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -517,15 +517,16 @@ usr << "This mob has no ckey" return - var/banreason = appearance_isbanned(M) - if(banreason) - switch(alert("Reason: '[banreason]' Remove appearance ban?","Please Confirm","Yes","No")) + + if(jobban_isbanned(M, "appearance")) + switch(alert("Remove appearance ban?","Please Confirm","Yes","No")) if("Yes") ban_unban_log_save("[key_name(usr)] removed [key_name(M)]'s appearance ban") log_admin("[key_name(usr)] removed [key_name(M)]'s appearance ban") feedback_inc("ban_appearance_unban", 1) - DB_ban_unban(M.ckey, BANTYPE_APPEARANCE) - appearance_unban(M) + DB_ban_unban(M.ckey, BANTYPE_ANY_JOB, "appearance") + if(M.client) + jobban_buildcache(M.client) message_admins("[key_name_admin(usr)] removed [key_name_admin(M)]'s appearance ban") M << "[usr.client.ckey] has removed your appearance ban." @@ -537,8 +538,9 @@ ban_unban_log_save("[key_name(usr)] appearance banned [key_name(M)]. reason: [reason]") log_admin("[key_name(usr)] appearance banned [key_name(M)]. \nReason: [reason]") feedback_inc("ban_appearance",1) - DB_ban_record(BANTYPE_APPEARANCE, M, -1, reason) - appearance_fullban(M, "[reason]; By [usr.ckey] on [time2text(world.realtime)]") + DB_ban_record(BANTYPE_JOB_PERMA, M, -1, reason, "appearance") + if(M.client) + jobban_buildcache(M.client) add_note(M.ckey, "Appearance banned - [reason]", null, usr.ckey, 0) message_admins("[key_name_admin(usr)] appearance banned [key_name_admin(M)]") M << "You have been appearance banned by [usr.client.ckey]." @@ -982,7 +984,7 @@ msg += ", [job]" add_note(M.ckey, "Banned from [msg] - [reason]", null, usr.ckey, 0) message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes") - M << "You have been jobbanned by [usr.client.ckey] from: [msg]." + M << "You have been [(msg == "ooc") ? "banned" : "jobbanned"] by [usr.client.ckey] from: [msg]." M << "The reason is: [reason]" M << "This jobban will be lifted in [mins] minutes." href_list["jobban2"] = 1 // lets it fall through and refresh @@ -1005,7 +1007,7 @@ msg += ", [job]" add_note(M.ckey, "Banned from [msg] - [reason]", null, usr.ckey, 0) message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg]") - M << "You have been jobbanned by [usr.client.ckey] from: [msg]." + M << "You have been [(msg == "ooc") ? "banned" : "jobbanned"] by [usr.client.ckey] from: [msg]." M << "The reason is: [reason]" M << "Jobban can be lifted only upon request." href_list["jobban2"] = 1 // lets it fall through and refresh @@ -1608,7 +1610,7 @@ else if(href_list["adminchecklaws"]) output_ai_laws() - + else if(href_list["admincheckdevilinfo"]) output_devil_info() diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 22a6805431c..8cea4d56f7c 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -153,7 +153,7 @@ var/list/preferences_datums = list() dat += "Set Occupation Preferences
" dat += "

Identity

" dat += "
" - if(appearance_isbanned(user)) + if(jobban_isbanned(user, "appearance")) dat += "You are banned from using custom names and appearances. You can continue to adjust your characters, but you will be randomised once you join the game.
" dat += "Random Name " dat += "Always Random Name: [be_random_name ? "Yes" : "No"]
" diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 2861e2e41aa..cf11fb4107c 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -407,7 +407,7 @@ var/mob/living/carbon/human/new_character = new(loc) - if(config.force_random_names || appearance_isbanned(src)) + if(config.force_random_names || jobban_isbanned(src, "appearance")) client.prefs.random_character() client.prefs.real_name = client.prefs.pref_species.random_name(gender,1) client.prefs.copy_to(new_character)