From 7f95d135c30485333f823913d951424b590d2fe8 Mon Sep 17 00:00:00 2001 From: Cadyn Bombaci Date: Sat, 18 Sep 2021 00:03:05 -0700 Subject: [PATCH 1/2] Digi markings and sprite improvement --- .../new_player/sprite_accessories_extra_ch.dm | 100 ++++++++++++++++++ code/modules/organs/organ_icon_ch.dm | 43 +++++--- icons/mob/human_races/markings_digi_ch.dmi | Bin 0 -> 1735 bytes icons/mob/human_races/r_digi_ch.dmi | Bin 702 -> 702 bytes 4 files changed, 130 insertions(+), 13 deletions(-) create mode 100644 icons/mob/human_races/markings_digi_ch.dmi 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..a41cfd3508 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,40 @@ 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) - /* //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 0000000000000000000000000000000000000000..924b4f54ddbe2bb512c68aa546a2328c4a682241 GIT binary patch literal 1735 zcmV;&1~~bNP)J6951OX-PyuRCt{2-OWCcXf;|C^YiLP(z?| z==FKJHGFjqWJumXE^NX6goWfT>2GM=@!k~dKAzeo7v^|hyx=x1SZzG_sD@11px|V~ zUJ;dinf?OvwdtUWE7%N~Z%_?sjr#lW=NF&`NN!xgWk)FZ3e_dmo9@JYWv3a0ZG z>>||#PLem5ybJIad9%uQqX_@pM81~=Bj35aIWp{j=ex4McCFWpd}s6K@T4Te)miVe z6(isIycqxh00000IH)&S;7Rl5NZ$P3s%+kTjO_Wn(~82O@;7`a=uo>{f;U+?PN;q7|W6k(SGew!*@ zgzFcl8y8pl=w{8Cq^}XAby0x#ZUn`t-{EHc^@}t4xV2X6N%%7g6x@U_Uzkypae0p~ zZ1~yQzdDp z+n@2I59QaBNM5_V_sQ*OcI1@s_>fu7yfpI-@?Kv8bA$l^0000eqchV_rF_;`A9($X zjwObAoP4*=wC|1zJSU~$kDoo}n<> zeHl%#)f6wdO$%;=yxEU&UI(SqK^3n}e%-$cnEKhfk0<5hOx1-OVYw>WVen=u!tZUo zy>i|>+x9-XBcg^(&+ol2ensWpD)bkfG-^GHPwL>q3hNiM$OHfY00021n4RC-T$x~? zeoZ>Hp2jEAW{*i1o9){c9NA7CY|2MLS;90nDM>~`dV6bN@4-A(4a0QlJ{$Tj*-b{T4xd_%b)|;-uxV)^x#Q#Z97lD6xTV*N^ zmQJv5Su(Vi8~>wAYaCWs-$d0P+=FRsq#gZh#A!+TD!9P)6k{Lxo|vQ=ZZw}x)|1_8cHFN#q^3RKF)8Co6 z;qwu7pLI<{5%)4`1bzPNM`+Pi+4=|M4e9U3UT_jd-+WIR+?t2g z{V2bl#6Edm-u`-~;9xOeQ5WTzd05>F>q#W1000000PuI|%{26A+WEV3g2=b9 d^&{UR{s$MFa>}_Pyu<(i002ovPDHLkV1gY+Y#{&u literal 0 HcmV?d00001 diff --git a/icons/mob/human_races/r_digi_ch.dmi b/icons/mob/human_races/r_digi_ch.dmi index 4d89b85a0ebb07d9c18e96d9dc0fb6c386be3790..4a38e7155e4d3bc6053c47dde380d2523eca31be 100644 GIT binary patch delta 522 zcmV+l0`>jA1-=E4Bpww|OjJbx005+( zRA_L(Hmqbq>t(-9vCR|U&g zw)q5t*dPeT6A8LK>=D*G7F^1I65}IvJtSzbv1fW^cdoYZp_Cet&J{)i~hjeEYccZ*+w;HKEX)iBzg z{aUx@o!K99L+pb8kTCEkqI2DWtt&mNs!q`C`}C^F_-YmG;G9#unzykS}JrYQAWT?*Omk1Px_<%op7lKKnoPgYG(iFy{xe zpQJHT{*M66O0ty#4nARz?z5oCK M07*qoM6N<$f-iOgI{*Lx delta 522 zcmV+l0`>jA1-=E4Bq113OjJbx004S=dZeVJwzjr^e}9yelto2FDk>^0?r+PHLY{xd zNklJ^6N{ zE}mwZ#&I0Sac+yavUcAV4{7LO)3zhm-$DH(d3OgaXkj;P@c^kmO5no)1@wN};{mxI z1LX%amWl$KP87%&YzzY9i4V+Yl!1SbwBJc!n9C9i8d$!P=z@(s^9v!s{w#s9%!vF+ zVZL)IG`KErz(U)-M*SN zfvaJ1y!u*q&2Lse)C;Kv{~=+kpQyj)lMr@3%iG=j_KU#FMc0D&xFXp&vf6->V0YAr)E|l}RzX)Ua?0@Wo@SHyw z_+a))8RM5qxbz3v2cbWhWe|KYzbr~wD&gXS?1SipSq4iV%(Y+TpO(ouYSEV%sQ>@~ M07*qoM6N<$f=~?!J^%m! From 98337d6a5b89d9b6dc6bce4f0039ac7e50d59f0b Mon Sep 17 00:00:00 2001 From: Cadyn Bombaci Date: Mon, 20 Sep 2021 17:55:14 -0700 Subject: [PATCH 2/2] Add comment disclaimer --- code/modules/organs/organ_icon_ch.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/organs/organ_icon_ch.dm b/code/modules/organs/organ_icon_ch.dm index a41cfd3508..7348f5c054 100644 --- a/code/modules/organs/organ_icon_ch.dm +++ b/code/modules/organs/organ_icon_ch.dm @@ -47,6 +47,7 @@ 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)