Gives Ethereals face shape options and access to hair gradients (#13215)

* PLEASE GOD JUST WORK PLEASE

* YES?

* oh my god it works

* should resolve the merge conflic, also the diamond was of a different darkeness woopsie

* YOOO THEY DON'T GET HIDDEN BY PARTIAL FACE OBSCURITY ANYMORE. SEC HELMETS AND TOGGLED BALACLAVAS WORK
This commit is contained in:
Chubbygummibear
2022-02-05 07:29:19 -08:00
committed by GitHub
parent 7dcfd9f614
commit 6c5d7e8edf
10 changed files with 83 additions and 12 deletions

View File

@@ -36,6 +36,7 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/teeth, GLOB.teeth_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/dome, GLOB.dome_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/dorsal_tubes, GLOB.dorsal_tubes_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ethereal_mark, GLOB.ethereal_mark_list)
//Species

View File

@@ -78,6 +78,8 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/dome, GLOB.dome_list)
if(!GLOB.dorsal_tubes_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/dorsal_tubes, GLOB.dorsal_tubes_list)
if(!GLOB.ethereal_mark_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ethereal_mark, GLOB.ethereal_mark_list)
//For now we will always return none for tail_human and ears. this shit was unreadable if you do somethign like this make it at least readable
return(list(
@@ -100,7 +102,8 @@
"tail_polysmorph" = "Polys",
"teeth" = pick(GLOB.teeth_list),
"dome" = pick(GLOB.dome_list),
"dorsal_tubes" = pick(GLOB.dorsal_tubes_list)
"dorsal_tubes" = pick(GLOB.dorsal_tubes_list),
"ethereal_mark" = pick(GLOB.ethereal_mark_list)
))
/proc/random_hair_style(gender)

View File

@@ -43,6 +43,7 @@ GLOBAL_LIST_EMPTY(moth_wings_list)
GLOBAL_LIST_EMPTY(moth_wingsopen_list)
GLOBAL_LIST_EMPTY(caps_list)
GLOBAL_LIST_EMPTY(ethereal_mark_list) //ethereal face marks
GLOBAL_LIST_INIT(color_list_ethereal, list("F Class(Green)" = "97ee63", "F2 Class (Light Green)" = "00fa9a", "F3 Class (Dark Green)" = "37835b", "M Class (Red)" = "9c3030", "M1 Class (Purple)" = "ee82ee", "G Class (Yellow)" = "fbdf56", "O Class (Blue)" = "3399ff", "A Class (Cyan)" = "00ffff"))
GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list("ghost")) //stores the ghost forms that support directional sprites

View File

@@ -37,6 +37,7 @@
H.dna.features["teeth"] = pick(GLOB.teeth_list)
H.dna.features["dome"] = pick(GLOB.dome_list)
H.dna.features["dorsal_tubes"] = pick(GLOB.dorsal_tubes_list)
H.dna.features["ethereal_mark"] = pick(GLOB.ethereal_mark_list)
H.update_body()
H.update_hair()

View File

@@ -71,7 +71,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/skin_tone = "caucasian1" //Skin color
var/eye_color = "000" //Eye color
var/datum/species/pref_species = new /datum/species/human() //Mutant race
var/list/features = list("mcolor" = "FFF", "gradientstyle" = "None", "gradientcolor" = "000", "ethcolor" = "9c3030", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs", "moth_wings" = "Plain", "tail_polysmorph" = "Polys", "teeth" = "None", "dome" = "None", "dorsal_tubes" = "No")
var/list/features = list("mcolor" = "FFF", "gradientstyle" = "None", "gradientcolor" = "000", "ethcolor" = "9c3030", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs", "moth_wings" = "Plain", "tail_polysmorph" = "Polys", "teeth" = "None", "dome" = "None", "dorsal_tubes" = "No", "ethereal_mark" = "None")
var/list/genders = list(MALE, FEMALE, PLURAL)
var/list/friendlyGenders = list("Male" = "male", "Female" = "female", "Other" = "plural")
@@ -368,7 +368,6 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<span style='border: 1px solid #161616; background-color: #[facial_hair_color];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=facial;task=input'>Change</a>"
dat += "<a href ='?_src_=prefs;preference=facial_hair_style_color;task=lock'>[random_locks["facial"] ? "Unlock" : "Lock"]</a><BR>"
if(pref_species.id != "ethereal")
dat += "<h3>Hair Gradient</h3>"
dat += "<a href='?_src_=prefs;preference=hair_gradient_style;task=input'>[features["gradientstyle"]]</a>"
@@ -552,6 +551,20 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "</td>"
mutant_category = 0
if("ethereal_mark" in pref_species.default_features)
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
dat += "<h3>Ethereal Mark</h3>"
dat += "<a href='?_src_=prefs;preference=ethereal_mark;task=input'>[features["ethereal_mark"]]</a>"
dat += "<a href ='?_src_=prefs;preference=ethereal_mark;task=lock'>[random_locks["ethereal_mark"] ? "Unlock" : "Lock"]</a><BR>"
mutant_category++
if(mutant_category >= MAX_MUTANT_ROWS)
dat += "</td>"
mutant_category = 0
if("tail_human" in pref_species.default_features)
if(!mutant_category)
dat += APPEARANCE_CATEGORY_COLUMN
@@ -1384,6 +1397,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
"teeth" = 1,
"dome" = 1,
"dorsal_tubes" = 1,
"ethereal_mark" = 1,
)
if("gender")
random_locks["random_locks"] = gender
@@ -1674,6 +1688,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(new_dorsal_tubes)
features["dorsal_tubes"] = new_dorsal_tubes
if("ethereal_mark")
var/new_ethereal_mark
new_ethereal_mark = input(user, "Choose if your character has a facial mark", "Character Preference") as null|anything in GLOB.ethereal_mark_list
if(new_ethereal_mark)
features["ethereal_mark"] = new_ethereal_mark
if("s_tone")
var/new_s_tone = input(user, "Choose your character's skin-tone:", "Character Preference") as null|anything in GLOB.skin_tones
if(new_s_tone)

View File

@@ -437,6 +437,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
READ_FILE(S["feature_polysmorph_teeth"], features["teeth"])
READ_FILE(S["feature_polysmorph_dome"], features["dome"])
READ_FILE(S["feature_polysmorph_dorsal_tubes"], features["dorsal_tubes"])
READ_FILE(S["feature_ethereal_mark"], features["ethereal_mark"])
READ_FILE(S["persistent_scars"], persistent_scars)
if(!CONFIG_GET(flag/join_with_mutant_humans))
features["tail_human"] = "none"
@@ -536,6 +538,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
features["teeth"] = sanitize_inlist(features["teeth"], GLOB.teeth_list)
features["dome"] = sanitize_inlist(features["dome"], GLOB.dome_list)
features["dorsal_tubes"] = sanitize_inlist(features["dorsal_tubes"], GLOB.dorsal_tubes_list)
features["ethereal_mark"] = sanitize_inlist(features["ethereal_mark"], GLOB.ethereal_mark_list)
persistent_scars = sanitize_integer(persistent_scars)
@@ -596,6 +599,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["feature_polysmorph_teeth"] , features["teeth"])
WRITE_FILE(S["feature_polysmorph_dome"] , features["dome"])
WRITE_FILE(S["feature_polysmorph_dorsal_tubes"] , features["dorsal_tubes"])
WRITE_FILE(S["feature_ethereal_mark"] , features["ethereal_mark"])
WRITE_FILE(S["persistent_scars"] , persistent_scars)
//Custom names

