Merge pull request #13513 from timothyteakettle/eye-sprites
adds selectable eye types to customization
@@ -106,5 +106,11 @@
|
|||||||
//belly sound pref things
|
//belly sound pref things
|
||||||
#define NORMIE_HEARCHECK 4
|
#define NORMIE_HEARCHECK 4
|
||||||
|
|
||||||
|
//icon states for the default eyes and for a state for no eye
|
||||||
|
#define DEFAULT_EYES_TYPE "normal"
|
||||||
|
#define DEFAULT_LEFT_EYE_STATE "normal_left_eye"
|
||||||
|
#define DEFAULT_RIGHT_EYE_STATE "normal_right_eye"
|
||||||
|
#define DEFAULT_NO_EYE_STATE "no_eye"
|
||||||
|
|
||||||
//special species definitions
|
//special species definitions
|
||||||
#define MINIMUM_MUTANT_COLOR "#202020" //this is how dark players mutant parts and skin can be
|
#define MINIMUM_MUTANT_COLOR "#202020" //this is how dark players mutant parts and skin can be
|
||||||
|
|||||||
@@ -287,3 +287,6 @@ GLOBAL_LIST_INIT(prosthetic_limb_types, list("xion","bishop","cybersolutions","g
|
|||||||
|
|
||||||
//body ids that have non-gendered bodyparts
|
//body ids that have non-gendered bodyparts
|
||||||
GLOBAL_LIST_INIT(nongendered_limb_types, list("fly", "zombie" ,"synth", "shadow", "cultgolem", "agent", "plasmaman", "clockgolem", "clothgolem"))
|
GLOBAL_LIST_INIT(nongendered_limb_types, list("fly", "zombie" ,"synth", "shadow", "cultgolem", "agent", "plasmaman", "clockgolem", "clothgolem"))
|
||||||
|
|
||||||
|
//list of eye types, corresponding to a respective left and right icon state for the set of eyes
|
||||||
|
GLOBAL_LIST_INIT(eye_types, list("normal", "insect", "moth", "double", "double2", "double3", "cyclops"))
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
var/use_custom_skin_tone = FALSE
|
var/use_custom_skin_tone = FALSE
|
||||||
var/left_eye_color = "000000" //Eye color
|
var/left_eye_color = "000000" //Eye color
|
||||||
var/right_eye_color = "000000"
|
var/right_eye_color = "000000"
|
||||||
|
var/eye_type = DEFAULT_EYES_TYPE //Eye type
|
||||||
var/split_eye_colors = FALSE
|
var/split_eye_colors = FALSE
|
||||||
var/datum/species/pref_species = new /datum/species/human() //Mutant race
|
var/datum/species/pref_species = new /datum/species/human() //Mutant race
|
||||||
var/list/features = list("mcolor" = "FFFFFF",
|
var/list/features = list("mcolor" = "FFFFFF",
|
||||||
@@ -474,25 +475,28 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
if (CONFIG_GET(number/body_size_min) != CONFIG_GET(number/body_size_max))
|
if (CONFIG_GET(number/body_size_min) != CONFIG_GET(number/body_size_max))
|
||||||
dat += "<b>Sprite Size:</b> <a href='?_src_=prefs;preference=body_size;task=input'>[features["body_size"]*100]%</a><br>"
|
dat += "<b>Sprite Size:</b> <a href='?_src_=prefs;preference=body_size;task=input'>[features["body_size"]*100]%</a><br>"
|
||||||
|
|
||||||
if((EYECOLOR in pref_species.species_traits) && !(NOEYES in pref_species.species_traits))
|
if(!(NOEYES in pref_species.species_traits))
|
||||||
if(!use_skintones && !mutant_colors)
|
dat += "<h3>Eye Type</h3>"
|
||||||
dat += APPEARANCE_CATEGORY_COLUMN
|
dat += "</b><a style='display:block;width:100px' href='?_src_=prefs;preference=eye_type;task=input'>[eye_type]</a><BR>"
|
||||||
if(left_eye_color != right_eye_color)
|
if((EYECOLOR in pref_species.species_traits))
|
||||||
split_eye_colors = TRUE
|
if(!use_skintones && !mutant_colors)
|
||||||
dat += "<h3>Heterochromia</h3>"
|
dat += APPEARANCE_CATEGORY_COLUMN
|
||||||
dat += "</b><a style='display:block;width:100px' href='?_src_=prefs;preference=toggle_split_eyes;task=input'>[split_eye_colors ? "Enabled" : "Disabled"]</a>"
|
if(left_eye_color != right_eye_color)
|
||||||
if(!split_eye_colors)
|
split_eye_colors = TRUE
|
||||||
dat += "<h3>Eye Color</h3>"
|
dat += "<h3>Heterochromia</h3>"
|
||||||
dat += "<span style='border: 1px solid #161616; background-color: #[left_eye_color];'> </span> <a href='?_src_=prefs;preference=eyes;task=input'>Change</a>"
|
dat += "</b><a style='display:block;width:100px' href='?_src_=prefs;preference=toggle_split_eyes;task=input'>[split_eye_colors ? "Enabled" : "Disabled"]</a>"
|
||||||
|
if(!split_eye_colors)
|
||||||
|
dat += "<h3>Eye Color</h3>"
|
||||||
|
dat += "<span style='border: 1px solid #161616; background-color: #[left_eye_color];'> </span> <a href='?_src_=prefs;preference=eyes;task=input'>Change</a>"
|
||||||
|
dat += "</td>"
|
||||||
|
else
|
||||||
|
dat += "<h3>Left Eye Color</h3>"
|
||||||
|
dat += "<span style='border: 1px solid #161616; background-color: #[left_eye_color];'> </span> <a href='?_src_=prefs;preference=eye_left;task=input'>Change</a>"
|
||||||
|
dat += "<h3>Right Eye Color</h3>"
|
||||||
|
dat += "<span style='border: 1px solid #161616; background-color: #[right_eye_color];'> </span> <a href='?_src_=prefs;preference=eye_right;task=input'>Change</a><BR>"
|
||||||
|
dat += "</td>"
|
||||||
|
else if(use_skintones || mutant_colors)
|
||||||
dat += "</td>"
|
dat += "</td>"
|
||||||
else
|
|
||||||
dat += "<h3>Left Eye Color</h3>"
|
|
||||||
dat += "<span style='border: 1px solid #161616; background-color: #[left_eye_color];'> </span> <a href='?_src_=prefs;preference=eye_left;task=input'>Change</a>"
|
|
||||||
dat += "<h3>Right Eye Color</h3>"
|
|
||||||
dat += "<span style='border: 1px solid #161616; background-color: #[right_eye_color];'> </span> <a href='?_src_=prefs;preference=eye_right;task=input'>Change</a><BR>"
|
|
||||||
dat += "</td>"
|
|
||||||
else if(use_skintones || mutant_colors)
|
|
||||||
dat += "</td>"
|
|
||||||
|
|
||||||
dat += APPEARANCE_CATEGORY_COLUMN
|
dat += APPEARANCE_CATEGORY_COLUMN
|
||||||
dat += "<h2>Speech preferences</h2>"
|
dat += "<h2>Speech preferences</h2>"
|
||||||
@@ -1584,6 +1588,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
if(new_eyes)
|
if(new_eyes)
|
||||||
right_eye_color = sanitize_hexcolor(new_eyes, 6)
|
right_eye_color = sanitize_hexcolor(new_eyes, 6)
|
||||||
|
|
||||||
|
if("eye_type")
|
||||||
|
var/new_eye_type = input(user, "Choose your character's eye type.", "Character Preference") as null|anything in GLOB.eye_types
|
||||||
|
if(new_eye_type)
|
||||||
|
eye_type = new_eye_type
|
||||||
|
|
||||||
if("toggle_split_eyes")
|
if("toggle_split_eyes")
|
||||||
split_eye_colors = !split_eye_colors
|
split_eye_colors = !split_eye_colors
|
||||||
right_eye_color = left_eye_color
|
right_eye_color = left_eye_color
|
||||||
@@ -1617,6 +1626,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
if(features["mcolor3"] == "#000000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3]))
|
if(features["mcolor3"] == "#000000" || (!(MUTCOLORS_PARTSONLY in pref_species.species_traits) && ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3]))
|
||||||
features["mcolor3"] = pref_species.default_color
|
features["mcolor3"] = pref_species.default_color
|
||||||
|
|
||||||
|
//switch to the type of eyes the species uses
|
||||||
|
eye_type = pref_species.eye_type
|
||||||
|
|
||||||
if("custom_species")
|
if("custom_species")
|
||||||
var/new_species = reject_bad_name(input(user, "Choose your species subtype, if unique. This will show up on examinations and health scans. Do not abuse this:", "Character Preference", custom_species) as null|text)
|
var/new_species = reject_bad_name(input(user, "Choose your species subtype, if unique. This will show up on examinations and health scans. Do not abuse this:", "Character Preference", custom_species) as null|text)
|
||||||
if(new_species)
|
if(new_species)
|
||||||
@@ -2601,6 +2613,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
|
|
||||||
character.dna.features = features.Copy()
|
character.dna.features = features.Copy()
|
||||||
character.set_species(chosen_species, icon_update = FALSE, pref_load = TRUE)
|
character.set_species(chosen_species, icon_update = FALSE, pref_load = TRUE)
|
||||||
|
character.dna.species.eye_type = eye_type
|
||||||
if(chosen_limb_id && (chosen_limb_id in character.dna.species.allowed_limb_ids))
|
if(chosen_limb_id && (chosen_limb_id in character.dna.species.allowed_limb_ids))
|
||||||
character.dna.species.mutant_bodyparts["limbs_id"] = chosen_limb_id
|
character.dna.species.mutant_bodyparts["limbs_id"] = chosen_limb_id
|
||||||
character.dna.real_name = character.real_name
|
character.dna.real_name = character.real_name
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
// You do not need to raise this if you are adding new values that have sane defaults.
|
// You do not need to raise this if you are adding new values that have sane defaults.
|
||||||
// Only raise this value when changing the meaning/format/name/layout of an existing value
|
// Only raise this value when changing the meaning/format/name/layout of an existing value
|
||||||
// where you would want the updater procs below to run
|
// where you would want the updater procs below to run
|
||||||
#define SAVEFILE_VERSION_MAX 36
|
#define SAVEFILE_VERSION_MAX 37
|
||||||
|
|
||||||
/*
|
/*
|
||||||
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
|
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
|
||||||
@@ -204,10 +204,19 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
|||||||
if(S["species"] == "lizard")
|
if(S["species"] == "lizard")
|
||||||
features["mam_snouts"] = features["snout"]
|
features["mam_snouts"] = features["snout"]
|
||||||
|
|
||||||
if(current_version < 36)
|
if(current_version < 36) //introduction of heterochromia
|
||||||
left_eye_color = S["eye_color"]
|
left_eye_color = S["eye_color"]
|
||||||
right_eye_color = S["eye_color"]
|
right_eye_color = S["eye_color"]
|
||||||
|
|
||||||
|
if(current_version < 37) //introduction of chooseable eye types/sprites
|
||||||
|
if(S["species"] == "insect")
|
||||||
|
left_eye_color = "#000000"
|
||||||
|
right_eye_color = "#000000"
|
||||||
|
if(chosen_limb_id == "moth" || chosen_limb_id == "moth_not_greyscale") //these actually have slightly different eyes!
|
||||||
|
eye_type = "moth"
|
||||||
|
else
|
||||||
|
eye_type = "insect"
|
||||||
|
|
||||||
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
|
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
|
||||||
if(!ckey)
|
if(!ckey)
|
||||||
return
|
return
|
||||||
@@ -509,6 +518,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
|||||||
S["age"] >> age
|
S["age"] >> age
|
||||||
S["hair_color"] >> hair_color
|
S["hair_color"] >> hair_color
|
||||||
S["facial_hair_color"] >> facial_hair_color
|
S["facial_hair_color"] >> facial_hair_color
|
||||||
|
S["eye_type"] >> eye_type
|
||||||
S["left_eye_color"] >> left_eye_color
|
S["left_eye_color"] >> left_eye_color
|
||||||
S["right_eye_color"] >> right_eye_color
|
S["right_eye_color"] >> right_eye_color
|
||||||
S["use_custom_skin_tone"] >> use_custom_skin_tone
|
S["use_custom_skin_tone"] >> use_custom_skin_tone
|
||||||
@@ -692,6 +702,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
|||||||
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
|
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
|
||||||
hair_color = sanitize_hexcolor(hair_color, 6, FALSE)
|
hair_color = sanitize_hexcolor(hair_color, 6, FALSE)
|
||||||
facial_hair_color = sanitize_hexcolor(facial_hair_color, 6, FALSE)
|
facial_hair_color = sanitize_hexcolor(facial_hair_color, 6, FALSE)
|
||||||
|
eye_type = sanitize_inlist(eye_type, GLOB.eye_types, DEFAULT_EYES_TYPE)
|
||||||
left_eye_color = sanitize_hexcolor(left_eye_color, 6, FALSE)
|
left_eye_color = sanitize_hexcolor(left_eye_color, 6, FALSE)
|
||||||
right_eye_color = sanitize_hexcolor(right_eye_color, 6, FALSE)
|
right_eye_color = sanitize_hexcolor(right_eye_color, 6, FALSE)
|
||||||
|
|
||||||
@@ -822,6 +833,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
|||||||
WRITE_FILE(S["age"] , age)
|
WRITE_FILE(S["age"] , age)
|
||||||
WRITE_FILE(S["hair_color"] , hair_color)
|
WRITE_FILE(S["hair_color"] , hair_color)
|
||||||
WRITE_FILE(S["facial_hair_color"] , facial_hair_color)
|
WRITE_FILE(S["facial_hair_color"] , facial_hair_color)
|
||||||
|
WRITE_FILE(S["eye_type"] , eye_type)
|
||||||
WRITE_FILE(S["left_eye_color"] , left_eye_color)
|
WRITE_FILE(S["left_eye_color"] , left_eye_color)
|
||||||
WRITE_FILE(S["right_eye_color"] , right_eye_color)
|
WRITE_FILE(S["right_eye_color"] , right_eye_color)
|
||||||
WRITE_FILE(S["use_custom_skin_tone"] , use_custom_skin_tone)
|
WRITE_FILE(S["use_custom_skin_tone"] , use_custom_skin_tone)
|
||||||
|
|||||||
@@ -190,7 +190,7 @@
|
|||||||
/obj/item/clothing/head/wig
|
/obj/item/clothing/head/wig
|
||||||
name = "wig"
|
name = "wig"
|
||||||
desc = "A bunch of hair without a head attached."
|
desc = "A bunch of hair without a head attached."
|
||||||
icon = 'icons/mob/human_face.dmi' // default icon for all hairs
|
icon = 'icons/mob/hair.dmi' // default icon for all hairs
|
||||||
icon_state = "hair_vlong"
|
icon_state = "hair_vlong"
|
||||||
flags_inv = HIDEHAIR
|
flags_inv = HIDEHAIR
|
||||||
color = "#000"
|
color = "#000"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
// Facial Hair Definitions //
|
// Facial Hair Definitions //
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
/datum/sprite_accessory/facial_hair
|
/datum/sprite_accessory/facial_hair
|
||||||
icon = 'icons/mob/human_face.dmi'
|
icon = 'icons/mob/hair.dmi'
|
||||||
gender = MALE // barf (unless you're a dorf, dorfs dig chix w/ beards :P)
|
gender = MALE // barf (unless you're a dorf, dorfs dig chix w/ beards :P)
|
||||||
|
|
||||||
// please make sure they're sorted alphabetically and categorized
|
// please make sure they're sorted alphabetically and categorized
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
// Hair Definitions //
|
// Hair Definitions //
|
||||||
//////////////////////
|
//////////////////////
|
||||||
/datum/sprite_accessory/hair
|
/datum/sprite_accessory/hair
|
||||||
icon = 'icons/mob/human_face.dmi' // default icon for all hairs
|
icon = 'icons/mob/hair.dmi' // default icon for all hairs
|
||||||
|
|
||||||
// please make sure they're sorted alphabetically and, where needed, categorized
|
// please make sure they're sorted alphabetically and, where needed, categorized
|
||||||
// try to capitalize the names please~
|
// try to capitalize the names please~
|
||||||
|
|||||||
@@ -117,6 +117,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
|||||||
//the ids you can use for your species, if empty, it means default only and not changeable
|
//the ids you can use for your species, if empty, it means default only and not changeable
|
||||||
var/list/allowed_limb_ids
|
var/list/allowed_limb_ids
|
||||||
|
|
||||||
|
//the type of eyes this species has
|
||||||
|
var/eye_type = "normal"
|
||||||
|
|
||||||
///////////
|
///////////
|
||||||
// PROCS //
|
// PROCS //
|
||||||
///////////
|
///////////
|
||||||
@@ -512,7 +515,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
|||||||
var/mutable_appearance/hair_overlay = mutable_appearance(layer = -HAIR_LAYER)
|
var/mutable_appearance/hair_overlay = mutable_appearance(layer = -HAIR_LAYER)
|
||||||
if(!hair_hidden && !H.getorgan(/obj/item/organ/brain)) //Applies the debrained overlay if there is no brain
|
if(!hair_hidden && !H.getorgan(/obj/item/organ/brain)) //Applies the debrained overlay if there is no brain
|
||||||
if(!(NOBLOOD in species_traits))
|
if(!(NOBLOOD in species_traits))
|
||||||
hair_overlay.icon = 'icons/mob/human_face.dmi'
|
hair_overlay.icon = 'icons/mob/hair.dmi'
|
||||||
hair_overlay.icon_state = "debrained"
|
hair_overlay.icon_state = "debrained"
|
||||||
|
|
||||||
else if(H.hair_style && (HAIR in species_traits))
|
else if(H.hair_style && (HAIR in species_traits))
|
||||||
@@ -571,7 +574,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
|||||||
if(HD && !(HAS_TRAIT(H, TRAIT_HUSK)))
|
if(HD && !(HAS_TRAIT(H, TRAIT_HUSK)))
|
||||||
// lipstick
|
// lipstick
|
||||||
if(H.lip_style && (LIPS in species_traits))
|
if(H.lip_style && (LIPS in species_traits))
|
||||||
var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/human_face.dmi', "lips_[H.lip_style]", -BODY_LAYER)
|
var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/lips.dmi', "lips_[H.lip_style]", -BODY_LAYER)
|
||||||
lip_overlay.color = H.lip_color
|
lip_overlay.color = H.lip_color
|
||||||
|
|
||||||
if(OFFSET_LIPS in H.dna.species.offset_features)
|
if(OFFSET_LIPS in H.dna.species.offset_features)
|
||||||
@@ -584,10 +587,17 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
|||||||
if(!(NOEYES in species_traits))
|
if(!(NOEYES in species_traits))
|
||||||
var/has_eyes = H.getorganslot(ORGAN_SLOT_EYES)
|
var/has_eyes = H.getorganslot(ORGAN_SLOT_EYES)
|
||||||
if(!has_eyes)
|
if(!has_eyes)
|
||||||
standing += mutable_appearance('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER)
|
standing += mutable_appearance('icons/mob/eyes.dmi', "eyes_missing", -BODY_LAYER)
|
||||||
else
|
else
|
||||||
var/mutable_appearance/left_eye = mutable_appearance('icons/mob/human_face.dmi', "left_eye", -BODY_LAYER)
|
var/left_state = DEFAULT_LEFT_EYE_STATE
|
||||||
var/mutable_appearance/right_eye = mutable_appearance('icons/mob/human_face.dmi', "right_eye", -BODY_LAYER)
|
var/right_state = DEFAULT_RIGHT_EYE_STATE
|
||||||
|
message_admins("okay so our eye type is [eye_type] and we can index it to know [GLOB.eye_types[eye_type]]")
|
||||||
|
if(eye_type in GLOB.eye_types)
|
||||||
|
message_admins("to know that it's in!")
|
||||||
|
left_state = eye_type + "_left_eye"
|
||||||
|
right_state = eye_type + "_right_eye"
|
||||||
|
var/mutable_appearance/left_eye = mutable_appearance('icons/mob/eyes.dmi', left_state, -BODY_LAYER)
|
||||||
|
var/mutable_appearance/right_eye = mutable_appearance('icons/mob/eyes.dmi', right_state, -BODY_LAYER)
|
||||||
if((EYECOLOR in species_traits) && has_eyes)
|
if((EYECOLOR in species_traits) && has_eyes)
|
||||||
left_eye.color = "#" + H.left_eye_color
|
left_eye.color = "#" + H.left_eye_color
|
||||||
right_eye.color = "#" + H.right_eye_color
|
right_eye.color = "#" + H.right_eye_color
|
||||||
|
|||||||
@@ -21,3 +21,5 @@
|
|||||||
species_type = "insect"
|
species_type = "insect"
|
||||||
|
|
||||||
allowed_limb_ids = list("insect","apid","moth","moth_not_greyscale")
|
allowed_limb_ids = list("insect","apid","moth","moth_not_greyscale")
|
||||||
|
|
||||||
|
eye_type = "insect"
|
||||||
|
|||||||
@@ -748,7 +748,7 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if
|
|||||||
if(HD && !(HAS_TRAIT(src, TRAIT_HUSK)))
|
if(HD && !(HAS_TRAIT(src, TRAIT_HUSK)))
|
||||||
// lipstick
|
// lipstick
|
||||||
if(lip_style && (LIPS in dna.species.species_traits))
|
if(lip_style && (LIPS in dna.species.species_traits))
|
||||||
var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/human_face.dmi', "lips_[lip_style]", -BODY_LAYER)
|
var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/lips.dmi', "lips_[lip_style]", -BODY_LAYER)
|
||||||
lip_overlay.color = lip_color
|
lip_overlay.color = lip_color
|
||||||
if(OFFSET_LIPS in dna.species.offset_features)
|
if(OFFSET_LIPS in dna.species.offset_features)
|
||||||
lip_overlay.pixel_x += dna.species.offset_features[OFFSET_LIPS][1]
|
lip_overlay.pixel_x += dna.species.offset_features[OFFSET_LIPS][1]
|
||||||
@@ -759,10 +759,17 @@ use_mob_overlay_icon: if FALSE, it will always use the default_icon_file even if
|
|||||||
if(!(NOEYES in dna.species.species_traits))
|
if(!(NOEYES in dna.species.species_traits))
|
||||||
var/has_eyes = getorganslot(ORGAN_SLOT_EYES)
|
var/has_eyes = getorganslot(ORGAN_SLOT_EYES)
|
||||||
if(!has_eyes)
|
if(!has_eyes)
|
||||||
add_overlay(mutable_appearance('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER))
|
add_overlay(mutable_appearance('icons/mob/eyes.dmi', "eyes_missing", -BODY_LAYER))
|
||||||
else
|
else
|
||||||
var/mutable_appearance/left_eye = mutable_appearance('icons/mob/human_face.dmi', "left_eye", -BODY_LAYER)
|
var/left_state = DEFAULT_LEFT_EYE_STATE
|
||||||
var/mutable_appearance/right_eye = mutable_appearance('icons/mob/human_face.dmi', "right_eye", -BODY_LAYER)
|
var/right_state = DEFAULT_RIGHT_EYE_STATE
|
||||||
|
if(dna.species)
|
||||||
|
var/eye_type = dna.species.eye_type
|
||||||
|
if(GLOB.eye_types[eye_type])
|
||||||
|
left_state = eye_type + "_left_eye"
|
||||||
|
right_state = eye_type + "_right_eye"
|
||||||
|
var/mutable_appearance/left_eye = mutable_appearance('icons/mob/eyes.dmi', left_state, -BODY_LAYER)
|
||||||
|
var/mutable_appearance/right_eye = mutable_appearance('icons/mob/eyes.dmi', right_state, -BODY_LAYER)
|
||||||
if((EYECOLOR in dna.species.species_traits) && has_eyes)
|
if((EYECOLOR in dna.species.species_traits) && has_eyes)
|
||||||
left_eye.color = "#" + left_eye_color
|
left_eye.color = "#" + left_eye_color
|
||||||
right_eye.color = "#" + right_eye_color
|
right_eye.color = "#" + right_eye_color
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
hair_hidden = 1
|
hair_hidden = 1
|
||||||
if(!hair_hidden)
|
if(!hair_hidden)
|
||||||
if(!getorgan(/obj/item/organ/brain)) //Applies the debrained overlay if there is no brain
|
if(!getorgan(/obj/item/organ/brain)) //Applies the debrained overlay if there is no brain
|
||||||
overlays_standing[HAIR_LAYER] = mutable_appearance('icons/mob/human_face.dmi', "debrained", -HAIR_LAYER)
|
overlays_standing[HAIR_LAYER] = mutable_appearance('icons/mob/human_parts.dmi', "debrained", -HAIR_LAYER)
|
||||||
apply_overlay(HAIR_LAYER)
|
apply_overlay(HAIR_LAYER)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -59,12 +59,12 @@
|
|||||||
|
|
||||||
/mob/living/simple_animal/hostile/retaliate/ghost/proc/give_hair()
|
/mob/living/simple_animal/hostile/retaliate/ghost/proc/give_hair()
|
||||||
if(ghost_hair_style != null)
|
if(ghost_hair_style != null)
|
||||||
ghost_hair = mutable_appearance('icons/mob/human_face.dmi', "hair_[ghost_hair_style]", -HAIR_LAYER)
|
ghost_hair = mutable_appearance('icons/mob/hair.dmi', "hair_[ghost_hair_style]", -HAIR_LAYER)
|
||||||
ghost_hair.alpha = 200
|
ghost_hair.alpha = 200
|
||||||
ghost_hair.color = ghost_hair_color
|
ghost_hair.color = ghost_hair_color
|
||||||
add_overlay(ghost_hair)
|
add_overlay(ghost_hair)
|
||||||
if(ghost_facial_hair_style != null)
|
if(ghost_facial_hair_style != null)
|
||||||
ghost_facial_hair = mutable_appearance('icons/mob/human_face.dmi', "facial_[ghost_facial_hair_style]", -HAIR_LAYER)
|
ghost_facial_hair = mutable_appearance('icons/mob/hair.dmi', "facial_[ghost_facial_hair_style]", -HAIR_LAYER)
|
||||||
ghost_facial_hair.alpha = 200
|
ghost_facial_hair.alpha = 200
|
||||||
ghost_facial_hair.color = ghost_facial_hair_color
|
ghost_facial_hair.color = ghost_facial_hair_color
|
||||||
add_overlay(ghost_facial_hair)
|
add_overlay(ghost_facial_hair)
|
||||||
|
|||||||
@@ -161,7 +161,7 @@
|
|||||||
debrain_overlay.icon = 'icons/mob/animal_parts.dmi'
|
debrain_overlay.icon = 'icons/mob/animal_parts.dmi'
|
||||||
debrain_overlay.icon_state = "debrained_larva"
|
debrain_overlay.icon_state = "debrained_larva"
|
||||||
else if(!(NOBLOOD in species_flags_list))
|
else if(!(NOBLOOD in species_flags_list))
|
||||||
debrain_overlay.icon = 'icons/mob/human_face.dmi'
|
debrain_overlay.icon = 'icons/mob/human_parts.dmi'
|
||||||
debrain_overlay.icon_state = "debrained"
|
debrain_overlay.icon_state = "debrained"
|
||||||
. += debrain_overlay
|
. += debrain_overlay
|
||||||
else
|
else
|
||||||
@@ -175,21 +175,31 @@
|
|||||||
|
|
||||||
// lipstick
|
// lipstick
|
||||||
if(lip_style)
|
if(lip_style)
|
||||||
var/image/lips_overlay = image('icons/mob/human_face.dmi', "lips_[lip_style]", -BODY_LAYER, SOUTH)
|
var/image/lips_overlay = image('icons/mob/lips.dmi', "lips_[lip_style]", -BODY_LAYER, SOUTH)
|
||||||
lips_overlay.color = lip_color
|
lips_overlay.color = lip_color
|
||||||
. += lips_overlay
|
. += lips_overlay
|
||||||
|
|
||||||
// eyes
|
// eyes
|
||||||
if(eyes)
|
if(eyes)
|
||||||
var/image/left_eye = image('icons/mob/human_face.dmi', "left_eye", -BODY_LAYER, SOUTH)
|
var/left_state = DEFAULT_LEFT_EYE_STATE
|
||||||
var/image/right_eye = image('icons/mob/human_face.dmi', "right_eye", -BODY_LAYER, SOUTH)
|
var/right_state = DEFAULT_RIGHT_EYE_STATE
|
||||||
if(eyes.left_eye_color && eyes.right_eye_color)
|
if(owner && owner.dna.species)
|
||||||
left_eye.color = "#" + eyes.left_eye_color
|
var/eye_type = owner.dna.species.eye_type
|
||||||
right_eye.color = "#" + eyes.right_eye_color
|
if(GLOB.eye_types[eye_type])
|
||||||
. += left_eye
|
left_state = eye_type + "_left_eye"
|
||||||
. += right_eye
|
right_state = eye_type + "_right_eye"
|
||||||
|
if(left_state != DEFAULT_NO_EYE_STATE)
|
||||||
|
var/image/left_eye = image('icons/mob/hair.dmi', left_state, -BODY_LAYER, SOUTH)
|
||||||
|
if(eyes.left_eye_color)
|
||||||
|
left_eye.color = "#" + eyes.left_eye_color
|
||||||
|
. += left_eye
|
||||||
|
if(right_state != DEFAULT_NO_EYE_STATE)
|
||||||
|
var/image/right_eye = image('icons/mob/hair.dmi', right_state, -BODY_LAYER, SOUTH)
|
||||||
|
if(eyes.right_eye_color)
|
||||||
|
right_eye.color = "#" + eyes.right_eye_color
|
||||||
|
. += right_eye
|
||||||
else
|
else
|
||||||
var/eyes_overlay = image('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER, SOUTH)
|
var/eyes_overlay = image('icons/mob/hair.dmi', "eyes_missing", -BODY_LAYER, SOUTH)
|
||||||
. += eyes_overlay
|
. += eyes_overlay
|
||||||
|
|
||||||
/obj/item/bodypart/head/monkey
|
/obj/item/bodypart/head/monkey
|
||||||
|
|||||||
@@ -248,7 +248,7 @@
|
|||||||
|
|
||||||
/obj/item/organ/eyes/robotic/glow/Initialize()
|
/obj/item/organ/eyes/robotic/glow/Initialize()
|
||||||
. = ..()
|
. = ..()
|
||||||
mob_overlay = image('icons/mob/human_face.dmi', "eyes_glow_gs")
|
mob_overlay = image('icons/mob/eyes.dmi', "eyes_glow_gs")
|
||||||
|
|
||||||
/obj/item/organ/eyes/robotic/glow/Destroy()
|
/obj/item/organ/eyes/robotic/glow/Destroy()
|
||||||
terminate_effects()
|
terminate_effects()
|
||||||
|
|||||||
|
After Width: | Height: | Size: 482 B |
|
After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB |
|
After Width: | Height: | Size: 455 B |