diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 4052dce40d..6913473e88 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -136,8 +136,12 @@ #define ORGAN_SLOT_TESTICLES "testicles" #define ORGAN_SLOT_BREASTS "breasts" - ////organ defines #define STANDARD_ORGAN_THRESHOLD 100 #define STANDARD_ORGAN_HEALING 0.001 -#define STANDARD_ORGAN_DECAY 0.00222 //designed to fail organs when left to decay for ~15 minutes \ No newline at end of file +#define STANDARD_ORGAN_DECAY 0.00222 //designed to fail organs when left to decay for ~15 minutes + +#define G_MALE 1 +#define G_FEMALE 2 +#define G_PLURAL 3 +#define G_NEUTER 4 diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index ebfba43852..1622cc9dbf 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -236,7 +236,12 @@ G.fields["fingerprint"] = md5(H.dna.uni_identity) G.fields["p_stat"] = "Active" G.fields["m_stat"] = "Stable" - G.fields["sex"] = H.gender + if(H.gender == MALE) + G.fields["gender"] = "Male" + else if(H.gender == FEMALE) + G.fields["gender"] = "Female" + else + G.fields["gender"] = "Other" G.fields["photo_front"] = photo_front G.fields["photo_side"] = photo_side general += G @@ -274,7 +279,12 @@ L.fields["name"] = H.real_name L.fields["rank"] = H.mind.assigned_role L.fields["age"] = H.age - L.fields["sex"] = H.gender + if(H.gender == MALE) + G.fields["gender"] = "Male" + else if(H.gender == FEMALE) + G.fields["gender"] = "Female" + else + G.fields["gender"] = "Other" L.fields["blood_type"] = H.dna.blood_type L.fields["b_dna"] = H.dna.unique_enzymes L.fields["enzymes"] = H.dna.struc_enzymes diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 67dbbdfef7..5fa991c10c 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -92,7 +92,15 @@ . = "" var/list/L = new /list(DNA_UNI_IDENTITY_BLOCKS) - L[DNA_GENDER_BLOCK] = construct_block((holder.gender!=MALE)+1, 2) + switch(holder.gender) + if(MALE) + L[DNA_GENDER_BLOCK] = construct_block(G_MALE, 4) + if(FEMALE) + L[DNA_GENDER_BLOCK] = construct_block(G_FEMALE, 4) + if(PLURAL) + L[DNA_GENDER_BLOCK] = construct_block(G_PLURAL, 4) + else + L[DNA_GENDER_BLOCK] = construct_block(G_NEUTER, 4) if(ishuman(holder)) var/mob/living/carbon/human/H = holder if(!GLOB.hair_styles_list.len) @@ -165,7 +173,15 @@ if(DNA_EYE_COLOR_BLOCK) setblock(uni_identity, blocknumber, sanitize_hexcolor(H.eye_color)) if(DNA_GENDER_BLOCK) - setblock(uni_identity, blocknumber, construct_block((H.gender!=MALE)+1, 2)) + switch(H.gender) + if(MALE) + setblock(uni_identity, blocknumber, construct_block(G_MALE, 4)) + if(FEMALE) + setblock(uni_identity, blocknumber, construct_block(G_FEMALE, 4)) + if(PLURAL) + setblock(uni_identity, blocknumber, construct_block(G_PLURAL, 4)) + else + setblock(uni_identity, blocknumber, construct_block(G_NEUTER, 4)) if(DNA_FACIAL_HAIR_STYLE_BLOCK) setblock(uni_identity, blocknumber, construct_block(GLOB.facial_hair_styles_list.Find(H.facial_hair_style), GLOB.facial_hair_styles_list.len)) if(DNA_HAIR_STYLE_BLOCK) @@ -307,7 +323,16 @@ /mob/living/carbon/proc/updateappearance(icon_update=1, mutcolor_update=0, mutations_overlay_update=0) if(!has_dna()) return - gender = (deconstruct_block(getblock(dna.uni_identity, DNA_GENDER_BLOCK), 2)-1) ? FEMALE : MALE + + switch(deconstruct_block(getblock(dna.uni_identity, DNA_GENDER_BLOCK), 4)) + if(G_MALE) + gender = MALE + if(G_FEMALE) + gender = FEMALE + if(G_PLURAL) + gender = PLURAL + else + gender = NEUTER /mob/living/carbon/human/updateappearance(icon_update=1, mutcolor_update=0, mutations_overlay_update=0) ..() diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index e4fa241907..ba3fdce9b9 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -326,7 +326,7 @@ Code: if(active1 in GLOB.data_core.general) menu += "Name: [active1.fields["name"]] ID: [active1.fields["id"]]
" - menu += "Sex: [active1.fields["sex"]]
" + menu += "Sex: [active1.fields["gender"]]
" menu += "Age: [active1.fields["age"]]
" menu += "Rank: [active1.fields["rank"]]
" menu += "Fingerprint: [active1.fields["fingerprint"]]
" @@ -370,7 +370,7 @@ Code: if(active1 in GLOB.data_core.general) menu += "Name: [active1.fields["name"]] ID: [active1.fields["id"]]
" - menu += "Sex: [active1.fields["sex"]]
" + menu += "Sex: [active1.fields["gender"]]
" menu += "Age: [active1.fields["age"]]
" menu += "Rank: [active1.fields["rank"]]
" menu += "Fingerprint: [active1.fields["fingerprint"]]
" diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 0a5794c59d..90408472e9 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -20,14 +20,14 @@ return if(broken || !Adjacent(user)) return - + if(ishuman(user)) var/mob/living/carbon/human/H = user //see code/modules/mob/dead/new_player/preferences.dm at approx line 545 for comments! //this is largely copypasted from there. //handle facial hair (if necessary) - if(H.gender == MALE) + if(H.gender != FEMALE) var/new_style = input(user, "Select a facial hair style", "Grooming") as null|anything in GLOB.facial_hair_styles_list if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return //no tele-grooming diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 70ae133a31..d7af763244 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -408,7 +408,7 @@ var/obj/item/organ/tail/cat/tail = new ears.Insert(H, drop_if_replaced=FALSE) tail.Insert(H, drop_if_replaced=FALSE) - var/list/honorifics = list("[MALE]" = list("kun"), "[FEMALE]" = list("chan","tan"), "[NEUTER]" = list("san")) //John Robust -> Robust-kun + var/list/honorifics = list("[MALE]" = list("kun"), "[FEMALE]" = list("chan","tan"), "[NEUTER]" = list("san"), "[PLURAL]" = list("san")) //John Robust -> Robust-kun var/list/names = splittext(H.real_name," ") var/forename = names.len > 1 ? names[2] : names[1] var/newname = "[forename]-[pick(honorifics["[H.gender]"])]" diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 1437555af1..f30e47c68e 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -419,7 +419,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if(record_found)//If they have a record we can determine a few things. new_character.real_name = record_found.fields["name"] - new_character.gender = record_found.fields["sex"] + new_character.gender = record_found.fields["gender"] new_character.age = record_found.fields["age"] new_character.hardset_dna(record_found.fields["identity"], record_found.fields["enzymes"], record_found.fields["name"], record_found.fields["blood_type"], new record_found.fields["species"], record_found.fields["features"]) else diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 08ecefb91f..75daaabb99 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -482,12 +482,20 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(gender == MALE) hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_male_list) facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_male_list) - else + undershirt = sanitize_inlist(undershirt, GLOB.undershirt_m) + underwear = sanitize_inlist(underwear, GLOB.underwear_m) + else if(gender == FEMALE) hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_female_list) facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_female_list) - underwear = sanitize_inlist(underwear, GLOB.underwear_list) + undershirt = sanitize_inlist(undershirt, GLOB.undershirt_f) + underwear = sanitize_inlist(underwear, GLOB.underwear_f) + else + hair_style = sanitize_inlist(hair_style, GLOB.hair_styles_list) + facial_hair_style = sanitize_inlist(facial_hair_style, GLOB.facial_hair_styles_list) + underwear = sanitize_inlist(underwear, GLOB.underwear_list) + undershirt = sanitize_inlist(undershirt, GLOB.undershirt_list) + undie_color = sanitize_hexcolor(undie_color, 3, FALSE, initial(undie_color)) - undershirt = sanitize_inlist(undershirt, GLOB.undershirt_list) shirt_color = sanitize_hexcolor(shirt_color, 3, FALSE, initial(shirt_color)) socks = sanitize_inlist(socks, GLOB.socks_list) socks_color = sanitize_hexcolor(socks_color, 3, FALSE, initial(socks_color)) diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index 8215f84c50..55f4bdd65d 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -438,7 +438,7 @@ if(1) . += "
Medical Record

