Revert "Merge pull request #16240 from ShadowLarkens/revert"

This reverts commit 885171f985, reversing
changes made to 3e314f8064.
This commit is contained in:
ShadowLarkens
2024-09-01 13:12:20 -07:00
parent 49dda94177
commit f9052dbb60
186 changed files with 5029 additions and 2255 deletions
@@ -4,17 +4,17 @@ var/global/list/uplink_locations = list("PDA", "Headset", "None")
name = "Basic"
sort_order = 1
/datum/category_item/player_setup_item/antagonism/basic/load_character(var/savefile/S)
S["uplinklocation"] >> pref.uplinklocation
S["exploit_record"] >> pref.exploit_record
S["antag_faction"] >> pref.antag_faction
S["antag_vis"] >> pref.antag_vis
/datum/category_item/player_setup_item/antagonism/basic/load_character(list/save_data)
pref.uplinklocation = save_data["uplinklocation"]
pref.exploit_record = save_data["exploit_record"]
pref.antag_faction = save_data["antag_faction"]
pref.antag_vis = save_data["antag_vis"]
/datum/category_item/player_setup_item/antagonism/basic/save_character(var/savefile/S)
S["uplinklocation"] << pref.uplinklocation
S["exploit_record"] << pref.exploit_record
S["antag_faction"] << pref.antag_faction
S["antag_vis"] << pref.antag_vis
/datum/category_item/player_setup_item/antagonism/basic/save_character(list/save_data)
save_data["uplinklocation"] = pref.uplinklocation
save_data["exploit_record"] = pref.exploit_record
save_data["antag_faction"] = pref.antag_faction
save_data["antag_vis"] = pref.antag_vis
/datum/category_item/player_setup_item/antagonism/basic/sanitize_character()
pref.uplinklocation = sanitize_inlist(pref.uplinklocation, uplink_locations, initial(pref.uplinklocation))
@@ -31,11 +31,11 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
name = "Candidacy"
sort_order = 2
/datum/category_item/player_setup_item/antagonism/candidacy/load_character(var/savefile/S)
S["be_special"] >> pref.be_special
/datum/category_item/player_setup_item/antagonism/candidacy/load_character(list/save_data)
pref.be_special = save_data["be_special"]
/datum/category_item/player_setup_item/antagonism/candidacy/save_character(var/savefile/S)
S["be_special"] << pref.be_special
/datum/category_item/player_setup_item/antagonism/candidacy/save_character(list/save_data)
save_data["be_special"] = pref.be_special
/datum/category_item/player_setup_item/antagonism/candidacy/sanitize_character()
pref.be_special = sanitize_integer(pref.be_special, 0, 16777215, initial(pref.be_special)) //VOREStation Edit - 24 bits of support
@@ -10,37 +10,37 @@
name = "Basic"
sort_order = 1
/datum/category_item/player_setup_item/general/basic/load_character(var/savefile/S)
S["real_name"] >> pref.real_name
S["nickname"] >> pref.nickname
S["name_is_always_random"] >> pref.be_random_name
S["gender"] >> pref.biological_gender
S["id_gender"] >> pref.identifying_gender
S["age"] >> pref.age
S["bday_month"] >> pref.bday_month
S["bday_day"] >> pref.bday_day
S["last_bday_note"] >> pref.last_birthday_notification
S["bday_announce"] >> pref.bday_announce
S["spawnpoint"] >> pref.spawnpoint
S["OOC_Notes"] >> pref.metadata
S["OOC_Notes_Likes"] >> pref.metadata_likes
S["OOC_Notes_Disikes"] >> pref.metadata_dislikes
/datum/category_item/player_setup_item/general/basic/load_character(list/save_data)
pref.real_name = save_data["real_name"]
pref.nickname = save_data["nickname"]
pref.be_random_name = save_data["name_is_always_random"]
pref.biological_gender = save_data["gender"]
pref.identifying_gender = save_data["id_gender"]
pref.age = save_data["age"]
pref.bday_month = save_data["bday_month"]
pref.bday_day = save_data["bday_day"]
pref.last_birthday_notification = save_data["last_bday_note"]
pref.bday_announce = save_data["bday_announce"]
pref.spawnpoint = save_data["spawnpoint"]
pref.metadata = save_data["OOC_Notes"]
pref.metadata_likes = save_data["OOC_Notes_Likes"]
pref.metadata_dislikes = save_data["OOC_Notes_Disikes"]
/datum/category_item/player_setup_item/general/basic/save_character(var/savefile/S)
S["real_name"] << pref.real_name
S["nickname"] << pref.nickname
S["name_is_always_random"] << pref.be_random_name
S["gender"] << pref.biological_gender
S["id_gender"] << pref.identifying_gender
S["age"] << pref.age
S["bday_month"] << pref.bday_month
S["bday_day"] << pref.bday_day
S["last_bday_note"] << pref.last_birthday_notification
S["bday_announce"] << pref.bday_announce
S["spawnpoint"] << pref.spawnpoint
S["OOC_Notes"] << pref.metadata
S["OOC_Notes_Likes"] << pref.metadata_likes
S["OOC_Notes_Disikes"] << pref.metadata_dislikes
/datum/category_item/player_setup_item/general/basic/save_character(list/save_data)
save_data["real_name"] = pref.real_name
save_data["nickname"] = pref.nickname
save_data["name_is_always_random"] = pref.be_random_name
save_data["gender"] = pref.biological_gender
save_data["id_gender"] = pref.identifying_gender
save_data["age"] = pref.age
save_data["bday_month"] = pref.bday_month
save_data["bday_day"] = pref.bday_day
save_data["last_bday_note"] = pref.last_birthday_notification
save_data["bday_announce"] = pref.bday_announce
save_data["spawnpoint"] = pref.spawnpoint
save_data["OOC_Notes"] = pref.metadata
save_data["OOC_Notes_Likes"] = pref.metadata_likes
save_data["OOC_Notes_Disikes"] = pref.metadata_dislikes
/datum/category_item/player_setup_item/general/basic/sanitize_character()
pref.age = sanitize_integer(pref.age, get_min_age(), get_max_age(), initial(pref.age))
@@ -7,25 +7,19 @@
sort_order = 2
var/static/list/forbidden_prefixes = list(";", ":", ".", "!", "*", "^", "-")
/datum/category_item/player_setup_item/general/language/load_character(var/savefile/S)
S["language"] >> pref.alternate_languages
S["extra_languages"] >> pref.extra_languages
if(islist(pref.alternate_languages)) // Because aparently it may not be?
testing("LANGSANI: Loaded from [pref.client]'s character [pref.real_name || "-name not yet loaded-"] savefile: [english_list(pref.alternate_languages || list())]")
S["language_prefixes"] >> pref.language_prefixes
//VORE Edit Begin
S["preflang"] >> pref.preferred_language
//VORE Edit End
S["language_custom_keys"] >> pref.language_custom_keys
/datum/category_item/player_setup_item/general/language/load_character(list/save_data)
pref.alternate_languages = save_data["language"]
pref.extra_languages = save_data["extra_languages"]
pref.language_prefixes = save_data["language_prefixes"]
pref.preferred_language = save_data["preflang"]
pref.language_custom_keys = save_data["language_custom_keys"]
/datum/category_item/player_setup_item/general/language/save_character(var/savefile/S)
S["language"] << pref.alternate_languages
S["extra_languages"] << pref.extra_languages
if(islist(pref.alternate_languages)) // Because aparently it may not be?
testing("LANGSANI: Loaded from [pref.client]'s character [pref.real_name || "-name not yet loaded-"] savefile: [english_list(pref.alternate_languages || list())]")
S["language_prefixes"] << pref.language_prefixes
S["language_custom_keys"] << pref.language_custom_keys
S["preflang"] << pref.preferred_language // VOREStation Edit
/datum/category_item/player_setup_item/general/language/save_character(list/save_data)
save_data["language"] = pref.alternate_languages
save_data["extra_languages"] = pref.extra_languages
save_data["language_prefixes"] = pref.language_prefixes
save_data["language_custom_keys"] = pref.language_custom_keys
save_data["preflang"] = pref.preferred_language
/datum/category_item/player_setup_item/general/language/sanitize_character()
if(!islist(pref.alternate_languages))
@@ -90,135 +90,135 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
name = "Body"
sort_order = 3
/datum/category_item/player_setup_item/general/body/load_character(var/savefile/S)
S["species"] >> pref.species
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["grad_red"] >> pref.r_grad
S["grad_green"] >> pref.g_grad
S["grad_blue"] >> pref.b_grad
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["grad_style_name"] >> pref.grad_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["synth_color"] >> pref.synth_color
S["synth_red"] >> pref.r_synth
S["synth_green"] >> pref.g_synth
S["synth_blue"] >> pref.b_synth
S["synth_markings"] >> pref.synth_markings
S["bgstate"] >> pref.bgstate
S["body_descriptors"] >> pref.body_descriptors
S["ear_style"] >> pref.ear_style
S["r_ears"] >> pref.r_ears
S["g_ears"] >> pref.g_ears
S["b_ears"] >> pref.b_ears
S["r_ears2"] >> pref.r_ears2
S["g_ears2"] >> pref.g_ears2
S["b_ears2"] >> pref.b_ears2
S["r_ears3"] >> pref.r_ears3
S["g_ears3"] >> pref.g_ears3
S["b_ears3"] >> pref.b_ears3
S["tail_style"] >> pref.tail_style
S["r_tail"] >> pref.r_tail
S["g_tail"] >> pref.g_tail
S["b_tail"] >> pref.b_tail
S["r_tail2"] >> pref.r_tail2
S["g_tail2"] >> pref.g_tail2
S["b_tail2"] >> pref.b_tail2
S["r_tail3"] >> pref.r_tail3
S["g_tail3"] >> pref.g_tail3
S["b_tail3"] >> pref.b_tail3
S["wing_style"] >> pref.wing_style
S["r_wing"] >> pref.r_wing
S["g_wing"] >> pref.g_wing
S["b_wing"] >> pref.b_wing
S["r_wing2"] >> pref.r_wing2
S["g_wing2"] >> pref.g_wing2
S["b_wing2"] >> pref.b_wing2
S["r_wing3"] >> pref.r_wing3
S["g_wing3"] >> pref.g_wing3
S["b_wing3"] >> pref.b_wing3
S["digitigrade"] >> pref.digitigrade
/datum/category_item/player_setup_item/general/body/load_character(list/save_data)
pref.species = save_data["species"]
pref.r_hair = save_data["hair_red"]
pref.g_hair = save_data["hair_green"]
pref.b_hair = save_data["hair_blue"]
pref.r_facial = save_data["facial_red"]
pref.r_grad = save_data["grad_red"]
pref.g_grad = save_data["grad_green"]
pref.b_grad = save_data["grad_blue"]
pref.g_facial = save_data["facial_green"]
pref.b_facial = save_data["facial_blue"]
pref.s_tone = save_data["skin_tone"]
pref.r_skin = save_data["skin_red"]
pref.g_skin = save_data["skin_green"]
pref.b_skin = save_data["skin_blue"]
pref.h_style = save_data["hair_style_name"]
pref.f_style = save_data["facial_style_name"]
pref.grad_style = save_data["grad_style_name"]
pref.r_eyes = save_data["eyes_red"]
pref.g_eyes = save_data["eyes_green"]
pref.b_eyes = save_data["eyes_blue"]
pref.b_type = save_data["b_type"]
pref.disabilities = save_data["disabilities"]
pref.organ_data = save_data["organ_data"]
pref.rlimb_data = save_data["rlimb_data"]
pref.body_markings = save_data["body_markings"]
pref.synth_color = save_data["synth_color"]
pref.r_synth = save_data["synth_red"]
pref.g_synth = save_data["synth_green"]
pref.b_synth = save_data["synth_blue"]
pref.synth_markings = save_data["synth_markings"]
pref.bgstate = save_data["bgstate"]
pref.body_descriptors = save_data["body_descriptors"]
pref.ear_style = save_data["ear_style"]
pref.r_ears = save_data["r_ears"]
pref.g_ears = save_data["g_ears"]
pref.b_ears = save_data["b_ears"]
pref.r_ears2 = save_data["r_ears2"]
pref.g_ears2 = save_data["g_ears2"]
pref.b_ears2 = save_data["b_ears2"]
pref.r_ears3 = save_data["r_ears3"]
pref.g_ears3 = save_data["g_ears3"]
pref.b_ears3 = save_data["b_ears3"]
pref.tail_style = save_data["tail_style"]
pref.r_tail = save_data["r_tail"]
pref.g_tail = save_data["g_tail"]
pref.b_tail = save_data["b_tail"]
pref.r_tail2 = save_data["r_tail2"]
pref.g_tail2 = save_data["g_tail2"]
pref.b_tail2 = save_data["b_tail2"]
pref.r_tail3 = save_data["r_tail3"]
pref.g_tail3 = save_data["g_tail3"]
pref.b_tail3 = save_data["b_tail3"]
pref.wing_style = save_data["wing_style"]
pref.r_wing = save_data["r_wing"]
pref.g_wing = save_data["g_wing"]
pref.b_wing = save_data["b_wing"]
pref.r_wing2 = save_data["r_wing2"]
pref.g_wing2 = save_data["g_wing2"]
pref.b_wing2 = save_data["b_wing2"]
pref.r_wing3 = save_data["r_wing3"]
pref.g_wing3 = save_data["g_wing3"]
pref.b_wing3 = save_data["b_wing3"]
pref.digitigrade = save_data["digitigrade"]
/datum/category_item/player_setup_item/general/body/save_character(var/savefile/S)
S["species"] << pref.species
S["hair_red"] << pref.r_hair
S["hair_green"] << pref.g_hair
S["hair_blue"] << pref.b_hair
S["grad_red"] << pref.r_grad
S["grad_green"] << pref.g_grad
S["grad_blue"] << pref.b_grad
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["grad_style_name"] << pref.grad_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["synth_color"] << pref.synth_color
S["synth_red"] << pref.r_synth
S["synth_green"] << pref.g_synth
S["synth_blue"] << pref.b_synth
S["synth_markings"] << pref.synth_markings
S["bgstate"] << pref.bgstate
S["body_descriptors"] << pref.body_descriptors
S["ear_style"] << pref.ear_style
S["r_ears"] << pref.r_ears
S["g_ears"] << pref.g_ears
S["b_ears"] << pref.b_ears
S["r_ears2"] << pref.r_ears2
S["g_ears2"] << pref.g_ears2
S["b_ears2"] << pref.b_ears2
S["r_ears3"] << pref.r_ears3
S["g_ears3"] << pref.g_ears3
S["b_ears3"] << pref.b_ears3
S["tail_style"] << pref.tail_style
S["r_tail"] << pref.r_tail
S["g_tail"] << pref.g_tail
S["b_tail"] << pref.b_tail
S["r_tail2"] << pref.r_tail2
S["g_tail2"] << pref.g_tail2
S["b_tail2"] << pref.b_tail2
S["r_tail3"] << pref.r_tail3
S["g_tail3"] << pref.g_tail3
S["b_tail3"] << pref.b_tail3
S["wing_style"] << pref.wing_style
S["r_wing"] << pref.r_wing
S["g_wing"] << pref.g_wing
S["b_wing"] << pref.b_wing
S["r_wing2"] << pref.r_wing2
S["g_wing2"] << pref.g_wing2
S["b_wing2"] << pref.b_wing2
S["r_wing3"] << pref.r_wing3
S["g_wing3"] << pref.g_wing3
S["b_wing3"] << pref.b_wing3
S["digitigrade"] << pref.digitigrade
/datum/category_item/player_setup_item/general/body/save_character(list/save_data)
save_data["species"] = pref.species
save_data["hair_red"] = pref.r_hair
save_data["hair_green"] = pref.g_hair
save_data["hair_blue"] = pref.b_hair
save_data["grad_red"] = pref.r_grad
save_data["grad_green"] = pref.g_grad
save_data["grad_blue"] = pref.b_grad
save_data["facial_red"] = pref.r_facial
save_data["facial_green"] = pref.g_facial
save_data["facial_blue"] = pref.b_facial
save_data["skin_tone"] = pref.s_tone
save_data["skin_red"] = pref.r_skin
save_data["skin_green"] = pref.g_skin
save_data["skin_blue"] = pref.b_skin
save_data["hair_style_name"] = pref.h_style
save_data["facial_style_name"] = pref.f_style
save_data["grad_style_name"] = pref.grad_style
save_data["eyes_red"] = pref.r_eyes
save_data["eyes_green"] = pref.g_eyes
save_data["eyes_blue"] = pref.b_eyes
save_data["b_type"] = pref.b_type
save_data["disabilities"] = pref.disabilities
save_data["organ_data"] = pref.organ_data
save_data["rlimb_data"] = pref.rlimb_data
save_data["body_markings"] = pref.body_markings
save_data["synth_color"] = pref.synth_color
save_data["synth_red"] = pref.r_synth
save_data["synth_green"] = pref.g_synth
save_data["synth_blue"] = pref.b_synth
save_data["synth_markings"] = pref.synth_markings
save_data["bgstate"] = pref.bgstate
save_data["body_descriptors"] = pref.body_descriptors
save_data["ear_style"] = pref.ear_style
save_data["r_ears"] = pref.r_ears
save_data["g_ears"] = pref.g_ears
save_data["b_ears"] = pref.b_ears
save_data["r_ears2"] = pref.r_ears2
save_data["g_ears2"] = pref.g_ears2
save_data["b_ears2"] = pref.b_ears2
save_data["r_ears3"] = pref.r_ears3
save_data["g_ears3"] = pref.g_ears3
save_data["b_ears3"] = pref.b_ears3
save_data["tail_style"] = pref.tail_style
save_data["r_tail"] = pref.r_tail
save_data["g_tail"] = pref.g_tail
save_data["b_tail"] = pref.b_tail
save_data["r_tail2"] = pref.r_tail2
save_data["g_tail2"] = pref.g_tail2
save_data["b_tail2"] = pref.b_tail2
save_data["r_tail3"] = pref.r_tail3
save_data["g_tail3"] = pref.g_tail3
save_data["b_tail3"] = pref.b_tail3
save_data["wing_style"] = pref.wing_style
save_data["r_wing"] = pref.r_wing
save_data["g_wing"] = pref.g_wing
save_data["b_wing"] = pref.b_wing
save_data["r_wing2"] = pref.r_wing2
save_data["g_wing2"] = pref.g_wing2
save_data["b_wing2"] = pref.b_wing2
save_data["r_wing3"] = pref.r_wing3
save_data["g_wing3"] = pref.g_wing3
save_data["b_wing3"] = pref.b_wing3
save_data["digitigrade"] = pref.digitigrade
/datum/category_item/player_setup_item/general/body/sanitize_character(var/savefile/S)
if(!pref.species || !(pref.species in GLOB.playable_species))
@@ -6,23 +6,23 @@
name = "Clothing"
sort_order = 4
/datum/category_item/player_setup_item/general/equipment/load_character(var/savefile/S)
S["all_underwear"] >> pref.all_underwear
S["all_underwear_metadata"] >> pref.all_underwear_metadata
S["backbag"] >> pref.backbag
S["pdachoice"] >> pref.pdachoice
S["communicator_visibility"] >> pref.communicator_visibility
S["ringtone"] >> pref.ringtone
S["shoe_hater"] >> pref.shoe_hater //RS ADD
/datum/category_item/player_setup_item/general/equipment/load_character(list/save_data)
pref.all_underwear = save_data["all_underwear"]
pref.all_underwear_metadata = save_data["all_underwear_metadata"]
pref.backbag = save_data["backbag"]
pref.pdachoice = save_data["pdachoice"]
pref.communicator_visibility = save_data["communicator_visibility"]
pref.ringtone = save_data["ringtone"]
pref.shoe_hater = save_data["shoe_hater"]
/datum/category_item/player_setup_item/general/equipment/save_character(var/savefile/S)
S["all_underwear"] << pref.all_underwear
S["all_underwear_metadata"] << pref.all_underwear_metadata
S["backbag"] << pref.backbag
S["pdachoice"] << pref.pdachoice
S["communicator_visibility"] << pref.communicator_visibility
S["ringtone"] << pref.ringtone
S["shoe_hater"] << pref.shoe_hater //RS ADD
/datum/category_item/player_setup_item/general/equipment/save_character(list/save_data)
save_data["all_underwear"] = pref.all_underwear
save_data["all_underwear_metadata"] = pref.all_underwear_metadata
save_data["backbag"] = pref.backbag
save_data["pdachoice"] = pref.pdachoice
save_data["communicator_visibility"] = pref.communicator_visibility
save_data["ringtone"] = pref.ringtone
save_data["shoe_hater"] = pref.shoe_hater
var/global/list/valid_ringtones = list(
"beep",
@@ -1,28 +1,27 @@
/datum/category_item/player_setup_item/general/background
name = "Background"
sort_order = 5
/datum/category_item/player_setup_item/general/background/load_character(list/save_data)
pref.med_record = save_data["med_record"]
pref.sec_record = save_data["sec_record"]
pref.gen_record = save_data["gen_record"]
pref.home_system = save_data["home_system"]
pref.birthplace = save_data["birthplace"]
pref.citizenship = save_data["citizenship"]
pref.faction = save_data["faction"]
pref.religion = save_data["religion"]
pref.economic_status = save_data["economic_status"]
/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["birthplace"] >> pref.birthplace
S["citizenship"] >> pref.citizenship
S["faction"] >> pref.faction
S["religion"] >> pref.religion
S["economic_status"] >> pref.economic_status
/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["birthplace"] << pref.birthplace
S["citizenship"] << pref.citizenship
S["faction"] << pref.faction
S["religion"] << pref.religion
S["economic_status"] << pref.economic_status
/datum/category_item/player_setup_item/general/background/save_character(list/save_data)
save_data["med_record"] = pref.med_record
save_data["sec_record"] = pref.sec_record
save_data["gen_record"] = pref.gen_record
save_data["home_system"] = pref.home_system
save_data["birthplace"] = pref.birthplace
save_data["citizenship"] = pref.citizenship
save_data["faction"] = pref.faction
save_data["religion"] = pref.religion
save_data["economic_status"] = pref.economic_status
/datum/category_item/player_setup_item/general/background/sanitize_character()
if(!pref.home_system) pref.home_system = "Unset"
@@ -2,37 +2,37 @@
name = "Flavor"
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["custom_link"] >> pref.custom_link
/datum/category_item/player_setup_item/general/flavor/load_character(list/save_data)
pref.flavor_texts["general"] = save_data["flavor_texts_general"]
pref.flavor_texts["head"] = save_data["flavor_texts_head"]
pref.flavor_texts["face"] = save_data["flavor_texts_face"]
pref.flavor_texts["eyes"] = save_data["flavor_texts_eyes"]
pref.flavor_texts["torso"] = save_data["flavor_texts_torso"]
pref.flavor_texts["arms"] = save_data["flavor_texts_arms"]
pref.flavor_texts["hands"] = save_data["flavor_texts_hands"]
pref.flavor_texts["legs"] = save_data["flavor_texts_legs"]
pref.flavor_texts["feet"] = save_data["flavor_texts_feet"]
pref.custom_link = save_data["custom_link"]
//Flavour text for robots.
S["flavour_texts_robot_Default"] >> pref.flavour_texts_robot["Default"]
pref.flavour_texts_robot["Default"] = save_data["flavour_texts_robot_Default"]
for(var/module in robot_module_types)
S["flavour_texts_robot_[module]"] >> pref.flavour_texts_robot[module]
pref.flavour_texts_robot[module] = save_data["flavour_texts_robot_[module]"]
/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["custom_link"] << pref.custom_link
/datum/category_item/player_setup_item/general/flavor/save_character(list/save_data)
save_data["flavor_texts_general"] = pref.flavor_texts["general"]
save_data["flavor_texts_head"] = pref.flavor_texts["head"]
save_data["flavor_texts_face"] = pref.flavor_texts["face"]
save_data["flavor_texts_eyes"] = pref.flavor_texts["eyes"]
save_data["flavor_texts_torso"] = pref.flavor_texts["torso"]
save_data["flavor_texts_arms"] = pref.flavor_texts["arms"]
save_data["flavor_texts_hands"] = pref.flavor_texts["hands"]
save_data["flavor_texts_legs"] = pref.flavor_texts["legs"]
save_data["flavor_texts_feet"] = pref.flavor_texts["feet"]
save_data["custom_link"] = pref.custom_link
S["flavour_texts_robot_Default"] << pref.flavour_texts_robot["Default"]
save_data["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]
save_data["flavour_texts_robot_[module]"] = pref.flavour_texts_robot[module]
/datum/category_item/player_setup_item/general/flavor/sanitize_character()
return
@@ -2,41 +2,41 @@
name = "UI"
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["tooltipstyle"] >> pref.tooltipstyle
S["client_fps"] >> pref.client_fps
S["ambience_freq"] >> pref.ambience_freq
S["ambience_chance"] >> pref.ambience_chance
S["tgui_fancy"] >> pref.tgui_fancy
S["tgui_lock"] >> pref.tgui_lock
S["tgui_input_mode"] >> pref.tgui_input_mode
S["tgui_large_buttons"] >> pref.tgui_large_buttons
S["tgui_swapped_buttons"] >> pref.tgui_swapped_buttons
S["obfuscate_key"] >> pref.obfuscate_key
S["obfuscate_job"] >> pref.obfuscate_job
S["chat_timestamp"] >> pref.chat_timestamp
/datum/category_item/player_setup_item/player_global/ui/load_preferences(datum/json_savefile/savefile)
pref.UI_style = savefile.get_entry("UI_style")
pref.UI_style_color = savefile.get_entry("UI_style_color")
pref.UI_style_alpha = savefile.get_entry("UI_style_alpha")
pref.ooccolor = savefile.get_entry("ooccolor")
pref.tooltipstyle = savefile.get_entry("tooltipstyle")
pref.client_fps = savefile.get_entry("client_fps")
pref.ambience_freq = savefile.get_entry("ambience_freq")
pref.ambience_chance = savefile.get_entry("ambience_chance")
pref.tgui_fancy = savefile.get_entry("tgui_fancy")
pref.tgui_lock = savefile.get_entry("tgui_lock")
pref.tgui_input_mode = savefile.get_entry("tgui_input_mode")
pref.tgui_large_buttons = savefile.get_entry("tgui_large_buttons")
pref.tgui_swapped_buttons = savefile.get_entry("tgui_swapped_buttons")
pref.obfuscate_key = savefile.get_entry("obfuscate_key")
pref.obfuscate_job = savefile.get_entry("obfuscate_job")
pref.chat_timestamp = savefile.get_entry("chat_timestamp")
/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["tooltipstyle"] << pref.tooltipstyle
S["client_fps"] << pref.client_fps
S["ambience_freq"] << pref.ambience_freq
S["ambience_chance"] << pref.ambience_chance
S["tgui_fancy"] << pref.tgui_fancy
S["tgui_lock"] << pref.tgui_lock
S["tgui_input_mode"] << pref.tgui_input_mode
S["tgui_large_buttons"] << pref.tgui_large_buttons
S["tgui_swapped_buttons"] << pref.tgui_swapped_buttons
S["obfuscate_key"] << pref.obfuscate_key
S["obfuscate_job"] << pref.obfuscate_job
S["chat_timestamp"] << pref.chat_timestamp
/datum/category_item/player_setup_item/player_global/ui/save_preferences(datum/json_savefile/savefile)
savefile.set_entry("UI_style", pref.UI_style)
savefile.set_entry("UI_style_color", pref.UI_style_color)
savefile.set_entry("UI_style_alpha", pref.UI_style_alpha)
savefile.set_entry("ooccolor", pref.ooccolor)
savefile.set_entry("tooltipstyle", pref.tooltipstyle)
savefile.set_entry("client_fps", pref.client_fps)
savefile.set_entry("ambience_freq", pref.ambience_freq)
savefile.set_entry("ambience_chance", pref.ambience_chance)
savefile.set_entry("tgui_fancy", pref.tgui_fancy)
savefile.set_entry("tgui_lock", pref.tgui_lock)
savefile.set_entry("tgui_input_mode", pref.tgui_input_mode)
savefile.set_entry("tgui_large_buttons", pref.tgui_large_buttons)
savefile.set_entry("tgui_swapped_buttons", pref.tgui_swapped_buttons)
savefile.set_entry("obfuscate_key", pref.obfuscate_key)
savefile.set_entry("obfuscate_job", pref.obfuscate_job)
savefile.set_entry("chat_timestamp", pref.chat_timestamp)
/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))
@@ -1,141 +1,20 @@
/datum/preferences
var/preferences_enabled = null
var/preferences_disabled = null
/datum/category_item/player_setup_item/player_global/settings
name = "Settings"
sort_order = 2
/datum/category_item/player_setup_item/player_global/settings/load_preferences(var/savefile/S)
S["lastchangelog"] >> pref.lastchangelog
S["lastnews"] >> pref.lastnews
S["lastlorenews"] >> pref.lastlorenews
S["default_slot"] >> pref.default_slot
S["preferences"] >> pref.preferences_enabled
S["preferences_disabled"] >> pref.preferences_disabled
/datum/category_item/player_setup_item/player_global/settings/load_preferences(datum/json_savefile/savefile)
pref.lastchangelog = savefile.get_entry("lastchangelog")
pref.lastnews = savefile.get_entry("lastnews")
pref.lastlorenews = savefile.get_entry("lastlorenews")
pref.default_slot = savefile.get_entry("default_slot")
/datum/category_item/player_setup_item/player_global/settings/save_preferences(var/savefile/S)
S["lastchangelog"] << pref.lastchangelog
S["lastnews"] << pref.lastnews
S["lastlorenews"] << pref.lastlorenews
S["default_slot"] << pref.default_slot
S["preferences"] << pref.preferences_enabled
S["preferences_disabled"] << pref.preferences_disabled
/datum/category_item/player_setup_item/player_global/settings/save_preferences(datum/json_savefile/savefile)
savefile.set_entry("lastchangelog", pref.lastchangelog)
savefile.set_entry("lastnews", pref.lastnews)
savefile.set_entry("lastlorenews", pref.lastlorenews)
savefile.set_entry("default_slot", pref.default_slot)
/datum/category_item/player_setup_item/player_global/settings/sanitize_preferences()
// Ensure our preferences are lists.
if(!istype(pref.preferences_enabled, /list))
pref.preferences_enabled = list()
if(!istype(pref.preferences_disabled, /list))
pref.preferences_disabled = list()
// Arrange preferences that have never been enabled/disabled.
var/list/client_preference_keys = list()
for(var/datum/client_preference/client_pref as anything in get_client_preferences())
client_preference_keys += client_pref.key
if((client_pref.key in pref.preferences_enabled) || (client_pref.key in pref.preferences_disabled))
continue
if(client_pref.enabled_by_default)
pref.preferences_enabled += client_pref.key
else
pref.preferences_disabled += client_pref.key
// Clean out preferences that no longer exist.
for(var/key in pref.preferences_enabled)
if(!(key in client_preference_keys))
pref.preferences_enabled -= key
for(var/key in pref.preferences_disabled)
if(!(key in client_preference_keys))
pref.preferences_disabled -= key
pref.lastchangelog = sanitize_text(pref.lastchangelog, initial(pref.lastchangelog))
pref.lastnews = sanitize_text(pref.lastnews, initial(pref.lastnews))
pref.default_slot = sanitize_integer(pref.default_slot, 1, config.character_slots, initial(pref.default_slot))
/datum/category_item/player_setup_item/player_global/settings/content(var/mob/user)
. = list()
. += "<b>Preferences</b><br>"
. += "<table>"
var/mob/pref_mob = preference_mob()
for(var/datum/client_preference/client_pref as anything in get_client_preferences())
if(!client_pref.may_toggle(pref_mob))
continue
. += "<tr><td>[client_pref.description]: </td>"
if(pref_mob.is_preference_enabled(client_pref.key))
. += "<td><span class='linkOn'><b>[client_pref.enabled_description]</b></span></td> <td><a href='?src=\ref[src];toggle_off=[client_pref.key]'>[client_pref.disabled_description]</a></td>"
else
. += "<td><a href='?src=\ref[src];toggle_on=[client_pref.key]'>[client_pref.enabled_description]</a></td> <td><span class='linkOn'><b>[client_pref.disabled_description]</b></span></td>"
. += "</tr>"
. += "</table>"
return jointext(., "")
/datum/category_item/player_setup_item/player_global/settings/OnTopic(var/href,var/list/href_list, var/mob/user)
var/mob/pref_mob = preference_mob()
if(href_list["toggle_on"])
. = pref_mob.set_preference(href_list["toggle_on"], TRUE)
else if(href_list["toggle_off"])
. = pref_mob.set_preference(href_list["toggle_off"], FALSE)
if(.)
return TOPIC_REFRESH
return ..()
/**
* This can take either a single preference datum or a list of preferences, and will return true if *all* preferences in the arguments are enabled.
*/
/client/proc/is_preference_enabled(var/preference)
if(!islist(preference))
preference = list(preference)
for(var/p in preference)
var/datum/client_preference/cp = get_client_preference(p)
if(!prefs || !cp || !istype(cp, /datum/client_preference) || !(cp.key in prefs.preferences_enabled))
return FALSE
return TRUE
/client/proc/set_preference(var/preference, var/set_preference)
var/datum/client_preference/cp = get_client_preference(preference)
if(!cp)
return FALSE
preference = cp.key
if(set_preference && !(preference in prefs.preferences_enabled))
return toggle_preference(cp)
else if(!set_preference && (preference in prefs.preferences_enabled))
return toggle_preference(cp)
/client/proc/toggle_preference(var/preference, var/set_preference)
var/datum/client_preference/cp = get_client_preference(preference)
if(!cp)
return FALSE
preference = cp.key
var/enabled
if(preference in prefs.preferences_disabled)
prefs.preferences_enabled |= preference
prefs.preferences_disabled -= preference
enabled = TRUE
. = TRUE
else if(preference in prefs.preferences_enabled)
prefs.preferences_enabled -= preference
prefs.preferences_disabled |= preference
enabled = FALSE
. = TRUE
if(.)
cp.toggled(mob, enabled)
/mob/proc/is_preference_enabled(var/preference)
if(!client)
return FALSE
return client.is_preference_enabled(preference)
/mob/proc/set_preference(var/preference, var/set_preference)
if(!client)
return FALSE
if(!client.prefs)
log_debug("Client prefs found to be null for mob [src] and client [ckey], this should be investigated.")
return FALSE
return client.set_preference(preference, set_preference)
@@ -4,7 +4,7 @@
var/datum/paiCandidate/candidate
/datum/category_item/player_setup_item/player_global/pai/load_preferences(var/savefile/S)
/datum/category_item/player_setup_item/player_global/pai/load_preferences(datum/json_savefile/savefile)
if(!candidate)
candidate = new()
var/preference_mob = preference_mob()
@@ -18,7 +18,7 @@
candidate.savefile_load(preference_mob)
/datum/category_item/player_setup_item/player_global/pai/save_preferences(var/savefile/S)
/datum/category_item/player_setup_item/player_global/pai/save_preferences(datum/json_savefile/savefile)
if(!candidate)
return
@@ -2,12 +2,12 @@
name = "OOC"
sort_order = 4
/datum/category_item/player_setup_item/player_global/ooc/load_preferences(var/savefile/S)
S["ignored_players"] >> pref.ignored_players
/datum/category_item/player_setup_item/player_global/ooc/load_preferences(datum/json_savefile/savefile)
pref.ignored_players = savefile.get_entry("ignored_players")
/datum/category_item/player_setup_item/player_global/ooc/save_preferences(var/savefile/S)
S["ignored_players"] << pref.ignored_players
/datum/category_item/player_setup_item/player_global/ooc/save_preferences(datum/json_savefile/savefile)
savefile.set_entry("ignored_players", pref.ignored_players)
/*
/datum/category_item/player_setup_item/player_global/ooc/sanitize_preferences()
@@ -39,4 +39,4 @@
return TOPIC_REFRESH
return ..()
*/
*/
@@ -1,481 +0,0 @@
var/list/_client_preferences
var/list/_client_preferences_by_key
var/list/_client_preferences_by_type
/proc/get_client_preferences()
if(!_client_preferences)
_client_preferences = list()
for(var/datum/client_preference/client_type as anything in subtypesof(/datum/client_preference))
if(initial(client_type.description))
_client_preferences += new client_type()
return _client_preferences
/proc/get_client_preference(var/datum/client_preference/preference)
if(istype(preference))
return preference
if(ispath(preference))
return get_client_preference_by_type(preference)
return get_client_preference_by_key(preference)
/proc/get_client_preference_by_key(var/preference)
if(!_client_preferences_by_key)
_client_preferences_by_key = list()
for(var/datum/client_preference/client_pref as anything in get_client_preferences())
_client_preferences_by_key[client_pref.key] = client_pref
return _client_preferences_by_key[preference]
/proc/get_client_preference_by_type(var/preference)
if(!_client_preferences_by_type)
_client_preferences_by_type = list()
for(var/datum/client_preference/client_pref as anything in get_client_preferences())
_client_preferences_by_type[client_pref.type] = client_pref
return _client_preferences_by_type[preference]
/datum/client_preference
var/description
var/key
var/enabled_by_default = TRUE
var/enabled_description = "Yes"
var/disabled_description = "No"
/datum/client_preference/proc/may_toggle(var/mob/preference_mob)
return TRUE
/datum/client_preference/proc/toggled(var/mob/preference_mob, var/enabled)
return
/*********************
* Player Preferences *
*********************/
/datum/client_preference/play_admin_midis
description ="Play admin midis"
key = "SOUND_MIDI"
/datum/client_preference/play_lobby_music
description ="Play lobby music"
key = "SOUND_LOBBY"
/datum/client_preference/play_lobby_music/toggled(var/mob/preference_mob, var/enabled)
if(!preference_mob.client || !preference_mob.client.media)
return
if(enabled)
preference_mob.client.playtitlemusic()
else
preference_mob.client.media.stop_music()
/datum/client_preference/play_ambiance
description ="Play ambience"
key = "SOUND_AMBIENCE"
/datum/client_preference/play_ambiance/toggled(var/mob/preference_mob, var/enabled)
if(!enabled)
preference_mob << sound(null, repeat = 0, wait = 0, volume = 0, channel = 1)
preference_mob << sound(null, repeat = 0, wait = 0, volume = 0, channel = 2)
//VOREStation Add - Need to put it here because it should be ordered riiiight here.
/datum/client_preference/play_jukebox
description ="Play jukebox music"
key = "SOUND_JUKEBOX"
/datum/client_preference/play_jukebox/toggled(var/mob/preference_mob, var/enabled)
if(!enabled)
preference_mob.stop_all_music()
else
preference_mob.update_music()
/datum/client_preference/eating_noises
description = "Eating Noises"
key = "EATING_NOISES"
enabled_description = "Noisy"
disabled_description = "Silent"
/datum/client_preference/digestion_noises
description = "Digestion Noises"
key = "DIGEST_NOISES"
enabled_description = "Noisy"
disabled_description = "Silent"
/datum/client_preference/belch_noises // Belching noises - pref toggle for 'em
description = "Burping"
key = "BELCH_NOISES"
enabled_description = "Noisy"
disabled_description = "Silent"
/datum/client_preference/emote_noises
description = "Emote Noises" //MERP
key = "EMOTE_NOISES"
enabled_description = "Noisy"
disabled_description = "Silent"
/datum/client_preference/whisubtle_vis
description = "Whi/Subtles Ghost Visible"
key = "WHISUBTLE_VIS"
enabled_description = "Visible"
disabled_description = "Hidden"
enabled_by_default = FALSE
/datum/client_preference/ghost_see_whisubtle
description = "See subtles/whispers as ghost"
key = "GHOST_SEE_WHISUBTLE"
enabled_description = "Visible"
disabled_description = "Hidden"
enabled_by_default = TRUE
//VOREStation Add End
/datum/client_preference/weather_sounds
description ="Weather sounds"
key = "SOUND_WEATHER"
enabled_description = "Audible"
disabled_description = "Silent"
/datum/client_preference/supermatter_hum
description ="Supermatter hum"
key = "SOUND_SUPERMATTER"
enabled_description = "Audible"
disabled_description = "Silent"
/datum/client_preference/ghost_ears
description ="Ghost ears"
key = "CHAT_GHOSTEARS"
enabled_description = "All Speech"
disabled_description = "Nearby"
/datum/client_preference/ghost_sight
description ="Ghost sight"
key = "CHAT_GHOSTSIGHT"
enabled_description = "All Emotes"
disabled_description = "Nearby"
/datum/client_preference/ghost_radio
description ="Ghost radio"
key = "CHAT_GHOSTRADIO"
enabled_description = "All Chatter"
disabled_description = "Nearby"
/datum/client_preference/chat_tags
description ="Chat tags"
key = "CHAT_SHOWICONS"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/air_pump_noise
description ="Air Pump Ambient Noise"
key = "SOUND_AIRPUMP"
enabled_description = "Audible"
disabled_description = "Silent"
/datum/client_preference/old_door_sounds
description ="Old Door Sounds"
key = "SOUND_OLDDOORS"
enabled_description = "Old"
disabled_description = "New"
/datum/client_preference/department_door_sounds
description ="Department-Specific Door Sounds"
key = "SOUND_DEPARTMENTDOORS"
enabled_description = "Enabled"
disabled_description = "Disabled"
/datum/client_preference/pickup_sounds
description = "Picked Up Item Sounds"
key = "SOUND_PICKED"
enabled_description = "Enabled"
disabled_description = "Disabled"
/datum/client_preference/drop_sounds
description = "Dropped Item Sounds"
key = "SOUND_DROPPED"
enabled_description = "Enabled"
disabled_description = "Disabled"
/datum/client_preference/mob_tooltips
description ="Mob tooltips"
key = "MOB_TOOLTIPS"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/inv_tooltips
description ="Inventory tooltips"
key = "INV_TOOLTIPS"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/attack_icons
description ="Attack icons"
key = "ATTACK_ICONS"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/precision_placement
description ="Precision Placement"
key = "PRECISE_PLACEMENT"
enabled_description = "Active"
disabled_description = "Inactive"
/datum/client_preference/hotkeys_default
description ="Hotkeys Default"
key = "HUD_HOTKEYS"
enabled_description = "Enabled"
disabled_description = "Disabled"
enabled_by_default = FALSE // Backwards compatibility
/datum/client_preference/show_typing_indicator
description ="Typing indicator"
key = "SHOW_TYPING"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/show_typing_indicator/toggled(var/mob/preference_mob, var/enabled)
if(!enabled)
preference_mob.client?.stop_thinking()
/datum/client_preference/show_typing_indicator_subtle
description ="Typing indicator (subtle)"
key = "SHOW_TYPING_SUBTLE"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/show_ooc
description ="OOC chat"
key = "CHAT_OOC"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/show_looc
description ="LOOC chat"
key = "CHAT_LOOC"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/show_dsay
description ="Dead chat"
key = "CHAT_DEAD"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/check_mention
description ="Emphasize Name Mention"
key = "CHAT_MENTION"
enabled_description = "Emphasize"
disabled_description = "Normal"
/datum/client_preference/show_progress_bar
description ="Progress Bar"
key = "SHOW_PROGRESS"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/safefiring
description = "Gun Firing Intent Requirement"
key = "SAFE_FIRING"
enabled_description = "Safe"
disabled_description = "Dangerous"
/datum/client_preference/browser_style
description = "Fake NanoUI Browser Style"
key = "BROWSER_STYLED"
enabled_description = "Fancy"
disabled_description = "Plain"
/datum/client_preference/ambient_occlusion
description = "Fake Ambient Occlusion"
key = "AMBIENT_OCCLUSION_PREF"
enabled_by_default = FALSE
enabled_description = "On"
disabled_description = "Off"
/datum/client_preference/ambient_occlusion/toggled(var/mob/preference_mob, var/enabled)
. = ..()
if(preference_mob && preference_mob.plane_holder)
var/datum/plane_holder/PH = preference_mob.plane_holder
PH.set_ao(VIS_OBJS, enabled)
PH.set_ao(VIS_MOBS, enabled)
/datum/client_preference/instrument_toggle
description ="Hear In-game Instruments"
key = "SOUND_INSTRUMENT"
/datum/client_preference/vchat_enable
description = "Enable/Disable TGChat"
key = "VCHAT_ENABLE"
enabled_description = "Enabled"
disabled_description = "Disabled"
/datum/client_preference/status_indicators
description = "Status Indicators"
key = "SHOW_STATUS"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/radio_sounds
description = "Radio Sounds"
key = "RADIO_SOUNDS"
enabled_description = "On"
disabled_description = "Off"
/datum/client_preference/say_sounds
description = "Say Sounds"
key = "SAY_SOUNDS"
enabled_description = "On"
disabled_description = "Off"
/datum/client_preference/emote_sounds
description = "Me Sounds"
key = "EMOTE_SOUNDS"
enabled_description = "On"
disabled_description = "Off"
/datum/client_preference/whisper_sounds
description = "Whisper Sounds"
key = "WHISPER_SOUNDS"
enabled_description = "On"
disabled_description = "Off"
/datum/client_preference/subtle_sounds
description = "Subtle Sounds"
key = "SUBTLE_SOUNDS"
enabled_description = "On"
disabled_description = "Off"
/datum/client_preference/vore_health_bars
description = "Vore Health Bars"
key = "VORE_HEALTH_BARS"
enabled_description = "Enabled"
disabled_description = "Disabled"
/datum/client_preference/runechat_mob
description = "Runechat (Mobs)"
key = "RUNECHAT_MOB"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/runechat_obj
description = "Runechat (Objs)"
key = "RUNECHAT_OBJ"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/runechat_border
description = "Runechat Message Border"
key = "RUNECHAT_BORDER"
enabled_description = "Show"
disabled_description = "Hide"
enabled_by_default = TRUE
/datum/client_preference/runechat_long_messages
description = "Runechat Message Length"
key = "RUNECHAT_LONG"
enabled_description = "Long"
disabled_description = "Short"
enabled_by_default = FALSE
/datum/client_preference/status_indicators/toggled(mob/preference_mob, enabled)
. = ..()
if(preference_mob && preference_mob.plane_holder)
var/datum/plane_holder/PH = preference_mob.plane_holder
PH.set_vis(VIS_STATUS, enabled)
/datum/client_preference/show_lore_news
description = "Lore News Popup"
key = "NEWS_POPUP"
enabled_by_default = TRUE
enabled_description = "Popup New On Login"
disabled_description = "Do Nothing"
/datum/client_preference/play_mentorhelp_ping
description = "Mentorhelps"
key = "SOUND_MENTORHELP"
enabled_description = "Hear"
disabled_description = "Silent"
/datum/client_preference/player_tips
description = "Receive Tips Periodically"
key = "RECEIVE_TIPS"
enabled_description = "Enabled"
disabled_description = "Disabled"
/datum/client_preference/pain_frequency
description = "Pain Messages Cooldown"
key = "PAIN_FREQUENCY"
enabled_by_default = FALSE
enabled_description = "Extended"
disabled_description = "Default"
/datum/client_preference/auto_afk
description = "Automatic AFK Status"
key = "AUTO_AFK"
enabled_by_default = TRUE
enabled_description = "Automatic"
disabled_description = "Manual Only"
/datum/client_preference/tgui_say
description = "TGUI Say: Use TGUI For Say Input"
key = "TGUI_SAY"
enabled_by_default = TRUE
enabled_description = "Yes"
disabled_description = "No"
/datum/client_preference/tgui_say_light
description = "TGUI Say: Use Light Mode"
key = "TGUI_SAY_LIGHT_MODE"
enabled_by_default = FALSE
enabled_description = "Yes"
disabled_description = "No"
/********************
* Staff Preferences *
********************/
/datum/client_preference/admin/may_toggle(var/mob/preference_mob)
return check_rights(R_ADMIN|R_EVENT, 0, preference_mob)
/datum/client_preference/mod/may_toggle(var/mob/preference_mob)
return check_rights(R_MOD|R_ADMIN, 0, preference_mob)
/datum/client_preference/debug/may_toggle(var/mob/preference_mob)
return check_rights(R_DEBUG|R_ADMIN, 0, preference_mob)
/datum/client_preference/mod/show_attack_logs
description = "Attack Log Messages"
key = "CHAT_ATTACKLOGS"
enabled_description = "Show"
disabled_description = "Hide"
enabled_by_default = FALSE
/datum/client_preference/debug/show_debug_logs
description = "Debug Log Messages"
key = "CHAT_DEBUGLOGS"
enabled_description = "Show"
disabled_description = "Hide"
enabled_by_default = FALSE
/datum/client_preference/admin/show_chat_prayers
description = "Chat Prayers"
key = "CHAT_PRAYER"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/holder/may_toggle(var/mob/preference_mob)
return preference_mob && preference_mob.client && preference_mob.client.holder
/datum/client_preference/holder/play_adminhelp_ping
description = "Adminhelps"
key = "SOUND_ADMINHELP"
enabled_description = "Hear"
disabled_description = "Silent"
/datum/client_preference/holder/hear_radio
description = "Radio chatter"
key = "CHAT_RADIO"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/holder/show_rlooc
description ="Remote LOOC chat"
key = "CHAT_RLOOC"
enabled_description = "Show"
disabled_description = "Hide"
/datum/client_preference/holder/show_staff_dsay
description ="Staff Deadchat"
key = "CHAT_ADSAY"
enabled_description = "Show"
disabled_description = "Hide"
@@ -45,19 +45,19 @@ var/list/gear_datums = list()
sort_order = 1
var/current_tab = "General"
/datum/category_item/player_setup_item/loadout/load_character(var/savefile/S)
from_file(S["gear_list"], pref.gear_list)
from_file(S["gear_slot"], pref.gear_slot)
/datum/category_item/player_setup_item/loadout/load_character(list/save_data)
pref.gear_list = save_data["gear_list"]
pref.gear_slot = save_data["gear_slot"]
if(pref.gear_list!=null && pref.gear_slot!=null)
pref.gear = pref.gear_list["[pref.gear_slot]"]
else
from_file(S["gear"], pref.gear)
pref.gear = save_data["gear"]
pref.gear_slot = 1
/datum/category_item/player_setup_item/loadout/save_character(var/savefile/S)
/datum/category_item/player_setup_item/loadout/save_character(list/save_data)
pref.gear_list["[pref.gear_slot]"] = pref.gear
to_file(S["gear_list"], pref.gear_list)
to_file(S["gear_slot"], pref.gear_slot)
save_data["gear_list"] = pref.gear_list
save_data["gear_slot"] = pref.gear_slot
/datum/category_item/player_setup_item/loadout/proc/valid_gear_choices(var/max_cost)
. = list()
@@ -2,41 +2,41 @@
name = "Occupation"
sort_order = 1
/datum/category_item/player_setup_item/occupation/load_character(var/savefile/S)
S["alternate_option"] >> pref.alternate_option
S["job_civilian_high"] >> pref.job_civilian_high
S["job_civilian_med"] >> pref.job_civilian_med
S["job_civilian_low"] >> pref.job_civilian_low
S["job_medsci_high"] >> pref.job_medsci_high
S["job_medsci_med"] >> pref.job_medsci_med
S["job_medsci_low"] >> pref.job_medsci_low
S["job_engsec_high"] >> pref.job_engsec_high
S["job_engsec_med"] >> pref.job_engsec_med
S["job_engsec_low"] >> pref.job_engsec_low
/datum/category_item/player_setup_item/occupation/load_character(list/save_data)
pref.alternate_option = save_data["alternate_option"]
pref.job_civilian_high = save_data["job_civilian_high"]
pref.job_civilian_med = save_data["job_civilian_med"]
pref.job_civilian_low = save_data["job_civilian_low"]
pref.job_medsci_high = save_data["job_medsci_high"]
pref.job_medsci_med = save_data["job_medsci_med"]
pref.job_medsci_low = save_data["job_medsci_low"]
pref.job_engsec_high = save_data["job_engsec_high"]
pref.job_engsec_med = save_data["job_engsec_med"]
pref.job_engsec_low = save_data["job_engsec_low"]
//VOREStation Add
S["job_talon_low"] >> pref.job_talon_low
S["job_talon_med"] >> pref.job_talon_med
S["job_talon_high"] >> pref.job_talon_high
pref.job_talon_low = save_data["job_talon_low"]
pref.job_talon_med = save_data["job_talon_med"]
pref.job_talon_high = save_data["job_talon_high"]
//VOREStation Add End
S["player_alt_titles"] >> pref.player_alt_titles
pref.player_alt_titles = save_data["player_alt_titles"]
/datum/category_item/player_setup_item/occupation/save_character(var/savefile/S)
S["alternate_option"] << pref.alternate_option
S["job_civilian_high"] << pref.job_civilian_high
S["job_civilian_med"] << pref.job_civilian_med
S["job_civilian_low"] << pref.job_civilian_low
S["job_medsci_high"] << pref.job_medsci_high
S["job_medsci_med"] << pref.job_medsci_med
S["job_medsci_low"] << pref.job_medsci_low
S["job_engsec_high"] << pref.job_engsec_high
S["job_engsec_med"] << pref.job_engsec_med
S["job_engsec_low"] << pref.job_engsec_low
/datum/category_item/player_setup_item/occupation/save_character(list/save_data)
save_data["alternate_option"] = pref.alternate_option
save_data["job_civilian_high"] = pref.job_civilian_high
save_data["job_civilian_med"] = pref.job_civilian_med
save_data["job_civilian_low"] = pref.job_civilian_low
save_data["job_medsci_high"] = pref.job_medsci_high
save_data["job_medsci_med"] = pref.job_medsci_med
save_data["job_medsci_low"] = pref.job_medsci_low
save_data["job_engsec_high"] = pref.job_engsec_high
save_data["job_engsec_med"] = pref.job_engsec_med
save_data["job_engsec_low"] = pref.job_engsec_low
//VOREStation Add
S["job_talon_low"] << pref.job_talon_low
S["job_talon_med"] << pref.job_talon_med
S["job_talon_high"] << pref.job_talon_high
save_data["job_talon_low"] = pref.job_talon_low
save_data["job_talon_med"] = pref.job_talon_med
save_data["job_talon_high"] = pref.job_talon_high
//VOREStation Add End
S["player_alt_titles"] << pref.player_alt_titles
save_data["player_alt_titles"] = pref.player_alt_titles
/datum/category_item/player_setup_item/occupation/sanitize_character()
pref.alternate_option = sanitize_integer(pref.alternate_option, 0, 2, initial(pref.alternate_option))
@@ -59,21 +59,21 @@
for(var/datum/category_group/player_setup_category/PS in categories)
PS.sanitize_setup()
/datum/category_collection/player_setup_collection/proc/load_character(var/savefile/S)
/datum/category_collection/player_setup_collection/proc/load_character(list/save_data)
for(var/datum/category_group/player_setup_category/PS in categories)
PS.load_character(S)
PS.load_character(save_data)
/datum/category_collection/player_setup_collection/proc/save_character(var/savefile/S)
/datum/category_collection/player_setup_collection/proc/save_character(list/save_data)
for(var/datum/category_group/player_setup_category/PS in categories)
PS.save_character(S)
PS.save_character(save_data)
/datum/category_collection/player_setup_collection/proc/load_preferences(var/savefile/S)
/datum/category_collection/player_setup_collection/proc/load_preferences(datum/json_savefile/savefile)
for(var/datum/category_group/player_setup_category/PS in categories)
PS.load_preferences(S)
PS.load_preferences(savefile)
/datum/category_collection/player_setup_collection/proc/save_preferences(var/savefile/S)
/datum/category_collection/player_setup_collection/proc/save_preferences(datum/json_savefile/savefile)
for(var/datum/category_group/player_setup_category/PS in categories)
PS.save_preferences(S)
PS.save_preferences(savefile)
/datum/category_collection/player_setup_collection/proc/copy_to_mob(var/mob/living/carbon/human/C)
for(var/datum/category_group/player_setup_category/PS in categories)
@@ -86,6 +86,7 @@
dat += "[PS.name] " // TODO: Check how to properly mark a href/button selected in a classic browser window
else
dat += "<a href='?src=\ref[src];category=\ref[PS]'>[PS.name]</a> "
dat += "<a href='?src=\ref[src];game_prefs=1'>Game Options</a>"
return dat
/datum/category_collection/player_setup_collection/proc/content(var/mob/user)
@@ -105,6 +106,9 @@
selected_category = category
. = 1
else if(href_list["game_prefs"])
user.client.prefs.tgui_interact(user)
if(.)
user.client.prefs.ShowChoices(user)
@@ -123,29 +127,29 @@
for(var/datum/category_item/player_setup_item/PI in items)
PI.sanitize_character()
/datum/category_group/player_setup_category/proc/load_character(var/savefile/S)
/datum/category_group/player_setup_category/proc/load_character(list/save_data)
// Load all data, then sanitize it.
// Need due to, for example, the 01_basic module relying on species having been loaded to sanitize correctly but that isn't loaded until module 03_body.
for(var/datum/category_item/player_setup_item/PI in items)
PI.load_character(S)
PI.load_character(save_data)
/datum/category_group/player_setup_category/proc/save_character(var/savefile/S)
/datum/category_group/player_setup_category/proc/save_character(list/save_data)
// Sanitize all data, then save it
for(var/datum/category_item/player_setup_item/PI in items)
PI.sanitize_character()
for(var/datum/category_item/player_setup_item/PI in items)
PI.save_character(S)
PI.save_character(save_data)
/datum/category_group/player_setup_category/proc/load_preferences(var/savefile/S)
/datum/category_group/player_setup_category/proc/load_preferences(datum/json_savefile/savefile)
for(var/datum/category_item/player_setup_item/PI in items)
PI.load_preferences(S)
PI.load_preferences(savefile)
/datum/category_group/player_setup_category/proc/save_preferences(var/savefile/S)
/datum/category_group/player_setup_category/proc/save_preferences(datum/json_savefile/savefile)
for(var/datum/category_item/player_setup_item/PI in items)
PI.sanitize_preferences()
for(var/datum/category_item/player_setup_item/PI in items)
PI.save_preferences(S)
PI.save_preferences(savefile)
/datum/category_group/player_setup_category/proc/copy_to_mob(var/mob/living/carbon/human/C)
for(var/datum/category_item/player_setup_item/PI in items)
@@ -188,25 +192,25 @@
/*
* Called when the item is asked to load per character settings
*/
/datum/category_item/player_setup_item/proc/load_character(var/savefile/S)
/datum/category_item/player_setup_item/proc/load_character(list/save_data)
return
/*
* Called when the item is asked to save per character settings
*/
/datum/category_item/player_setup_item/proc/save_character(var/savefile/S)
/datum/category_item/player_setup_item/proc/save_character(list/save_data)
return
/*
* Called when the item is asked to load user/global settings
*/
/datum/category_item/player_setup_item/proc/load_preferences(var/savefile/S)
/datum/category_item/player_setup_item/proc/load_preferences(datum/json_savefile/savefile)
return
/*
* Called when the item is asked to save user/global settings
*/
/datum/category_item/player_setup_item/proc/save_preferences(var/savefile/S)
/datum/category_item/player_setup_item/proc/save_preferences(datum/json_savefile/savefile)
return
/*
@@ -2,15 +2,15 @@
name = "Skills"
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
/datum/category_item/player_setup_item/skills/load_character(list/save_data)
pref.skills = save_data["skills"]
pref.used_skillpoints = save_data["used_skillpoints"]
pref.skill_specialization = save_data["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
/datum/category_item/player_setup_item/skills/save_character(list/save_data)
save_data["skills"] = pref.skills
save_data["used_skillpoints"] = pref.used_skillpoints
save_data["skill_specialization"] = pref.skill_specialization
/datum/category_item/player_setup_item/skills/sanitize_character()
if(SKILLS == null) setup_skills()
@@ -35,11 +35,11 @@ var/list/trait_categories = list() // The categories available for the trait men
sort_order = 1
var/current_tab = "Physical"
/datum/category_item/player_setup_item/traits/load_character(var/savefile/S)
S["traits"] >> pref.traits
/datum/category_item/player_setup_item/traits/load_character(list/save_data)
pref.traits = save_data["traits"]
/datum/category_item/player_setup_item/traits/save_character(var/savefile/S)
S["traits"] << pref.traits
/datum/category_item/player_setup_item/traits/save_character(list/save_data)
save_data["traits"] = pref.traits
/datum/category_item/player_setup_item/traits/content()
@@ -7,11 +7,11 @@
name = "General Volume"
sort_order = 1
/datum/category_item/player_setup_item/volume_sliders/volume/load_preferences(var/savefile/S)
S["volume_channels"] >> pref.volume_channels
/datum/category_item/player_setup_item/volume_sliders/volume/load_preferences(datum/json_savefile/savefile)
pref.volume_channels = savefile.get_entry("volume_channels")
/datum/category_item/player_setup_item/volume_sliders/volume/save_preferences(var/savefile/S)
S["volume_channels"] << pref.volume_channels
/datum/category_item/player_setup_item/volume_sliders/volume/save_preferences(datum/json_savefile/savefile)
savefile.set_entry("volume_channels", pref.volume_channels)
/datum/category_item/player_setup_item/volume_sliders/volume/sanitize_preferences()
if(isnull(pref.volume_channels))
@@ -74,7 +74,7 @@
/datum/volume_panel/tgui_data(mob/user)
if(!user.client || !user.client.prefs)
return list("error" = TRUE)
var/list/data = ..()
data["volume_channels"] = user.client.prefs.volume_channels
return data
@@ -6,13 +6,13 @@
name = "Media"
sort_order = 2
/datum/category_item/player_setup_item/volume_sliders/media/load_preferences(var/savefile/S)
S["media_volume"] >> pref.media_volume
S["media_player"] >> pref.media_player
/datum/category_item/player_setup_item/volume_sliders/media/load_preferences(datum/json_savefile/savefile)
pref.media_volume = savefile.get_entry("media_volume")
pref.media_player = savefile.get_entry("media_player")
/datum/category_item/player_setup_item/volume_sliders/media/save_preferences(var/savefile/S)
S["media_volume"] << pref.media_volume
S["media_player"] << pref.media_player
/datum/category_item/player_setup_item/volume_sliders/media/save_preferences(datum/json_savefile/savefile)
savefile.set_entry("media_volume", pref.media_volume)
savefile.set_entry("media_player", pref.media_player)
/datum/category_item/player_setup_item/volume_sliders/media/sanitize_preferences()
pref.media_volume = isnum(pref.media_volume) ? CLAMP(pref.media_volume, 0, 1) : initial(pref.media_volume)
@@ -22,27 +22,27 @@
name = "Size"
sort_order = 2
/datum/category_item/player_setup_item/vore/size/load_character(var/savefile/S)
S["size_multiplier"] >> pref.size_multiplier
S["weight_vr"] >> pref.weight_vr
S["weight_gain"] >> pref.weight_gain
S["weight_loss"] >> pref.weight_loss
S["fuzzy"] >> pref.fuzzy
S["offset_override"] >> pref.offset_override
S["voice_freq"] >> pref.voice_freq
S["voice_sound"] >> pref.voice_sound
S["custom_speech_bubble"] >> pref.custom_speech_bubble
/datum/category_item/player_setup_item/vore/size/load_character(list/save_data)
pref.size_multiplier = save_data["size_multiplier"]
pref.weight_vr = save_data["weight_vr"]
pref.weight_gain = save_data["weight_gain"]
pref.weight_loss = save_data["weight_loss"]
pref.fuzzy = save_data["fuzzy"]
pref.offset_override = save_data["offset_override"]
pref.voice_freq = save_data["voice_freq"]
pref.voice_sound = save_data["voice_sound"]
pref.custom_speech_bubble = save_data["custom_speech_bubble"]
/datum/category_item/player_setup_item/vore/size/save_character(var/savefile/S)
S["size_multiplier"] << pref.size_multiplier
S["weight_vr"] << pref.weight_vr
S["weight_gain"] << pref.weight_gain
S["weight_loss"] << pref.weight_loss
S["fuzzy"] << pref.fuzzy
S["offset_override"] << pref.offset_override
S["voice_freq"] << pref.voice_freq
S["voice_sound"] << pref.voice_sound
S["custom_speech_bubble"] << pref.custom_speech_bubble
/datum/category_item/player_setup_item/vore/size/save_character(list/save_data)
save_data["size_multiplier"] = pref.size_multiplier
save_data["weight_vr"] = pref.weight_vr
save_data["weight_gain"] = pref.weight_gain
save_data["weight_loss"] = pref.weight_loss
save_data["fuzzy"] = pref.fuzzy
save_data["offset_override"] = pref.offset_override
save_data["voice_freq"] = pref.voice_freq
save_data["voice_sound"] = pref.voice_sound
save_data["custom_speech_bubble"] = pref.custom_speech_bubble
/datum/category_item/player_setup_item/vore/size/sanitize_character()
pref.weight_vr = sanitize_integer(pref.weight_vr, WEIGHT_MIN, WEIGHT_MAX, initial(pref.weight_vr))
@@ -14,13 +14,13 @@
name = "Egg appearance."
sort_order = 3
/datum/category_item/player_setup_item/vore/egg/load_character(var/savefile/S)
S["vore_egg_type"] >> pref.vore_egg_type
S["autohiss"] >> pref.autohiss // VOREStation Add
/datum/category_item/player_setup_item/vore/egg/load_character(list/save_data)
pref.vore_egg_type = save_data["vore_egg_type"]
pref.autohiss = save_data["autohiss"]
/datum/category_item/player_setup_item/vore/egg/save_character(var/savefile/S)
S["vore_egg_type"] << pref.vore_egg_type
S["autohiss"] << pref.autohiss // VOREStation Add
/datum/category_item/player_setup_item/vore/egg/save_character(list/save_data)
save_data["vore_egg_type"] = pref.vore_egg_type
save_data["autohiss"] = pref.autohiss
/datum/category_item/player_setup_item/vore/egg/sanitize_character()
pref.vore_egg_type = sanitize_inlist(pref.vore_egg_type, global_vore_egg_types, initial(pref.vore_egg_type))
@@ -9,16 +9,15 @@
name = "Resleeving"
sort_order = 4
/datum/category_item/player_setup_item/vore/resleeve/load_character(var/savefile/S)
S["resleeve_lock"] >> pref.resleeve_lock
S["resleeve_scan"] >> pref.resleeve_scan
S["mind_scan"] >> pref.mind_scan
/datum/category_item/player_setup_item/vore/resleeve/load_character(list/save_data)
pref.resleeve_lock = save_data["resleeve_lock"]
pref.resleeve_scan = save_data["resleeve_scan"]
pref.mind_scan = save_data["mind_scan"]
/datum/category_item/player_setup_item/vore/resleeve/save_character(var/savefile/S)
S["resleeve_lock"] << pref.resleeve_lock
S["resleeve_scan"] << pref.resleeve_scan
S["mind_scan"] << pref.mind_scan
/datum/category_item/player_setup_item/vore/resleeve/save_character(list/save_data)
save_data["resleeve_lock"] = pref.resleeve_lock
save_data["resleeve_scan"] = pref.resleeve_scan
save_data["mind_scan"] = pref.mind_scan
/datum/category_item/player_setup_item/vore/resleeve/sanitize_character()
pref.resleeve_lock = sanitize_integer(pref.resleeve_lock, 0, 1, initial(pref.resleeve_lock))
@@ -7,12 +7,12 @@
name = "Persistence"
sort_order = 5
/datum/category_item/player_setup_item/vore/persistence/load_character(var/savefile/S)
S["persistence_settings"] >> pref.persistence_settings
/datum/category_item/player_setup_item/vore/persistence/load_character(list/save_data)
pref.persistence_settings = save_data["persistence_settings"]
sanitize_character() // Don't let new characters start off with nulls
/datum/category_item/player_setup_item/vore/persistence/save_character(var/savefile/S)
S["persistence_settings"] << pref.persistence_settings
/datum/category_item/player_setup_item/vore/persistence/save_character(list/save_data)
save_data["persistence_settings"] = pref.persistence_settings
/datum/category_item/player_setup_item/vore/persistence/sanitize_character()
pref.persistence_settings = sanitize_integer(pref.persistence_settings, 0, (1<<(PERSIST_COUNT+1)-1), initial(pref.persistence_settings))
@@ -8,13 +8,13 @@
name = "VS Events"
sort_order = 6
/datum/category_item/player_setup_item/vore/vantag/load_character(var/savefile/S)
S["vantag_volunteer"] >> pref.vantag_volunteer
S["vantag_preference"] >> pref.vantag_preference
/datum/category_item/player_setup_item/vore/vantag/load_character(list/save_data)
pref.vantag_volunteer = save_data["vantag_volunteer"]
pref.vantag_preference = save_data["vantag_preference"]
/datum/category_item/player_setup_item/vore/vantag/save_character(var/savefile/S)
S["vantag_volunteer"] << pref.vantag_volunteer
S["vantag_preference"] << pref.vantag_preference
/datum/category_item/player_setup_item/vore/vantag/save_character(list/save_data)
save_data["vantag_volunteer"] = pref.vantag_volunteer
save_data["vantag_preference"] = pref.vantag_preference
/datum/category_item/player_setup_item/vore/vantag/sanitize_character()
pref.vantag_volunteer = sanitize_integer(pref.vantag_volunteer, 0, 1, initial(pref.vantag_volunteer))
@@ -107,47 +107,47 @@ var/global/list/valid_bloodreagents = list("default","iron","copper","phoron","s
name = "Traits"
sort_order = 7
/datum/category_item/player_setup_item/vore/traits/load_character(var/savefile/S)
S["custom_species"] >> pref.custom_species
S["custom_base"] >> pref.custom_base
S["pos_traits"] >> pref.pos_traits
S["neu_traits"] >> pref.neu_traits
S["neg_traits"] >> pref.neg_traits
S["blood_color"] >> pref.blood_color
S["blood_reagents"] >> pref.blood_reagents
/datum/category_item/player_setup_item/vore/traits/load_character(list/save_data)
pref.custom_species = save_data["custom_species"]
pref.custom_base = save_data["custom_base"]
pref.pos_traits = save_data["pos_traits"]
pref.neu_traits = save_data["neu_traits"]
pref.neg_traits = save_data["neg_traits"]
pref.blood_color = save_data["blood_color"]
pref.blood_reagents = save_data["blood_reagents"]
S["traits_cheating"] >> pref.traits_cheating
S["max_traits"] >> pref.max_traits
S["trait_points"] >> pref.starting_trait_points
pref.traits_cheating = save_data["traits_cheating"]
pref.max_traits = save_data["max_traits"]
pref.starting_trait_points = save_data["trait_points"]
S["custom_say"] >> pref.custom_say
S["custom_whisper"] >> pref.custom_whisper
S["custom_ask"] >> pref.custom_ask
S["custom_exclaim"] >> pref.custom_exclaim
pref.custom_say = save_data["custom_say"]
pref.custom_whisper = save_data["custom_whisper"]
pref.custom_ask = save_data["custom_ask"]
pref.custom_exclaim = save_data["custom_exclaim"]
S["custom_heat"] >> pref.custom_heat
S["custom_cold"] >> pref.custom_cold
pref.custom_heat = save_data["custom_heat"]
pref.custom_cold = save_data["custom_cold"]
/datum/category_item/player_setup_item/vore/traits/save_character(var/savefile/S)
S["custom_species"] << pref.custom_species
S["custom_base"] << pref.custom_base
S["pos_traits"] << pref.pos_traits
S["neu_traits"] << pref.neu_traits
S["neg_traits"] << pref.neg_traits
S["blood_color"] << pref.blood_color
S["blood_reagents"] << pref.blood_reagents
/datum/category_item/player_setup_item/vore/traits/save_character(list/save_data)
save_data["custom_species"] = pref.custom_species
save_data["custom_base"] = pref.custom_base
save_data["pos_traits"] = pref.pos_traits
save_data["neu_traits"] = pref.neu_traits
save_data["neg_traits"] = pref.neg_traits
save_data["blood_color"] = pref.blood_color
save_data["blood_reagents"] = pref.blood_reagents
S["traits_cheating"] << pref.traits_cheating
S["max_traits"] << pref.max_traits
S["trait_points"] << pref.starting_trait_points
save_data["traits_cheating"] = pref.traits_cheating
save_data["max_traits"] = pref.max_traits
save_data["trait_points"] = pref.starting_trait_points
S["custom_say"] << pref.custom_say
S["custom_whisper"] << pref.custom_whisper
S["custom_ask"] << pref.custom_ask
S["custom_exclaim"] << pref.custom_exclaim
save_data["custom_say"] = pref.custom_say
save_data["custom_whisper"] = pref.custom_whisper
save_data["custom_ask"] = pref.custom_ask
save_data["custom_exclaim"] = pref.custom_exclaim
S["custom_heat"] << pref.custom_heat
S["custom_cold"] << pref.custom_cold
save_data["custom_heat"] = pref.custom_heat
save_data["custom_cold"] = pref.custom_cold
/datum/category_item/player_setup_item/vore/traits/sanitize_character()
if(!pref.pos_traits) pref.pos_traits = list()
@@ -9,15 +9,15 @@
name = "NIF Data"
sort_order = 8
/datum/category_item/player_setup_item/vore/nif/load_character(var/savefile/S)
S["nif_path"] >> pref.nif_path
S["nif_durability"] >> pref.nif_durability
S["nif_savedata"] >> pref.nif_savedata
/datum/category_item/player_setup_item/vore/nif/load_character(list/save_data)
pref.nif_path = save_data["nif_path"]
pref.nif_durability = save_data["nif_durability"]
pref.nif_savedata = save_data["nif_savedata"]
/datum/category_item/player_setup_item/vore/nif/save_character(var/savefile/S)
S["nif_path"] << pref.nif_path
S["nif_durability"] << pref.nif_durability
S["nif_savedata"] << pref.nif_savedata
/datum/category_item/player_setup_item/vore/nif/save_character(list/save_data)
save_data["nif_path"] = pref.nif_path
save_data["nif_durability"] = pref.nif_durability
save_data["nif_savedata"] = pref.nif_savedata
/datum/category_item/player_setup_item/vore/nif/sanitize_character()
if(pref.nif_path && !ispath(pref.nif_path)) //We have at least a text string that should be a path.
@@ -2,27 +2,27 @@
name = "Misc Settings"
sort_order = 9
/datum/category_item/player_setup_item/vore/misc/load_character(var/savefile/S)
S["show_in_directory"] >> pref.show_in_directory
S["directory_tag"] >> pref.directory_tag
S["directory_erptag"] >> pref.directory_erptag
S["directory_ad"] >> pref.directory_ad
S["sensorpref"] >> pref.sensorpref
S["capture_crystal"] >> pref.capture_crystal
S["auto_backup_implant"] >> pref.auto_backup_implant
S["borg_petting"] >> pref.borg_petting
S["stomach_vision"] >> pref.stomach_vision
/datum/category_item/player_setup_item/vore/misc/load_character(list/save_data)
pref.show_in_directory = save_data["show_in_directory"]
pref.directory_tag = save_data["directory_tag"]
pref.directory_erptag = save_data["directory_erptag"]
pref.directory_ad = save_data["directory_ad"]
pref.sensorpref = save_data["sensorpref"]
pref.capture_crystal = save_data["capture_crystal"]
pref.auto_backup_implant = save_data["auto_backup_implant"]
pref.borg_petting = save_data["borg_petting"]
pref.stomach_vision = save_data["stomach_vision"]
/datum/category_item/player_setup_item/vore/misc/save_character(var/savefile/S)
S["show_in_directory"] << pref.show_in_directory
S["directory_tag"] << pref.directory_tag
S["directory_erptag"] << pref.directory_erptag
S["directory_ad"] << pref.directory_ad
S["sensorpref"] << pref.sensorpref
S["capture_crystal"] << pref.capture_crystal
S["auto_backup_implant"] << pref.auto_backup_implant
S["borg_petting"] << pref.borg_petting
S["stomach_vision"] << pref.stomach_vision
/datum/category_item/player_setup_item/vore/misc/save_character(list/save_data)
save_data["show_in_directory"] = pref.show_in_directory
save_data["directory_tag"] = pref.directory_tag
save_data["directory_erptag"] = pref.directory_erptag
save_data["directory_ad"] = pref.directory_ad
save_data["sensorpref"] = pref.sensorpref
save_data["capture_crystal"] = pref.capture_crystal
save_data["auto_backup_implant"] = pref.auto_backup_implant
save_data["borg_petting"] = pref.borg_petting
save_data["stomach_vision"] = pref.stomach_vision
/datum/category_item/player_setup_item/vore/misc/copy_to_mob(var/mob/living/carbon/human/character)
if(pref.sensorpref > 5 || pref.sensorpref < 1)