diff --git a/code/modules/client/preference_setup/antagonism/01_candidacy.dm b/code/modules/client/preference_setup/antagonism/01_candidacy.dm index f171a20a0c4..8badcdb8770 100644 --- a/code/modules/client/preference_setup/antagonism/01_candidacy.dm +++ b/code/modules/client/preference_setup/antagonism/01_candidacy.dm @@ -37,22 +37,24 @@ pref.be_special_role -= role /datum/category_item/player_setup_item/antagonism/candidacy/content(var/mob/user) - . += "Special Role Availability:
" - . += "" + var/list/dat = list( + "Special Role Availability:
", + "
" + ) var/is_global_banned = jobban_isbanned(preference_mob(), "Antagonist") for(var/antag_type in all_antag_types) var/datum/antagonist/antag = all_antag_types[antag_type] - . += "" + dat += "Yes / No
" + dat += "" var/list/ghost_traps = get_ghost_traps() for(var/ghost_trap_key in ghost_traps) @@ -60,7 +62,7 @@ if(!ghost_trap.list_as_special_role) continue - . += "" - . += "
[antag.role_text]: " + dat += "
[antag.role_text]: " var/ban_reason = jobban_isbanned(preference_mob(), antag.bantype) if(ban_reason == "AGE WHITELISTED") - . += "\[IN [player_old_enough_for_role(preference_mob(), antag.bantype)] DAYS\]
" + dat += "\[IN [player_old_enough_for_role(preference_mob(), antag.bantype)] DAYS\]
" else if(is_global_banned || ban_reason) - . += "\[BANNED\]
" + dat += "\[BANNED\]
" else if(antag.role_type in pref.be_special_role) - . += "Yes / No
" + dat += "Yes / No
" else - . += "Yes / No
" - . += "
[(ghost_trap.ghost_trap_role)]: " + dat += "
[(ghost_trap.ghost_trap_role)]: " var/ban_state = banned_from_ghost_role(preference_mob(), ghost_trap) if(ban_state == AGEBAN) var/age_to_beat = 0 @@ -68,15 +70,17 @@ age_to_beat = player_old_enough_for_role(preference_mob(), A) if (age_to_beat) break - . += "\[IN [age_to_beat] DAYS\]
" + dat += "\[IN [age_to_beat] DAYS\]
" else if (ban_state == RANBAN) - . += "\[BANNED\]
" + dat += "\[BANNED\]
" else if(ghost_trap.pref_check in pref.be_special_role) - . += "Yes / No
" + dat += "Yes / No
" else - . += "Yes / No
" - . += "
" + dat += "Yes / No
" + dat += "" + dat += "" + + . = dat.Join() /datum/category_item/player_setup_item/proc/banned_from_ghost_role(var/mob, var/datum/ghosttrap/ghost_trap) for(var/ban_type in ghost_trap.ban_checks) diff --git a/code/modules/client/preference_setup/antagonism/02_setup.dm b/code/modules/client/preference_setup/antagonism/02_setup.dm index 4ee741b6319..d1e4182d13a 100644 --- a/code/modules/client/preference_setup/antagonism/02_setup.dm +++ b/code/modules/client/preference_setup/antagonism/02_setup.dm @@ -13,15 +13,39 @@ var/global/list/uplink_locations = list("PDA", "Headset", "None") S["exploit_record"] << pref.exploit_record /datum/category_item/player_setup_item/antagonism/basic/gather_load_query() - return list("ss13_characters_flavour" = list("vars" = list("records_exploit" = "exploit_record"), "args" = list("char_id")), - "ss13_characters" = list("vars" = list("uplink_location" = "uplinklocation"), "args" = list("id"))) + return list( + "ss13_characters_flavour" = list( + "vars" = list( + "records_exploit" = "exploit_record" + ), + "args" = list("char_id") + ), + "ss13_characters" = list( + "vars" = list( + "uplink_location" = "uplinklocation" + ), + "args" = list("id") + ) + ) /datum/category_item/player_setup_item/antagonism/basic/gather_load_parameters() - return list("char_id" = pref.current_character, "id" = pref.current_character) + return list( + "char_id" = pref.current_character, + "id" = pref.current_character + ) /datum/category_item/player_setup_item/antagonism/basic/gather_save_query() - return list("ss13_characters_flavour" = list("records_exploit", "char_id" = 1), - "ss13_characters" = list("uplink_location", "id" = 1, "ckey" = 1)) + return list( + "ss13_characters_flavour" = list( + "records_exploit", + "char_id" = 1 + ), + "ss13_characters" = list( + "uplink_location", + "id" = 1, + "ckey" = 1 + ) + ) /datum/category_item/player_setup_item/antagonism/basic/gather_save_parameters() return list("records_exploit" = pref.exploit_record, "char_id" = pref.current_character, "uplink_location" = pref.uplinklocation, "id" = pref.current_character, "ckey" = pref.client.ckey) @@ -30,13 +54,17 @@ var/global/list/uplink_locations = list("PDA", "Headset", "None") pref.uplinklocation = sanitize_inlist(pref.uplinklocation, uplink_locations, initial(pref.uplinklocation)) /datum/category_item/player_setup_item/antagonism/basic/content(var/mob/user) - . +="Antag Setup:
" - . +="Uplink Type: [pref.uplinklocation]
" - . +="Exploitable information:
" + var/list/dat = list( + "Antag Setup:
", + "Uplink Type: [pref.uplinklocation]
", + "Exploitable information:
" + ) if(jobban_isbanned(user, "Records")) - . += "You are banned from using character records.
" + dat += "You are banned from using character records.
" else - . +="[TextPreview(pref.exploit_record,40)]
" + dat +="[TextPreview(pref.exploit_record,40)]
" + + . = dat.Join() /datum/category_item/player_setup_item/antagonism/basic/OnTopic(var/href,var/list/href_list, var/mob/user) if (href_list["antagtask"]) diff --git a/code/modules/client/preference_setup/general/01_basic.dm b/code/modules/client/preference_setup/general/01_basic.dm index 570e54ea2b8..fa317c9c4c7 100644 --- a/code/modules/client/preference_setup/general/01_basic.dm +++ b/code/modules/client/preference_setup/general/01_basic.dm @@ -4,52 +4,64 @@ var/static/list/valid_player_genders = list(MALE, FEMALE) /datum/category_item/player_setup_item/general/basic/load_character(var/savefile/S) - S["real_name"] >> pref.real_name - S["gender"] >> pref.gender - S["age"] >> pref.age - S["species"] >> pref.species - S["spawnpoint"] >> pref.spawnpoint - S["OOC_Notes"] >> pref.metadata + S["real_name"] >> pref.real_name + S["gender"] >> pref.gender + S["age"] >> pref.age + S["species"] >> pref.species + S["spawnpoint"] >> pref.spawnpoint + S["OOC_Notes"] >> pref.metadata /datum/category_item/player_setup_item/general/basic/save_character(var/savefile/S) - S["real_name"] << pref.real_name - S["gender"] << pref.gender - S["age"] << pref.age - S["species"] << pref.species - S["spawnpoint"] << pref.spawnpoint - S["OOC_Notes"] << pref.metadata + S["real_name"] << pref.real_name + S["gender"] << pref.gender + S["age"] << pref.age + S["species"] << pref.species + S["spawnpoint"] << pref.spawnpoint + S["OOC_Notes"] << pref.metadata /datum/category_item/player_setup_item/general/basic/gather_load_query() - return list("ss13_characters" = list("vars" = list("name" = "real_name", - "gender", - "age", - "metadata", - "spawnpoint", - "species"), - "args" = list("id"))) + return list( + "ss13_characters" = list( + "vars" = list( + "name" = "real_name", + "gender", + "age", + "metadata", + "spawnpoint", + "species" + ), + "args" = list("id") + ) + ) /datum/category_item/player_setup_item/general/basic/gather_load_parameters() return list("id" = pref.current_character) /datum/category_item/player_setup_item/general/basic/gather_save_query() - return list("ss13_characters" = list("name", - "gender", - "age", - "metadata", - "spawnpoint", - "species", - "id" = 1, - "ckey" = 1)) + return list( + "ss13_characters" = list( + "name", + "gender", + "age", + "metadata", + "spawnpoint", + "species", + "id" = 1, + "ckey" = 1 + ) + ) /datum/category_item/player_setup_item/general/basic/gather_save_parameters() - return list("name" = pref.real_name, - "gender" = pref.gender, - "age" = pref.age, - "metadata" = pref.metadata, - "spawnpoint" = pref.spawnpoint, - "species" = pref.species, - "id" = pref.current_character, - "ckey" = pref.client.ckey) + return list( + "name" = pref.real_name, + "gender" = pref.gender, + "age" = pref.age, + "metadata" = pref.metadata, + "spawnpoint" = pref.spawnpoint, + "species" = pref.species, + "id" = pref.current_character, + "ckey" = pref.client.ckey + ) /datum/category_item/player_setup_item/general/basic/load_special() pref.can_edit_name = 1 @@ -74,27 +86,29 @@ if(!pref.species || !(pref.species in playable_species)) pref.species = "Human" - pref.age = sanitize_integer(text2num(pref.age), pref.getMinAge(), pref.getMaxAge(), initial(pref.age)) - pref.gender = sanitize_inlist(pref.gender, valid_player_genders, pick(valid_player_genders)) - pref.real_name = sanitize_name(pref.real_name, pref.species) + pref.age = sanitize_integer(text2num(pref.age), pref.getMinAge(), pref.getMaxAge(), initial(pref.age)) + pref.gender = sanitize_inlist(pref.gender, valid_player_genders, pick(valid_player_genders)) + pref.real_name = sanitize_name(pref.real_name, pref.species) if(!pref.real_name) - pref.real_name = random_name(pref.gender, pref.species) - pref.spawnpoint = sanitize_inlist(pref.spawnpoint, spawntypes, initial(pref.spawnpoint)) + pref.real_name = random_name(pref.gender, pref.species) + pref.spawnpoint = sanitize_inlist(pref.spawnpoint, spawntypes, initial(pref.spawnpoint)) /datum/category_item/player_setup_item/general/basic/content() - . = "Name: " + var/list/dat = list("Name: ") if (pref.can_edit_name) - . += "[pref.real_name]
" + dat += "[pref.real_name]
" else - . += "[pref.real_name]
(?)" + dat += "[pref.real_name]
(?)" if (pref.can_edit_name) - . += "(Random Name)" - . += "
" - . += "Gender: [capitalize(lowertext(pref.gender))]
" - . += "Age: [pref.age]
" - . += "Spawn Point: [pref.spawnpoint]
" + dat += "(Random Name)" + dat += "
" + dat += "Gender: [capitalize(lowertext(pref.gender))]
" + dat += "Age: [pref.age]
" + dat += "Spawn Point: [pref.spawnpoint]
" if(config.allow_Metadata) - . += "OOC Notes: Edit
" + dat += "OOC Notes: Edit
" + + . = dat.Join() /datum/category_item/player_setup_item/general/basic/OnTopic(var/href,var/list/href_list, var/mob/user) if(href_list["rename"]) diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm index 388547b4539..b201093df11 100644 --- a/code/modules/client/preference_setup/general/02_language.dm +++ b/code/modules/client/preference_setup/general/02_language.dm @@ -3,26 +3,39 @@ sort_order = 2 /datum/category_item/player_setup_item/general/language/load_character(var/savefile/S) - S["language"] >> pref.alternate_languages + S["language"] >> pref.alternate_languages /datum/category_item/player_setup_item/general/language/save_character(var/savefile/S) - S["language"] << pref.alternate_languages + S["language"] << pref.alternate_languages /datum/category_item/player_setup_item/general/language/gather_load_query() - return list("ss13_characters" = list("vars" = list("language" = "alternate_languages"), "args" = list("id"))) + return list( + "ss13_characters" = list( + "vars" = list( + "language" = "alternate_languages" + ), + "args" = list("id") + ) + ) /datum/category_item/player_setup_item/general/language/gather_load_parameters() return list("id" = pref.current_character) /datum/category_item/player_setup_item/general/language/gather_save_query() - return list("ss13_characters" = list("id" = 1, - "ckey" = 1, - "language")) + return list( + "ss13_characters" = list( + "id" = 1, + "ckey" = 1, + "language" + ) + ) /datum/category_item/player_setup_item/general/language/gather_save_parameters() - return list("language" = list2params(pref.alternate_languages), - "id" = pref.current_character, - "ckey" = pref.client.ckey) + return list( + "language" = list2params(pref.alternate_languages), + "id" = pref.current_character, + "ckey" = pref.client.ckey + ) /datum/category_item/player_setup_item/general/language/sanitize_character(var/sql_load = 0) if (sql_load) @@ -58,22 +71,24 @@ cat.modified = TRUE /datum/category_item/player_setup_item/general/language/content() - . += "Languages
" + var/list/dat = list("Languages
") var/datum/species/S = all_species[pref.species] if(S.language) - . += "- [S.language]
" + dat += "- [S.language]
" if(S.default_language && S.default_language != S.language) - . += "- [S.default_language]
" + dat += "- [S.default_language]
" if(S.num_alternate_languages) if(pref.alternate_languages.len) for(var/i = 1 to pref.alternate_languages.len) var/lang = pref.alternate_languages[i] - . += "- [lang] - remove
" + dat += "- [lang] - remove
" if(pref.alternate_languages.len < S.num_alternate_languages) - . += "- add ([S.num_alternate_languages - pref.alternate_languages.len] remaining)
" + dat += "- add ([S.num_alternate_languages - pref.alternate_languages.len] remaining)
" else - . += "- [pref.species] cannot choose secondary languages.
" + dat += "- [pref.species] cannot choose secondary languages.
" + + . = dat.Join() /datum/category_item/player_setup_item/general/language/OnTopic(var/href,var/list/href_list, var/mob/user) if(href_list["remove_language"]) diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 4eedd68509c..b42b76d50cf 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -5,123 +5,135 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O sort_order = 3 /datum/category_item/player_setup_item/general/body/load_character(var/savefile/S) - S["hair_red"] >> pref.r_hair - S["hair_green"] >> pref.g_hair - S["hair_blue"] >> pref.b_hair - S["facial_red"] >> pref.r_facial - S["facial_green"] >> pref.g_facial - S["facial_blue"] >> pref.b_facial - S["skin_tone"] >> pref.s_tone - S["skin_red"] >> pref.r_skin - S["skin_green"] >> pref.g_skin - S["skin_blue"] >> pref.b_skin - S["hair_style_name"] >> pref.h_style - S["facial_style_name"] >> pref.f_style - S["eyes_red"] >> pref.r_eyes - S["eyes_green"] >> pref.g_eyes - S["eyes_blue"] >> pref.b_eyes - S["b_type"] >> pref.b_type - S["disabilities"] >> pref.disabilities - S["organ_data"] >> pref.organ_data - S["rlimb_data"] >> pref.rlimb_data - S["body_markings"] >> pref.body_markings + S["hair_red"] >> pref.r_hair + S["hair_green"] >> pref.g_hair + S["hair_blue"] >> pref.b_hair + S["facial_red"] >> pref.r_facial + S["facial_green"] >> pref.g_facial + S["facial_blue"] >> pref.b_facial + S["skin_tone"] >> pref.s_tone + S["skin_red"] >> pref.r_skin + S["skin_green"] >> pref.g_skin + S["skin_blue"] >> pref.b_skin + S["hair_style_name"] >> pref.h_style + S["facial_style_name"] >> pref.f_style + S["eyes_red"] >> pref.r_eyes + S["eyes_green"] >> pref.g_eyes + S["eyes_blue"] >> pref.b_eyes + S["b_type"] >> pref.b_type + S["disabilities"] >> pref.disabilities + S["organ_data"] >> pref.organ_data + S["rlimb_data"] >> pref.rlimb_data + S["body_markings"] >> pref.body_markings pref.preview_icon = null /datum/category_item/player_setup_item/general/body/save_character(var/savefile/S) - S["hair_red"] << pref.r_hair - S["hair_green"] << pref.g_hair - S["hair_blue"] << pref.b_hair - S["facial_red"] << pref.r_facial - S["facial_green"] << pref.g_facial - S["facial_blue"] << pref.b_facial - S["skin_tone"] << pref.s_tone - S["skin_red"] << pref.r_skin - S["skin_green"] << pref.g_skin - S["skin_blue"] << pref.b_skin - S["hair_style_name"] << pref.h_style - S["facial_style_name"] << pref.f_style - S["eyes_red"] << pref.r_eyes - S["eyes_green"] << pref.g_eyes - S["eyes_blue"] << pref.b_eyes - S["b_type"] << pref.b_type - S["disabilities"] << pref.disabilities - S["organ_data"] << pref.organ_data - S["rlimb_data"] << pref.rlimb_data - S["body_markings"] << pref.body_markings + S["hair_red"] << pref.r_hair + S["hair_green"] << pref.g_hair + S["hair_blue"] << pref.b_hair + S["facial_red"] << pref.r_facial + S["facial_green"] << pref.g_facial + S["facial_blue"] << pref.b_facial + S["skin_tone"] << pref.s_tone + S["skin_red"] << pref.r_skin + S["skin_green"] << pref.g_skin + S["skin_blue"] << pref.b_skin + S["hair_style_name"] << pref.h_style + S["facial_style_name"] << pref.f_style + S["eyes_red"] << pref.r_eyes + S["eyes_green"] << pref.g_eyes + S["eyes_blue"] << pref.b_eyes + S["b_type"] << pref.b_type + S["disabilities"] << pref.disabilities + S["organ_data"] << pref.organ_data + S["rlimb_data"] << pref.rlimb_data + S["body_markings"] << pref.body_markings /datum/category_item/player_setup_item/general/body/gather_load_query() - return list("ss13_characters" = list("vars" = list("hair_colour", - "facial_colour", - "skin_tone" = "s_tone", - "skin_colour", - "hair_style" = "h_style", - "facial_style" = "f_style", - "eyes_colour", - "b_type", - "disabilities", - "organs_data" = "organ_data", - "organs_robotic" = "rlimb_data", - "body_markings"), - "args" = list("id"))) + return list( + "ss13_characters" = list( + "vars" = list( + "hair_colour", + "facial_colour", + "skin_tone" = "s_tone", + "skin_colour", + "hair_style" = "h_style", + "facial_style" = "f_style", + "eyes_colour", + "b_type", + "disabilities", + "organs_data" = "organ_data", + "organs_robotic" = "rlimb_data", + "body_markings" + ), + "args" = list("id") + ) + ) /datum/category_item/player_setup_item/general/body/gather_load_parameters() return list("id" = pref.current_character) /datum/category_item/player_setup_item/general/body/gather_save_query() - return list("ss13_characters" = list("hair_colour", - "facial_colour", - "skin_tone", - "skin_colour", - "hair_style", - "facial_style", - "eyes_colour", - "b_type", - "disabilities", - "organs_data", - "organs_robotic", - "body_markings", - "id" = 1, - "ckey" = 1)) + return list( + "ss13_characters" = list( + "hair_colour", + "facial_colour", + "skin_tone", + "skin_colour", + "hair_style", + "facial_style", + "eyes_colour", + "b_type", + "disabilities", + "organs_data", + "organs_robotic", + "body_markings", + "id" = 1, + "ckey" = 1 + ) + ) /datum/category_item/player_setup_item/general/body/gather_save_parameters() - return list("hair_colour" = "#" + num2hex(pref.r_hair, 2) + num2hex(pref.g_hair, 2) + num2hex(pref.b_hair, 2), - "facial_colour" = "#" + num2hex(pref.r_facial, 2) + num2hex(pref.g_facial, 2) + num2hex(pref.b_facial, 2), - "skin_tone" = pref.s_tone, - "skin_colour" = "#" + num2hex(pref.r_skin, 2) + num2hex(pref.g_skin, 2) + num2hex(pref.b_skin, 2), - "hair_style" = pref.h_style, - "facial_style" = pref.f_style, - "eyes_colour" = "#" + num2hex(pref.r_eyes, 2) + num2hex(pref.g_eyes, 2) + num2hex(pref.b_eyes, 2), - "b_type" = pref.b_type, - "disabilities" = pref.disabilities, - "organs_data" = list2params(pref.organ_data), - "organs_robotic"= list2params(pref.rlimb_data), - "body_markings" = json_encode(pref.body_markings), - "id" = pref.current_character, - "ckey" = pref.client.ckey) + return list( + "hair_colour" = rgb(pref.r_hair, pref.g_hair, pref.b_hair), + "facial_colour" = rgb(pref.r_facial, pref.g_facial, pref.b_facial), + "skin_tone" = pref.s_tone, + "skin_colour" = rgb(pref.r_skin, pref.g_skin, pref.b_skin) , + "hair_style" = pref.h_style, + "facial_style" = pref.f_style, + "eyes_colour" = rgb(pref.r_eyes, pref.g_eyes, pref.b_eyes), + "b_type" = pref.b_type, + "disabilities" = pref.disabilities, + "organs_data" = list2params(pref.organ_data), + "organs_robotic"= list2params(pref.rlimb_data), + "body_markings" = json_encode(pref.body_markings), + "id" = pref.current_character, + "ckey" = pref.client.ckey + ) /datum/category_item/player_setup_item/general/body/sanitize_character(var/sql_load = 0) if (sql_load) pref.hair_colour = sanitize_hexcolor(pref.hair_colour) - pref.r_hair = GetRedPart(pref.hair_colour) - pref.g_hair = GetGreenPart(pref.hair_colour) - pref.b_hair = GetBluePart(pref.hair_colour) + pref.r_hair = GetRedPart(pref.hair_colour) + pref.g_hair = GetGreenPart(pref.hair_colour) + pref.b_hair = GetBluePart(pref.hair_colour) pref.facial_colour = sanitize_hexcolor(pref.facial_colour) - pref.r_facial = GetRedPart(pref.facial_colour) - pref.g_facial = GetGreenPart(pref.facial_colour) - pref.b_facial = GetBluePart(pref.facial_colour) + pref.r_facial = GetRedPart(pref.facial_colour) + pref.g_facial = GetGreenPart(pref.facial_colour) + pref.b_facial = GetBluePart(pref.facial_colour) - pref.s_tone = text2num(pref.s_tone) + pref.s_tone = text2num(pref.s_tone) pref.skin_colour = sanitize_hexcolor(pref.skin_colour) - pref.r_skin = GetRedPart(pref.skin_colour) - pref.g_skin = GetGreenPart(pref.skin_colour) - pref.b_skin = GetBluePart(pref.skin_colour) + pref.r_skin = GetRedPart(pref.skin_colour) + pref.g_skin = GetGreenPart(pref.skin_colour) + pref.b_skin = GetBluePart(pref.skin_colour) pref.skin_colour = sanitize_hexcolor(pref.skin_colour) - pref.r_eyes = GetRedPart(pref.eyes_colour) - pref.g_eyes = GetGreenPart(pref.eyes_colour) - pref.b_eyes = GetBluePart(pref.eyes_colour) + pref.r_eyes = GetRedPart(pref.eyes_colour) + pref.g_eyes = GetGreenPart(pref.eyes_colour) + pref.b_eyes = GetBluePart(pref.eyes_colour) pref.disabilities = text2num(pref.disabilities) @@ -137,24 +149,24 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O log_debug("BODY MARKINGS: Caught [e]. Initial value: [before]") pref.body_markings = list() - pref.r_hair = sanitize_integer(pref.r_hair, 0, 255, initial(pref.r_hair)) - pref.g_hair = sanitize_integer(pref.g_hair, 0, 255, initial(pref.g_hair)) - pref.b_hair = sanitize_integer(pref.b_hair, 0, 255, initial(pref.b_hair)) - pref.r_facial = sanitize_integer(pref.r_facial, 0, 255, initial(pref.r_facial)) - pref.g_facial = sanitize_integer(pref.g_facial, 0, 255, initial(pref.g_facial)) - pref.b_facial = sanitize_integer(pref.b_facial, 0, 255, initial(pref.b_facial)) - pref.s_tone = sanitize_integer(pref.s_tone, -185, 34, initial(pref.s_tone)) - pref.r_skin = sanitize_integer(pref.r_skin, 0, 255, initial(pref.r_skin)) - pref.g_skin = sanitize_integer(pref.g_skin, 0, 255, initial(pref.g_skin)) - pref.b_skin = sanitize_integer(pref.b_skin, 0, 255, initial(pref.b_skin)) - pref.h_style = sanitize_inlist(pref.h_style, hair_styles_list, initial(pref.h_style)) - pref.f_style = sanitize_inlist(pref.f_style, facial_hair_styles_list, initial(pref.f_style)) - pref.r_eyes = sanitize_integer(pref.r_eyes, 0, 255, initial(pref.r_eyes)) - pref.g_eyes = sanitize_integer(pref.g_eyes, 0, 255, initial(pref.g_eyes)) - pref.b_eyes = sanitize_integer(pref.b_eyes, 0, 255, initial(pref.b_eyes)) - pref.b_type = sanitize_text(pref.b_type, initial(pref.b_type)) + pref.r_hair = sanitize_integer(pref.r_hair, 0, 255, initial(pref.r_hair)) + pref.g_hair = sanitize_integer(pref.g_hair, 0, 255, initial(pref.g_hair)) + pref.b_hair = sanitize_integer(pref.b_hair, 0, 255, initial(pref.b_hair)) + pref.r_facial = sanitize_integer(pref.r_facial, 0, 255, initial(pref.r_facial)) + pref.g_facial = sanitize_integer(pref.g_facial, 0, 255, initial(pref.g_facial)) + pref.b_facial = sanitize_integer(pref.b_facial, 0, 255, initial(pref.b_facial)) + pref.s_tone = sanitize_integer(pref.s_tone, -185, 34, initial(pref.s_tone)) + pref.r_skin = sanitize_integer(pref.r_skin, 0, 255, initial(pref.r_skin)) + pref.g_skin = sanitize_integer(pref.g_skin, 0, 255, initial(pref.g_skin)) + pref.b_skin = sanitize_integer(pref.b_skin, 0, 255, initial(pref.b_skin)) + pref.h_style = sanitize_inlist(pref.h_style, hair_styles_list, initial(pref.h_style)) + pref.f_style = sanitize_inlist(pref.f_style, facial_hair_styles_list, initial(pref.f_style)) + pref.r_eyes = sanitize_integer(pref.r_eyes, 0, 255, initial(pref.r_eyes)) + pref.g_eyes = sanitize_integer(pref.g_eyes, 0, 255, initial(pref.g_eyes)) + pref.b_eyes = sanitize_integer(pref.b_eyes, 0, 255, initial(pref.b_eyes)) + pref.b_type = sanitize_text(pref.b_type, initial(pref.b_type)) - pref.disabilities = sanitize_integer(pref.disabilities, 0, 65535, initial(pref.disabilities)) + pref.disabilities = sanitize_integer(pref.disabilities, 0, 65535, initial(pref.disabilities)) if (!pref.organ_data || !islist(pref.organ_data)) pref.organ_data = list() if (!pref.rlimb_data || !islist(pref.rlimb_data)) @@ -163,25 +175,25 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.body_markings = list() /datum/category_item/player_setup_item/general/body/content(var/mob/user) + var/list/out = list() pref.update_preview_icon() if(!pref.preview_icon) pref.update_preview_icon() user << browse_rsc(pref.preview_icon, "previewicon.png") var/datum/species/mob_species = all_species[pref.species] - . += "
Body " - . += "(®)" - . += "
" - . += "Species: [pref.species]
" - . += "Blood Type: [pref.b_type]
" + out += "
Body " + out += "(®)" + out += "
" + out += "Species: [pref.species]
" + out += "Blood Type: [pref.b_type]
" if(has_flag(mob_species, HAS_SKIN_TONE)) - . += "Skin Tone: [-pref.s_tone + 35]/220
" - . += "Needs Glasses: [pref.disabilities & NEARSIGHTED ? "Yes" : "No"]
" + out += "Skin Tone: [-pref.s_tone + 35]/220
" + out += "Needs Glasses: [pref.disabilities & NEARSIGHTED ? "Yes" : "No"]
" if(!(has_flag(mob_species, HAS_FBP))) - . += "Limbs: Adjust
" - . += "Internal Organs: Adjust
" - . += "Prosthesis/Amputations: Reset
" - + out += "Limbs: Adjust
" + out += "Internal Organs: Adjust
" + out += "Prosthesis/Amputations: Reset
" //display limbs below var/ind = 0 @@ -220,69 +232,71 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(status == "cyborg") ++ind if(ind > 1) - . += ", " + out += ", " var/datum/robolimb/R if(pref.rlimb_data[name] && all_robolimbs[pref.rlimb_data[name]]) R = all_robolimbs[pref.rlimb_data[name]] else R = basic_robolimb - . += "\t[R.company] [organ_name] prosthesis" + out += "\t[R.company] [organ_name] prosthesis" else if(status == "amputated") ++ind if(ind > 1) - . += ", " - . += "\tAmputated [organ_name]" + out += ", " + out += "\tAmputated [organ_name]" else if(status == "mechanical") ++ind if(ind > 1) - . += ", " - . += "\tMechanical [organ_name]" + out += ", " + out += "\tMechanical [organ_name]" else if(status == "assisted") ++ind if(ind > 1) - . += ", " + out += ", " switch(organ_name) if("heart") - . += "\tPacemaker-assisted [organ_name]" + out += "\tPacemaker-assisted [organ_name]" if("voicebox") //on adding voiceboxes for speaking skrell/similar replacements - . += "\tSurgically altered [organ_name]" + out += "\tSurgically altered [organ_name]" if("eyes") - . += "\tRetinal overlayed [organ_name]" + out += "\tRetinal overlayed [organ_name]" else - . += "\tMechanically assisted [organ_name]" + out += "\tMechanically assisted [organ_name]" if(!ind) - . += "\[...\]

" + out += "\[...\]

" else - . += "

" + out += "

" - . += "
Preview
" - . += "
" - . += "
[pref.dress_mob ? "Hide equipment" : "Show equipment"]" - . += "
" + out += "
Preview
" + out += "
" + out += "
[pref.dress_mob ? "Hide equipment" : "Show equipment"]" + out += "
" - . += "Hair
" + out += "Hair
" if(has_flag(mob_species, HAS_HAIR_COLOR)) - . += "Change Color
__
" - . += " Style: [pref.h_style]
" + out += "Change Color [HTML_RECT(rgb(pref.r_hair, pref.g_hair, pref.b_hair))] " + out += " Style: [pref.h_style]
" - . += "
Facial
" + out += "
Facial
" if(has_flag(mob_species, HAS_HAIR_COLOR)) - . += "Change Color
__
" - . += " Style: [pref.f_style]
" + out += "Change Color [HTML_RECT(rgb(pref.r_facial, pref.g_facial, pref.b_facial))] " + out += " Style: [pref.f_style]
" if(has_flag(mob_species, HAS_EYE_COLOR)) - . += "
Eyes
" - . += "Change Color
__

" + out += "
Eyes
" + out += "Change Color [HTML_RECT(rgb(pref.r_eyes, pref.g_eyes, pref.b_eyes))]
" if(has_flag(mob_species, HAS_SKIN_COLOR)) - . += "
Body Color
" - . += "Change Color
__

" + out += "
Body Color
" + out += "Change Color [HTML_RECT(rgb(pref.r_skin, pref.g_skin, pref.b_skin))]
" - . += "
Body Markings +
" + out += "
Body Markings +
" for(var/M in pref.body_markings) - . += "[M] - Color" - . += "
__
" - . += "
" + out += "[M] - Color" + out += HTML_RECT(pref.body_markings[M]) + out += "
" + + . = out.Join() /datum/category_item/player_setup_item/general/body/proc/has_flag(var/datum/species/mob_species, var/flag) return mob_species && (mob_species.appearance_flags & flag) @@ -320,22 +334,26 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(prev_species != pref.species) mob_species = all_species[pref.species] + var/bodytype = mob_species.get_bodytype() + //grab one of the valid hair styles for the newly chosen species var/list/valid_hairstyles = list() - for(var/hairstyle in hair_styles_list) - var/datum/sprite_accessory/S = hair_styles_list[hairstyle] - if(pref.gender == MALE && S.gender == FEMALE) - continue - if(pref.gender == FEMALE && S.gender == MALE) - continue - if(!(mob_species.get_bodytype() in S.species_allowed) || mob_species.name == "Industrial Frame") //super snowflake check because Industrial Frames are IPC bodytypes, but don't have an IPC head. - continue - valid_hairstyles[hairstyle] = hair_styles_list[hairstyle] + + // Snowflake check for industrials - they're an IPC bodytype but don't have IPC screens. + if (mob_species.name != "Industrial Frame") + for(var/hairstyle in hair_styles_list) + var/datum/sprite_accessory/S = hair_styles_list[hairstyle] + if(pref.gender == MALE && S.gender == FEMALE) + continue + if(pref.gender == FEMALE && S.gender == MALE) + continue + if(!(bodytype in S.species_allowed)) + continue + valid_hairstyles[hairstyle] = hair_styles_list[hairstyle] if(valid_hairstyles.len) pref.h_style = pick(valid_hairstyles) - else - //this shouldn't happen + else // Species has no hair, or something fucked up. pref.h_style = hair_styles_list["Bald"] //grab one of the valid facial hair styles for the newly chosen species @@ -346,7 +364,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O continue if(pref.gender == FEMALE && S.gender == MALE) continue - if(!(mob_species.get_bodytype() in S.species_allowed)) + if(!(bodytype in S.species_allowed)) continue valid_facialhairstyles[facialhairstyle] = facial_hair_styles_list[facialhairstyle] @@ -374,18 +392,19 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O return TOPIC_NOACTION var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference", rgb(pref.r_hair, pref.g_hair, pref.b_hair)) as color|null if(new_hair && has_flag(mob_species, HAS_HAIR_COLOR) && CanUseTopic(user)) - pref.r_hair = hex2num(copytext(new_hair, 2, 4)) - pref.g_hair = hex2num(copytext(new_hair, 4, 6)) - pref.b_hair = hex2num(copytext(new_hair, 6, 8)) + pref.r_hair = GetRedPart(new_hair) + pref.g_hair = GetGreenPart(new_hair) + pref.b_hair = GetBluePart(new_hair) return TOPIC_REFRESH else if(href_list["hair_style"]) if(mob_species.bald) return + var/bodytype = mob_species.get_bodytype() var/list/valid_hairstyles = list() for(var/hairstyle in hair_styles_list) var/datum/sprite_accessory/S = hair_styles_list[hairstyle] - if(!(mob_species.get_bodytype() in S.species_allowed)) + if(!(bodytype in S.species_allowed)) continue valid_hairstyles[hairstyle] = hair_styles_list[hairstyle] @@ -400,9 +419,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O return TOPIC_NOACTION var/new_facial = input(user, "Choose your character's facial-hair colour:", "Character Preference", rgb(pref.r_facial, pref.g_facial, pref.b_facial)) as color|null if(new_facial && has_flag(mob_species, HAS_HAIR_COLOR) && CanUseTopic(user)) - pref.r_facial = hex2num(copytext(new_facial, 2, 4)) - pref.g_facial = hex2num(copytext(new_facial, 4, 6)) - pref.b_facial = hex2num(copytext(new_facial, 6, 8)) + pref.r_facial = GetRedPart(new_facial) + pref.g_facial = GetGreenPart(new_facial) + pref.b_facial = GetBluePart(new_facial) return TOPIC_REFRESH else if(href_list["eye_color"]) @@ -410,9 +429,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O return TOPIC_NOACTION var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference", rgb(pref.r_eyes, pref.g_eyes, pref.b_eyes)) as color|null if(new_eyes && has_flag(mob_species, HAS_EYE_COLOR) && CanUseTopic(user)) - pref.r_eyes = hex2num(copytext(new_eyes, 2, 4)) - pref.g_eyes = hex2num(copytext(new_eyes, 4, 6)) - pref.b_eyes = hex2num(copytext(new_eyes, 6, 8)) + pref.r_eyes = GetRedPart(new_eyes) + pref.g_eyes = GetGreenPart(new_eyes) + pref.b_eyes = GetRedPart(new_eyes) return TOPIC_REFRESH else if(href_list["skin_tone"]) @@ -428,22 +447,23 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O return TOPIC_NOACTION var/new_skin = input(user, "Choose your character's skin colour: ", "Character Preference", rgb(pref.r_skin, pref.g_skin, pref.b_skin)) as color|null if(new_skin && has_flag(mob_species, HAS_SKIN_COLOR) && CanUseTopic(user)) - pref.r_skin = hex2num(copytext(new_skin, 2, 4)) - pref.g_skin = hex2num(copytext(new_skin, 4, 6)) - pref.b_skin = hex2num(copytext(new_skin, 6, 8)) + pref.r_skin = GetRedPart(new_skin) + pref.g_skin = GetGreenPart(new_skin) + pref.b_skin = GetBluePart(new_skin) return TOPIC_REFRESH else if(href_list["facial_style"]) if(mob_species.bald) return var/list/valid_facialhairstyles = list() + var/bodytype = mob_species.get_bodytype() for(var/facialhairstyle in facial_hair_styles_list) var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle] if(pref.gender == MALE && S.gender == FEMALE) continue if(pref.gender == FEMALE && S.gender == MALE) continue - if(!(mob_species.get_bodytype() in S.species_allowed)) + if(!(bodytype in S.species_allowed)) continue valid_facialhairstyles[facialhairstyle] = facial_hair_styles_list[facialhairstyle] @@ -454,7 +474,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O return TOPIC_REFRESH else if(href_list["marking_style"]) - var/list/usable_markings = pref.body_markings.Copy() ^ body_marking_styles_list.Copy() + var/list/usable_markings = pref.body_markings ^ body_marking_styles_list for(var/M in usable_markings) var/datum/sprite_accessory/S = usable_markings[M] if(!S.species_allowed.len) @@ -612,15 +632,19 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(!pref.species_preview || !(pref.species_preview in all_species)) pref.species_preview = "Human" var/datum/species/current_species = all_species[pref.species_preview] - var/dat = "" - dat += "

