diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index c25299f0a..2be66de29 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -391,6 +391,7 @@ if(cosmetic_icon.icon) base_bp_icon = cosmetic_icon.icon use_digitigrade = cosmetic_icon.support_digitigrade ? use_digitigrade : NOT_DIGITIGRADE + color_src = cosmetic_icon.color_src ? cosmetic_icon.color_src : MUTCOLORS if("mam_body_markings" in S.default_features) var/datum/sprite_accessory/Smark @@ -403,11 +404,12 @@ else body_markings = "plain" auxmarking = "plain" - markings_color = list(colorlist) - else body_markings = null auxmarking = null + + if((MUTCOLORS in S.species_traits) || (MUTCOLORS_PARTSONLY in S.species_traits)) + markings_color = list(colorlist) if(!dropping_limb && H.dna.check_mutation(HULK)) mutation_color = "00aa00" @@ -567,20 +569,28 @@ . += marking return - if(color_src) //TODO - add color matrix support for base species limbs - var/draw_color = mutation_color || species_color || (skin_tone && skintone2hex(skin_tone)) - if(draw_color) - limb.color = "#[draw_color]" + if(!color_src) + return + switch(color_src) + if(MUTCOLORS) + var/draw_color = mutation_color || species_color || (skin_tone && skintone2hex(skin_tone)) + if(draw_color) + limb.color = "#[draw_color]" + if(aux_zone) + aux.color = "#[draw_color]" + if(MATRIXED) + limb.color = list(markings_color) if(aux_zone) - aux.color = "#[draw_color]" - if(!isnull(auxmarking) && !has_cosmetic_state) - auxmarking.color = list(markings_color) - - if(!isnull(body_markings) && !has_cosmetic_state) - if(is_husk) - marking.color = "#141414" - else - marking.color = list(markings_color) + aux.color = list(markings_color) + if(has_cosmetic_state) + return + if(!isnull(auxmarking)) + auxmarking.color = list(markings_color) + if(!isnull(body_markings)) + if(is_husk) + marking.color = "#141414" + else + marking.color = list(markings_color) /obj/item/bodypart/deconstruct(disassembled = TRUE) diff --git a/hyperstation/code/modules/mob/dead/new_player/cosmetic_parts.dm b/hyperstation/code/modules/mob/dead/new_player/cosmetic_parts.dm index aab187740..2e5e10987 100644 --- a/hyperstation/code/modules/mob/dead/new_player/cosmetic_parts.dm +++ b/hyperstation/code/modules/mob/dead/new_player/cosmetic_parts.dm @@ -13,10 +13,15 @@ safely. */ /datum/cosmetic_part + /** The name of the cosmetic part. This shows up in the preferences dropdown. */ var/name var/icon = 'hyperstation/icons/mob/char_parts.dmi' var/icon_state + /** How colors are determined for this part. MUTCOLORS for base color, MATRIXED to allow multiple channels. */ + var/color_src = MUTCOLORS + /** Whether or not this cosmetic part has an alternate form for digitigrade legs. */ var/support_digitigrade = TRUE + /** Species IDs that support this cosmetic part. Bypassed with "show mismatched markings" option. */ var/list/supported_species /datum/cosmetic_part/head @@ -24,25 +29,84 @@ safely. /datum/cosmetic_part/arms /datum/cosmetic_part/legs +// HEADS +// ========================================= + /datum/cosmetic_part/head/default name = "default" icon = null + +// CHESTS +// ========================================= + /datum/cosmetic_part/chest/default name = "default" icon = null +/datum/cosmetic_part/chest/ipc_sleek + name = "sleek ipc chest" + icon_state = "ipc_sleek" + supported_species = list("ipc") + color_src = MATRIXED + + +// ARMS +// ========================================= + /datum/cosmetic_part/arms/default name = "default" icon = null +/datum/cosmetic_part/arms/avian_alt + name = "avian claws" + icon_state = "avian_alt" + supported_species = list("mammal", "avian", "aquatic", "insect", "xeno", "synthliz") + +/datum/cosmetic_part/arms/insect + name = "insect arms" + icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' + icon_state = "insect" + supported_species = list("mammal", "avian", "aquatic", "insect", "xeno", "synthliz") + support_digitigrade = TRUE + +/datum/cosmetic_part/arms/ipc_sleek + name = "sleek ipc arms" + icon_state = "ipc_sleek" + supported_species = list("ipc") + color_src = MATRIXED + + +// LEGS +// ========================================= + /datum/cosmetic_part/legs/default name = "default" icon = null /datum/cosmetic_part/legs/avian - name = "avian" + name = "avian legs" icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' icon_state = "avian" supported_species = list("mammal", "avian", "aquatic", "insect", "xeno", "synthliz") - support_digitigrade = FALSE \ No newline at end of file + support_digitigrade = FALSE + +/datum/cosmetic_part/legs/mammal + name = "mammal legs" + icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' + icon_state = "mammal" + supported_species = list("mammal", "avian", "aquatic", "insect", "xeno", "synthliz") + support_digitigrade = TRUE + +/datum/cosmetic_part/legs/insect + name = "insect legs" + icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi' + icon_state = "insect" + supported_species = list("mammal", "avian", "aquatic", "insect", "xeno", "synthliz") + support_digitigrade = TRUE + +/datum/cosmetic_part/legs/ipc_sleek + name = "sleek ipc legs" + icon_state = "ipc_sleek" + supported_species = list("ipc") + color_src = MATRIXED \ No newline at end of file diff --git a/hyperstation/icons/mob/char_parts.dmi b/hyperstation/icons/mob/char_parts.dmi index f082396ac..216df9afe 100644 Binary files a/hyperstation/icons/mob/char_parts.dmi and b/hyperstation/icons/mob/char_parts.dmi differ diff --git a/hyperstation/icons/mob/char_parts.png b/hyperstation/icons/mob/char_parts.png new file mode 100644 index 000000000..32870feba Binary files /dev/null and b/hyperstation/icons/mob/char_parts.png differ