diff --git a/code/modules/mob/living/carbon/human/species/outsider/vox.dm b/code/modules/mob/living/carbon/human/species/outsider/vox.dm index 5b388fcc59..aaa5cb649a 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/vox.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/vox.dm @@ -60,6 +60,7 @@ flesh_color = "#808D11" tail = "voxtail" tail_hair = "quills" + tail_blend = ICON_MULTIPLY reagent_tag = IS_VOX diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 4d20cf896a..75fa07814d 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -13,7 +13,7 @@ // Icon/appearance vars. var/icobase = 'icons/mob/human_races/r_human.dmi' // Normal icon set. var/deform = 'icons/mob/human_races/r_def_human.dmi' // Mutated icon set. - var/limb_blend = ICON_ADD // Specify a blending mode for limbs and tail. + var/limb_blend = ICON_ADD // Specify a blending mode for limb colourisation. var/speech_bubble_appearance = "normal" // Part of icon_state to use for speech bubbles when talking. See talk.dmi for available icons. var/fire_icon_state = "humanoid" // The icon_state used inside OnFire.dmi for when on fire. @@ -32,6 +32,8 @@ var/tail // Name of tail state in species effects icon file. var/tail_animation // If set, the icon to obtain tail animation states from. var/tail_hair + var/tail_blend = ICON_ADD // Blending mode for tail colourisation. + var/tail_hair_blend = ICON_ADD // Blending mode for tail hair colourisation. var/icon_scale_x = 1 // Makes the icon wider/thinner. var/icon_scale_y = 1 // Makes the icon taller/shorter. diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 526cf18f7a..1506b84209 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -915,12 +915,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(!species_tail_anim && species.icobase_tail) species_tail_anim = species.icobase //Allow override of file for non-animated tails if(!species_tail_anim) species_tail_anim = 'icons/effects/species.dmi' tail_icon = new/icon(species_tail_anim) - tail_icon.Blend(rgb(r_skin, g_skin, b_skin), species?.limb_blend || ICON_ADD) + tail_icon.Blend(rgb(r_skin, g_skin, b_skin), species?.tail_blend || ICON_ADD) // The following will not work with animated tails. var/use_species_tail = species.get_tail_hair(src) if(use_species_tail) var/icon/hair_icon = icon('icons/effects/species.dmi', "[species.get_tail(src)]_[use_species_tail]") - hair_icon.Blend(rgb(r_hair, g_hair, b_hair), species?.limb_blend || ICON_ADD) + hair_icon.Blend(rgb(r_hair, g_hair, b_hair), species?.tail_hair_blend || ICON_ADD) tail_icon.Blend(hair_icon, ICON_OVERLAY) tail_icon_cache[icon_key] = tail_icon @@ -1075,7 +1075,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() //If you are FBP with wing style and didn't set a custom one if(synthetic && synthetic.includes_wing && !wing_style) var/icon/wing_s = new/icon("icon" = synthetic.icon, "icon_state" = "wing") //I dunno. If synths have some custom wing? - wing_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species?.limb_blend || ICON_ADD) + wing_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species?.limb_blend || ICON_ADD) // Are wings even used on Polaris? This might need an additional blend mode var. return image(wing_s) //If you have custom wings selected @@ -1125,7 +1125,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() var/datum/robolimb/model = isSynthetic() if(istype(model) && model.includes_tail && !tail_style) var/icon/tail_s = new/icon("icon" = synthetic.icon, "icon_state" = "tail") - tail_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species?.limb_blend || ICON_ADD) + tail_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species?.tail_blend || ICON_ADD) return image(tail_s) //If you have a custom tail selected diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 3f8bf90b9d..0466392fe3 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -22,6 +22,10 @@ r_skin = rand (0,255) g_skin = rand (0,255) b_skin = rand (0,255) + + for(var/marking in body_markings) + body_markings[marking] = rgb(rand(0,255), rand(0,255), rand(0,255)) + if(current_species.appearance_flags & HAS_UNDERWEAR) all_underwear.Cut() for(var/datum/category_group/underwear/WRC in global_underwear.categories) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index d17afbf86c..e46d6cc548 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -2112,7 +2112,7 @@ shaved /datum/sprite_accessory/marking/vox/scutes name = "Vox Scutes" icon_state = "scutes" - body_parts = list(BP_L_HAND, BP_R_HAND, BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT) + body_parts = list(BP_L_ARM, BP_L_HAND, BP_R_ARM, BP_R_HAND, BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT) /datum/sprite_accessory/marking/vox/arm_markings name = "Vox Arm Markings (Left)" diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index dd834af694..b5cfcc180a 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -42,6 +42,7 @@ var/list/s_col // skin colour var/list/h_col // hair colour var/body_hair // Icon blend for body hair if any. + var/mob/living/applied_pressure var/list/markings = list() // Markings (body_markings) to apply to the icon diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index 82bf86df7c..9c4529e111 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -119,7 +119,7 @@ var/global/list/limb_icon_cache = list() for(var/M in markings) var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]") - mark_s.Blend(markings[M]["color"], ICON_ADD) + mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) add_overlay(mark_s) //So when it's not on your body, it has icons mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons icon_cache_key += "[M][markings[M]["color"]]" @@ -139,7 +139,7 @@ var/global/list/limb_icon_cache = list() for(var/M in markings) var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]") - mark_s.Blend(markings[M]["color"], ICON_ADD) + mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) add_overlay(mark_s) //So when it's not on your body, it has icons mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons icon_cache_key += "[M][markings[M]["color"]]" @@ -168,11 +168,10 @@ var/global/list/limb_icon_cache = list() else applying.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT) icon_cache_key += "_tone_[s_tone]" - else - if(s_col && s_col.len >= 3) - var/blend = species?.limb_blend || ICON_ADD - applying.Blend(rgb(s_col[1], s_col[2], s_col[3]), blend) - icon_cache_key += "_color_[s_col[1]]_[s_col[2]]_[s_col[3]]_[blend]" + else if(s_col && s_col.len >= 3) + var/blend = species?.limb_blend || ICON_ADD + applying.Blend(rgb(s_col[1], s_col[2], s_col[3]), blend) + icon_cache_key += "_color_[s_col[1]]_[s_col[2]]_[s_col[3]]_[blend]" // Translucency. if(nonsolid) applying += rgb(,,,180) // SO INTUITIVE TY BYOND diff --git a/icons/effects/species.dmi b/icons/effects/species.dmi index 117cfe3a16..7c16cc212b 100644 Binary files a/icons/effects/species.dmi and b/icons/effects/species.dmi differ diff --git a/icons/effects/species_tails.dmi b/icons/effects/species_tails.dmi index 5216735bcb..a80700af7b 100644 Binary files a/icons/effects/species_tails.dmi and b/icons/effects/species_tails.dmi differ diff --git a/icons/mob/human_races/markings_vox.dmi b/icons/mob/human_races/markings_vox.dmi index db38155d98..1a7c87501b 100644 Binary files a/icons/mob/human_races/markings_vox.dmi and b/icons/mob/human_races/markings_vox.dmi differ