Fair Hades (sic!) (#10718)

adds hair fades ported from polaris

https://github.com/PolarisSS13/Polaris/pull/7313/files
This commit is contained in:
Wowzewow (Wezzy)
2020-12-28 15:06:28 +02:00
committed by GitHub
parent 16c9469fe9
commit 5afbb615f9
10 changed files with 178 additions and 7 deletions
@@ -1712,7 +1712,48 @@ Follow by example and make good judgement based on length which list to include
length = 2
chatname = "ponytail"
/*
/////////////////////////////////////
/ =-----------------------------= /
/ == Hair Gradient Definitions == /
/ =-----------------------------= /
/////////////////////////////////////
*/
/datum/sprite_accessory/hair_gradients
icon = 'icons/mob/hair_gradients.dmi'
none
name = "None"
icon_state = "none"
fade_up
name = "Fade (Up)"
icon_state = "fadeup"
fade_down
name = "Fade (Down)"
icon_state = "fadedown"
fade_right
name = "Fade (Right)"
icon_state = "faderight"
fade_left
name = "Fade (Left)"
icon_state = "fadeleft"
vertical_split_right
name = "Vertical Split (Right)"
icon_state = "vsplit_right"
vertical_split_left
name = "Vertical Split (Left)"
icon_state = "vsplit_left"
horizontal
name = "Horizontal Split"
icon_state = "hsplit"
/*
///////////////////////////////////
/ =---------------------------= /
@@ -3155,4 +3196,4 @@ Follow by example and make good judgement based on length which list to include
xion_lights
name = "Xion - Lights Color"
icon_state = "xion_lights"
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_CHEST,BP_HEAD)
body_parts = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_CHEST,BP_HEAD)
@@ -5,6 +5,12 @@
var/b_hair = 0
var/h_style = "Bald"
//Hair gradient color and style
var/r_grad = 0
var/g_grad = 0
var/b_grad = 0
var/g_style = "None"
//Facial hair colour and style
var/r_facial = 0
var/g_facial = 0
@@ -116,4 +122,4 @@
var/datum/unarmed_attack/default_attack //default unarmed attack
var/datum/martial_art/primary_martial_art = null
var/list/datum/martial_art/known_martial_arts = null
var/list/datum/martial_art/known_martial_arts = null
@@ -236,6 +236,7 @@
var/default_h_style = "Bald"
var/default_f_style = "Shaved"
var/default_g_style = "None"
var/list/allowed_citizenships = list(CITIZENSHIP_BIESEL, CITIZENSHIP_SOL, CITIZENSHIP_COALITION, CITIZENSHIP_ELYRA, CITIZENSHIP_ERIDANI, CITIZENSHIP_DOMINIA)
var/list/allowed_religions = list(RELIGION_NONE, RELIGION_OTHER, RELIGION_CHRISTIANITY, RELIGION_ISLAM, RELIGION_JUDAISM, RELIGION_HINDU, RELIGION_BUDDHISM, RELIGION_MOROZ, RELIGION_TRINARY, RELIGION_SCARAB, RELIGION_TAOISM)
@@ -607,6 +608,7 @@
/datum/species/proc/set_default_hair(var/mob/living/carbon/human/H)
H.h_style = H.species.default_h_style
H.f_style = H.species.default_f_style
H.g_style = H.species.default_g_style
H.update_hair()
/datum/species/proc/get_species_tally(var/mob/living/carbon/human/H)
@@ -370,7 +370,7 @@ There are several things that need to be remembered:
// This proc generates & returns an icon representing a human's hair, using a cached icon from SSicon_cache if possible.
// If `hair_is_visible` is FALSE, only facial hair will be drawn.
/mob/living/carbon/human/proc/generate_hair_icon(hair_is_visible = TRUE)
var/cache_key = "[f_style ? "[f_style][r_facial][g_facial][b_facial]" : "nofacial"]_[(h_style && hair_is_visible) ? "[h_style][r_hair][g_hair][b_hair]" : "nohair"]"
var/cache_key = "[f_style ? "[f_style][r_facial][g_facial][b_facial]" : "nofacial"]_[(h_style && hair_is_visible) ? "[h_style][r_hair][g_hair][b_hair]" : "nohair"]_[(g_style && g_style != "None" && hair_is_visible) ? "[g_style][r_grad][g_grad][b_grad]" : "nograd"]"
var/icon/face_standing = SSicon_cache.human_hair_cache[cache_key]
if (!face_standing) // Not cached, generate it from scratch.
@@ -387,11 +387,19 @@ There are several things that need to be remembered:
// Hair.
if(hair_is_visible)
var/icon/grad_s = null
var/datum/sprite_accessory/hair_style = hair_styles_list[h_style]
if(hair_style && (species.type in hair_style.species_allowed))
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = hair_style.icon_state)
if(hair_style.do_colouration)
if(g_style)
var/datum/sprite_accessory/gradient_style = hair_gradient_styles_list[g_style]
grad_s = new/icon("icon" = gradient_style.icon, "icon_state" = gradient_style.icon_state)
grad_s.Blend(hair_s, ICON_AND)
grad_s.Blend(rgb(r_grad, g_grad, b_grad), ICON_MULTIPLY)
hair_s.Blend(rgb(r_hair, g_hair, b_hair), hair_style.icon_blend_mode)
if(!isnull(grad_s))
hair_s.Blend(grad_s, ICON_OVERLAY)
face_standing.Blend(hair_s, ICON_OVERLAY)