From 131c014bc55db93c462c7917e830b82c7a074167 Mon Sep 17 00:00:00 2001 From: Seris02 <49109742+Seris02@users.noreply.github.com> Date: Tue, 12 Jan 2021 20:02:44 +0800 Subject: [PATCH] Slimeperson race improvements - digitigrade legs, transparent markings/mutant bodyparts (#2428) * yay hopefully it's not fucking bugged * better code * keeping alpha + checking for same species * oops * Update modular_skyrat/modules/customization/modules/mob/living/carbon/human/human_update_icons.dm * I'm a fucking idiot or... I was setting the alpha of the markings back to the specific alpha after specifically not setting them in the proc beforehand Co-authored-by: Azarak --- code/modules/surgery/bodyparts/_bodyparts.dm | 1 + .../mob/species/slime_parts_greyscale.dmi | Bin 0 -> 1520 bytes .../mob/living/carbon/human/species.dm | 12 ++- .../carbon/human/species/roundstartslime.dm | 5 +- .../modules/surgery/bodyparts/_bodyparts.dm | 75 ++++++++++-------- 5 files changed, 58 insertions(+), 35 deletions(-) create mode 100644 modular_skyrat/modules/customization/icons/mob/species/slime_parts_greyscale.dmi diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index a8d3d1702c8..c4e6925c58a 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -782,6 +782,7 @@ var/datum/species/S = H.dna.species if(organic_render) //SKYRAT EDIT ADDITION - CUSTOMIZATION species_id = S.limbs_id + alpha = S.specific_alpha rendered_bp_icon = S.limbs_icon //SKYRAT EDIT ADDITION - CUSTOMIZATION species_flags_list = H.dna.species.species_traits diff --git a/modular_skyrat/modules/customization/icons/mob/species/slime_parts_greyscale.dmi b/modular_skyrat/modules/customization/icons/mob/species/slime_parts_greyscale.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d4b8d856ecd7a128586db9fc8503659882b1e00a GIT binary patch literal 1520 zcmZ8edpOez82-&%n&y5VnRFskhn{jRHXaKl&8-c|HHC~LX=lstu#c@9+UDyy= z*s(2f>`0Ep5LqM-bH6s$Z)g2;PS5%N_`di1p67et=l#AcoTsajB0>=W03~-f7jFQ7 zNFgBD0hQ+W`O>=Id>^MAu2vGDvk&Mq>|EHC&ibR zs#reH%(+!3aIA%c=~a51p?74p zO_9(fHZw+9Zhur+a&@ODdT!?YlQ(33uTOG!2|Z5;k3p6CUWpXX2?>2HuxXF;v zR@8f|08`NSf)a`Kp-k{*y+F;CCMn})x8mJALZ-J$t#{jTPYucH&)Vd%6)9A`Sshf_uIT2k z%Y7Rz*R|!(FK|4_f2qWT{ksFSD@t5^OgL~r~>(+M*-%;b&#(N z_3s|=4T|H|>bgkoFXfsVy9httZtVORY2VX$V*eQd7W9*flbkzH$=Oz3=AuKRci0cU zc5bbJs2p6*55kqr<4XS{TcX4CXqEVm(P;L-Mo$k2lxqg z=*G&OGuU&W>%nWIZv4*)R4G0FNKN3GMsYU2BEjpxyZ-8BUJ#(u3K{0(P0ruaYL*dC z`QOlrDLjI%bqY8}*Z7v$WPd|nT zfwG*c9!M3Eo(KDsoaq(X^&z;l0a%3&(5J=rX2*1uqW>n z_TFWMXJwB8<4D029?WcpI8ms(R^b37&81#n)s9uRhN79ikW%lk*I3iX&6&A~Aw=lA znV%k@LtyqWB2i&P47m*2oKKI&6iY`IG`)g8}4{TAk^a;*erAr^kZ$Hi^Qi z@ha~bui`ah=peQEdXmD>6+$bT<50{VV~K3Gq0w1>3)Eol@x7bj&78?^*4(k4E)3_8 G>;C|cbHcI! literal 0 HcmV?d00001 diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species.dm index 1eb07035f27..ccd75503bf1 100644 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species.dm +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species.dm @@ -26,6 +26,10 @@ GLOBAL_LIST_EMPTY(customizable_races) var/reagent_flags = PROCESS_ORGANIC ///Whether a species can use augmentations in preferences var/can_augment = TRUE + ///Override for the alpha of bodyparts and mutant parts. Will not take effect if not defined. + var/specific_alpha + ///Override for alpha value of markings, should be much lower than the above value if the above value is defined. + var/markings_alpha ///If a species can always be picked in prefs for the purposes of customizing it for ghost roles or events var/always_customizable = FALSE ///Flavor text of the species displayed on character creation screeen @@ -143,11 +147,12 @@ GLOBAL_LIST_EMPTY(customizable_races) accessory_overlay.color = "#"+mutant_bodyparts[key][MUTANT_INDEX_COLOR_LIST][1] if(USE_MATRIXED_COLORS) var/list/color_list = mutant_bodyparts[key][MUTANT_INDEX_COLOR_LIST] + var/alpha_value = specific_alpha ? specific_alpha : 255 //this is here and not with the alpha setting code below as setting the alpha on a matrix color mutable appearance breaks it (at least in this case) var/list/finished_list = list() finished_list += ReadRGB("[color_list[1]]0") finished_list += ReadRGB("[color_list[2]]0") finished_list += ReadRGB("[color_list[3]]0") - finished_list += list(0,0,0,255) + finished_list += list(0,0,0,alpha_value) for(var/index in 1 to finished_list.len) finished_list[index] /= 255 accessory_overlay.color = finished_list @@ -242,6 +247,11 @@ GLOBAL_LIST_EMPTY(customizable_races) extra2_accessory_overlay.color = "#[H.hair_color]" standing += extra2_accessory_overlay + if (specific_alpha && !override_color) + for (var/ov in standing) + var/image/overlay = ov + if (!istype(overlay.color,/list)) //check for a list because setting the alpha of the matrix colors breaks the color (the matrix alpha is set above inside the matrix) + overlay.alpha = specific_alpha H.overlays_standing[layer] += standing standing = list() diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm index d3048bc8fff..bab26d02d42 100644 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm @@ -1,6 +1,6 @@ /datum/species/jelly species_traits = list(MUTCOLORS,EYECOLOR,NOBLOOD,HAIR,FACEHAIR) - default_mutant_bodyparts = list("tail" = "None", "snout" = "None", "ears" = "None", "taur" = "None", "wings" = "None") + default_mutant_bodyparts = list("tail" = "None", "snout" = "None", "ears" = "None", "taur" = "None", "wings" = "None", "legs" = "Normal Legs") mutant_bodyparts = list() hair_color = "mutcolor" hair_alpha = 160 //a notch brighter so it blends better. @@ -9,11 +9,14 @@ name = "Xenobiological Slime Hybrid" id = "slimeperson" limbs_id = "slime" + limbs_icon = 'modular_skyrat/modules/customization/icons/mob/species/slime_parts_greyscale.dmi' default_color = "00FFFF" say_mod = "says" coldmod = 3 heatmod = 1 burnmod = 1 + specific_alpha = 155 + markings_alpha = 130 //This is set lower than the other so that the alpha values don't stack on top of each other so much /datum/action/innate/slime_change name = "Alter Form" diff --git a/modular_skyrat/modules/customization/modules/surgery/bodyparts/_bodyparts.dm b/modular_skyrat/modules/customization/modules/surgery/bodyparts/_bodyparts.dm index 0958f00e0dd..3b1273c8de2 100644 --- a/modular_skyrat/modules/customization/modules/surgery/bodyparts/_bodyparts.dm +++ b/modular_skyrat/modules/customization/modules/surgery/bodyparts/_bodyparts.dm @@ -71,42 +71,51 @@ if(aux_zone) aux.color = "#[draw_color]" + if (!owner || is_pseudopart || !ishuman(owner)) + return + + var/mob/living/carbon/human/H = owner + //set specific alpha before setting the markings alpha + if (alpha != 255) + for (var/ov in .) + var/image/overlay = ov + overlay.alpha = alpha //Markings! - if(!is_pseudopart && owner) - var/mob/living/carbon/human/H = owner - var/override_color - if(HAS_TRAIT(H, TRAIT_HUSK)) - override_color = "888" - if(istype(H)) - for(var/key in H.dna.species.body_markings[body_zone]) - var/datum/body_marking/BM = GLOB.body_markings[key] + var/override_color + if(HAS_TRAIT(H, TRAIT_HUSK)) + override_color = "888" - var/render_limb_string = body_zone - switch(body_zone) - if(BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) - if(use_digitigrade) - render_limb_string = "digitigrade_[use_digitigrade]_[render_limb_string]" - if(BODY_ZONE_CHEST) - if(BM.gendered) - var/gendaar = (H.body_type == FEMALE) ? "f" : "m" - render_limb_string = "[render_limb_string]_[gendaar]" + for(var/key in H.dna.species.body_markings[body_zone]) + var/datum/body_marking/BM = GLOB.body_markings[key] - var/mutable_appearance/accessory_overlay = mutable_appearance(BM.icon, "[BM.icon_state]_[render_limb_string]", -BODYPARTS_LAYER) - if(override_color) - accessory_overlay.color = "#[override_color]" - else - accessory_overlay.color = "#[H.dna.species.body_markings[body_zone][key]]" - . += accessory_overlay + var/render_limb_string = body_zone + switch(body_zone) + if(BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) + if(use_digitigrade) + render_limb_string = "digitigrade_[use_digitigrade]_[render_limb_string]" + if(BODY_ZONE_CHEST) + if(BM.gendered) + var/gendaar = (H.body_type == FEMALE) ? "f" : "m" + render_limb_string = "[render_limb_string]_[gendaar]" - if(aux_zone) - for(var/key in H.dna.species.body_markings[aux_zone]) - var/datum/body_marking/BM = GLOB.body_markings[key] + var/mutable_appearance/accessory_overlay = mutable_appearance(BM.icon, "[BM.icon_state]_[render_limb_string]", -BODYPARTS_LAYER) + if(override_color) + accessory_overlay.color = "#[override_color]" + else + accessory_overlay.color = "#[H.dna.species.body_markings[body_zone][key]]" + accessory_overlay.alpha = H.dna.species.markings_alpha + . += accessory_overlay - var/render_limb_string = aux_zone + if(aux_zone) + for(var/key in H.dna.species.body_markings[aux_zone]) + var/datum/body_marking/BM = GLOB.body_markings[key] - var/mutable_appearance/accessory_overlay = mutable_appearance(BM.icon, "[BM.icon_state]_[render_limb_string]", -aux_layer) - if(override_color) - accessory_overlay.color = "#[override_color]" - else - accessory_overlay.color = "#[H.dna.species.body_markings[aux_zone][key]]" - . += accessory_overlay + var/render_limb_string = aux_zone + + var/mutable_appearance/accessory_overlay = mutable_appearance(BM.icon, "[BM.icon_state]_[render_limb_string]", -aux_layer) + if(override_color) + accessory_overlay.color = "#[override_color]" + else + accessory_overlay.color = "#[H.dna.species.body_markings[aux_zone][key]]" + accessory_overlay.alpha = H.dna.species.markings_alpha + . += accessory_overlay