diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 9cae56645f..a057d3cf41 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -200,3 +200,8 @@ #define G_FEMALE 2 #define G_PLURAL 3 #define G_NEUTER 4 + +#define PREVIEW_PREF_JOB "Job" +#define PREVIEW_PREF_LOADOUT "Loadout" +#define PREVIEW_PREF_NAKED "Naked" +#define PREVIEW_PREF_NAKED_AROUSED "Naked - Aroused" diff --git a/code/__DEFINES/loadout.dm b/code/__DEFINES/loadout.dm index 9f771df663..0b1db1ecc6 100644 --- a/code/__DEFINES/loadout.dm +++ b/code/__DEFINES/loadout.dm @@ -86,15 +86,23 @@ #define LOADOUT_CAN_DESCRIPTION (1<<1) //adding a custom description to items #define LOADOUT_CAN_COLOR_POLYCHROMIC (1<<2) -/* the names of the customization tabs +//the names of the customization tabs #define SETTINGS_TAB 0 -#define GAME_PREFERENCES_TAB 1 -#define APPEARANCE_TAB 2 -#define SPEECH_TAB 3 -#define LOADOUT_TAB 4 -#define CONTENT_PREFERENCES_TAB 5 -#define KEYBINDINGS_TAB 6 -*/ +#define PREFERENCES_TAB 1 +#define KEYBINDINGS_TAB 2 + +//subtabs for the character settings tab +#define GENERAL_CHAR_TAB 0 +#define BACKGROUND_CHAR_TAB 1 +#define APPEARANCE_CHAR_TAB 2 +#define MARKINGS_CHAR_TAB 3 +#define SPEECH_CHAR_TAB 4 +#define LOADOUT_CHAR_TAB 5 + +//subtabs for preferences tab +#define GAME_PREFS_TAB 0 +#define OOC_PREFS_TAB 1 +#define CONTENT_PREFS_TAB 2 //quirks #define QUIRK_POSITIVE "Positive" diff --git a/code/__SANDCODE/DEFINES/DNA.dm b/code/__SANDCODE/DEFINES/DNA.dm deleted file mode 100644 index 93b8b15fd5..0000000000 --- a/code/__SANDCODE/DEFINES/DNA.dm +++ /dev/null @@ -1,4 +0,0 @@ -#define PREVIEW_PREF_JOB "Job" -#define PREVIEW_PREF_LOADOUT "Loadout" -#define PREVIEW_PREF_NAKED "Naked" -#define PREVIEW_PREF_NAKED_AROUSED "Naked - Aroused" diff --git a/code/__SANDCODE/DEFINES/loadout.dm b/code/__SANDCODE/DEFINES/loadout.dm index 3d3a130334..3e87fca927 100644 --- a/code/__SANDCODE/DEFINES/loadout.dm +++ b/code/__SANDCODE/DEFINES/loadout.dm @@ -13,21 +13,3 @@ #define LOADOUT_CATEGORY_WRISTS "Wrists" /// Subcategory for watches #define LOADOUT_SUBCATEGORY_WATCHES "Watches" - -//the names of the customization tabs -#define SETTINGS_TAB 0 -#define PREFERENCES_TAB 1 -#define KEYBINDINGS_TAB 2 - -//subtabs for the character settings tab -#define GENERAL_CHAR_TAB 0 -#define APPEARANCE_CHAR_TAB 1 -#define MARKINGS_CHAR_TAB 2 -#define SPEECH_CHAR_TAB 3 -#define BACKGROUND_CHAR_TAB 4 -#define LOADOUT_CHAR_TAB 5 - -//subtabs for preferences tab -#define GAME_PREFS_TAB 0 -#define OOC_PREFS_TAB 1 -#define CONTENT_PREFS_TAB 2 diff --git a/code/_globalvars/lists/loadout_categories.dm b/code/_globalvars/lists/loadout_categories.dm index cae046c697..8c792642a5 100644 --- a/code/_globalvars/lists/loadout_categories.dm +++ b/code/_globalvars/lists/loadout_categories.dm @@ -1,10 +1,10 @@ GLOBAL_LIST_INIT(loadout_categories, list( - LOADOUT_CATEGORY_ACCESSORY = LOADOUT_SUBCATEGORIES_NONE, LOADOUT_CATEGORY_BACKPACK = list(LOADOUT_SUBCATEGORY_BACKPACK_GENERAL, LOADOUT_SUBCATEGORY_BACKPACK_TOYS), LOADOUT_CATEGORY_NECK = list(LOADOUT_SUBCATEGORY_NECK_GENERAL, LOADOUT_SUBCATEGORY_NECK_TIE, LOADOUT_SUBCATEGORY_NECK_SCARVES), LOADOUT_CATEGORY_MASK = LOADOUT_SUBCATEGORIES_NONE, LOADOUT_CATEGORY_HANDS = LOADOUT_SUBCATEGORIES_NONE, LOADOUT_CATEGORY_UNIFORM = list(LOADOUT_SUBCATEGORY_UNIFORM_GENERAL, LOADOUT_SUBCATEGORY_UNIFORM_JOBS, LOADOUT_SUBCATEGORY_UNIFORM_SUITS, LOADOUT_SUBCATEGORY_UNIFORM_SKIRTS, LOADOUT_SUBCATEGORY_UNIFORM_DRESSES, LOADOUT_SUBCATEGORY_UNIFORM_SWEATERS, LOADOUT_SUBCATEGORY_UNIFORM_PANTS, LOADOUT_SUBCATEGORY_UNIFORM_SHORTS), + LOADOUT_CATEGORY_ACCESSORY = LOADOUT_SUBCATEGORIES_NONE, LOADOUT_CATEGORY_SUIT = list(LOADOUT_SUBCATEGORY_SUIT_GENERAL, LOADOUT_SUBCATEGORY_SUIT_COATS, LOADOUT_SUBCATEGORY_SUIT_JACKETS, LOADOUT_SUBCATEGORY_SUIT_JOBS), LOADOUT_CATEGORY_HEAD = list(LOADOUT_SUBCATEGORY_HEAD_GENERAL, LOADOUT_SUBCATEGORY_HEAD_JOBS), LOADOUT_CATEGORY_SHOES = LOADOUT_SUBCATEGORIES_NONE, diff --git a/code/controllers/subsystem/language.dm b/code/controllers/subsystem/language.dm index a2a5cbdef6..ae0c156a43 100644 --- a/code/controllers/subsystem/language.dm +++ b/code/controllers/subsystem/language.dm @@ -2,7 +2,7 @@ SUBSYSTEM_DEF(language) name = "Language" init_order = INIT_ORDER_LANGUAGE flags = SS_NO_FIRE - var/list/languages_by_name = list() //SKYRAT CHANGE - language bullshit + var/list/languages_by_name = list() //Sandstorm CHANGE - language bullshit /datum/controller/subsystem/language/Initialize(timeofday) for(var/L in subtypesof(/datum/language)) @@ -15,8 +15,8 @@ SUBSYSTEM_DEF(language) var/datum/language/instance = new language GLOB.language_datum_instances[language] = instance - //skyrat change - languages_by_name[initial(language.name)] = new language + //Sandstorm change + languages_by_name[initial(language.name)] = instance // return ..() diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index a04fd9ef4e..bdcb08335a 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -407,7 +407,7 @@ SUBSYSTEM_DEF(ticker) SSjob.EquipRank(N, player.mind.assigned_role, 0) if(CONFIG_GET(flag/roundstart_traits) && ishuman(N.new_character)) SSquirks.AssignQuirks(N.new_character, N.client, TRUE, TRUE, SSjob.GetJob(player.mind.assigned_role), FALSE, N) - //skyrat change + //sandstorm change if(ishuman(N.new_character)) SSlanguage.AssignLanguage(N.new_character, N.client) // diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 8bdfbef2b0..af83e0eee7 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -368,10 +368,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
" dat += "General" + dat += "Background" dat += "Appearance" dat += "Markings" dat += "Speech" - dat += "Background" dat += "Loadout" //If you change the index of this tab, change all the logic regarding tab dat += "
" @@ -379,12 +379,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
" dat += "" dat += "" - dat += "" @@ -429,21 +430,24 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(CONFIG_GET(flag/roundstart_traits)) dat += "

