From dde4aa05bd1b1df9178ef1961001dec4c969d776 Mon Sep 17 00:00:00 2001 From: Chompstation Bot Date: Wed, 28 Apr 2021 16:30:43 +0000 Subject: [PATCH 1/3] [MIRROR] Sanitizes languages, ears/wings/tail prefs on login --- .../preference_setup/general/02_language.dm | 18 +++++ .../preference_setup/general/03_body.dm | 77 +++++++++++-------- .../preference_setup/preference_setup.dm | 1 + code/modules/client/preferences.dm | 4 +- code/modules/client/preferences_savefile.dm | 4 +- 5 files changed, 68 insertions(+), 36 deletions(-) diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm index cd4a8b0341..9898d156fa 100644 --- a/code/modules/client/preference_setup/general/02_language.dm +++ b/code/modules/client/preference_setup/general/02_language.dm @@ -23,8 +23,26 @@ if(!islist(pref.alternate_languages)) pref.alternate_languages = list() if(pref.species) var/datum/species/S = GLOB.all_species[pref.species] +<<<<<<< HEAD if(S && pref.alternate_languages.len > pref.numlanguage()) //CHOMPEdit pref.alternate_languages.len = pref.numlanguage() // Truncate to allowed length CHOMPEdit +||||||| parent of 0c51187d69... Merge pull request #10223 from VOREStation/upstream-merge-8030 + if(S && pref.alternate_languages.len > S.num_alternate_languages) + pref.alternate_languages.len = S.num_alternate_languages // Truncate to allowed length +======= + if(!istype(S)) + return + + if(pref.alternate_languages.len > S.num_alternate_languages) + pref.alternate_languages.len = S.num_alternate_languages // Truncate to allowed length + + // Sanitize illegal languages + for(var/language in pref.alternate_languages) + var/datum/language/L = GLOB.all_languages[language] + if((L.flags & RESTRICTED) || (!(language in S.secondary_langs) && !is_lang_whitelisted(pref.client, L))) + pref.alternate_languages -= language + +>>>>>>> 0c51187d69... Merge pull request #10223 from VOREStation/upstream-merge-8030 if(isnull(pref.language_prefixes) || !pref.language_prefixes.len) pref.language_prefixes = config.language_prefixes.Copy() for(var/prefix in pref.language_prefixes) diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 2ebdb98719..6230efe6eb 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -244,21 +244,12 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.r_wing3 = sanitize_integer(pref.r_wing3, 0, 255, initial(pref.r_wing3)) pref.g_wing3 = sanitize_integer(pref.g_wing3, 0, 255, initial(pref.g_wing3)) pref.b_wing3 = sanitize_integer(pref.b_wing3, 0, 255, initial(pref.b_wing3)) - if(pref.ear_style) - pref.ear_style = sanitize_inlist(pref.ear_style, ear_styles_list, initial(pref.ear_style)) - var/datum/sprite_accessory/temp_ear_style = ear_styles_list[pref.ear_style] - if(temp_ear_style.apply_restrictions && (!(pref.species in temp_ear_style.species_allowed))) - pref.ear_style = initial(pref.ear_style) - if(pref.tail_style) - pref.tail_style = sanitize_inlist(pref.tail_style, tail_styles_list, initial(pref.tail_style)) - var/datum/sprite_accessory/temp_tail_style = tail_styles_list[pref.tail_style] - if(temp_tail_style.apply_restrictions && (!(pref.species in temp_tail_style.species_allowed))) - pref.tail_style = initial(pref.tail_style) - if(pref.wing_style) - pref.wing_style = sanitize_inlist(pref.wing_style, wing_styles_list, initial(pref.wing_style)) - var/datum/sprite_accessory/temp_wing_style = wing_styles_list[pref.wing_style] - if(temp_wing_style.apply_restrictions && (!(pref.species in temp_wing_style.species_allowed))) - pref.wing_style = initial(pref.wing_style) + if(!(pref.ear_style in get_ear_styles())) + pref.ear_style = initial(pref.ear_style) + if(!(pref.wing_style in get_wing_styles())) + pref.wing_style = initial(pref.wing_style) + if(!(pref.tail_style in get_tail_styles())) + pref.tail_style = initial(pref.tail_style) // Moved from /datum/preferences/proc/copy_to() /datum/category_item/player_setup_item/general/body/copy_to_mob(var/mob/living/carbon/human/character) @@ -705,7 +696,15 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O reset_limbs() // Safety for species with incompatible manufacturers; easier than trying to do it case by case. pref.body_markings.Cut() // Basically same as above. - + + // Sanitize ear/wing/tail styles + if(!(pref.ear_style in get_ear_styles())) + pref.ear_style = initial(pref.ear_style) + if(!(pref.wing_style in get_wing_styles())) + pref.wing_style = initial(pref.wing_style) + if(!(pref.tail_style in get_tail_styles())) + pref.tail_style = initial(pref.tail_style) + var/min_age = get_min_age() var/max_age = get_max_age() pref.age = max(min(pref.age, max_age), min_age) @@ -1172,11 +1171,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O else if(href_list["ear_style"]) // Construct the list of names allowed for this user. - var/list/pretty_ear_styles = list("Normal" = null) - for(var/path in ear_styles_list) - var/datum/sprite_accessory/ears/instance = ear_styles_list[path] - if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, user)) //VOREStation Edit - pretty_ear_styles[instance.name] = path + var/list/pretty_ear_styles = get_ear_styles() // Present choice to user var/new_ear_style = input(user, "Pick ears", "Character Preference", pref.ear_style) as null|anything in pretty_ear_styles @@ -1214,11 +1209,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O else if(href_list["tail_style"]) // Construct the list of names allowed for this user. - var/list/pretty_tail_styles = list("Normal" = null) - for(var/path in tail_styles_list) - var/datum/sprite_accessory/tail/instance = tail_styles_list[path] - if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, user)) //VOREStation Edit - pretty_tail_styles[instance.name] = path + var/list/pretty_tail_styles = get_tail_styles() // Present choice to user var/new_tail_style = input(user, "Pick tails", "Character Preference", pref.tail_style) as null|anything in pretty_tail_styles @@ -1256,11 +1247,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O else if(href_list["wing_style"]) // Construct the list of names allowed for this user. - var/list/pretty_wing_styles = list("Normal" = null) - for(var/path in wing_styles_list) - var/datum/sprite_accessory/wing/instance = wing_styles_list[path] - if(((!instance.ckeys_allowed) || (usr.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, user)) //VOREStation Edit - pretty_wing_styles[instance.name] = path + var/list/pretty_wing_styles = get_wing_styles() // Present choice to user var/new_wing_style = input(user, "Pick wings", "Character Preference", pref.wing_style) as null|anything in pretty_wing_styles @@ -1389,4 +1376,32 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O dat += "" user << browse(dat, "window=species;size=700x400") +<<<<<<< HEAD +||||||| parent of 0c51187d69... Merge pull request #10223 from VOREStation/upstream-merge-8030 +======= + +/datum/category_item/player_setup_item/general/body/proc/get_tail_styles() + var/list/pretty_tail_styles = list("Normal" = null) + for(var/path in tail_styles_list) + var/datum/sprite_accessory/tail/instance = tail_styles_list[path] + if(((!instance.ckeys_allowed) || (pref.client.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, pref.client)) //VOREStation Edit + pretty_tail_styles[instance.name] = path + return pretty_tail_styles + +/datum/category_item/player_setup_item/general/body/proc/get_ear_styles() + var/list/pretty_ear_styles = list("Normal" = null) + for(var/path in ear_styles_list) + var/datum/sprite_accessory/ears/instance = ear_styles_list[path] + if(((!instance.ckeys_allowed) || (pref.client.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, pref.client)) //VOREStation Edit + pretty_ear_styles[instance.name] = path + return pretty_ear_styles + +/datum/category_item/player_setup_item/general/body/proc/get_wing_styles() + var/list/pretty_wing_styles = list("Normal" = null) + for(var/path in wing_styles_list) + var/datum/sprite_accessory/wing/instance = wing_styles_list[path] + if(((!instance.ckeys_allowed) || (pref.client.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, pref.client)) //VOREStation Edit + pretty_wing_styles[instance.name] = path + return pretty_wing_styles +>>>>>>> 0c51187d69... Merge pull request #10223 from VOREStation/upstream-merge-8030 diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm index aaec0a0840..f607b9945f 100644 --- a/code/modules/client/preference_setup/preference_setup.dm +++ b/code/modules/client/preference_setup/preference_setup.dm @@ -129,6 +129,7 @@ for(var/datum/category_item/player_setup_item/PI in items) PI.load_character(S) + /datum/category_group/player_setup_category/proc/save_character(var/savefile/S) // Sanitize all data, then save it for(var/datum/category_item/player_setup_item/PI in items) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 179245a44f..d1918ccba2 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -176,8 +176,8 @@ datum/preferences if(!IsGuestKey(C.key)) load_path(C.ckey) if(load_preferences()) - if(load_character()) - return + load_character() + /datum/preferences/Destroy() . = ..() diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index cb25e73396..cb2b3cf0b3 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -82,10 +82,8 @@ player_setup.load_character(S) S.cd = "/character[default_slot]" player_setup.save_character(S) - sanitize_preferences() - player_setup.load_character(S) - clear_character_previews() // Recalculate them on next show + clear_character_previews() // VOREStation Edit return 1 /datum/preferences/proc/save_character() From 1e0f3485ac9ddbd2b2392c20170e2ab20eaea7a8 Mon Sep 17 00:00:00 2001 From: Nadyr <41974248+Darlantanis@users.noreply.github.com> Date: Fri, 30 Apr 2021 01:11:33 -0400 Subject: [PATCH 2/3] Update 02_language.dm --- .../client/preference_setup/general/02_language.dm | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm index 9898d156fa..1db1064229 100644 --- a/code/modules/client/preference_setup/general/02_language.dm +++ b/code/modules/client/preference_setup/general/02_language.dm @@ -23,18 +23,11 @@ if(!islist(pref.alternate_languages)) pref.alternate_languages = list() if(pref.species) var/datum/species/S = GLOB.all_species[pref.species] -<<<<<<< HEAD - if(S && pref.alternate_languages.len > pref.numlanguage()) //CHOMPEdit - pref.alternate_languages.len = pref.numlanguage() // Truncate to allowed length CHOMPEdit -||||||| parent of 0c51187d69... Merge pull request #10223 from VOREStation/upstream-merge-8030 - if(S && pref.alternate_languages.len > S.num_alternate_languages) - pref.alternate_languages.len = S.num_alternate_languages // Truncate to allowed length -======= if(!istype(S)) return - if(pref.alternate_languages.len > S.num_alternate_languages) - pref.alternate_languages.len = S.num_alternate_languages // Truncate to allowed length + if(pref.alternate_languages.len > pref.numlanguage()) //CHOMPEdit + pref.alternate_languages.len = pref.numlanguage() // Truncate to allowed length CHOMPEdit // Sanitize illegal languages for(var/language in pref.alternate_languages) @@ -42,7 +35,6 @@ if((L.flags & RESTRICTED) || (!(language in S.secondary_langs) && !is_lang_whitelisted(pref.client, L))) pref.alternate_languages -= language ->>>>>>> 0c51187d69... Merge pull request #10223 from VOREStation/upstream-merge-8030 if(isnull(pref.language_prefixes) || !pref.language_prefixes.len) pref.language_prefixes = config.language_prefixes.Copy() for(var/prefix in pref.language_prefixes) From 0ac27ecbe3b61d0070c2dc9857ab6d476e704acb Mon Sep 17 00:00:00 2001 From: Nadyr <41974248+Darlantanis@users.noreply.github.com> Date: Fri, 30 Apr 2021 01:14:57 -0400 Subject: [PATCH 3/3] Update 03_body.dm --- code/modules/client/preference_setup/general/03_body.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 6230efe6eb..c3349721a6 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -1376,10 +1376,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O dat += "" user << browse(dat, "window=species;size=700x400") -<<<<<<< HEAD - -||||||| parent of 0c51187d69... Merge pull request #10223 from VOREStation/upstream-merge-8030 -======= /datum/category_item/player_setup_item/general/body/proc/get_tail_styles() var/list/pretty_tail_styles = list("Normal" = null) @@ -1404,4 +1400,3 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(((!instance.ckeys_allowed) || (pref.client.ckey in instance.ckeys_allowed)) && ((!instance.apply_restrictions) || (pref.species in instance.species_allowed)) || check_rights(R_ADMIN | R_EVENT | R_FUN, 0, pref.client)) //VOREStation Edit pretty_wing_styles[instance.name] = path return pretty_wing_styles ->>>>>>> 0c51187d69... Merge pull request #10223 from VOREStation/upstream-merge-8030