[current_species.name] \[change\]


" - dat += "" - dat += "" - dat += "" - dat += "" + dat += "" + dat += "" + dat += "" + dat += "
[current_species.blurb]" + var/list/dat = list( + "", + "

[current_species.name] \[change\]


", + "", + "", + "", + "
[current_species.blurb]" + ) if("preview" in icon_states(current_species.icobase)) var/curr_name = html_encode(current_species.name) - usr << browse_rsc(icon(current_species.icobase,"preview"), "species_preview_[curr_name].png") + var/icon/preview = icon(current_species.icobase, "preview") + preview.Scale(64, 64) // Scale it here to stop it blurring. + usr << browse_rsc(preview, "species_preview_[curr_name].png") dat += "

" dat += "Language: [current_species.language]
" dat += "" @@ -663,12 +687,12 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(restricted == 1) dat += "You cannot play as this species.
If you wish to be whitelisted, you can make an application post on the forums.

" else if(restricted == 2) - dat += "You cannot play as this species.
This species is not available for play as a station race..

" + dat += "You cannot play as this species.
This species is not available for play as a station race.

" if(!restricted || check_rights(R_ADMIN, 0)) dat += "\[select\]" dat += "" - user << browse(dat, "window=species;size=700x400") + user << browse(dat.Join(), "window=species;size=700x400") /*/datum/category_item/player_setup_item/general/body/proc/reset_limbs() diff --git a/code/modules/client/preference_setup/general/04_equipment.dm b/code/modules/client/preference_setup/general/04_equipment.dm index 202feca293f..a2e6b3c8ef2 100644 --- a/code/modules/client/preference_setup/general/04_equipment.dm +++ b/code/modules/client/preference_setup/general/04_equipment.dm @@ -3,28 +3,54 @@ sort_order = 4 /datum/category_item/player_setup_item/general/equipment/load_character(var/savefile/S) - S["underwear"] >> pref.underwear - S["undershirt"] >> pref.undershirt - S["socks"] >> pref.socks - S["backbag"] >> pref.backbag + S["underwear"] >> pref.underwear + S["undershirt"] >> pref.undershirt + S["socks"] >> pref.socks + S["backbag"] >> pref.backbag /datum/category_item/player_setup_item/general/equipment/save_character(var/savefile/S) - S["underwear"] << pref.underwear - S["undershirt"] << pref.undershirt - S["socks"] << pref.socks - S["backbag"] << pref.backbag + S["underwear"] << pref.underwear + S["undershirt"] << pref.undershirt + S["socks"] << pref.socks + S["backbag"] << pref.backbag /datum/category_item/player_setup_item/general/equipment/gather_load_query() - return list("ss13_characters" = list("vars" = list("underwear", "undershirt", "socks", "backbag"), "args" = list("id"))) + return list( + "ss13_characters" = list( + "vars" = list( + "underwear", + "undershirt", + "socks", + "backbag" + ), + "args" = list("id") + ) + ) /datum/category_item/player_setup_item/general/equipment/gather_load_parameters() return list("id" = pref.current_character) /datum/category_item/player_setup_item/general/equipment/gather_save_query() - return list("ss13_characters" = list("underwear", "undershirt", "socks", "backbag", "id" = 1, "ckey" = 1)) + return list( + "ss13_characters" = list( + "underwear", + "undershirt", + "socks", + "backbag", + "id" = 1, + "ckey" = 1 + ) + ) /datum/category_item/player_setup_item/general/equipment/gather_save_parameters() - return list("underwear" = pref.underwear, "undershirt" = pref.undershirt, "socks" = pref.socks, "backbag" = pref.backbag, "id" = pref.current_character, "ckey" = pref.client.ckey) + return list( + "underwear" = pref.underwear, + "undershirt" = pref.undershirt, + "socks" = pref.socks, + "backbag" = pref.backbag, + "id" = pref.current_character, + "ckey" = pref.client.ckey + ) /datum/category_item/player_setup_item/general/equipment/sanitize_character(var/sql_load = 0) if (sql_load) @@ -42,11 +68,14 @@ pref.socks = null /datum/category_item/player_setup_item/general/equipment/content() - . += "Equipment:
" - . += "Underwear: [get_key_by_value(get_undies(),pref.underwear)]
" - . += "Undershirt: [get_key_by_value(undershirt_t,pref.undershirt)]
" - . += "Socks: [get_key_by_value(get_gender_socks(),pref.socks)]
" - . += "Backpack Type: [backbaglist[pref.backbag]]
" + var/list/dat = list() + dat += "Equipment:
" + dat += "Underwear: [get_key_by_value(get_undies(),pref.underwear)]
" + dat += "Undershirt: [get_key_by_value(undershirt_t,pref.undershirt)]
" + dat += "Socks: [get_key_by_value(get_gender_socks(),pref.socks)]
" + dat += "Backpack Type: [backbaglist[pref.backbag]]
" + + . = dat.Join() /datum/category_item/player_setup_item/general/equipment/proc/get_undies() return pref.gender == MALE ? underwear_m : underwear_f diff --git a/code/modules/client/preference_setup/general/05_background.dm b/code/modules/client/preference_setup/general/05_background.dm index 00d5d1aef1a..05b0b114be6 100644 --- a/code/modules/client/preference_setup/general/05_background.dm +++ b/code/modules/client/preference_setup/general/05_background.dm @@ -3,55 +3,86 @@ sort_order = 5 /datum/category_item/player_setup_item/general/background/load_character(var/savefile/S) - S["med_record"] >> pref.med_record - S["sec_record"] >> pref.sec_record - S["gen_record"] >> pref.gen_record - S["home_system"] >> pref.home_system - S["citizenship"] >> pref.citizenship - S["faction"] >> pref.faction - S["religion"] >> pref.religion - S["nanotrasen_relation"] >> pref.nanotrasen_relation + S["med_record"] >> pref.med_record + S["sec_record"] >> pref.sec_record + S["gen_record"] >> pref.gen_record + S["home_system"] >> pref.home_system + S["citizenship"] >> pref.citizenship + S["faction"] >> pref.faction + S["religion"] >> pref.religion + S["nanotrasen_relation"] >> pref.nanotrasen_relation /datum/category_item/player_setup_item/general/background/save_character(var/savefile/S) - S["med_record"] << pref.med_record - S["sec_record"] << pref.sec_record - S["gen_record"] << pref.gen_record - S["home_system"] << pref.home_system - S["citizenship"] << pref.citizenship - S["faction"] << pref.faction - S["religion"] << pref.religion - S["nanotrasen_relation"] << pref.nanotrasen_relation + S["med_record"] << pref.med_record + S["sec_record"] << pref.sec_record + S["gen_record"] << pref.gen_record + S["home_system"] << pref.home_system + S["citizenship"] << pref.citizenship + S["faction"] << pref.faction + S["religion"] << pref.religion + S["nanotrasen_relation"] << pref.nanotrasen_relation /datum/category_item/player_setup_item/general/background/gather_load_query() - return list("ss13_characters_flavour" = list("vars" = list("records_employment" = "gen_record", - "records_medical" = "med_record", - "records_security" = "sec_record", - "records_ccia" = "ccia_record"), - "args" = list("char_id")), - "ss13_characters" = list("vars" = list("nt_relation" = "nanotrasen_relation" ,"home_system", "citizenship", "faction", "religion"), "args" = list("id"))) + return list( + "ss13_characters_flavour" = list( + "vars" = list( + "records_employment" = "gen_record", + "records_medical" = "med_record", + "records_security" = "sec_record", + "records_ccia" = "ccia_record" + ), + "args" = list("char_id") + ), + "ss13_characters" = list( + "vars" = list( + "nt_relation" = "nanotrasen_relation", + "home_system", + "citizenship", + "faction", + "religion" + ), + "args" = list("id") + ) + ) /datum/category_item/player_setup_item/general/background/gather_load_parameters() - return list("id" = pref.current_character, "char_id" = pref.current_character) + return list( + "id" = pref.current_character, + "char_id" = pref.current_character + ) /datum/category_item/player_setup_item/general/background/gather_save_query() - return list("ss13_characters_flavour" = list("records_employment", - "records_medical", - "records_security", - "char_id" = 1), - "ss13_characters" = list("nt_relation", "home_system", "citizenship", "faction", "religion", "id" = 1, "ckey" = 1)) + return list( + "ss13_characters_flavour" = list( + "records_employment", + "records_medical", + "records_security", + "char_id" = 1 + ), + "ss13_characters" = list( + "nt_relation", + "home_system", + "citizenship", + "faction", + "religion","id" = 1, + "ckey" = 1 + ) + ) /datum/category_item/player_setup_item/general/background/gather_save_parameters() - return list("records_employment" = pref.gen_record, - "records_medical" = pref.med_record, - "records_security" = pref.sec_record, - "char_id" = pref.current_character, - "nt_relation" = pref.nanotrasen_relation, - "home_system" = pref.home_system, - "citizenship" = pref.citizenship, - "faction" = pref.faction, - "religion" = pref.religion, - "id" = pref.current_character, - "ckey" = pref.client.ckey) + return list( + "records_employment" = pref.gen_record, + "records_medical" = pref.med_record, + "records_security" = pref.sec_record, + "char_id" = pref.current_character, + "nt_relation" = pref.nanotrasen_relation, + "home_system" = pref.home_system, + "citizenship" = pref.citizenship, + "faction" = pref.faction, + "religion" = pref.religion, + "id" = pref.current_character, + "ckey" = pref.client.ckey + ) /datum/category_item/player_setup_item/general/background/sanitize_character() if(!pref.home_system) @@ -66,23 +97,27 @@ pref.nanotrasen_relation = sanitize_inlist(pref.nanotrasen_relation, COMPANY_ALIGNMENTS, initial(pref.nanotrasen_relation)) /datum/category_item/player_setup_item/general/background/content(var/mob/user) - . += "Background Information
" - . += "[company_name] Relation: [pref.nanotrasen_relation]
" - . += "Home System: [pref.home_system]
" - . += "Citizenship: [pref.citizenship]
" - . += "Faction: [pref.faction]
" - . += "Religion: [pref.religion]
" + var/list/dat = list( + "Background Information
", + "[company_name] Relation: [pref.nanotrasen_relation]
", + "Home System: [pref.home_system]
", + "Citizenship: [pref.citizenship]
", + "Faction: [pref.faction]
", + "Religion: [pref.religion]
", + "
Records:
" + ) - . += "
Records:
" if(jobban_isbanned(user, "Records")) - . += "You are banned from using character records.
" + dat += "You are banned from using character records.
" else - . += "Medical Records:
" - . += "[TextPreview(pref.med_record,40)]