Quirk Setup

" dat += "Configure Quirks
" - dat += "
Current Quirks: [all_quirks.len ? all_quirks.Join(", ") : "None"]
" + dat += "
Current Quirks: [english_list(all_quirks, "None")]
" dat += "

Identity

" - dat += "
" + dat += "" dat += "
Preview:

" - dat += "
" + dat += "
" dat += "[PREVIEW_PREF_JOB]" dat += "[PREVIEW_PREF_LOADOUT]" dat += "[PREVIEW_PREF_NAKED]" + dat += "
" dat += "[PREVIEW_PREF_NAKED_AROUSED]" dat += "
" dat += "
" + dat += "" + dat += "" - dat += "
Hide ckey: [hide_ckey ? "Enabled" : "Disabled"]
" - dat += "
" 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"]
" - dat += "[nameless ? "Default designation" : "Name"]:" + dat += "[nameless ? "Default designation" : "Name"]:
" dat += "[real_name]
" + dat += "Random Name
" dat += "Be nameless: [nameless ? "Yes" : "No"]
" + dat += "Always Random Name:[be_random_name ? "Yes" : "No"]
" dat += "Gender: [gender == MALE ? "Male" : (gender == FEMALE ? "Female" : (gender == PLURAL ? "Non-binary" : "Object"))]
" dat += "Age: [age]
" + dat += "Hide ckey: [hide_ckey ? "Enabled" : "Disabled"]
" + dat += "
" dat += "Special Names:
" var/old_group for(var/custom_name_id in GLOB.preferences_custom_names) @@ -458,68 +462,66 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Custom job preferences:
" dat += "Preferred AI Core Display: [preferred_ai_core_display]
" - dat += "Preferred Security Department: [prefered_security_department]
" + dat += "Preferred Security Department: [prefered_security_department]
" + + dat += "
" + //Character background + if(BACKGROUND_CHAR_TAB) + dat += "" + dat += "
" - //Character Appearance - if(APPEARANCE_CHAR_TAB) - dat += "" - dat += "

