[MIRROR] Adds Trait Genetics (#10142)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-02-13 07:41:59 -07:00
committed by GitHub
parent d81e145924
commit 7bfffc808d
138 changed files with 3818 additions and 2996 deletions

View File

@@ -56,9 +56,11 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
var/datum/sprite_accessory/instance = style_list[path]
if(!istype(instance))
continue
if(instance.name == DEVELOPER_WARNING_NAME)
continue
if(instance.ckeys_allowed && (!client || !(client.ckey in instance.ckeys_allowed)))
continue
if(instance.species_allowed && (!species || !(species in instance.species_allowed)) && (!client || !check_rights(R_ADMIN | R_EVENT | R_FUN, 0, client)) && (!custom_base || !(custom_base in instance.species_allowed))) //VOREStation Edit: Custom Species
if(instance.species_allowed && (!species || !(species in instance.species_allowed)) && (!client || !check_rights(R_ADMIN | R_EVENT | R_FUN, 0, client)) && (!custom_base || !(custom_base in instance.species_allowed)))
continue
.[instance.name] = instance
@@ -83,7 +85,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.f_style = save_data["facial_style_name"]
pref.grad_style = save_data["grad_style_name"]
pref.b_type = save_data["b_type"]
pref.disabilities = save_data["disabilities"]
pref.organ_data = check_list_copy(save_data["organ_data"])
pref.rlimb_data = check_list_copy(save_data["rlimb_data"])
pref.body_markings = check_list_copy(save_data["body_markings"])
@@ -95,13 +96,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.synth_markings = save_data["synth_markings"]
pref.bgstate = save_data["bgstate"]
pref.body_descriptors = check_list_copy(save_data["body_descriptors"])
//YWadd start
pref.wingdings = save_data["Wingdings"]
pref.colorblind_mono = save_data["colorblind_mono"]
pref.colorblind_vulp = save_data["colorblind_vulp"]
pref.colorblind_taj = save_data["colorblind_taj"]
pref.haemophilia = save_data["haemophilia"]
//YWadd end
pref.ear_style = save_data["ear_style"]
pref.ear_secondary_style = save_data["ear_secondary_style"]
pref.ear_secondary_colors = save_data["ear_secondary_colors"]
@@ -116,7 +110,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
save_data["facial_style_name"] = pref.f_style
save_data["grad_style_name"] = pref.grad_style
save_data["b_type"] = pref.b_type
save_data["disabilities"] = pref.disabilities
save_data["organ_data"] = check_list_copy(pref.organ_data)
save_data["rlimb_data"] = check_list_copy(pref.rlimb_data)
var/list/body_markings = check_list_copy(pref.body_markings)
@@ -129,13 +122,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
save_data["synth_markings"] = pref.synth_markings
save_data["bgstate"] = pref.bgstate
save_data["body_descriptors"] = check_list_copy(pref.body_descriptors)
//YWadd start
save_data["Wingdings"] = pref.wingdings
save_data["colorblind_mono"] = pref.colorblind_mono
save_data["colorblind_vulp"] = pref.colorblind_vulp
save_data["colorblind_taj"] = pref.colorblind_taj
save_data["haemophilia"] = pref.haemophilia
//YWadd end
save_data["ear_style"] = pref.ear_style
save_data["ear_secondary_style"] = pref.ear_secondary_style
save_data["ear_secondary_colors"] = pref.ear_secondary_colors
@@ -153,12 +139,11 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.grad_style = sanitize_inlist(pref.grad_style, GLOB.hair_gradients, initial(pref.grad_style))
pref.b_type = sanitize_text(pref.b_type, initial(pref.b_type))
pref.disabilities = sanitize_integer(pref.disabilities, 0, 65535, initial(pref.disabilities))
if(!pref.organ_data) pref.organ_data = list()
if(!pref.rlimb_data) pref.rlimb_data = list()
if(!pref.body_markings) pref.body_markings = list()
else pref.body_markings &= body_marking_styles_list
for (var/M in pref.body_markings) //VOREStation Edit
for (var/M in pref.body_markings)
if (!islist(pref.body_markings[M]))
var/col = istext(pref.body_markings[M]) ? pref.body_markings[M] : "#000000"
pref.body_markings[M] = pref.mass_edit_marking_list(M,color=col)
@@ -214,24 +199,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
character.set_gender(pref.biological_gender)
if(pref.species == "Grey")//YWadd START
character.wingdings = pref.wingdings
if(pref.colorblind_mono == 1)
character.add_modifier(/datum/modifier/trait/colorblind_monochrome)
else if(pref.colorblind_vulp == 1)
character.add_modifier(/datum/modifier/trait/colorblind_vulp)
else if(pref.colorblind_taj == 1)
character.add_modifier(/datum/modifier/trait/colorblind_taj)
if(pref.haemophilia == 1)
character.add_modifier(/datum/modifier/trait/haemophilia)
//YWadd END
// Destroy/cyborgize organs and limbs.
//VOREStation Edit
character.synthetic = pref.species == "Protean" ? all_robolimbs["protean"] : null //Clear the existing var. (unless protean, then switch it to the normal protean limb)
var/list/organs_to_edit = list()
for (var/name in list(BP_TORSO, BP_HEAD, BP_GROIN, BP_L_ARM, BP_R_ARM, BP_L_HAND, BP_R_HAND, BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT))
@@ -242,7 +210,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
organs_to_edit += name
else
organs_to_edit.Insert(x+(O.robotic == ORGAN_NANOFORM ? 1 : 0), name)
for(var/name in organs_to_edit) //VOREStation edit end
for(var/name in organs_to_edit)
var/status = pref.organ_data[name]
var/obj/item/organ/external/O = character.organs_by_name[name]
if(O)
@@ -279,7 +247,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
for(var/M in pref.body_markings)
priority += 1
var/datum/sprite_accessory/marking/mark_datum = body_marking_styles_list[M]
//var/mark_color = "[pref.body_markings[M]]" //VOREStation Edit
for(var/BP in mark_datum.body_parts)
var/obj/item/organ/external/O = character.organs_by_name[BP]
@@ -307,14 +274,12 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
var/datum/species/mob_species = GLOB.all_species[pref.species]
. += "<table><tr style='vertical-align:top'><td><b>Body</b> "
. += "(<a href='byond://?src=\ref[src];random=1'>&reg;</A>)"
. += "(<a title='Randomize' href='byond://?src=\ref[src];random=1'>&reg;</A>)"
. += "<br>"
. += "Species: <a href='byond://?src=\ref[src];show_species=1'>[pref.species]</a><br>"
. += "Blood Type: <a href='byond://?src=\ref[src];blood_type=1'>[pref.b_type]</a><br>"
if(has_flag(mob_species, HAS_SKIN_TONE))
. += "Skin Tone: <a href='byond://?src=\ref[src];skin_tone=1'>[-pref.s_tone + 35]/220</a><br>"
. += "<b>Disabilities</b><br> <a href='byond://?src=\ref[src];disabilities_yw=1'>Adjust</a><br>" // YWadd
//YWcommented moved onto disabilities. += "Needs Glasses: <a href='byond://?src=\ref[src];disabilities=[NEARSIGHTED]'><b>[pref.disabilities & NEARSIGHTED ? "Yes" : "No"]</b></a><br>"
. += "Limbs: <a href='byond://?src=\ref[src];limbs=1'>Adjust</a> <a href='byond://?src=\ref[src];reset_limbs=1'>Reset</a><br>"
. += "Internal Organs: <a href='byond://?src=\ref[src];organs=1'>Adjust</a><br>"
//display limbs below
@@ -565,9 +530,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.alternate_languages.Cut() // Reset their alternate languages. Todo: attempt to just fix it instead?
return TOPIC_HANDLED
else if(href_list["disabilities_yw"])
Disabilities_YW(user) //ChompEDIT - usr removal
else if(href_list["set_species"])
user << browse(null, "window=species")
if(!pref.species_preview || !(pref.species_preview in GLOB.all_species))
@@ -580,7 +542,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
else
return TOPIC_NOACTION
if(((!(setting_species.spawn_flags & SPECIES_CAN_JOIN)) || (!is_alien_whitelisted(preference_mob(),setting_species))) && !check_rights(R_ADMIN|R_EVENT, 0) && !(setting_species.spawn_flags & SPECIES_WHITELIST_SELECTABLE)) //VOREStation Edit: selectability
if(((!(setting_species.spawn_flags & SPECIES_CAN_JOIN)) || (!is_alien_whitelisted(preference_mob(),setting_species))) && !check_rights(R_ADMIN|R_EVENT, 0) && !(setting_species.spawn_flags & SPECIES_WHITELIST_SELECTABLE))
return TOPIC_NOACTION
var/prev_species = pref.species
@@ -588,7 +550,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
if(prev_species != pref.species)
if(!(pref.biological_gender in mob_species.genders))
pref.set_biological_gender(mob_species.genders[1])
pref.custom_species = null //VOREStation Edit - This is cleared on species changes
pref.custom_species = null
//grab one of the valid hair styles for the newly chosen species
var/list/valid_hairstyles = pref.get_valid_hairstyles(user)
@@ -621,7 +583,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
var/min_age = get_min_age()
var/max_age = get_max_age()
pref.update_preference_by_type(/datum/preference/numeric/human/age, max(min(pref.read_preference(/datum/preference/numeric/human/age), max_age), min_age))
pref.blood_color = setting_species.blood_color // VOREstation edit
pref.blood_color = setting_species.blood_color
return TOPIC_REFRESH_UPDATE_PREVIEW
@@ -756,15 +718,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
else if(href_list["marking_style"])
var/list/usable_markings = pref.body_markings.Copy() ^ body_marking_styles_list.Copy()
/* VOREStation Removal - No markings whitelist, let people mix/match
for(var/M in usable_markings)
var/datum/sprite_accessory/S = usable_markings[M]
var/datum/species/spec = GLOB.all_species[pref.species]
if(!S.species_allowed.len)
continue
else if(!(pref.species in S.species_allowed) && !(pref.custom_base in S.species_allowed) && !(spec.base_species in S.species_allowed))
usable_markings -= M
*/ //VOREStation Removal End
var/new_marking = tgui_input_list(user, "Choose a body marking:", "Character Preference", usable_markings)
if(new_marking && CanUseTopic(user))
pref.body_markings[new_marking] = pref.mass_edit_marking_list(new_marking) //New markings start black
@@ -962,10 +915,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
continue
if(tmp_species in M.species_cannot_use)
continue
//VOREStation Add - Cyberlimb whitelisting.
if(M.whitelisted_to && !(user.ckey in M.whitelisted_to))
continue
//VOREStation Add End
usable_manufacturers[company] = M
if(!usable_manufacturers.len)
return
@@ -1062,11 +1013,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
return TOPIC_REFRESH
else if(href_list["disabilities"])
var/disability_flag = text2num(href_list["disabilities"])
pref.disabilities ^= disability_flag
Disabilities_YW(user) //YW Edit //ChompEDIT - usr removal
else if(href_list["toggle_preview_value"])
pref.equip_preview_mob ^= text2num(href_list["toggle_preview_value"])
return TOPIC_REFRESH_UPDATE_PREVIEW
@@ -1093,38 +1039,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.bgstate = next_in_list(pref.bgstate, pref.bgstate_options)
return TOPIC_REFRESH_UPDATE_PREVIEW
//YW Add Start
else if(href_list["wingdings"])
pref.wingdings = !pref.wingdings
Disabilities_YW(user) //ChompEDIT - usr removal
else if(href_list["colorblind_mono"])
pref.colorblind_mono = !pref.colorblind_mono
Disabilities_YW(user) //ChompEDIT - usr removal
else if(href_list["colorblind_vulp"])
pref.colorblind_vulp = !pref.colorblind_vulp
Disabilities_YW(user) //ChompEDIT - usr removal
else if(href_list["colorblind_taj"])
pref.colorblind_taj = !pref.colorblind_taj
Disabilities_YW(user) //ChompEDIT - usr removal
else if(href_list["haemophilia"])
pref.haemophilia = !pref.haemophilia
Disabilities_YW(user) //ChompEDIT - usr removal
else if(href_list["reset_disabilities"])
pref.wingdings = 0
pref.colorblind_mono = 0
pref.colorblind_taj = 0
pref.colorblind_vulp = 0
pref.haemophilia = 0
Disabilities_YW(user) //ChompEDIT - usr removal
//YW Add End
else if(href_list["ear_style"])
var/new_ear_style = tgui_input_list(user, "Select an ear style for this character:", "Character Preference", pref.get_available_styles(global.ear_styles_list), pref.ear_style)
if(new_ear_style)
@@ -1260,12 +1174,10 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
dat += "<center><h2>[current_species.name] \[<a href='byond://?src=\ref[src];show_species=1'>change</a>\]</h2></center><hr/>"
dat += "<table padding='8px'>"
dat += "<tr>"
//vorestation edit begin
if(current_species.wikilink)
dat += "<td width = 400>[current_species.blurb]<br><br>See <a href=[current_species.wikilink]>the wiki</a> for more details.</td>"
else
dat += "<td width = 400>[current_species.blurb]</td>"
//vorestation edit end
dat += "<td width = 200 align='center'>"
if("preview" in cached_icon_states(current_species.icobase))
user << browse_rsc(icon(current_species.icobase,"preview"), "species_preview_[current_species.name].png")
@@ -1322,7 +1234,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
dat += "<font color='red'><b>You cannot play as this species.</br><small>If you wish to be whitelisted, you can make an application post on <a href='byond://?src=\ref[user];preference=open_whitelist_forum'>the forums</a>.</small></b></font></br>"
else if(restricted == 2)
dat += "<font color='red'><b>You cannot play as this species.</br><small>This species is not available for play as a station race..</small></b></font></br>"
if(!restricted || check_rights(R_ADMIN|R_EVENT, 0) || current_species.spawn_flags & SPECIES_WHITELIST_SELECTABLE) //VOREStation Edit: selectability
if(!restricted || check_rights(R_ADMIN|R_EVENT, 0) || current_species.spawn_flags & SPECIES_WHITELIST_SELECTABLE)
dat += "\[<a href='byond://?src=\ref[src];set_species=[pref.species_preview]'>select</a>\]"
dat += "</center></body></html>"