" - . += "Employment Records:
" - . += "[TextPreview(pref.gen_record,40)]

" - . += "Security Records:
" - . += "[TextPreview(pref.sec_record,40)]
" + dat += "Medical Records:
" + dat += "[TextPreview(pref.med_record,40)]

" + dat += "Employment Records:
" + dat += "[TextPreview(pref.gen_record,40)]

" + dat += "Security Records:
" + dat += "[TextPreview(pref.sec_record,40)]
" + + . = dat.Join() /datum/category_item/player_setup_item/general/background/OnTopic(var/href,var/list/href_list, var/mob/user) if(href_list["nt_relation"]) diff --git a/code/modules/client/preference_setup/general/06_flavor.dm b/code/modules/client/preference_setup/general/06_flavor.dm index d5d1103b090..17df0f742c4 100644 --- a/code/modules/client/preference_setup/general/06_flavor.dm +++ b/code/modules/client/preference_setup/general/06_flavor.dm @@ -3,78 +3,87 @@ sort_order = 6 /datum/category_item/player_setup_item/general/flavor/load_character(var/savefile/S) - S["flavor_texts_general"] >> pref.flavor_texts["general"] - S["flavor_texts_head"] >> pref.flavor_texts["head"] - S["flavor_texts_face"] >> pref.flavor_texts["face"] - S["flavor_texts_eyes"] >> pref.flavor_texts["eyes"] - S["flavor_texts_torso"] >> pref.flavor_texts["torso"] - S["flavor_texts_arms"] >> pref.flavor_texts["arms"] - S["flavor_texts_hands"] >> pref.flavor_texts["hands"] - S["flavor_texts_legs"] >> pref.flavor_texts["legs"] - S["flavor_texts_feet"] >> pref.flavor_texts["feet"] + S["flavor_texts_general"] >> pref.flavor_texts["general"] + S["flavor_texts_head"] >> pref.flavor_texts["head"] + S["flavor_texts_face"] >> pref.flavor_texts["face"] + S["flavor_texts_eyes"] >> pref.flavor_texts["eyes"] + S["flavor_texts_torso"] >> pref.flavor_texts["torso"] + S["flavor_texts_arms"] >> pref.flavor_texts["arms"] + S["flavor_texts_hands"] >> pref.flavor_texts["hands"] + S["flavor_texts_legs"] >> pref.flavor_texts["legs"] + S["flavor_texts_feet"] >> pref.flavor_texts["feet"] //Flavour text for robots. S["flavour_texts_robot_Default"] >> pref.flavour_texts_robot["Default"] for(var/module in robot_module_types) S["flavour_texts_robot_[module]"] >> pref.flavour_texts_robot[module] - S["signature"] >> pref.signature - S["signfont"] >> pref.signfont + S["signature"] >> pref.signature + S["signfont"] >> pref.signfont /datum/category_item/player_setup_item/general/flavor/save_character(var/savefile/S) - S["flavor_texts_general"] << pref.flavor_texts["general"] - S["flavor_texts_head"] << pref.flavor_texts["head"] - S["flavor_texts_face"] << pref.flavor_texts["face"] - S["flavor_texts_eyes"] << pref.flavor_texts["eyes"] - S["flavor_texts_torso"] << pref.flavor_texts["torso"] - S["flavor_texts_arms"] << pref.flavor_texts["arms"] - S["flavor_texts_hands"] << pref.flavor_texts["hands"] - S["flavor_texts_legs"] << pref.flavor_texts["legs"] - S["flavor_texts_feet"] << pref.flavor_texts["feet"] + S["flavor_texts_general"] << pref.flavor_texts["general"] + S["flavor_texts_head"] << pref.flavor_texts["head"] + S["flavor_texts_face"] << pref.flavor_texts["face"] + S["flavor_texts_eyes"] << pref.flavor_texts["eyes"] + S["flavor_texts_torso"] << pref.flavor_texts["torso"] + S["flavor_texts_arms"] << pref.flavor_texts["arms"] + S["flavor_texts_hands"] << pref.flavor_texts["hands"] + S["flavor_texts_legs"] << pref.flavor_texts["legs"] + S["flavor_texts_feet"] << pref.flavor_texts["feet"] S["flavour_texts_robot_Default"] << pref.flavour_texts_robot["Default"] for(var/module in robot_module_types) S["flavour_texts_robot_[module]"] << pref.flavour_texts_robot[module] - S["signature"] << pref.signature - S["signfont"] << pref.signfont + S["signature"] << pref.signature + S["signfont"] << pref.signfont /datum/category_item/player_setup_item/general/flavor/gather_load_query() - var/list/var_list = list("flavour_general" = "flavor_texts/general", - "flavour_head" = "flavor_texts/head", - "flavour_face" = "flavor_texts/face", - "flavour_eyes" = "flavor_texts/eyes", - "flavour_torso" = "flavor_texts/torso", - "flavour_arms" = "flavor_texts/arms", - "flavour_hands" = "flavor_texts/hands", - "flavour_legs" = "flavor_texts/legs", - "flavour_feet" = "flavor_texts/feet", - "robot_default" = "flavour_texts_robot/Default", - "signature" = "signature", - "signature_font" = "signfont") + var/list/var_list = list( + "flavour_general" = "flavor_texts/general", + "flavour_head" = "flavor_texts/head", + "flavour_face" = "flavor_texts/face", + "flavour_eyes" = "flavor_texts/eyes", + "flavour_torso" = "flavor_texts/torso", + "flavour_arms" = "flavor_texts/arms", + "flavour_hands" = "flavor_texts/hands", + "flavour_legs" = "flavor_texts/legs", + "flavour_feet" = "flavor_texts/feet", + "robot_default" = "flavour_texts_robot/Default", + "signature" = "signature", + "signature_font" = "signfont" + ) for (var/module in robot_module_types) var_list["robot_[module]"] = "flavour_texts_robot/[module]" - return list("ss13_characters_flavour" = list("vars" = var_list, "args" = list("char_id"))) + return list( + "ss13_characters_flavour" = list( + "vars" = var_list, + "args" = list("char_id") + ) + ) /datum/category_item/player_setup_item/general/flavor/gather_load_parameters() return list("char_id" = pref.current_character) /datum/category_item/player_setup_item/general/flavor/gather_save_query() - var/list/var_list = list("flavour_general", - "flavour_head", - "flavour_face", - "flavour_eyes", - "flavour_torso", - "flavour_arms", - "flavour_hands", - "flavour_legs", - "flavour_feet", - "robot_default", - "signature", - "signature_font", - "char_id" = 1) + var/list/var_list = list( + "flavour_general", + "flavour_head", + "flavour_face", + "flavour_eyes", + "flavour_torso", + "flavour_arms", + "flavour_hands", + "flavour_legs", + "flavour_feet", + "robot_default", + "signature", + "signature_font", + "char_id" = 1 + ) for (var/module in robot_module_types) var_list += "robot_[module]" @@ -82,19 +91,21 @@ return list("ss13_characters_flavour" = var_list) /datum/category_item/player_setup_item/general/flavor/gather_save_parameters() - var/list/var_list = list("char_id" = pref.current_character, - "flavour_general" = pref.flavor_texts["general"], - "flavour_head" = pref.flavor_texts["head"], - "flavour_face" = pref.flavor_texts["face"], - "flavour_eyes" = pref.flavor_texts["eyes"], - "flavour_torso" = pref.flavor_texts["torso"], - "flavour_arms" = pref.flavor_texts["arms"], - "flavour_hands" = pref.flavor_texts["hands"], - "flavour_legs" = pref.flavor_texts["legs"], - "flavour_feet" = pref.flavor_texts["feet"], - "robot_default" = pref.flavour_texts_robot["Default"], - "signature" = pref.signature, - "signature_font" = pref.signfont) + var/list/var_list = list( + "char_id" = pref.current_character, + "flavour_general" = pref.flavor_texts["general"], + "flavour_head" = pref.flavor_texts["head"], + "flavour_face" = pref.flavor_texts["face"], + "flavour_eyes" = pref.flavor_texts["eyes"], + "flavour_torso" = pref.flavor_texts["torso"], + "flavour_arms" = pref.flavor_texts["arms"], + "flavour_hands" = pref.flavor_texts["hands"], + "flavour_legs" = pref.flavor_texts["legs"], + "flavour_feet" = pref.flavor_texts["feet"], + "robot_default" = pref.flavour_texts_robot["Default"], + "signature" = pref.signature, + "signature_font" = pref.signfont + ) for (var/module in robot_module_types) var_list["robot_[module]"] += pref.flavour_texts_robot[module] @@ -108,15 +119,18 @@ pref.signfont = "Verdana" /datum/category_item/player_setup_item/general/flavor/content(var/mob/user) - . += "Flavor:
" - . += "Set Flavor Text
" - . += "Set Robot Flavor Text
" - . += "
" - . += "Signature: [pref.signature]
" - . += "Edit Text | " - . += "Edit Font | " - . += "Help | " - . += "Reset
" + var/list/dat = list( + "Flavor:
", + "Set Flavor Text
", + "Set Robot Flavor Text
", + "
", + "Signature: [pref.signature]
", + "Edit Text | ", + "Edit Font | ", + "Help | ", + "Reset
" + ) + . = dat.Join() /datum/category_item/player_setup_item/general/flavor/OnTopic(var/href,var/list/href_list, var/mob/user) if(href_list["flavor_text"]) diff --git a/code/modules/client/preference_setup/global/01_ui.dm b/code/modules/client/preference_setup/global/01_ui.dm index 11854cb25d3..0ea67c910df 100644 --- a/code/modules/client/preference_setup/global/01_ui.dm +++ b/code/modules/client/preference_setup/global/01_ui.dm @@ -3,47 +3,74 @@ sort_order = 1 /datum/category_item/player_setup_item/player_global/ui/load_preferences(var/savefile/S) - S["UI_style"] >> pref.UI_style - S["UI_style_color"] >> pref.UI_style_color - S["UI_style_alpha"] >> pref.UI_style_alpha - S["ooccolor"] >> pref.ooccolor + S["UI_style"] >> pref.UI_style + S["UI_style_color"] >> pref.UI_style_color + S["UI_style_alpha"] >> pref.UI_style_alpha + S["ooccolor"] >> pref.ooccolor /datum/category_item/player_setup_item/player_global/ui/save_preferences(var/savefile/S) - S["UI_style"] << pref.UI_style - S["UI_style_color"] << pref.UI_style_color - S["UI_style_alpha"] << pref.UI_style_alpha - S["ooccolor"] << pref.ooccolor + S["UI_style"] << pref.UI_style + S["UI_style_color"] << pref.UI_style_color + S["UI_style_alpha"] << pref.UI_style_alpha + S["ooccolor"] << pref.ooccolor /datum/category_item/player_setup_item/player_global/ui/gather_load_query() - return list("ss13_player_preferences" = list("vars" = list("UI_style", "UI_style_color", "UI_style_alpha", "ooccolor"), "args" = list("ckey"))) + return list( + "ss13_player_preferences" = list( + "vars" = list( + "UI_style", + "UI_style_color", + "UI_style_alpha", + "ooccolor" + ), + "args" = list("ckey") + ) + ) /datum/category_item/player_setup_item/player_global/ui/gather_load_parameters() return list("ckey" = pref.client.ckey) /datum/category_item/player_setup_item/player_global/ui/gather_save_query() - return list("ss13_player_preferences" = list("UI_style", "UI_style_color", "UI_style_alpha", "ooccolor", "ckey" = 1)) + return list( + "ss13_player_preferences" = list( + "UI_style", + "UI_style_color", + "UI_style_alpha", + "ooccolor", + "ckey" = 1 + ) + ) /datum/category_item/player_setup_item/player_global/ui/gather_save_parameters() - return list("ckey" = pref.client.ckey, "UI_style_alpha" = pref.UI_style_alpha, "UI_style_color" = pref.UI_style_color, "UI_style" = pref.UI_style, "ooccolor" = pref.ooccolor) + return list( + "ckey" = pref.client.ckey, + "UI_style_alpha" = pref.UI_style_alpha, + "UI_style_color" = pref.UI_style_color, + "UI_style" = pref.UI_style, + "ooccolor" = pref.ooccolor + ) /datum/category_item/player_setup_item/player_global/ui/sanitize_preferences() - pref.UI_style = sanitize_inlist(pref.UI_style, all_ui_styles, initial(pref.UI_style)) - pref.UI_style_color = sanitize_hexcolor(pref.UI_style_color, initial(pref.UI_style_color)) - pref.UI_style_alpha = sanitize_integer(text2num(pref.UI_style_alpha), 0, 255, initial(pref.UI_style_alpha)) - pref.ooccolor = sanitize_hexcolor(pref.ooccolor, initial(pref.ooccolor)) + pref.UI_style = sanitize_inlist(pref.UI_style, all_ui_styles, initial(pref.UI_style)) + pref.UI_style_color = sanitize_hexcolor(pref.UI_style_color, initial(pref.UI_style_color)) + pref.UI_style_alpha = sanitize_integer(text2num(pref.UI_style_alpha), 0, 255, initial(pref.UI_style_alpha)) + pref.ooccolor = sanitize_hexcolor(pref.ooccolor, initial(pref.ooccolor)) -/datum/category_item/player_setup_item/player_global/ui/content(var/mob/user) - . += "UI Settings
" - . += "UI Style: [pref.UI_style]
" - . += "Custom UI (recommended for White UI):
" - . += "-Color: [pref.UI_style_color]
__
reset
" - . += "-Alpha(transparency): [pref.UI_style_alpha]reset
" +/datum/category_item/player_setup_item/player_global/ui/content(mob/user) + var/list/dat = list() + dat += "UI Settings
" + dat += "UI Style: [pref.UI_style]
" + dat += "Custom UI (recommended for White UI):
" + dat += "-Color: [pref.UI_style_color] [HTML_RECT(pref.UI_style_color)] - reset
" + dat += "-Alpha(transparency): [pref.UI_style_alpha] - reset
" if(can_select_ooc_color(user)) - . += "OOC Color:�" + dat += "OOC Color: " if(pref.ooccolor == initial(pref.ooccolor)) - . += "Using Default
" + dat += "Using Default
" else - . += "[pref.ooccolor]
__
reset
" + dat += "[pref.ooccolor] [HTML_RECT(pref.ooccolor)] - reset
" + + . = dat.Join() /datum/category_item/player_setup_item/player_global/ui/OnTopic(var/href,var/list/href_list, var/mob/user) if(href_list["select_style"]) diff --git a/code/modules/client/preference_setup/global/02_settings.dm b/code/modules/client/preference_setup/global/02_settings.dm index ba0f8c48991..1f7568e1c8d 100644 --- a/code/modules/client/preference_setup/global/02_settings.dm +++ b/code/modules/client/preference_setup/global/02_settings.dm @@ -3,68 +3,98 @@ sort_order = 2 /datum/category_item/player_setup_item/player_global/settings/load_preferences(var/savefile/S) - S["lastchangelog"] >> pref.lastchangelog - S["default_slot"] >> pref.default_slot - S["toggles"] >> pref.toggles - S["asfx_togs"] >> pref.asfx_togs - S["motd_hash"] >> pref.motd_hash - S["memo_hash"] >> pref.memo_hash - S["parallax_speed"] >> pref.parallax_speed - S["parallax_toggles"] >> pref.parallax_togs + S["lastchangelog"] >> pref.lastchangelog + S["default_slot"] >> pref.default_slot + S["toggles"] >> pref.toggles + S["asfx_togs"] >> pref.asfx_togs + S["motd_hash"] >> pref.motd_hash + S["memo_hash"] >> pref.memo_hash + S["parallax_speed"] >> pref.parallax_speed + S["parallax_toggles"] >> pref.parallax_togs /datum/category_item/player_setup_item/player_global/settings/save_preferences(var/savefile/S) - S["lastchangelog"] << pref.lastchangelog - S["default_slot"] << pref.default_slot - S["toggles"] << pref.toggles - S["asfx_togs"] << pref.asfx_togs - S["motd_hash"] << pref.motd_hash - S["memo_hash"] << pref.memo_hash - S["parallax_speed"] << pref.parallax_speed + S["lastchangelog"] << pref.lastchangelog + S["default_slot"] << pref.default_slot + S["toggles"] << pref.toggles + S["asfx_togs"] << pref.asfx_togs + S["motd_hash"] << pref.motd_hash + S["memo_hash"] << pref.memo_hash + S["parallax_speed"] << pref.parallax_speed S["parallax_toggles"] << pref.parallax_togs /datum/category_item/player_setup_item/player_global/settings/gather_load_query() - return list("ss13_player_preferences" = list("vars" = list("lastchangelog", "current_character", "toggles", "asfx_togs", "lastmotd" = "motd_hash", "lastmemo" = "memo_hash"), "args" = list("ckey"))) + return list( + "ss13_player_preferences" = list( + "vars" = list( + "lastchangelog", + "current_character", + "toggles", + "asfx_togs", + "lastmotd" = "motd_hash", + "lastmemo" = "memo_hash" + ), + "args" = list("ckey") + ) + ) /datum/category_item/player_setup_item/player_global/settings/gather_load_parameters() return list("ckey" = pref.client.ckey) /datum/category_item/player_setup_item/player_global/settings/gather_save_query() - return list("ss13_player_preferences" = list("lastchangelog", "current_character", "toggles", "asfx_togs", "lastmotd", "lastmemo", "ckey" = 1, "parallax_toggles", "parallax_speed")) + return list( + "ss13_player_preferences" = list( + "lastchangelog", + "current_character", + "toggles", + "asfx_togs", + "lastmotd", + "lastmemo", + "ckey" = 1, + "parallax_toggles", + "parallax_speed" + ) + ) /datum/category_item/player_setup_item/player_global/settings/gather_save_parameters() - return list("ckey" = pref.client.ckey, - "lastchangelog" = pref.lastchangelog, - "current_character" = pref.current_character, - "toggles" = pref.toggles, - "asfx_togs" = pref.asfx_togs, - "lastmotd" = pref.motd_hash, - "lastmemo" = pref.memo_hash, - "parallax_toggles" = pref.parallax_togs, - "parallax_speed" = pref.parallax_speed) + return list( + "ckey" = pref.client.ckey, + "lastchangelog" = pref.lastchangelog, + "current_character" = pref.current_character, + "toggles" = pref.toggles, + "asfx_togs" = pref.asfx_togs, + "lastmotd" = pref.motd_hash, + "lastmemo" = pref.memo_hash, + "parallax_toggles" = pref.parallax_togs, + "parallax_speed" = pref.parallax_speed + ) /datum/category_item/player_setup_item/player_global/settings/sanitize_preferences(var/sql_load = 0) if (sql_load) pref.current_character = text2num(pref.current_character) - pref.lastchangelog = sanitize_text(pref.lastchangelog, initial(pref.lastchangelog)) - pref.default_slot = sanitize_integer(text2num(pref.default_slot), 1, config.character_slots, initial(pref.default_slot)) - pref.toggles = sanitize_integer(text2num(pref.toggles), 0, 65535, initial(pref.toggles)) - pref.asfx_togs = sanitize_integer(text2num(pref.asfx_togs), 0, 65535, initial(pref.toggles)) - pref.motd_hash = sanitize_text(pref.motd_hash, initial(pref.motd_hash)) - pref.memo_hash = sanitize_text(pref.memo_hash, initial(pref.memo_hash)) + pref.lastchangelog = sanitize_text(pref.lastchangelog, initial(pref.lastchangelog)) + pref.default_slot = sanitize_integer(text2num(pref.default_slot), 1, config.character_slots, initial(pref.default_slot)) + pref.toggles = sanitize_integer(text2num(pref.toggles), 0, 65535, initial(pref.toggles)) + pref.asfx_togs = sanitize_integer(text2num(pref.asfx_togs), 0, 65535, initial(pref.toggles)) + pref.motd_hash = sanitize_text(pref.motd_hash, initial(pref.motd_hash)) + pref.memo_hash = sanitize_text(pref.memo_hash, initial(pref.memo_hash)) pref.parallax_speed = sanitize_integer(text2num(pref.parallax_speed), 1, 10, initial(pref.parallax_speed)) pref.parallax_togs = sanitize_integer(text2num(pref.parallax_togs), 0, 65535, initial(pref.parallax_togs)) -/datum/category_item/player_setup_item/player_global/settings/content(var/mob/user) - . += "Play admin midis: [(pref.toggles & SOUND_MIDI) ? "Yes" : "No"]
" - . += "Play lobby music: [(pref.toggles & SOUND_LOBBY) ? "Yes" : "No"]
" - . += "Ghost ears: [(pref.toggles & CHAT_GHOSTEARS) ? "All Speech" : "Nearest Creatures"]
" - . += "Ghost sight: [(pref.toggles & CHAT_GHOSTSIGHT) ? "All Emotes" : "Nearest Creatures"]
" - . += "Ghost radio: [(pref.toggles & CHAT_GHOSTRADIO) ? "All Chatter" : "Nearest Speakers"]
" - . += "Space Parallax: [(pref.parallax_togs & PARALLAX_SPACE) ? "Yes" : "No"]
" - . += "Space Dust: [(pref.parallax_togs & PARALLAX_DUST) ? "Yes" : "No"]
" - . += "Progress Bars: [(pref.parallax_togs & PROGRESS_BARS) ? "Yes" : "No"]
" - . += "Static Space: [(pref.parallax_togs & PARALLAX_IS_STATIC) ? "Yes" : "No"]
" +/datum/category_item/player_setup_item/player_global/settings/content(mob/user) + var/list/dat = list( + "Play admin midis: [(pref.toggles & SOUND_MIDI) ? "Yes" : "No"]
", + "Play lobby music: [(pref.toggles & SOUND_LOBBY) ? "Yes" : "No"]
", + "Ghost ears: [(pref.toggles & CHAT_GHOSTEARS) ? "All Speech" : "Nearest Creatures"]
", + "Ghost sight: [(pref.toggles & CHAT_GHOSTSIGHT) ? "All Emotes" : "Nearest Creatures"]
", + "Ghost radio: [(pref.toggles & CHAT_GHOSTRADIO) ? "All Chatter" : "Nearest Speakers"]
", + "Space Parallax: [(pref.parallax_togs & PARALLAX_SPACE) ? "Yes" : "No"]
", + "Space Dust: [(pref.parallax_togs & PARALLAX_DUST) ? "Yes" : "No"]
", + "Progress Bars: [(pref.parallax_togs & PROGRESS_BARS) ? "Yes" : "No"]
", + "Static Space: [(pref.parallax_togs & PARALLAX_IS_STATIC) ? "Yes" : "No"]
" + ) + + . = dat.Join() /datum/category_item/player_setup_item/player_global/settings/OnTopic(var/href,var/list/href_list, var/mob/user) if(href_list["toggle"]) diff --git a/code/modules/client/preference_setup/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm index 7d11f5b490e..2f50da219e3 100644 --- a/code/modules/client/preference_setup/occupation/occupation.dm +++ b/code/modules/client/preference_setup/occupation/occupation.dm @@ -34,26 +34,51 @@ S["player_alt_titles"] << pref.player_alt_titles /datum/category_item/player_setup_item/occupation/gather_load_query() - return list("ss13_characters" = list("vars" = list("jobs" = "unsanitized_jobs", "alternate_option", "alternate_titles" = "player_alt_titles"), "args" = list("id"))) + return list( + "ss13_characters" = list( + "vars" = list( + "jobs" = "unsanitized_jobs", + "alternate_option", + "alternate_titles" = "player_alt_titles" + ), + "args" = list("id") + ) + ) /datum/category_item/player_setup_item/occupation/gather_load_parameters() return list("id" = pref.current_character) /datum/category_item/player_setup_item/occupation/gather_save_query() - return list("ss13_characters" = list("jobs", "alternate_option", "alternate_titles", "id" = 1, "ckey" = 1)) + return list( + "ss13_characters" = list( + "jobs", + "alternate_option", + "alternate_titles", + "id" = 1, + "ckey" = 1 + ) + ) /datum/category_item/player_setup_item/occupation/gather_save_parameters() - var/list/compiled_jobs = list("job_civilian_high" = pref.job_civilian_high, - "job_civilian_med" = pref.job_civilian_med, - "job_civilian_low" = pref.job_civilian_low, - "job_medsci_high" = pref.job_medsci_high, - "job_medsci_med" = pref.job_medsci_med, - "job_medsci_low" = pref.job_medsci_low, - "job_engsec_high" = pref.job_engsec_high, - "job_engsec_med" = pref.job_engsec_med, - "job_engsec_low" = pref.job_engsec_low) + var/list/compiled_jobs = list( + "job_civilian_high" = pref.job_civilian_high, + "job_civilian_med" = pref.job_civilian_med, + "job_civilian_low" = pref.job_civilian_low, + "job_medsci_high" = pref.job_medsci_high, + "job_medsci_med" = pref.job_medsci_med, + "job_medsci_low" = pref.job_medsci_low, + "job_engsec_high" = pref.job_engsec_high, + "job_engsec_med" = pref.job_engsec_med, + "job_engsec_low" = pref.job_engsec_low + ) - return list("jobs" = list2params(compiled_jobs), "alternate_option" = pref.alternate_option, "alternate_titles" = list2params(pref.player_alt_titles), "id" = pref.current_character, "ckey" = pref.client.ckey) + return list( + "jobs" = list2params(compiled_jobs), + "alternate_option" = pref.alternate_option, + "alternate_titles" = list2params(pref.player_alt_titles), + "id" = pref.current_character, + "ckey" = pref.client.ckey + ) /datum/category_item/player_setup_item/occupation/sanitize_character(var/sql_load = 0) if (sql_load) @@ -82,16 +107,16 @@ log_debug("LOADING: Bad job preference key: [preference].") log_debug(e.desc) - pref.alternate_option = sanitize_integer(text2num(pref.alternate_option), 0, 2, initial(pref.alternate_option)) - pref.job_civilian_high = sanitize_integer(text2num(pref.job_civilian_high), 0, 65535, initial(pref.job_civilian_high)) - pref.job_civilian_med = sanitize_integer(text2num(pref.job_civilian_med), 0, 65535, initial(pref.job_civilian_med)) - pref.job_civilian_low = sanitize_integer(text2num(pref.job_civilian_low), 0, 65535, initial(pref.job_civilian_low)) - pref.job_medsci_high = sanitize_integer(text2num(pref.job_medsci_high), 0, 65535, initial(pref.job_medsci_high)) - pref.job_medsci_med = sanitize_integer(text2num(pref.job_medsci_med), 0, 65535, initial(pref.job_medsci_med)) - pref.job_medsci_low = sanitize_integer(text2num(pref.job_medsci_low), 0, 65535, initial(pref.job_medsci_low)) - pref.job_engsec_high = sanitize_integer(text2num(pref.job_engsec_high), 0, 65535, initial(pref.job_engsec_high)) - pref.job_engsec_med = sanitize_integer(text2num(pref.job_engsec_med), 0, 65535, initial(pref.job_engsec_med)) - pref.job_engsec_low = sanitize_integer(text2num(pref.job_engsec_low), 0, 65535, initial(pref.job_engsec_low)) + pref.alternate_option = sanitize_integer(text2num(pref.alternate_option), 0, 2, initial(pref.alternate_option)) + pref.job_civilian_high = sanitize_integer(text2num(pref.job_civilian_high), 0, 65535, initial(pref.job_civilian_high)) + pref.job_civilian_med = sanitize_integer(text2num(pref.job_civilian_med), 0, 65535, initial(pref.job_civilian_med)) + pref.job_civilian_low = sanitize_integer(text2num(pref.job_civilian_low), 0, 65535, initial(pref.job_civilian_low)) + pref.job_medsci_high = sanitize_integer(text2num(pref.job_medsci_high), 0, 65535, initial(pref.job_medsci_high)) + pref.job_medsci_med = sanitize_integer(text2num(pref.job_medsci_med), 0, 65535, initial(pref.job_medsci_med)) + pref.job_medsci_low = sanitize_integer(text2num(pref.job_medsci_low), 0, 65535, initial(pref.job_medsci_low)) + pref.job_engsec_high = sanitize_integer(text2num(pref.job_engsec_high), 0, 65535, initial(pref.job_engsec_high)) + pref.job_engsec_med = sanitize_integer(text2num(pref.job_engsec_med), 0, 65535, initial(pref.job_engsec_med)) + pref.job_engsec_low = sanitize_integer(text2num(pref.job_engsec_low), 0, 65535, initial(pref.job_engsec_low)) if (!pref.player_alt_titles) pref.player_alt_titles = new() @@ -102,89 +127,91 @@ pref.player_alt_titles -= job.title /datum/category_item/player_setup_item/occupation/content(mob/user, limit = 16, list/splitJobs = list("Chief Medical Officer")) - - . += "
" - . += "Choose occupation chances
Unavailable occupations are crossed out.
" - . += "
" // Table within a table for alignment, also allows you to easily add more colomns. - . += "" + var/list/dat = list( + "
", + "Choose occupation chances
Unavailable occupations are crossed out.
", + "
", // Table within a table for alignment, also allows you to easily add more colomns. + "" + ) var/index = -1 //The job before the current job. I only use this to get the previous jobs color when I'm filling in blank rows. var/datum/job/lastJob for(var/datum/job/job in SSjobs.occupations) - index += 1 if((index >= limit) || (job.title in splitJobs)) if((index < limit) && (lastJob != null)) //If the cells were broken up by a job in the splitJob list then it will fill in the rest of the cells with //the last job's selection color. Creating a rather nice effect. for(var/i = 0, i < (limit - index), i += 1) - . += "" - . += "
  