Clothing & Equipment

" - /* skyrat change - dat += "Underwear:[underwear]" - if(GLOB.underwear_list[underwear]?.has_color) - dat += "Underwear Color:#[undie_color]Change
" - dat += "Undershirt:[undershirt]" - if(GLOB.undershirt_list[undershirt]?.has_color) - dat += "Undershirt Color:#[shirt_color]Change
" - dat += "Socks:[socks]" - if(GLOB.socks_list[socks]?.has_color) - dat += "Socks Color:#[socks_color]Change
" - */ - dat += "Backpack:[backbag]" - dat += "Jumpsuit:
[jumpsuit_style]
" - if((HAS_FLESH in pref_species.species_traits) || (HAS_BONE in pref_species.species_traits)) - dat += "
Temporal Scarring:
[(persistent_scars) ? "Enabled" : "Disabled"]" - dat += "Clear scar slots
" - dat += "Uplink Location:[uplink_spawn_loc]" + dat += "
" dat += "

Flavor Text

" dat += "Set Examine Text
" if(length(features["flavor_text"]) <= MAX_FLAVOR_PREVIEW_LEN) if(!length(features["flavor_text"])) - dat += "\[...\]
" //skyrat - adds
//come to brazil or brazil comes to you + dat += "\[...\]" else - dat += "[html_encode(features["flavor_text"])]
" //skyrat - adds
and uses html_encode + dat += "[features["flavor_text"]]" else - dat += "[TextPreview(html_encode(features["flavor_text"]))]...
" //skyrat edit, uses html_encode + dat += "[TextPreview(features["flavor_text"])]..." dat += "

Silicon Flavor Text

" dat += "Set Silicon Examine Text
" if(length(features["silicon_flavor_text"]) <= MAX_FLAVOR_PREVIEW_LEN) if(!length(features["silicon_flavor_text"])) - dat += "\[...\]
" + dat += "\[...\]" else - dat += "[features["silicon_flavor_text"]]
" + dat += "[features["silicon_flavor_text"]]" else - dat += "[TextPreview(features["silicon_flavor_text"])]...
" + dat += "[TextPreview(features["silicon_flavor_text"])]..." dat += "

OOC notes

" dat += "Set OOC notes
" var/ooc_notes_len = length(features["ooc_notes"]) if(ooc_notes_len <= MAX_FLAVOR_PREVIEW_LEN) if(!ooc_notes_len) - dat += "\[...\]
" + dat += "\[...\]" else - dat += "[features["ooc_notes"]]
" + dat += "[features["ooc_notes"]]" else - dat += "[TextPreview(features["ooc_notes"])]...
" - //SKYRAT EDIT - dat += "

