[MIRROR] Fixes podperson hair colors, adds individual layer colors [MDB IGNORE] (#18185)

* Fixes podperson hair colors, adds individual layer colors

* merge conflicts

* oops, use old screenshot png

Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
This commit is contained in:
SkyratBot
2023-01-07 00:48:50 -05:00
committed by GitHub
co-authored by Time-Green tastyfish
parent 6ce3f3857f
commit 7cc088e72a
+22 -11
View File
@@ -41,6 +41,8 @@
var/draw_color
///Where does this organ inherit it's color from?
var/color_source = ORGAN_COLOR_INHERIT
///FALSE will set the color on the organ, TRUE will call get_overlay_color() for every layer and put it directly on the overlay
var/apply_color_to_layer = FALSE
///Does this organ have any bodytypes to pass to it's ownerlimb?
var/external_bodytypes = NONE
@@ -164,6 +166,9 @@
if(sprite_datum.color_src)
appearance.color = draw_color
if(apply_color_to_layer)
appearance.color = get_overlay_color(image_layer)
if(sprite_datum.center)
center_image(appearance, sprite_datum.dimension_x, sprite_datum.dimension_y)
@@ -264,13 +269,18 @@
return
var/mob/living/carbon/human/human_owner = ownerlimb.owner
draw_color = human_owner.hair_color
color = draw_color
if(!apply_color_to_layer)
color = draw_color
return TRUE
///Colorizes the limb it's inserted to, if required.
/obj/item/organ/external/proc/override_color(rgb_value)
CRASH("External organ color set to override with no override proc.")
///Return a color for our specific layer
/obj/item/organ/external/proc/get_overlay_color(draw_layer)
return draw_color
///The horns of a lizard!
/obj/item/organ/external/horns
name = "horns"
@@ -425,7 +435,12 @@
dna_block = DNA_POD_HAIR_BLOCK
restyle_flags = EXTERNAL_RESTYLE_PLANT
color_source = ORGAN_COLOR_OVERRIDE
apply_color_to_layer = TRUE
///This layer will be colored differently than the rest of the organ. So we can get differently colored flowers or something
var/color_swapped_layer = EXTERNAL_FRONT
///The individual rgb colors are subtracted from this to get the color shifted layer
var/color_inverse_base = 255
/obj/item/organ/external/pod_hair/get_global_feature_list()
return GLOB.pod_hair_list
@@ -435,13 +450,9 @@
return TRUE
return FALSE
/obj/item/organ/external/pod_hair/get_global_feature_list()
return GLOB.pod_hair_list
/obj/item/organ/external/pod_hair/get_overlay_color(draw_layer)
if(draw_layer != bitflag_to_layer(color_swapped_layer))
return ..()
/obj/item/organ/external/pod_hair/override_color(rgb_value)
// SKYRAT EDIT START - I hate non-sensical errors sometimes.
if(!findtext(rgb_value, "#", 1, 2))
rgb_value = "#[rgb_value]"
// SKYRAT EDIT END
var/list/rgb_list = rgb2num(rgb_value)
return rgb(255 - rgb_list[1], 255 - rgb_list[2], 255 - rgb_list[3])
var/list/rgb_list = rgb2num(draw_color)
return rgb(color_inverse_base - rgb_list[1], color_inverse_base - rgb_list[2], color_inverse_base - rgb_list[3])