" + dat += "" + dat += "
  
" index = 0 - . += "" + dat += "[rank]" continue else if (ban_reason == "AGE WHITELISTED") var/available_in_days = player_old_enough_for_role(user.client, rank) - . += "[rank]" + dat += "[rank]" continue else if (ban_reason) - . += "[rank]" + dat += "[rank]" continue if((pref.job_civilian_low & ASSISTANT) && (rank != "Assistant")) - . += "[rank]" + dat += "[rank]" continue if((rank in command_positions) || (rank == "AI"))//Bold head jobs - . += "[rank]" + dat += "[rank]" else - . += "[rank]" + dat += "[rank]" - . += "" - . += "" + dat += "" + dat += "" continue if(pref.GetJobDepartment(job, 1) & job.flag) - . += " \[High]" + dat += " \[High]" else if(pref.GetJobDepartment(job, 2) & job.flag) - . += " \[Medium]" + dat += " \[Medium]" else if(pref.GetJobDepartment(job, 3) & job.flag) - . += " \[Low]" + dat += " \[Low]" else - . += " \[NEVER]" + dat += " \[NEVER]" if(job.alt_titles) - . += "" - . += "" + dat += "" + dat += "" - . += "
" + dat += "
" var/rank = job.title lastJob = job var/ban_reason = jobban_isbanned(user, rank) if(ban_reason == "WHITELISTED") - . += "[rank] \[WHITELISTED]
\[WHITELISTED]
\[IN [(available_in_days)] DAYS]
\[IN [(available_in_days)] DAYS]
\[BANNED]
\[BANNED]
" + dat += "" - . += "" + dat += "" if(rank == "Assistant")//Assistant is special if(pref.job_civilian_low & ASSISTANT) - . += " \[Yes]" + dat += " \[Yes]" else - . += " \[No]" + dat += " \[No]" if(job.alt_titles) //Blatantly cloned from a few lines down. - . += "
 \[[pref.GetPlayerAltTitle(job)]\]
 \[[pref.GetPlayerAltTitle(job)]\]
 \[[pref.GetPlayerAltTitle(job)]\]
 \[[pref.GetPlayerAltTitle(job)]\]