Consent preferences

" - dat += "ERP : [erppref]
" - dat += "Non-Con : [nonconpref]
" - dat += "Vore : [vorepref]
" - //END OF SKYRAT EDIT + dat += "[TextPreview(features["ooc_notes"])]..." + dat += "
" + dat += "

Records

" + dat += "Security Records
" + if(length_char(security_records) <= 40) + if(!length(security_records)) + dat += "\[...\]" + else + dat += "[security_records]" + else + dat += "[TextPreview(security_records)]..." - dat += APPEARANCE_CATEGORY_COLUMN //body moves right sandstorm change + dat += "
Medical Records
" + if(length_char(medical_records) <= 40) + if(!length(medical_records)) + dat += "\[...\]" + else + dat += "[medical_records]" + else + dat += "[TextPreview(medical_records)]..." + dat += "
" + //Character Appearance + if(APPEARANCE_CHAR_TAB) + dat += "" //body moves right sandstorm change + dat += "" var/use_skintones = pref_species.use_skintones if(use_skintones) @@ -689,14 +691,38 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
" dat += "

Body

" dat += "Gender:[gender == MALE ? "Male" : (gender == FEMALE ? "Female" : (gender == PLURAL ? "Non-binary" : "Object"))]
" @@ -539,7 +541,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Always Random Body:[be_random_body ? "Yes" : "No"]
" dat += "
Cycle background:[bgstate]
" - dat += "
" dat += "
" + dat += "

Clothing & Equipment

" + /* + dat += "Underwear:[underwear]" + if(GLOB.underwear_list[underwear]?.has_color) + dat += "Underwear Color: #[undie_color] Change
" + dat += "Undershirt:[undershirt]" + if(GLOB.undershirt_list[undershirt]?.has_color) + dat += "Undershirt Color: #[shirt_color] Change
" + dat += "Socks:[socks]" + if(GLOB.socks_list[socks]?.has_color) + dat += "Socks Color: #[socks_color] Change
" + */ + dat += "Backpack:[backbag]" + dat += "Jumpsuit:
[jumpsuit_style]
" + if((HAS_FLESH in pref_species.species_traits) || (HAS_BONE in pref_species.species_traits)) + dat += "
Temporal Scarring:
[(persistent_scars) ? "Enabled" : "Disabled"]" + dat += "Clear scar slots" + dat += "Uplink Location:[uplink_spawn_loc]" + + dat += "

Consent preferences

" + dat += "ERP : [erppref]
" + dat += "Non-Con : [nonconpref]
" + dat += "Vore : [vorepref]
" - dat += "" - dat += "" - dat += "" - dat += "" //END OF SANDSTORM EDIT @@ -927,27 +952,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
Preview Bark
" dat += "" dat += "
" dat += "

Lewd preferences

" - dat += "Lust tolerance:[lust_tolerance]" - dat += "Sexual potency:[sexual_potency]" + dat += "Lust tolerance:[lust_tolerance]
" + dat += "Sexual potency:[sexual_potency]" dat += "
" + dat += APPEARANCE_CATEGORY_COLUMN + if(NOGENITALS in pref_species.species_traits) dat += "Your species ([pref_species.name]) does not support genitals!
" else @@ -733,7 +759,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Testicles Shape: [features["balls_shape"]]" dat += "Testicles Visibility:[features["balls_visibility"]]" dat += "Testicles Always Accessible:[features["balls_accessible"] ? "Yes" : "No"]" - dat += "
" + dat += APPEARANCE_CATEGORY_COLUMN dat += "

Vagina

" dat += "[features["has_vag"] == TRUE ? "Yes" : "No"]" if(features["has_vag"]) @@ -748,7 +774,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Vagina Always Accessible:[features["vag_accessible"] ? "Yes" : "No"]" dat += "Has Womb:[features["has_womb"] == TRUE ? "Yes" : "No"]" dat += "
" + dat += APPEARANCE_CATEGORY_COLUMN dat += "

Breasts

" dat += "[features["has_breasts"] == TRUE ? "Yes" : "No"]" if(features["has_breasts"]) @@ -764,7 +790,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Breasts Always Accessible:[features["breasts_accessible"] ? "Yes" : "No"]" dat += "Lactates:[features["breasts_producing"] == TRUE ? "Yes" : "No"]" dat += "
" + dat += APPEARANCE_CATEGORY_COLUMN dat += "

