From 638e49001f5278be243e08037cfb55b1c3d647a9 Mon Sep 17 00:00:00 2001 From: ElorgRHG <71735193+ElorgRHG@users.noreply.github.com> Date: Sat, 17 Dec 2022 18:09:32 +0100 Subject: [PATCH] =?UTF-8?q?Handholes=20alternative=20solution,=20less=20is?= =?UTF-8?q?sues=20version=E2=84=A2=20(#19724)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Alternate solution to handholes * Markings handling * Respecting missing hands * Fixes handholes for ID photos/records, removes gloves from images in them for code simplification and consistency sake * hand not hands --- code/datums/datacore.dm | 7 +-- code/modules/client/preference/character.dm | 5 +- .../mob/living/carbon/human/update_icons.dm | 46 +++++++----------- icons/mob/clothing/masking_helpers.dmi | Bin 369 -> 1387 bytes 4 files changed, 24 insertions(+), 34 deletions(-) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index a94a6ef1d5e..3ae44bff924 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -349,6 +349,8 @@ GLOBAL_VAR_INIT(record_id_num, 1001) preview_icon.Blend(face_s, ICON_OVERLAY) + var/icon/hands_icon = icon(preview_icon) + hands_icon.Blend(icon('icons/mob/clothing/masking_helpers.dmi', "l_hand_mask"), ICON_MULTIPLY) var/icon/clothes_s = null var/job_clothes = null @@ -366,7 +368,6 @@ GLOBAL_VAR_INIT(record_id_num, 1001) if("Blueshield") clothes_s = new /icon('icons/mob/clothing/under/centcom.dmi', "officer_s") clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "jackboots"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/clothing/hands.dmi', "swat_gl"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/clothing/suit.dmi', "blueshield"), ICON_OVERLAY) if("Magistrate") clothes_s = new /icon('icons/mob/clothing/under/suit.dmi', "really_black_suit_s") @@ -488,11 +489,9 @@ GLOBAL_VAR_INIT(record_id_num, 1001) if("Syndicate Officer") clothes_s = new /icon('icons/mob/clothing/under/syndicate.dmi', "syndicate_s") clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "jackboots"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/clothing/hands.dmi', "swat_gl"), ICON_UNDERLAY) if("Syndicate Nuclear Operative") clothes_s = new /icon('icons/mob/clothing/under/syndicate.dmi', "syndicate_s") clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "jackboots"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/clothing/hands.dmi', "swat_gl"), ICON_UNDERLAY) else if(H.mind && (H.mind.assigned_role in get_all_centcom_jobs())) clothes_s = new /icon('icons/mob/clothing/under/centcom.dmi', "officer_s") @@ -516,6 +515,8 @@ GLOBAL_VAR_INIT(record_id_num, 1001) if(t_marking_s) temp.Blend(t_marking_s, ICON_OVERLAY) preview_icon.Blend(temp, ICON_OVERLAY) + + preview_icon.Blend(hands_icon, ICON_OVERLAY) qdel(face_s) qdel(clothes_s) diff --git a/code/modules/client/preference/character.dm b/code/modules/client/preference/character.dm index e5acae7ba86..5487efdccb4 100644 --- a/code/modules/client/preference/character.dm +++ b/code/modules/client/preference/character.dm @@ -823,9 +823,6 @@ else preview_icon.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT) - var/icon/hands_icon = icon(preview_icon) - hands_icon.Blend(icon('icons/mob/clothing/masking_helpers.dmi', "hands_mask"), ICON_MULTIPLY) - // Body accessory if(current_species && (current_species.bodyflags & HAS_BODY_ACCESSORY)) var/icon @@ -890,6 +887,8 @@ h_marking_s.Blend(m_colours["head"], ICON_ADD) preview_icon.Blend(h_marking_s, ICON_OVERLAY) + var/icon/hands_icon = icon(preview_icon) + hands_icon.Blend(icon('icons/mob/clothing/masking_helpers.dmi', "l_hand_mask"), ICON_MULTIPLY) var/icon/face_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "bald_s") if(!(current_species.bodyflags & NO_EYES)) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 0d4e5609193..378409c8d9b 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -280,6 +280,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) update_head_accessory() //markings update_markings() + update_hands_layer() //hair update_hair() update_fhair() @@ -412,39 +413,29 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) if(w_uniform?.body_parts_covered & HANDS) return - var/mutable_appearance/hands_appearance = new() - hands_appearance.layer = -HANDS_LAYER + var/species_name = "" + if(dna.species.name in list("Drask", "Grey", "Vox")) + species_name = "_[lowertext(dna.species.name)]" - var/obj/item/organ/external/hand/l_hand = get_limb_by_name("l_hand") - var/obj/item/organ/external/hand/right/r_hand = get_limb_by_name("r_hand") + var/icon/hands_mask = icon('icons/mob/body_accessory.dmi', "accessory_none_s") //Needs a blank icon, not actually related to markings at all - if(l_hand) - hands_appearance.overlays += l_hand.mob_icon - if(r_hand) - hands_appearance.overlays += r_hand.mob_icon + if(get_limb_by_name("l_hand")) + hands_mask.Blend(icon('icons/mob/clothing/masking_helpers.dmi', "l_hand_mask[species_name]"), ICON_OVERLAY) + if(get_limb_by_name("r_hand")) + hands_mask.Blend(icon('icons/mob/clothing/masking_helpers.dmi', "r_hand_mask[species_name]"), ICON_OVERLAY) - overlays_standing[HANDS_LAYER] = hands_appearance + var/mutable_appearance/body_layer = overlays_standing[LIMBS_LAYER][1] + var/icon/body_hands = icon(body_layer.icon) + body_hands.Blend(hands_mask, ICON_MULTIPLY) - apply_overlay(HANDS_LAYER) + var/mutable_appearance/markings_layer = overlays_standing[MARKINGS_LAYER] + var/icon/markings_hands = icon(markings_layer.icon) + markings_hands.Blend(hands_mask, ICON_MULTIPLY) -/mob/living/carbon/human/golem/update_hands_layer() - remove_overlay(HANDS_LAYER) + var/mutable_appearance/final_sprite = mutable_appearance(body_hands, layer = -HANDS_LAYER) + final_sprite.overlays += markings_hands - var/mutable_appearance/hands_appearance = new() - hands_appearance.layer = -HANDS_LAYER - - var/obj/item/organ/external/hand/l_hand = get_limb_by_name("l_hand") - var/obj/item/organ/external/hand/right/r_hand = get_limb_by_name("r_hand") - var/datum/species/golem/G = dna.species - var/icon/golem_icon = G.icobase - - if(G.golem_colour) - if(l_hand) - hands_appearance.overlays += icon(golem_icon.ColorTone(G.golem_colour), "l_hand") - if(r_hand) - hands_appearance.overlays += icon(golem_icon.ColorTone(G.golem_colour), "r_hand") - - overlays_standing[HANDS_LAYER] = hands_appearance + overlays_standing[HANDS_LAYER] = final_sprite apply_overlay(HANDS_LAYER) //FACIAL HAIR OVERLAY @@ -571,7 +562,6 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) update_inv_wear_pda() UpdateDamageIcon() force_update_limbs() - update_hands_layer() update_tail_layer() update_wing_layer() update_halo_layer() diff --git a/icons/mob/clothing/masking_helpers.dmi b/icons/mob/clothing/masking_helpers.dmi index ee098b3ba75e49825457b92034a82a7f02156112..ca7f398894589845f2de8ac0a2fc803b71c0707e 100644 GIT binary patch delta 1332 zcmV-41VdSvs{i&85|vVbTJ$Tp-Dkr+Psbto&i z`niCk3jk5ngrNiwXoUa(1aL`2K~!jg-I?2t;~)%%K`Qqhsk~1rP40=5y#K2#U=Fr% z2+6e7>~w#%@)YL_Xa9z(?c_&&1aKDqF4i!M{Q;Pgqgc%>_6I;EN3n`o?Du7Ba;(jR zv>dDq*!DpLoNiLvY4#xRbkig@N==hoYIC;r&F~=gt5B{C_`&kdQ@;x3@XBmCK>Zg0 z?~hMp%K_&1z)h(s6eQaK)PDs~b(~p~HjB!W`2>Hk-74?|n`ioAarte3dDEqFydU!F zbUTZ0)u}-50L1@C0H@QAN|tX?>JK|kryZ3n4+7MG1vvNlkUlUy;E{04u{Hx-4|uFi z>wSt`oQqy~-(tuEx48~j=|K$G_;s`fcr?Z2*l9Ym1Hi#3ISoLgqFi}YebKya3%n2o zfsKC&OBER0M*$E7##So;f?m88SQQ5RzZTF+>uQ~PRR2Sn0Bi(UjnY%K&&k#rR{fNL zIeeWXF#FNXfUjU_0f)l>WC1WRFIxg0Wu_zWsDRJGmbC(_vU9sM+`Z29-NI-UfMzog z8W#k7S+EKCHX=|$qX*N(Bp@hP3v3vOZzzAGbf0CwOaSO9k3Sm49$*H6)l3nx#oMutE(?53Eaikb*6VTfbBvx_ZF`+1-_KOE=*kLKz~55g8V07QSQ zj`YAMlXZDRljaJ{Q4byk@ZmjVpJkp@UK$}hBwd)J45WG41;SZ8>4Mh-TLC-s^Mxup zP;>zU;#x{NP<7#}07eFM)Pbd}rDp-)!QI?D>%pyz(kugAJ?H_V9!Teht{#j4L=S}X zLthW1^Fvn;{+IJZ9`~K|1M!0>+VFpU^AUjPK@ZR?*r)?Y z7wmKZ#ITOS{0o4*W*`pH`y~G{__#oTz17Nr?tK#XOF;Lo=Fb4V`y}p%Eed}H;`I>s zUjj~jE&e@<|B0B+LgiNl(K zondXaBn6sL62kk2?JxK_!BxPZ@^TzF{p-MY2fNE-B z2NJa{j~W^mOZs4PdH8K)$*J^$W9bgCh8i-kA^=oTsG-{MKj+$-w%w0BE!X-8&@TdB z@%ux3U=_o^ikSlJsGKXXKt}ydxK~G?D*#o=0f1&)#{j!TegnX+=Y!}D+spnCA0CSg4oY7*9ip&GCr3;-oyjRPn9fPk?+oUg&1?ZXd%(H&<2 qScf;z`vG!37y-!5$N+FEko^Pp=iV1hBbHSF0000A2{AjKBo6XN=xf#LuE|BkXI zf?12` z3ceOI&gNyf8z7@@tHW>>sB505i(`n!#Hkal`3@NfxUetfnAU?Md1bHBaYm z>zD}1GM0Y|ks2GnEK#pdzy6?nf#OFm#x`Tt7wlXGWg=6bEZt+Nf47?J!?nQF28#fZ zNJg$T%avUx9*d4nF^t@HDuq*BRYv#WjjNy5+lOU_EIpXTzv}Mo)_Z?F=Kq?U*5uuL zYPpK$p7-BR1%Jvq