Alien species without a gender will now spawn as Neuter, and are neuter in the character setup. (#8115)

Species that are neuter (at least from the human/player characters' perspective) will now properly spawn as neuter, and be neuter in the character setup screen.

This affects (tagged) IPCs, Dionae, Vox & Vaurca.

Also fixes some gender related grammar stuff.

I think all the procs that randomise based on gender will just default to one or the other and shouldn't have noticeably weird results.

This also fixes the bug where Diona players would be 'he/she', but NPC diona would be 'it'.
This commit is contained in:
mikomyazaki
2020-01-29 01:12:49 -03:00
committed by GitHub
parent bc82860778
commit 8e092ae828
15 changed files with 26 additions and 31 deletions
@@ -186,7 +186,7 @@
var/obj/item/grab/G = new /obj/item/grab(M, src)
if(buckled)
to_chat(M, "<span class='notice'>You cannot grab [src], \he is buckled in!</span>")
to_chat(M, "<span class='notice'>You cannot grab [src], \he [gender_datums[gender].is] buckled in!</span>")
if(!G) //the grab will delete itself in New if affecting is anchored
return
M.put_in_active_hand(G)
@@ -546,7 +546,7 @@ emp_act
var/obj/item/grab/G = new /obj/item/grab(user, src)
if(buckled)
to_chat(user, "<span class='notice'>You cannot grab [src], \he is buckled in!</span>")
to_chat(user, "<span class='notice'>You cannot grab [src], \he [gender_datums[gender].is] buckled in!</span>")
if(!G) //the grab will delete itself in New if affecting is anchored
return
user.put_in_active_hand(G)
@@ -7,6 +7,7 @@
language = LANGUAGE_VOX
name_language = LANGUAGE_VOX
num_alternate_languages = 1
default_genders = list(NEUTER)
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/strong, /datum/unarmed_attack/bite/strong)
rarity_value = 4
blurb = "The Vox are the broken remnants of a once-proud race, now reduced to little more than \
@@ -82,11 +83,6 @@
H.equip_to_slot_or_del(new /obj/item/storage/box/vox(H.back), slot_in_backpack)
H.internal = H.r_hand
H.internals.icon_state = "internal1"
H.gender = NEUTER
/datum/species/vox/handle_post_spawn(var/mob/living/carbon/human/H)
H.gender = NEUTER
return ..()
/datum/species/vox/armalis
name = "Vox Armalis"
@@ -14,6 +14,7 @@
var/age_min = 17
var/age_max = 85
var/economic_modifier = 0
var/list/default_genders = list(MALE, FEMALE)
// Icon/appearance vars.
var/icobase = 'icons/mob/human_races/human/r_human.dmi' // Normal icon set.
@@ -398,6 +399,8 @@
H.dna.SetSEState(MONKEYBLOCK,1)
else
H.dna.SetSEState(MONKEYBLOCK,0)
if(!H.client || !H.client.prefs || !H.client.prefs.gender)
H.gender = pick(default_genders)
/datum/species/proc/handle_death(var/mob/living/carbon/human/H, var/gibbed = 0) //Handles any species-specific death events (such as dionaea nymph spawns).
return
@@ -5,6 +5,7 @@
bodytype = "Diona"
age_min = 1
age_max = 1000
default_genders = list(NEUTER)
economic_modifier = 3
icobase = 'icons/mob/human_races/diona/r_diona.dmi'
deform = 'icons/mob/human_races/diona/r_def_plant.dmi'
@@ -148,7 +149,6 @@
H.equip_to_slot_or_del(new /obj/item/device/flashlight/flare(H), slot_r_hand)
/datum/species/diona/handle_post_spawn(var/mob/living/carbon/human/H)
H.gender = NEUTER
if (ishuman(H))
return ..()
else//Most of the stuff in the parent function doesnt apply to nymphs
@@ -6,7 +6,7 @@
age_min = 1
age_max = 30
economic_modifier = 3
var/neuter_ipc = TRUE
default_genders = list(NEUTER)
blurb = "IPCs are, quite simply, \"Integrated Positronic Chassis.\" In this scenario, 'positronic' implies that the chassis possesses a positronic processing core (or positronic brain), meaning that an IPC must be positronic to be considered an IPC. The Baseline model is more of a category - the long of the short is that they represent all unbound synthetic units. Baseline models cover anything that is not an Industrial chassis or a Shell chassis. They can be custom made or assembly made. The most common feature of the Baseline model is a simple design, skeletal or semi-humanoid, and ordinary atmospheric diffusion cooling systems."
@@ -119,8 +119,6 @@
var/sprint_charge_factor = 0.65
datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
if (neuter_ipc)
H.gender = NEUTER
. = ..()
check_tag(H, H.client)
@@ -300,8 +298,6 @@ datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
/datum/species/machine/before_equip(var/mob/living/carbon/human/H)
. = ..()
check_tag(H, H.client)
if (neuter_ipc)
H.gender = NEUTER
/datum/species/machine/handle_death_check(var/mob/living/carbon/human/H)
if(H.get_total_health() <= config.health_threshold_dead)
@@ -4,7 +4,7 @@
short_name = "jak"
name_plural = "Shells"
bodytype = "Human"
neuter_ipc = FALSE
default_genders = list(MALE, FEMALE)
burn_mod = 1.2
grab_mod = 1
@@ -5,6 +5,7 @@
bodytype = "Vaurca"
age_min = 1
age_max = 20
default_genders = list(NEUTER)
economic_modifier = 2
language = LANGUAGE_VAURCA
primitive_form = "V'krexi"
@@ -85,7 +85,7 @@ var/global/list/sparring_attack_cache = list()
target.apply_effect(attack_damage * 0.4, WEAKEN, armour)
if(BP_GROIN)
if(pain_message)
target.visible_message("<span class='warning'>[target] looks like \he is in pain!</span>", "<span class='warning'>[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your [pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]</span>")
target.visible_message("<span class='warning'>[target] looks like \he [gender_datums[target.gender].is] in pain!</span>", "<span class='warning'>[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your [pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]</span>")
target.apply_effects(stutter = attack_damage * 2, agony = attack_damage* 3, blocked = armour)
if(BP_L_LEG, BP_L_FOOT, BP_R_LEG, BP_R_FOOT)
if(!target.lying)
@@ -74,7 +74,7 @@
else
to_chat(P, "<b>DNA does not match stored Master DNA.</b>")
else
to_chat(P, "[M] does not seem like \he is going to provide a DNA sample willingly.")
to_chat(P, "[M] does not seem like \he [gender_datums[M.gender].is] going to provide a DNA sample willingly.")
return 1
/datum/pai_software/radio_config