Butt

" dat += "[features["has_butt"] == TRUE ? "Yes" : "No"]" if(features["has_butt"]) @@ -911,8 +937,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "[custom_tongue]
" //SANDSTORM EDIT - additional language + runechat color dat += "Additional Language
" - var/list/languages_sorted = sortList(language) - dat += "[language.len ? languages_sorted.Join(", ") : "None"]
" + dat += "[english_list(language, "None")]
" dat += "Custom runechat color: [enable_personal_chat_color ? "Enabled" : "Disabled"]
[enable_personal_chat_color ? "[personal_chat_color] Change" : ""]
" dat += "
" - if(BACKGROUND_CHAR_TAB) - dat += "
" - dat += "

Records


" - dat += "Security Records
" - if(length_char(security_records) <= 40) - if(!length(security_records)) - dat += "\[...\]" - else - dat += "[security_records]" - else - dat += "[TextPreview(security_records)]...
" - - dat += "
Medical Records
" - if(length_char(medical_records) <= 40) - if(!length(medical_records)) - dat += "\[...\]
" - else - dat += "[medical_records]" - else - dat += "[TextPreview(medical_records)]...
" - dat += "
" if(LOADOUT_CHAR_TAB) dat += "" dat += "" @@ -1088,9 +1092,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Show Runechat Chat Bubbles:[chat_on_map ? "Enabled" : "Disabled"]
" dat += "Runechat message char limit:[max_chat_length]
" dat += "See Runechat for non-mobs:[see_chat_non_mob ? "Enabled" : "Disabled"]
" - //SKYRAT CHANGES BEGIN + //SANDSTORM CHANGES BEGIN dat += "See Runechat for emotes:[see_chat_emotes ? "Enabled" : "Disabled"]
" - //SKYRAT CHANGES END + //SANDSTORM CHANGES END dat += "
" dat += "Action Buttons:[(buttons_locked) ? "Locked In Place" : "Unlocked"]
" dat += "
" @@ -1288,7 +1292,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
You can only choose one item per category, unless it's an item that spawns in your backpack or hands.
" dat += "

Fetish content prefs