" + dat += "
" - . += "
" + dat += "
" switch(pref.alternate_option) if(GET_RANDOM_JOB) - . += "

Get random job if preferences unavailable

" + dat += "

Get random job if preferences unavailable

" if(BE_ASSISTANT) - . += "

Be assistant if preference unavailable

" + dat += "

Be assistant if preference unavailable

" if(RETURN_TO_LOBBY) - . += "

Return to lobby if preference unavailable

" + dat += "

Return to lobby if preference unavailable

" - . += "
\[Reset\]
" - . += "" + dat += "
\[Reset\]
" + dat += "" + + . = dat.Join() /datum/category_item/player_setup_item/occupation/OnTopic(href, href_list, user) if(href_list["reset_jobs"]) diff --git a/code/modules/client/preference_setup/other/01_incidents.dm b/code/modules/client/preference_setup/other/01_incidents.dm index f764373ca0e..ab09f454992 100644 --- a/code/modules/client/preference_setup/other/01_incidents.dm +++ b/code/modules/client/preference_setup/other/01_incidents.dm @@ -61,27 +61,30 @@ infraction.felony = text2num(char_infraction_query.item[11]) pref.incidents.Add(infraction) -/datum/category_item/player_setup_item/other/incidents/content(var/mob/user) - pref.incidents = list() - . += "Incident Information
" - . += "The following incidents are on file for your character
" +/datum/category_item/player_setup_item/other/incidents/content(mob/user) + var/list/dat = list( + "Incident Information
", + "The following incidents are on file for your character
" + ) for (var/datum/char_infraction/I in pref.incidents) - . += "
" - . += "UID: [I.UID]
" - . += "Date/Time: [I.datetime]
" - . += "Charges: " + dat += "
" + dat += "UID: [I.UID]
" + dat += "Date/Time: [I.datetime]
" + dat += "Charges: " for (var/L in I.charges) - . += "[L], " + dat += "[L], " if (I.fine == 0) - . += "
Brig Sentence: [I.getBrigSentence()]
" + dat += "
Brig Sentence: [I.getBrigSentence()]
" else - . += "Fine: [I.fine] Credits
" - . += "Notes:
" + dat += "Fine: [I.fine] Credits
" + dat += "Notes:
" if (I.notes != "") - . += nl2br(I.notes) + dat += nl2br(I.notes) else - . += "- No Summary Entered -" - . += "
Show Details
Delete Incident" + dat += "- No Summary Entered -" + dat += "
Show Details
Delete Incident" + + . = dat.Join() /datum/category_item/player_setup_item/other/incidents/OnTopic(var/href,var/list/href_list, var/mob/user) if(href_list["del_sec_incident"]) diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm index 724b348e64a..4e8fd3a99f7 100644 --- a/code/modules/client/preference_setup/preference_setup.dm +++ b/code/modules/client/preference_setup/preference_setup.dm @@ -7,6 +7,9 @@ #define SQL_CHARACTER 0x1 #define SQL_PREFERENCES 0x2 +// General-purpose helper for drawing a colored box. +#define HTML_RECT(color) " 
 " + /datum/category_group/player_setup_category/general_preferences name = "General" sort_order = 1 diff --git a/code/modules/client/preference_setup/skills/skills.dm b/code/modules/client/preference_setup/skills/skills.dm index 169e003d0ba..33df0627a48 100644 --- a/code/modules/client/preference_setup/skills/skills.dm +++ b/code/modules/client/preference_setup/skills/skills.dm @@ -3,26 +3,46 @@ sort_order = 1 /datum/category_item/player_setup_item/skills/load_character(var/savefile/S) - S["skills"] >> pref.skills - S["used_skillpoints"] >> pref.used_skillpoints - S["skill_specialization"] >> pref.skill_specialization + S["skills"] >> pref.skills + S["used_skillpoints"] >> pref.used_skillpoints + S["skill_specialization"] >> pref.skill_specialization /datum/category_item/player_setup_item/skills/save_character(var/savefile/S) - S["skills"] << pref.skills - S["used_skillpoints"] << pref.used_skillpoints - S["skill_specialization"] << pref.skill_specialization + S["skills"] << pref.skills + S["used_skillpoints"] << pref.used_skillpoints + S["skill_specialization"] << pref.skill_specialization /datum/category_item/player_setup_item/skills/gather_load_query() - return list("ss13_characters" = list("vars" = list("skills", "skill_specialization"), "args" = list("id"))) + return list( + "ss13_characters" = list( + "vars" = list( + "skills", + "skill_specialization" + ), + "args" = list("id") + ) + ) /datum/category_item/player_setup_item/skills/gather_load_parameters() return list("id" = pref.current_character) /datum/category_item/player_setup_item/skills/gather_save_query() - return list("ss13_characters" = list("skills", "skill_specialization", "id" = 1, "ckey" = 1)) + return list( + "ss13_characters" = list( + "skills", + "skill_specialization", + "id" = 1, + "ckey" = 1 + ) + ) /datum/category_item/player_setup_item/skills/gather_save_parameters() - return list("skills" = list2params(pref.skills), "skill_specialization" = pref.skill_specialization, "id" = pref.current_character, "ckey" = pref.client.ckey) + return list( + "skills" = list2params(pref.skills), + "skill_specialization" = pref.skill_specialization, + "id" = pref.current_character, + "ckey" = pref.client.ckey + ) /datum/category_item/player_setup_item/skills/sanitize_character(var/sql_load = 0) if (SKILLS == null) @@ -45,27 +65,30 @@ pref.used_skillpoints = 0 /datum/category_item/player_setup_item/skills/content() - . += "Select your Skills
" - . += "Current skill level: [pref.GetSkillClass(pref.used_skillpoints)] ([pref.used_skillpoints])
" - . += "Use preconfigured skillset
" - . += "" + var/list/dat = list( + "Select your Skills
", + "Current skill level: [pref.GetSkillClass(pref.used_skillpoints)] ([pref.used_skillpoints])
", + "Use preconfigured skillset
", + "
" + ) for(var/V in SKILLS) - . += "" + dat += "" for(var/datum/skill/S in SKILLS[V]) var/level = pref.skills[S.ID] - . += "" - . += "" - . += "" + dat += "" + dat += "" + dat += "" // secondary skills don't have an amateur level if(S.secondary) - . += "" + dat += "" else - . += "" - . += "" - . += "" - . += "" - . += "
[V]" - . += "
[V]" + dat += "
[S.name]\[Untrained\]
[S.name]\[Untrained\]\[Amateur\]\[Trained\]\[Professional\]
" + dat += "
\[Amateur\]\[Trained\]\[Professional\]
" + . = dat.Join() /datum/category_item/player_setup_item/skills/OnTopic(href, href_list, user) if(href_list["skillinfo"])