" if(medicalActive1 in GLOB.data_core.general) - . += "Name: [medicalActive1.fields["name"]] ID: [medicalActive1.fields["id"]]
\nSex: [medicalActive1.fields["sex"]]
\nAge: [medicalActive1.fields["age"]]
\nFingerprint: [medicalActive1.fields["fingerprint"]]
\nPhysical Status: [medicalActive1.fields["p_stat"]]
\nMental Status: [medicalActive1.fields["m_stat"]]
" + . += "Name: [medicalActive1.fields["name"]] ID: [medicalActive1.fields["id"]]
\nGender: [medicalActive1.fields["gender"]]
\nAge: [medicalActive1.fields["age"]]
\nFingerprint: [medicalActive1.fields["fingerprint"]]
\nPhysical Status: [medicalActive1.fields["p_stat"]]
\nMental Status: [medicalActive1.fields["m_stat"]]
" else . += "
Requested medical record not found.

" if(medicalActive2 in GLOB.data_core.medical) @@ -460,7 +460,7 @@ if(1) . += "

Security Record

" if(securityActive1 in GLOB.data_core.general) - . += "Name: [securityActive1.fields["name"]] ID: [securityActive1.fields["id"]]
\nSex: [securityActive1.fields["sex"]]
\nAge: [securityActive1.fields["age"]]
\nRank: [securityActive1.fields["rank"]]
\nFingerprint: [securityActive1.fields["fingerprint"]]
\nPhysical Status: [securityActive1.fields["p_stat"]]
\nMental Status: [securityActive1.fields["m_stat"]]
" + . += "Name: [securityActive1.fields["name"]] ID: [securityActive1.fields["id"]]
\nGender: [securityActive1.fields["gender"]]
\nAge: [securityActive1.fields["age"]]
\nRank: [securityActive1.fields["rank"]]
\nFingerprint: [securityActive1.fields["fingerprint"]]
\nPhysical Status: [securityActive1.fields["p_stat"]]
\nMental Status: [securityActive1.fields["m_stat"]]
" else . += "
Requested security record not found,