" dat += "Allow Lewd Verbs: [(toggles & VERB_CONSENT) ? "Yes":"No"]
" // Skyrat - ERP Mechanic Addition - dat += "Mute Lewd Verb Sounds: [(toggles & LEWD_VERB_SOUNDS) ? "Yes":"No"]
" // Skyrat - ERP Mechanic Addition + dat += "Mute Lewd Verb Sounds: [(toggles & LEWD_VERB_SOUNDS) ? "Yes":"No"]
" // Sandstorm - ERP Mechanic Addition dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
" dat += "Genital examine text:[(cit_toggles & GENITAL_EXAMINE) ? "Enabled" : "Disabled"]
" dat += "Vore examine text:[(cit_toggles & VORE_EXAMINE) ? "Enabled" : "Disabled"]
" @@ -1309,11 +1313,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Hypno: [(cit_toggles & NEVER_HYPNO) ? "Disallowed" : "Allowed"]
" dat += "Aphrodisiacs: [(cit_toggles & NO_APHRO) ? "Disallowed" : "Allowed"]
" dat += "Ass Slapping: [(cit_toggles & NO_ASS_SLAP) ? "Disallowed" : "Allowed"]
" - //SKYRAT EDIT + //SANDSTORM EDIT dat += "Extreme ERP verbs : [extremepref]
" // https://youtu.be/0YrU9ASVw6w if(extremepref != "No") dat += "Harmful ERP verbs : [extremeharm]
" - //END OF SKYRAT EDIT + //END OF SANDSTORM EDIT dat += "Automatic Wagging: [(cit_toggles & NO_AUTO_WAG) ? "Disabled" : "Enabled"]
" dat += "
" @@ -1832,18 +1836,17 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("close") user << browse(null, "window=mob_occupation") ShowChoices(user) + return TRUE if("update") var/lang = href_list["language"] - if(SSlanguage.languages_by_name[lang]) - toggle_language(lang) - SetLanguage(user) - else - SetLanguage(user) + if(!SSlanguage.languages_by_name[lang]) + return + if(!toggle_language(lang)) + return + language = sortList(language) if("reset") language = list() - SetLanguage(user) - else - SetLanguage(user) + SetLanguage(user) return TRUE switch(href_list["task"]) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 7134852ab4..3fd82397b1 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -1103,6 +1103,20 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car all_quirks = SANITIZE_LIST(all_quirks) + language = SANITIZE_LIST(language) + + if(length(language)) + var/list/all_possible_languages = length(SSlanguage.languages_by_name) ? SSlanguage.languages_by_name : typesof(/datum/language) + var/list/lang_names + for(var/datum/language/language_sanitization as anything in all_possible_languages) + if(!initial(language_sanitization.key)) + continue + LAZYADD(lang_names, initial(language_sanitization.name)) + for(var/language_entry in language) + if(LAZYFIND(lang_names, language_entry)) + continue + language -= language_entry + vore_flags = sanitize_integer(vore_flags, 0, MAX_VORE_FLAG, 0) vore_taste = copytext(vore_taste, 1, MAX_TASTE_LEN) vore_smell = copytext(vore_smell, 1, MAX_TASTE_LEN) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 835ecf6c8b..825ee0d6d6 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -539,7 +539,7 @@ if(humanc && CONFIG_GET(flag/roundstart_traits)) SSquirks.AssignQuirks(humanc, humanc.client, TRUE, FALSE, job, FALSE) - //skyrat change + //sandstorm change if(humanc) SSlanguage.AssignLanguage(humanc, humanc.client, TRUE, FALSE, job, FALSE) diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index d51048dc0a..f231283e88 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -56,7 +56,14 @@ if(PREVIEW_PREF_LOADOUT) SSjob.equip_loadout(parent.mob, mannequin, bypass_prereqs = TRUE, can_drop = FALSE) SSjob.post_equip_loadout(parent.mob, mannequin, bypass_prereqs = TRUE, can_drop = FALSE) + if(PREVIEW_PREF_NAKED) + mannequin.hidden_underwear = TRUE + mannequin.hidden_undershirt = TRUE + mannequin.hidden_socks = TRUE if(PREVIEW_PREF_NAKED_AROUSED) + mannequin.hidden_underwear = TRUE + mannequin.hidden_undershirt = TRUE + mannequin.hidden_socks = TRUE for(var/obj/item/organ/genital/genital in mannequin.internal_organs) if(CHECK_BITFIELD(genital.genital_flags, GENITAL_CAN_AROUSE)) genital.set_aroused_state(TRUE, null) diff --git a/modular_sand/code/controllers/subsystem/language.dm b/modular_sand/code/controllers/subsystem/language.dm index c0abd0b720..9182099eec 100644 --- a/modular_sand/code/controllers/subsystem/language.dm +++ b/modular_sand/code/controllers/subsystem/language.dm @@ -1,30 +1,29 @@ -/datum/controller/subsystem/language/proc/AssignLanguage(mob/living/user, client/cli) +/datum/controller/subsystem/language/proc/AssignLanguage(mob/living/user, client/client) if(!CONFIG_GET(number/max_languages) == 0) //Simply disables everything - var/list/languages = cli.prefs.language - var/list/valid_languages = list() - var/list/invalid_languages = list() - if(!languages.len) + var/list/languages = client.prefs.language.Copy() + var/list/valid_languages + var/list/invalid_languages + if(!length(languages)) return - for(var/I in GLOB.all_languages) - var/datum/language/L = I - var/datum/language/cool = new L - for(var/my_lang in languages) - if(my_lang == cool.name) - if(!cool.restricted || (cool.name in cli.prefs.pref_species.languagewhitelist)) - user.grant_language(cool.type, TRUE, TRUE, LANGUAGE_ADDITIONAL) - valid_languages += my_lang - else - for(var/datum/quirk/Q in cli.prefs.all_quirks) - if(cool.name in Q.languagewhitelist) - user.grant_language(cool, TRUE, TRUE, LANGUAGE_ADDITIONAL) - valid_languages += my_lang - continue - invalid_languages += my_lang + for(var/language in languages) + var/datum/language/language_datum = LAZYACCESS(SSlanguage.languages_by_name, language) + if(language_datum) + if(!language_datum.restricted || (language_datum.name in client.prefs.pref_species.languagewhitelist)) + user.grant_language(language_datum.type, TRUE, TRUE, LANGUAGE_ADDITIONAL) + LAZYADD(valid_languages, language) else - continue - if(valid_languages.len) - var/list/sorted_valid = sortList(valid_languages) - to_chat(user, span_notice("You are able to speak in [sorted_valid.Join(", ")]. If you're actually good at [valid_languages.len > 1 ? "them" : "it"] or not, it's up to you.")) - if(invalid_languages.len) - var/list/sorted_invalid = sortList(invalid_languages) - to_chat(user, span_warning("[sorted_invalid.Join(", ")] [invalid_languages.len > 1 ? "are" : "is a"] restricted language[invalid_languages.len > 1 ? "s" : ""], and ha[invalid_languages.len > 1 ? "ve" : "s"] not been assigned.")) + for(var/datum/quirk/quirk in client.prefs.all_quirks) + if(language_datum.name in quirk.languagewhitelist) + user.grant_language(language_datum.type, TRUE, TRUE, LANGUAGE_ADDITIONAL) + LAZYADD(valid_languages, language) + continue + LAZYADD(invalid_languages, language) + + else + continue + var/valid_languages_len = LAZYLEN(valid_languages) + if(valid_languages_len) + to_chat(client, span_notice("You are able to speak in [english_list(sortList(valid_languages))]. If you're actually good at [valid_languages_len > 1 ? "them" : "it"] or not, it's up to you.")) + var/invalid_languages_len = LAZYLEN(invalid_languages) + if(invalid_languages_len) + to_chat(client, span_warning("[english_list(sortList(invalid_languages))] [invalid_languages_len > 1 ? "are" : "is a"] restricted language[invalid_languages_len > 1 ? "s" : ""], and ha[invalid_languages_len > 1 ? "ve" : "s"] not been assigned.")) diff --git a/modular_sand/code/modules/client/preferences.dm b/modular_sand/code/modules/client/preferences.dm index 3efa0eefee..89fe61716d 100644 --- a/modular_sand/code/modules/client/preferences.dm +++ b/modular_sand/code/modules/client/preferences.dm @@ -1,4 +1,4 @@ -//SKYRAT EDIT - extra language +//SANDSTORM EDIT - extra language /datum/preferences/proc/SetLanguage(mob/user) var/list/dat = list() dat += "
Choose Additional Languages

