From a403562b9f1ae8f4861ba1c1fefce74a342bdbf2 Mon Sep 17 00:00:00 2001 From: Alexis Date: Fri, 3 Apr 2026 16:36:02 -0400 Subject: [PATCH] [Nova Port] Updates and moves the Bodypart Overlay files (#5322) ## About The Pull Request Updates the files inside `./code/datums/bodypart_overlays`. I achieved this by moving the files to `modular_zubbers/code/datums/bodypart_overlays`, and updated the code to match https://github.com/NovaSector/NovaSector/commits/master/modular_nova/master_files/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm up to a15c82801f9771265669b3eff33062f4d863e730 except for their handling of mutant bodyparts. ## Why It's Good For The Game Better code. ## Proof Of Testing See below.
Screenshots/Videos image https://github.com/user-attachments/assets/7661df22-549b-4526-b970-1f21daaf2f7f
## Changelog Not player facing. --- .../bodypart_overlays/bodypart_overlay.dm | 0 .../mutant_bodypart_overlay.dm | 23 +++++++++++-------- tgstation.dme | 4 ++-- 3 files changed, 15 insertions(+), 12 deletions(-) rename {modular_skyrat/master_files => modular_zubbers}/code/datums/bodypart_overlays/bodypart_overlay.dm (100%) rename {modular_skyrat/master_files => modular_zubbers}/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm (94%) diff --git a/modular_skyrat/master_files/code/datums/bodypart_overlays/bodypart_overlay.dm b/modular_zubbers/code/datums/bodypart_overlays/bodypart_overlay.dm similarity index 100% rename from modular_skyrat/master_files/code/datums/bodypart_overlays/bodypart_overlay.dm rename to modular_zubbers/code/datums/bodypart_overlays/bodypart_overlay.dm diff --git a/modular_skyrat/master_files/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm b/modular_zubbers/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm similarity index 94% rename from modular_skyrat/master_files/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm rename to modular_zubbers/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm index e3dc784f853..1cd27b01ee6 100644 --- a/modular_skyrat/master_files/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm +++ b/modular_zubbers/code/datums/bodypart_overlays/mutant_bodypart_overlay.dm @@ -34,12 +34,13 @@ /datum/bodypart_overlay/mutant/proc/set_appearance_from_dna(datum/dna/dna, accessory_name, feature_key) if(isnull(feature_key)) // if not explicitly set, just use the feature_key of the bodypart_overlay feature_key = src.feature_key - if(!dna.mutant_bodyparts[feature_key]) + var/list/mutantparts_list = dna.mutant_bodyparts[feature_key] ? dna.mutant_bodyparts : dna.species.mutant_bodyparts + if(!(feature_key in mutantparts_list) || !mutantparts_list[feature_key]) return FALSE - sprite_datum = fetch_sprite_datum_from_name(accessory_name ? accessory_name : dna.mutant_bodyparts[feature_key][MUTANT_INDEX_NAME]) + sprite_datum = fetch_sprite_datum_from_name(accessory_name ? accessory_name : mutantparts_list[feature_key][MUTANT_INDEX_NAME]) modsuit_affected = sprite_datum.use_custom_mod_icon - draw_color = dna.mutant_bodyparts[feature_key][MUTANT_INDEX_COLOR_LIST] - build_emissive_eligibility(dna.mutant_bodyparts[feature_key][MUTANT_INDEX_EMISSIVE_LIST]) + draw_color = mutantparts_list[feature_key][MUTANT_INDEX_COLOR_LIST] + build_emissive_eligibility(mutantparts_list[feature_key][MUTANT_INDEX_EMISSIVE_LIST]) cache_key = jointext(generate_icon_cache(), "_") return TRUE @@ -87,9 +88,9 @@ /datum/bodypart_overlay/mutant/can_draw_on_bodypart(obj/item/bodypart/bodypart_owner) var/mob/living/carbon/human/human = bodypart_owner.owner - if(!human) + if(!istype(human)) return TRUE - return !sprite_datum.is_hidden(human) + return !isnull(sprite_datum) && !sprite_datum.is_hidden(human) /// Get the images we need to draw on the person. Called from get_overlay() which is called from _bodyparts.dm. @@ -183,16 +184,18 @@ switch(sprite_datum.color_src) if(USE_ONE_COLOR) overlay.color = islist(draw_color) ? draw_color[i] : draw_color - overlay.alpha = alpha if(USE_MATRIXED_COLORS) - overlay.color = islist(draw_color) ? draw_color[i] : draw_color - overlay.alpha = alpha + if (i > length(draw_color)) + overlay.color = islist(draw_color) ? draw_color[length(draw_color)] : draw_color + else + overlay.color = islist(draw_color) ? draw_color[i] : draw_color i++ else overlay.color = limb?.color - overlay.alpha = alpha + + overlay.alpha = alpha /** diff --git a/tgstation.dme b/tgstation.dme index 285838616b2..867b2e1dc80 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7010,8 +7010,6 @@ #include "modular_skyrat\master_files\code\datums\emotes.dm" #include "modular_skyrat\master_files\code\datums\ert.dm" #include "modular_skyrat\master_files\code\datums\outfit.dm" -#include "modular_skyrat\master_files\code\datums\bodypart_overlays\bodypart_overlay.dm" -#include "modular_skyrat\master_files\code\datums\bodypart_overlays\mutant_bodypart_overlay.dm" #include "modular_skyrat\master_files\code\datums\components\crafting.dm" #include "modular_skyrat\master_files\code\datums\components\damage_tracker.dm" #include "modular_skyrat\master_files\code\datums\components\fullauto.dm" @@ -8965,6 +8963,8 @@ #include "modular_zubbers\code\datums\ai_laws\laws_antagonistic.dm" #include "modular_zubbers\code\datums\ai_laws\laws_neutral.dm" #include "modular_zubbers\code\datums\ai_laws\laws_station_sided.dm" +#include "modular_zubbers\code\datums\bodypart_overlays\bodypart_overlay.dm" +#include "modular_zubbers\code\datums\bodypart_overlays\mutant_bodypart_overlay.dm" #include "modular_zubbers\code\datums\brain_damage\magic.dm" #include "modular_zubbers\code\datums\components\nanites.dm" #include "modular_zubbers\code\datums\components\organ_emp.dm"