mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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];'> </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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user