" @@ -11,11 +11,10 @@ var/datum/language/L = SSlanguage.languages_by_name[V] if(!L) return - var/language_name = initial(L.name) + var/language_name = L.name var/restricted = FALSE if(L.restricted) restricted = TRUE - var/font_color = "#4682B4" if(restricted && !(language_name in pref_species.languagewhitelist)) var/quirklanguagefound = FALSE for(var/datum/quirk/Q in all_quirks) @@ -24,11 +23,7 @@ if(!quirklanguagefound) continue else - var/picked = FALSE - dat += "[language_name]: [initial(L.desc)]" - if(language_name in language) - picked = TRUE - dat += "[picked ? "Remove" : "Choose"]
" + dat += "[language_name] [L.desc]

" else dat += "
The language subsystem hasn't fully loaded yet! Please wait a bit and try again.

" dat += "
" @@ -48,13 +43,16 @@ /datum/preferences/proc/toggle_language(lang) if(lang in language) language -= lang + return TRUE else if(check_language_maxhit()) if(CONFIG_GET(number/max_languages) == 1) - to_chat(usr, span_danger("You can only have 1 additional language!")) + tgui_alert(usr, "You can only have 1 additional language!", timeout = 5 SECONDS) else - to_chat(usr, span_danger("You can only have up to [CONFIG_GET(number/max_languages)] additional languages!")) + tgui_alert(usr, "You can only have up to [CONFIG_GET(number/max_languages)] additional languages!", timeout = 5 SECONDS) + return FALSE else language += lang + return TRUE /datum/preferences/proc/check_language_maxhit() if(CONFIG_GET(number/max_languages) == -1) //infinite diff --git a/tgstation.dme b/tgstation.dme index 2dbc56f9c3..33f09c534d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -243,7 +243,6 @@ #include "code\__HELPERS\sorts\TimSort.dm" #include "code\__SANDCODE\DEFINES\access.dm" #include "code\__SANDCODE\DEFINES\chat.dm" -#include "code\__SANDCODE\DEFINES\DNA.dm" #include "code\__SANDCODE\DEFINES\keybindings.dm" #include "code\__SANDCODE\DEFINES\language.dm" #include "code\__SANDCODE\DEFINES\lewd.dm"