View File

@@ -2170,3 +2170,36 @@
/datum/sprite_accessory/dorsal_tubes/dtdown
name = "Down"
icon_state = "dtdown"
//ETHEREAL FACE MARKINGS
/datum/sprite_accessory/ethereal_mark
icon = 'icons/mob/mutant_bodyparts.dmi'
//color_src = MUTCOLORS
/datum/sprite_accessory/ethereal_mark/eyes
name = "Eyes"
icon_state = "eyes"
/datum/sprite_accessory/ethereal_mark/diamond
name = "Diamond"
icon_state = "diamond"
/datum/sprite_accessory/ethereal_mark/heart
name = "Heart"
icon_state = "heart"
/datum/sprite_accessory/ethereal_mark/omega
name = "Omega"
icon_state = "omega"
/datum/sprite_accessory/ethereal_mark/plus
name = "Plus"
icon_state = "plus"
/datum/sprite_accessory/ethereal_mark/triangle
name = "Triangle"
icon_state = "triangle"
/datum/sprite_accessory/ethereal_mark/x
name = "X"
icon_state = "x"

View File

@@ -753,6 +753,10 @@ GLOBAL_LIST_EMPTY(mentor_races)
if(!H.dna.features["dome"] || H.dna.features["dome"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)) || !HD || HD.status == BODYPART_ROBOTIC)
bodyparts_to_add -= "dome"
if("ethereal_mark" in mutant_bodyparts)
if((H.wear_mask && (H.wear_mask.flags_inv & HIDEEYES)) || (H.head && (H.head.flags_inv & HIDEEYES)) || !HD || HD.status == BODYPART_ROBOTIC)
bodyparts_to_add -= "ethereal_mark"
//Digitigrade legs are stuck in the phantom zone between true limbs and mutant bodyparts. Mainly it just needs more agressive updating than most limbs.
var/update_needed = FALSE
var/not_digitigrade = TRUE
@@ -845,6 +849,8 @@ GLOBAL_LIST_EMPTY(mentor_races)
S = GLOB.dome_list[H.dna.features["dome"]]
if("dorsal_tubes")
S = GLOB.dorsal_tubes_list[H.dna.features["dorsal_tubes"]]
if("ethereal_mark")
S = GLOB.ethereal_mark_list[H.dna.features["ethereal_mark"]]
if(!S || S.icon_state == "none")
continue

View File

@@ -14,9 +14,11 @@
payday_modifier = 0.7 //Neutrally useful to NT
attack_type = BURN //burn bish
damage_overlay_type = "" //We are too cool for regular damage overlays
species_traits = list(DYNCOLORS, AGENDER, NO_UNDERWEAR, HAIR, FACEHAIR, HAS_FLESH, HAS_BONE) // i mean i guess they have blood so they can have wounds too
species_traits = list(NOEYESPRITES,DYNCOLORS, AGENDER, NO_UNDERWEAR, HAIR, FACEHAIR, HAS_FLESH, HAS_BONE) // i mean i guess they have blood so they can have wounds too
changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT
inherent_traits = list(TRAIT_NOHUNGER)
mutant_bodyparts = list("ethereal_mark")
default_features = list("ethereal_mark" = "Eyes")
species_language_holder = /datum/language_holder/ethereal
sexes = FALSE //no fetish content allowed
toxic_food = NONE

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB