Merge pull request #13099 from Heroman3003/ambiguity

Fixes ambigous genders being too ambigous
This commit is contained in:
Casey
2022-06-19 00:59:23 +00:00
committed by CHOMPStation2
parent 1740fb34de
commit 727fd44c86
4 changed files with 33 additions and 27 deletions
+4
View File
@@ -447,3 +447,7 @@
#define DEATHGASP_NO_MESSAGE "no message"
#define RESIST_COOLDOWN 2 SECONDS
#define VISIBLE_GENDER_FORCE_PLURAL 1 // Used by get_visible_gender to return PLURAL
#define VISIBLE_GENDER_FORCE_IDENTIFYING 2 // Used by get_visible_gender to return the mob's identifying gender
#define VISIBLE_GENDER_FORCE_BIOLOGICAL 3 // Used by get_visible_gender to return the mob's biological gender
+4 -4
View File
@@ -27,7 +27,7 @@
// Overlays
///Our local copy of (non-priority) overlays without byond magic. Use procs in SSoverlays to manipulate
var/list/our_overlays
var/list/our_overlays
///Overlays that should remain on top and not normally removed when using cut_overlay functions, like c4.
var/list/priority_overlays
///vis overlays managed by SSvis_overlays to automaticaly turn them like other overlays
@@ -35,7 +35,7 @@
///Our local copy of filter data so we can add/remove it
var/list/filter_data
//Detective Work, used for the duplicate data points kept in the scanners
var/list/original_atom
// Track if we are already had initialize() called to prevent double-initialization.
@@ -681,7 +681,7 @@
if(!isnull(.))
datum_flags |= DF_VAR_EDITED
return
. = ..()
/atom/proc/atom_say(message)
@@ -716,7 +716,7 @@
. = ..()
SEND_SIGNAL(src, COMSIG_ATOM_EXITED, AM, new_loc)
/atom/proc/get_visible_gender()
/atom/proc/get_visible_gender(mob/user, force)
return gender
/atom/proc/interact(mob/user)
@@ -76,22 +76,12 @@
BP_L_LEG = skip_body & EXAMINE_SKIPLEGS,
BP_R_LEG = skip_body & EXAMINE_SKIPLEGS)
var/datum/gender/T = gender_datums[get_visible_gender()]
var/gender_hidden = (skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE)
var/gender_key = get_visible_gender(user, gender_hidden)
if((skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE)) //big suits/masks/helmets make it hard to tell their gender
T = gender_datums[PLURAL]
else if(species && species.ambiguous_genders)
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(H.species && !istype(species, H.species))
T = gender_datums[PLURAL]// Species with ambiguous_genders will not show their true gender upon examine if the examiner is not also the same species.
if(!(issilicon(user) || isobserver(user))) // Ghosts and borgs are all knowing
T = gender_datums[PLURAL]
if(!T)
// Just in case someone VVs the gender to something strange. It'll runtime anyway when it hits usages, better to CRASH() now with a helpful message.
CRASH("Gender datum was null; key was '[((skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE)) ? PLURAL : gender]'")
var/datum/gender/T = gender_datums[gender_key]
if (!T)
CRASH({"Null gender datum on examine: mob="[src]",hidden="[gender_hidden]",key="[gender_key]",bio="[gender]",id="[identifying_gender]""})
var/name_ender = ""
if(!((skip_gear & EXAMINE_SKIPJUMPSUIT) && (skip_body & EXAMINE_SKIPFACE)))
@@ -144,7 +134,7 @@
LAZYADD(pocket_msg, r_store_message)
if(LAZYLEN(pocket_msg))
tie_msg += " Near the waist it has [english_list(pocket_msg)]."
if(w_uniform.blood_DNA)
msg += "<span class='warning'>[T.He] [T.is] wearing [bicon(w_uniform)] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name]![tie_msg]</span>"
else
+19 -7
View File
@@ -855,13 +855,25 @@
remoteview_target = null
reset_view(0)
/mob/living/carbon/human/get_visible_gender()
if(wear_suit && wear_suit.flags_inv & HIDEJUMPSUIT && ((head && head.flags_inv & HIDEMASK) || wear_mask))
return PLURAL //plural is the gender-neutral default
if(species)
if(species.ambiguous_genders)
return PLURAL // regardless of what you're wearing, your gender can't be figured out
return get_gender()
/mob/living/carbon/human/get_visible_gender(mob/user, force)
switch(force)
if(VISIBLE_GENDER_FORCE_PLURAL)
return PLURAL
if(VISIBLE_GENDER_FORCE_IDENTIFYING)
return get_gender()
if(VISIBLE_GENDER_FORCE_BIOLOGICAL)
return gender
else
if((wear_mask || (head?.flags_inv & HIDEMASK)) && (wear_suit?.flags_inv & HIDEJUMPSUIT))
return PLURAL
if(species?.ambiguous_genders && user)
if(ishuman(user))
var/mob/living/carbon/human/human = user
if(!istype(human.species, species))
return PLURAL
else if(!isobserver(user) && !issilicon(user))
return PLURAL
return get_gender()
/mob/living/carbon/human/proc/increase_germ_level(n)
if(gloves)