" if(securityActive2 in GLOB.data_core.security) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index aa1fd7dbfb..4120c81a78 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -126,7 +126,7 @@ continue var/obj/item/paper/P = new /obj/item/paper(src) P.info = "
Security Record

" - P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nSex: [G.fields["sex"]]
\nAge: [G.fields["age"]]
\nFingerprint: [G.fields["fingerprint"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
" + P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nGender: [G.fields["gender"]]
\nAge: [G.fields["age"]]
\nFingerprint: [G.fields["fingerprint"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
" P.info += "
\n
Security Data

\nCriminal Status: [S.fields["criminal"]]
\n
\nMinor Crimes: [S.fields["mi_crim"]]
\nDetails: [S.fields["mi_crim_d"]]
\n
\nMajor Crimes: [S.fields["ma_crim"]]
\nDetails: [S.fields["ma_crim_d"]]
\n
\nImportant Notes:
\n\t[S.fields["notes"]]
\n
\n
Comments/Log

" var/counter = 1 while(S.fields["com_[counter]"]) @@ -159,7 +159,7 @@ continue var/obj/item/paper/P = new /obj/item/paper(src) P.info = "
Medical Record

" - P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nSex: [G.fields["sex"]]
\nAge: [G.fields["age"]]
\nFingerprint: [G.fields["fingerprint"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
" + P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nGender: [G.fields["gender"]]
\nAge: [G.fields["age"]]
\nFingerprint: [G.fields["fingerprint"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
" P.info += "
\n
Medical Data

\nBlood Type: [M.fields["blood_type"]]
\nDNA: [M.fields["b_dna"]]
\n
\nMinor Disabilities: [M.fields["mi_dis"]]
\nDetails: [M.fields["mi_dis_d"]]
\n
\nMajor Disabilities: [M.fields["ma_dis"]]
\nDetails: [M.fields["ma_dis_d"]]
\n
\nAllergies: [M.fields["alg"]]
\nDetails: [M.fields["alg_d"]]
\n
\nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)
\nDetails: [M.fields["cdi_d"]]
\n
\nImportant Notes:
\n\t[M.fields["notes"]]
\n
\n
Comments/Log

" var/counter = 1 while(M.fields["com_[counter]"])