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 += "| Target(s) | | Location |
"
for(var/datum/mind/N in ticker.mode.get_living_heads())
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 | "
var/turf/mob_loc = get_turf(M)
@@ -406,13 +406,13 @@
dat += "
| [N.name]([N.key])Gang Boss body destroyed! | "
dat += "PM |
"
else
- dat += "| [M.real_name] (Boss)[M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""] | "
+ dat += "
| [M.real_name] (Boss)[M.client ? "" : " (No Client)"][M.stat == 2 ? " (DEAD)" : ""] | "
dat += "PM | "
dat += "FLW |
"
for(var/datum/mind/N in G.gangsters)
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 += "
"
@@ -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)
|