From 99c04723f194b9e9989a9272d6873ad9d22630af Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Sat, 14 Jan 2023 07:59:13 +1000 Subject: [PATCH 1/4] Merge pull request #14325 from Heroman3003/generic-hooves Adds new system for markings that can override whole organs and new Generic Hooves using this system --- .../mob/living/carbon/human/update_icons.dm | 8 ++++---- .../mob/new_player/sprite_accessories.dm | 2 ++ .../new_player/sprite_accessories_extra_vr.dm | 11 +++++++++++ .../mob/new_player/sprite_accessories_tail.dm | 1 - code/modules/organs/organ_external.dm | 7 ++++++- code/modules/organs/organ_icon.dm | 16 ++++++++++++++++ icons/mob/human_races/markings_vr.dmi | Bin 82674 -> 82781 bytes 7 files changed, 39 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 2399b489ec..cd4e116cfd 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -210,7 +210,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() // blend the individual damage states with our icons for(var/obj/item/organ/external/O in organs) - if(isnull(O) || O.is_stump() || O.is_hidden_by_tail()) + if(isnull(O) || O.is_stump() || O.is_hidden_by_sprite_accessory()) continue O.update_icon() @@ -275,7 +275,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() icon_key += "[head.eye_icon]" for(var/organ_tag in species.has_limbs) var/obj/item/organ/external/part = organs_by_name[organ_tag] - if(isnull(part) || part.is_stump() || part.is_hidden_by_tail()) //VOREStation Edit allowing tails to prevent bodyparts rendering, granting more spriter freedom for taur/digitigrade stuff. + if(isnull(part) || part.is_stump() || part.is_hidden_by_sprite_accessory()) //VOREStation Edit allowing tails to prevent bodyparts rendering, granting more spriter freedom for taur/digitigrade stuff. icon_key += "0" continue if(part) @@ -346,7 +346,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() Cutter.Blend("#000000", ICON_MULTIPLY) // Black again. for(var/obj/item/organ/external/part in organs) - if(isnull(part) || part.is_stump() || part.is_hidden_by_tail()) //VOREStation Edit allowing tails to prevent bodyparts rendering, granting more spriter freedom for taur/digitigrade stuff. + if(isnull(part) || part.is_stump() || part.is_hidden_by_sprite_accessory()) //VOREStation Edit allowing tails to prevent bodyparts rendering, granting more spriter freedom for taur/digitigrade stuff. continue var/icon/temp = part.get_icon(skeleton) @@ -789,7 +789,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() for(var/f in list(BP_L_FOOT, BP_R_FOOT)) var/obj/item/organ/external/foot/foot = get_organ(f) - if(istype(foot) && foot.is_hidden_by_tail()) //If either foot is hidden by the tail, don't render footwear. + if(istype(foot) && foot.is_hidden_by_sprite_accessory(clothing_only = TRUE)) //If either foot is hidden by the tail, don't render footwear. return //Allow for shoe layer toggle nonsense diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index b85685803a..a64def1f49 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -42,6 +42,8 @@ /// Should this sprite block emissives? var/em_block = FALSE + var/list/hide_body_parts = list() //Uses organ tag defines. Bodyparts in this list do not have their icons rendered, allowing for more spriter freedom when doing taur/digitigrade stuff. + /* //////////////////////////// / =--------------------= / diff --git a/code/modules/mob/new_player/sprite_accessories_extra_vr.dm b/code/modules/mob/new_player/sprite_accessories_extra_vr.dm index 919d2bedb0..e3ee23efe4 100644 --- a/code/modules/mob/new_player/sprite_accessories_extra_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_extra_vr.dm @@ -2,6 +2,7 @@ //Reminder: BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_TORSO,BP_GROIN,BP_HEAD /datum/sprite_accessory/marking //Override for base markings + var/organ_override = FALSE color_blend_mode = ICON_ADD species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use @@ -907,3 +908,13 @@ icon_state = "tesh-beak-alt" color_blend_mode = ICON_MULTIPLY body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/vr_generic_hooves + name = "Generic Hooves" + icon = 'icons/mob/human_races/markings_vr.dmi' + icon_state = "generic_hooves" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_FOOT,BP_R_FOOT) + hide_body_parts = list(BP_L_FOOT,BP_R_FOOT) + organ_override = TRUE + diff --git a/code/modules/mob/new_player/sprite_accessories_tail.dm b/code/modules/mob/new_player/sprite_accessories_tail.dm index 8428f6170f..53475d3cd1 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail.dm @@ -20,7 +20,6 @@ var/ani_state // State when wagging/animated var/extra_overlay_w // Wagging state for extra overlay var/extra_overlay2_w // Tertiary wagging. - var/list/hide_body_parts = list() //Uses organ tag defines. Bodyparts in this list do not have their icons rendered, allowing for more spriter freedom when doing taur/digitigrade stuff. var/icon/clip_mask_icon = null //Icon file used for clip mask. var/clip_mask_state = null //Icon state to generate clip mask. Clip mask is used to 'clip' off the lower part of clothing such as jumpsuits & full suits. var/icon/clip_mask = null //Instantiated clip mask of given icon and state diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 912889c5f6..b0410b9db4 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -1410,6 +1410,11 @@ Note that amputating the affected organ does in fact remove the infection from t if(!istype(I,/obj/item/weapon/implant) && !istype(I,/obj/item/device/nif)) //VOREStation Add - NIFs return 1 -/obj/item/organ/external/proc/is_hidden_by_tail() +/obj/item/organ/external/proc/is_hidden_by_sprite_accessory(var/clothing_only = FALSE) // Clothing only will mean the check should only be used in places where we want to hide clothing icon, not organ itself. if(owner && owner.tail_style && owner.tail_style.hide_body_parts && (organ_tag in owner.tail_style.hide_body_parts)) return 1 + if(clothing_only && markings.len) + for(var/M in markings) + var/datum/sprite_accessory/marking/mark = markings[M]["datum"] + if(mark.hide_body_parts && (organ_tag in mark.hide_body_parts)) + return 1 \ No newline at end of file diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index fa93fc43b7..a0a26821c7 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -81,6 +81,22 @@ var/global/list/limb_icon_cache = list() /obj/item/organ/external/proc/get_icon(var/skeletal) + for(var/M in markings) + var/datum/sprite_accessory/marking/mark = markings[M]["datum"] + if(mark.organ_override) + to_world("override success") + var/icon/mark_s = new/icon("icon" = mark.icon, "icon_state" = "[mark.icon_state]-[organ_tag]") + mob_icon = new /icon("icon" = mark.icon, "icon_state" = "blank") + mark_s.Blend(markings[M]["color"], mark.color_blend_mode) // VOREStation edit + 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 + + to_world("override fail") + var/gender = "m" if(owner && owner.gender == FEMALE) gender = "f" diff --git a/icons/mob/human_races/markings_vr.dmi b/icons/mob/human_races/markings_vr.dmi index b2b50f1d69437a2abf61fcff29d210037e80a9f0..0b2bc13a733b57729a97fe67f9079ef599589f04 100644 GIT binary patch delta 9191 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 Date: Fri, 27 Jan 2023 08:33:58 -0500 Subject: [PATCH 3/4] powder that makes you say yes --- .../code/modules/mob/living/carbon/human/update_icons.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm b/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm index 9e41c0f118..ab6be6cb9c 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/update_icons.dm @@ -16,7 +16,7 @@ for(var/f in list(BP_L_FOOT, BP_R_FOOT)) var/obj/item/organ/external/foot/foot = get_organ(f) - if(istype(foot) && foot.is_hidden_by_tail()) //If either foot is hidden by the tail, don't render footwear. + if(istype(foot) && foot.is_hidden_by_sprite_accessory()) //If either foot is hidden by the tail, don't render footwear. return var/obj/item/clothing/shoes/shoe = shoes @@ -107,4 +107,4 @@ /mob/living/carbon/human/update_tail_showing() . = ..() - update_vore_tail_sprite() \ No newline at end of file + update_vore_tail_sprite() From 894ab3c9af0c6144e739ee57ae8ca409a23d2a5c Mon Sep 17 00:00:00 2001 From: Nadyr <41974248+Darlantanis@users.noreply.github.com> Date: Fri, 27 Jan 2023 08:41:05 -0500 Subject: [PATCH 4/4] powder that makes you say yes --- .../code/modules/mob/new_player/sprite_accessories_extra.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/modular_chomp/code/modules/mob/new_player/sprite_accessories_extra.dm b/modular_chomp/code/modules/mob/new_player/sprite_accessories_extra.dm index d00e72942d..201b66db6c 100644 --- a/modular_chomp/code/modules/mob/new_player/sprite_accessories_extra.dm +++ b/modular_chomp/code/modules/mob/new_player/sprite_accessories_extra.dm @@ -1,6 +1,3 @@ -/datum/sprite_accessory/marking - var/hide_body_parts = list() - /datum/sprite_accessory/marking/ch/anthrovirus_ra name = "Anthro Virus (Right Arm)" icon_state = "anthrovirus" @@ -181,4 +178,4 @@ name = "Normal Eyes" icon_state = "normeyes" body_parts = list(BP_HEAD) - color_blend_mode = ICON_MULTIPLY \ No newline at end of file + color_blend_mode = ICON_MULTIPLY