diff --git a/code/modules/mob/new_player/sprite_accessories_extra_ch.dm b/code/modules/mob/new_player/sprite_accessories_extra_ch.dm index ccf3bdd82b..dd89e369ba 100644 --- a/code/modules/mob/new_player/sprite_accessories_extra_ch.dm +++ b/code/modules/mob/new_player/sprite_accessories_extra_ch.dm @@ -262,3 +262,103 @@ icon_add = 'icons/mob/human_face_ch_add.dmi' icon_state = "hair_vox_yasu" species_allowed = list(SPECIES_VOX) + +//Digitigrade markings +/datum/sprite_accessory/marking/digi + icon = 'icons/mob/human_races/markings_digi_ch.dmi' + +/datum/sprite_accessory/marking/digi/fullleft + name = "Digitigrade Full Left Leg(Only works with digitigrade legs)" + icon_state = "full" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/fullright + name = "Digitigrade Full Right Leg(Only works with digitigrade legs)" + icon_state = "full" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/longsockleft + name = "Digitigrade Long Socks Left(Only works with digitigrade legs)" + icon_state = "longsock" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/longsockright + name = "Digitigrade Long Socks Right(Only works with digitigrade legs)" + icon_state = "longsock" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/medsockleft + name = "Digitigrade Medium Socks Left(Only works with digitigrade legs)" + icon_state = "medsock" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/medsockright + name = "Digitigrade Medium Socks Right(Only works with digitigrade legs)" + icon_state = "medsock" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/shortsockleft + name = "Digitigrade Short Socks Left(Only works with digitigrade legs)" + icon_state = "shortsock" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/shortsockright + name = "Digitigrade Short Socks Right(Only works with digitigrade legs)" + icon_state = "shortsock" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/toesleft + name = "Digitigrade Toes Left(Only works with digitigrade legs)" + icon_state = "toes" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/toesright + name = "Digitigrade Toes Right(Only works with digitigrade legs)" + icon_state = "toes" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/stripesleft + name = "Digitigrade Stripes Left(Only works with digitigrade legs)" + icon_state = "stripes" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/stripesright + name = "Digitigrade Stripes Right(Only works with digitigrade legs)" + icon_state = "stripes" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/smallspotsleft + name = "Digitigrade Small Spots Left(Only works with digitigrade legs)" + icon_state = "smallspots" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/smallspotsright + name = "Digitigrade Small Spots Right(Only works with digitigrade legs)" + icon_state = "smallspots" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT) + +/datum/sprite_accessory/marking/digi/bigspotsleft + name = "Digitigrade Big Spots Left(Only works with digitigrade legs)" + icon_state = "bigspots" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_LEG,BP_L_FOOT) + +/datum/sprite_accessory/marking/digi/bigspotsright + name = "Digitigrade Big Spots Right(Only works with digitigrade legs)" + icon_state = "bigspots" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_R_LEG,BP_R_FOOT) \ No newline at end of file diff --git a/code/modules/organs/organ_icon_ch.dm b/code/modules/organs/organ_icon_ch.dm index 961dafe7fe..7348f5c054 100644 --- a/code/modules/organs/organ_icon_ch.dm +++ b/code/modules/organs/organ_icon_ch.dm @@ -11,8 +11,8 @@ else if(dna) digitigrade = dna.digitigrade - if( !model && digitigrade && ( istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot) ) ) - + if( !model && ( istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot) ) ) //All leg icons go through here now. + var/gender = "m" if(owner && owner.gender == FEMALE) gender = "f" @@ -43,23 +43,41 @@ mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]") apply_colouration(mob_icon) else - mob_icon = new /icon(species.icodigi, "[icon_name][gender ? "_[gender]" : ""]") + //Use digi icon if digitigrade, otherwise use regular icon. Ternary operator is based. + mob_icon = new /icon(digitigrade ? species.icodigi : species.get_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]") apply_colouration(mob_icon) - /* + //Code here is copied from organ_icon.dm line 118 at time of writing (9/20/21), VOREStation edits are left in intentionally, because I think it's worth keeping track of the fact that the code is from Virgo's edits. //Body markings, actually does not include head this time. Done separately above. if(!istype(src,/obj/item/organ/external/head)) 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"], mark_style.color_blend_mode) // VOREStation edit - 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"]]" - */ - dir = EAST - icon = mob_icon - return mob_icon + var/isdigitype = istype(mark_style,/datum/sprite_accessory/marking/digi) + if(!(digitigrade ^ isdigitype)) //Equivalent to XNOR; this code will only run if either both digitigrade and isdigitype are true, or if both are false. + var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]") + mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) // VOREStation edit + 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"]]" + if(body_hair && islist(h_col) && h_col.len >= 3) + var/cache_key = "[body_hair]-[icon_name]-[h_col[1]][h_col[2]][h_col[3]]" + if(!limb_icon_cache[cache_key]) + var/icon/I = icon(species.get_icobase(owner), "[icon_name]_[body_hair]") + I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit + limb_icon_cache[cache_key] = I + mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY) + + // VOREStation edit start + if(nail_polish) + var/icon/I = new(nail_polish.icon, nail_polish.icon_state) + I.Blend(nail_polish.color, ICON_MULTIPLY) + add_overlay(I) + mob_icon.Blend(I, ICON_OVERLAY) + icon_cache_key += "_[nail_polish.icon]_[nail_polish.icon_state]_[nail_polish.color]" + // VOREStation edit end + dir = EAST + icon = mob_icon + return mob_icon else . = ..() \ No newline at end of file diff --git a/icons/mob/human_races/markings_digi_ch.dmi b/icons/mob/human_races/markings_digi_ch.dmi new file mode 100644 index 0000000000..924b4f54dd Binary files /dev/null and b/icons/mob/human_races/markings_digi_ch.dmi differ diff --git a/icons/mob/human_races/r_digi_ch.dmi b/icons/mob/human_races/r_digi_ch.dmi index 4d89b85a0e..4a38e7155e 100644 Binary files a/icons/mob/human_races/r_digi_ch.dmi and b/icons/mob/human_races/r_digi_ch.dmi differ