From b367fdd7b5b65a3d3fa55fbbe1d665aa40d9a16d Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 9 Feb 2026 09:02:20 -0600 Subject: [PATCH 1/6] onfloor unit test --- code/modules/unit_tests/missing_icons.dm | 5 +- code/modules/unit_tests/worn_icons.dm | 3 +- .../modules/unit_tests/onfloor_icons.dm | 57 +++++++++++++++++++ tgstation.dme | 1 + 4 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 modular_darkpack/modules/unit_tests/onfloor_icons.dm diff --git a/code/modules/unit_tests/missing_icons.dm b/code/modules/unit_tests/missing_icons.dm index 11fcfe34bce5..a0eef116b873 100644 --- a/code/modules/unit_tests/missing_icons.dm +++ b/code/modules/unit_tests/missing_icons.dm @@ -22,10 +22,11 @@ if(additional_icon_location) generate_possible_icon_states_list(additional_icon_location) + //Add EVEN MORE paths if needed here! - //generate_possible_icon_states_list("your/folder/path/") + generate_possible_icon_states_list("modular_darkpack/") // DARKPACK EDIT CHANGE var/list/bad_list = list() - for(var/obj/obj_path as anything in subtypesof(/obj)) + for(var/obj/obj_path as anything in valid_subtypesof(/obj)) // DARKPACK EDIT CHANGE if(ispath(obj_path, /obj/item)) var/obj/item/item_path = obj_path if(initial(item_path.item_flags) & ABSTRACT) diff --git a/code/modules/unit_tests/worn_icons.dm b/code/modules/unit_tests/worn_icons.dm index 38acff5efd9d..116979a10d8b 100644 --- a/code/modules/unit_tests/worn_icons.dm +++ b/code/modules/unit_tests/worn_icons.dm @@ -21,9 +21,10 @@ if(additional_icon_location) generate_possible_icon_states_list(additional_icon_location) + generate_possible_icon_states_list("modular_darkpack/") // DARKPACK EDIT ADD var/list/already_warned_icons = list() - for(var/obj/item/item_path as anything in (subtypesof(/obj/item) - typesof(/obj/item/mod))) + for(var/obj/item/item_path as anything in (valid_subtypesof(/obj/item) - typesof(/obj/item/mod))) // DARKPACK EDIT CHANGE var/cached_slot_flags = initial(item_path.slot_flags) if(!cached_slot_flags || (cached_slot_flags & ITEM_SLOT_LPOCKET) || (cached_slot_flags & ITEM_SLOT_RPOCKET) || initial(item_path.item_flags) & ABSTRACT) continue diff --git a/modular_darkpack/modules/unit_tests/onfloor_icons.dm b/modular_darkpack/modules/unit_tests/onfloor_icons.dm new file mode 100644 index 000000000000..33875dced383 --- /dev/null +++ b/modular_darkpack/modules/unit_tests/onfloor_icons.dm @@ -0,0 +1,57 @@ +/// Makes sure objects actually have icons that exist! +/datum/unit_test/missing_onfloor_icons + var/static/list/possible_icon_states = list() + /// additional_icon_location is for downstream modularity support. + /// Make sure this location is also present in tools/deploy.sh + /// If you need additional paths ontop of this second one, you can add another generate_possible_icon_states_list("your/folder/path/") below the if(additional_icon_location) block in Run(), and make sure to add that path to tools/deploy.sh as well. + var/additional_icon_location = null + +/datum/unit_test/missing_onfloor_icons/proc/generate_possible_icon_states_list(directory_path) + if(!directory_path) + directory_path = "icons/obj/" + for(var/file_path in flist(directory_path)) + if(findtext(file_path, ".dmi")) + for(var/sprite_icon in icon_states("[directory_path][file_path]", 1)) //2nd arg = 1 enables 64x64+ icon support, otherwise you'll end up with "sword0_1" instead of "sword" + possible_icon_states[sprite_icon] += list("[directory_path][file_path]") + else + possible_icon_states += generate_possible_icon_states_list("[directory_path][file_path]") + +/datum/unit_test/missing_onfloor_icons/Run() + generate_possible_icon_states_list() + generate_possible_icon_states_list("icons/effects/") + if(additional_icon_location) + generate_possible_icon_states_list(additional_icon_location) + + + //Add EVEN MORE paths if needed here! + generate_possible_icon_states_list("modular_darkpack/") + var/list/bad_list = list() + for(var/obj/item/item_path as anything in valid_subtypesof(/obj/item)) + if(item_path::item_flags & ABSTRACT) + continue + + if(item_path::greyscale_colors && item_path::greyscale_config) //GAGS has its own unit test. + continue + + var/icon = item_path::onflooricon + if(isnull(icon)) + continue + var/icon_state = item_path::onflooricon_state || item_path::icon_state + if(isnull(icon_state)) + continue + + if(length(bad_list) && (icon_state in bad_list[icon])) + continue + + if(icon_exists(icon, icon_state)) + continue + + bad_list[icon] += list(icon_state) + + var/match_message + if(icon_state in possible_icon_states) + for(var/file_place in possible_icon_states[icon_state]) + match_message += (match_message ? " & '[file_place]'" : " - Matching sprite found in: '[file_place]'") + + TEST_FAIL("Missing onflooricon_state for [item_path] in '[icon]'.\n\ticon_state or onfloorcion_state = \"[icon_state]\"[match_message]") + diff --git a/tgstation.dme b/tgstation.dme index 5c77866e7e84..9c91591819d8 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7539,6 +7539,7 @@ #include "modular_darkpack\modules\umbra\code\umbra.dm" #include "modular_darkpack\modules\umbra\code\umbra_globals.dm" #include "modular_darkpack\modules\unit_tests\_darkpack_unit_tests.dm" +#include "modular_darkpack\modules\unit_tests\onfloor_icons.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\blood_power.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\kindred\give_vitae.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\kindred\humanity.dm" From e36f23a7f905abdd14badc0bf4230c4f99540bd3 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Mon, 9 Feb 2026 09:02:39 -0600 Subject: [PATCH 2/6] yea --- modular_darkpack/modules/unit_tests/_darkpack_unit_tests.dm | 1 + tgstation.dme | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/unit_tests/_darkpack_unit_tests.dm b/modular_darkpack/modules/unit_tests/_darkpack_unit_tests.dm index 4c09ac03dad7..316e8935939e 100644 --- a/modular_darkpack/modules/unit_tests/_darkpack_unit_tests.dm +++ b/modular_darkpack/modules/unit_tests/_darkpack_unit_tests.dm @@ -27,6 +27,7 @@ // BEGIN_INCLUDE #include "apply_all_clans.dm" #include "apply_all_splats.dm" +#include "onfloor_icons.dm" #include "unallocated_transfer_points.dm" // END_INCLUDE diff --git a/tgstation.dme b/tgstation.dme index 9c91591819d8..5c77866e7e84 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7539,7 +7539,6 @@ #include "modular_darkpack\modules\umbra\code\umbra.dm" #include "modular_darkpack\modules\umbra\code\umbra_globals.dm" #include "modular_darkpack\modules\unit_tests\_darkpack_unit_tests.dm" -#include "modular_darkpack\modules\unit_tests\onfloor_icons.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\blood_power.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\kindred\give_vitae.dm" #include "modular_darkpack\modules\vampire_the_masquerade\code\kindred\humanity.dm" From 034e0a0fde9b8bcab3cdc7558a2cef5788dc2906 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 12 Feb 2026 09:39:16 -0600 Subject: [PATCH 3/6] fixes --- modular_darkpack/modules/clothes/code/suit.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/clothes/code/suit.dm b/modular_darkpack/modules/clothes/code/suit.dm index ef4cbfc28583..70e7ab46dd02 100644 --- a/modular_darkpack/modules/clothes/code/suit.dm +++ b/modular_darkpack/modules/clothes/code/suit.dm @@ -58,9 +58,9 @@ name = "chemical hood" desc = "A hood attached to a cchemical costume." icon_state = "heisenberg_helm" + ONFLOOR_ICON_HELPER(null) icon = 'modular_darkpack/modules/clothes/icons/clothing.dmi' worn_icon = 'modular_darkpack/modules/clothes/icons/worn.dmi' - ONFLOOR_ICON_HELPER('modular_darkpack/modules/clothes/icons/clothing_onfloor.dmi') body_parts_covered = HEAD cold_protection = HEAD min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT @@ -84,9 +84,9 @@ name = "white hood" desc = "The hood of some angelic-looking robes." icon_state = "robes_hood" + ONFLOOR_ICON_HELPER(null) icon = 'modular_darkpack/modules/clothes/icons/clothing.dmi' worn_icon = 'modular_darkpack/modules/clothes/icons/worn.dmi' - ONFLOOR_ICON_HELPER('modular_darkpack/modules/clothes/icons/clothing_onfloor.dmi') body_parts_covered = HEAD cold_protection = HEAD flags_inv = HIDEHAIR | HIDEEARS From d3cf5c39db4aca303cb3cdbad81b4eb5071c019b Mon Sep 17 00:00:00 2001 From: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Date: Wed, 11 Feb 2026 17:50:14 -0600 Subject: [PATCH 4/6] Gives missing icon unit tests a shared parent (#95122) Gives the 3 main missing icon tests a shared parent for behavior. Made the list of icon states not static because of this but that shouldn't really matter. Additional icon locations is made a list for evil down streams that are grandchildren of TG rather then just children, or repos with multiple spots for icons, `modular_downstream/master_files/icons` and `modular_downstream/modules` can both have icons in alot of them Was considering also making them filter out abstract_types but maybe should be a diff pr. All 3 present unit tests copy paste ALOT of their behavior, but very low hanging fruit is the compiling of folders, which while claiming have modularity support its a bit silly to require 3 separate additions just to make sure all tests are properly working. N/A --------- Co-authored-by: Jordan Dominion --- code/modules/unit_tests/_unit_tests.dm | 7 ++- code/modules/unit_tests/icon_state.dm | 45 ++++++++++++++ .../{inhands.dm => icon_state_inhand.dm} | 27 ++------- .../{worn_icons.dm => icon_state_worn.dm} | 26 ++------ code/modules/unit_tests/icons_missing.dm | 22 +++++++ code/modules/unit_tests/missing_icons.dm | 59 ------------------- 6 files changed, 80 insertions(+), 106 deletions(-) create mode 100644 code/modules/unit_tests/icon_state.dm rename code/modules/unit_tests/{inhands.dm => icon_state_inhand.dm} (70%) rename code/modules/unit_tests/{worn_icons.dm => icon_state_worn.dm} (77%) create mode 100644 code/modules/unit_tests/icons_missing.dm delete mode 100644 code/modules/unit_tests/missing_icons.dm diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 93f2059e84e7..72f85528949b 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -195,7 +195,10 @@ #include "hydroponics_harvest.dm" #include "hydroponics_self_mutations.dm" #include "hydroponics_validate_genes.dm" -#include "inhands.dm" +#include "icon_state.dm" +#include "icon_state_inhand.dm" +#include "icon_state_worn.dm" +#include "icons_missing.dm" #include "interaction_door.dm" #include "interaction_silicon.dm" #include "interaction_structures.dm" @@ -225,7 +228,6 @@ #include "merge_type.dm" #include "metabolizing.dm" #include "mindbound_actions.dm" -#include "missing_icons.dm" #include "mob_chains.dm" #include "mob_damage.dm" #include "mob_faction.dm" @@ -342,7 +344,6 @@ #include "washing.dm" #include "weird_food.dm" #include "wizard_loadout.dm" -#include "worn_icons.dm" // END_INCLUDE #ifdef REFERENCE_TRACKING_DEBUG //Don't try and parse this file if ref tracking isn't turned on. IE: don't parse ref tracking please mr linter #include "find_reference_sanity.dm" diff --git a/code/modules/unit_tests/icon_state.dm b/code/modules/unit_tests/icon_state.dm new file mode 100644 index 000000000000..986e0598049c --- /dev/null +++ b/code/modules/unit_tests/icon_state.dm @@ -0,0 +1,45 @@ +/// Makes sure objects actually have icons that exist! +/datum/unit_test/missing_icons/icon_state + default_location = "icons/obj/" + +/datum/unit_test/missing_icons/icon_state/compile_icon_state_locations() + . = ..() + generate_possible_icon_states_list("icons/effects/") + +/datum/unit_test/missing_icons/icon_state/Run() + compile_icon_state_locations() + + //Add EVEN MORE paths if needed here! + //generate_possible_icon_states_list("your/folder/path/") + var/list/bad_list = list() + for(var/obj/obj_path as anything in subtypesof(/obj)) + if(ispath(obj_path, /obj/item)) + var/obj/item/item_path = obj_path + if(initial(item_path.item_flags) & ABSTRACT) + continue + + if(initial(obj_path.greyscale_colors) && initial(obj_path.greyscale_config)) //GAGS has its own unit test. + continue + + var/icon = initial(obj_path.icon) + if(isnull(icon)) + continue + var/icon_state = initial(obj_path.icon_state) + if(isnull(icon_state)) + continue + + if(length(bad_list) && (icon_state in bad_list[icon])) + continue + + if(icon_exists(icon, icon_state)) + continue + + bad_list[icon] += list(icon_state) + + var/match_message + if(icon_state in possible_icon_states) + for(var/file_place in possible_icon_states[icon_state]) + match_message += (match_message ? " & '[file_place]'" : " - Matching sprite found in: '[file_place]'") + + TEST_FAIL("Missing icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"[match_message]") + diff --git a/code/modules/unit_tests/inhands.dm b/code/modules/unit_tests/icon_state_inhand.dm similarity index 70% rename from code/modules/unit_tests/inhands.dm rename to code/modules/unit_tests/icon_state_inhand.dm index 863bbca65636..53aee8d79708 100644 --- a/code/modules/unit_tests/inhands.dm +++ b/code/modules/unit_tests/icon_state_inhand.dm @@ -1,30 +1,11 @@ /// Makes sure items with defined inhand_icon_states... actually have icons that exist! -/datum/unit_test/defined_inhand_icon_states - var/static/list/possible_icon_states = list() +/datum/unit_test/missing_icons/inhand_icon_state + default_location = "icons/mob/inhands/" var/fallback_log_message var/unset_inhand_var_message - /// additional_inhands_location is for downstream modularity support. as an example, for skyrat's usage, set additional_inhands_location = "modular_skyrat/master_files/icons/mob/inhands/" - /// Make sure this location is also present in tools/deploy.sh - /// If you need additional paths ontop of this second one, you can add another generate_possible_icon_states_list("your/folder/path/inhands/") below the if(additional_inhands_location) block in Run(), and make sure to add that path to tools/deploy.sh as well. - var/additional_inhands_location = null -/datum/unit_test/defined_inhand_icon_states/proc/generate_possible_icon_states_list(directory_path) - if(!directory_path) - directory_path = "icons/mob/inhands/" - for(var/file_path in flist(directory_path)) - if(findtext(file_path, ".dmi")) - for(var/sprite_icon in icon_states("[directory_path][file_path]", 1)) //2nd arg = 1 enables 64x64+ icon support, otherwise you'll end up with "sword0_1" instead of "sword" - possible_icon_states[sprite_icon] += list("[directory_path][file_path]") - else - possible_icon_states += generate_possible_icon_states_list("[directory_path][file_path]") - -/datum/unit_test/defined_inhand_icon_states/Run() - generate_possible_icon_states_list() - if(additional_inhands_location) - generate_possible_icon_states_list(additional_inhands_location) - - //Add EVEN MORE paths if needed here! - //generate_possible_icon_states_list("your/folder/path/inhands/") +/datum/unit_test/missing_icons/inhand_icon_state/Run() + compile_icon_state_locations() for(var/obj/item/item_path as anything in subtypesof(/obj/item)) if(initial(item_path.item_flags) & ABSTRACT) diff --git a/code/modules/unit_tests/worn_icons.dm b/code/modules/unit_tests/icon_state_worn.dm similarity index 77% rename from code/modules/unit_tests/worn_icons.dm rename to code/modules/unit_tests/icon_state_worn.dm index 116979a10d8b..2ada5817132b 100644 --- a/code/modules/unit_tests/worn_icons.dm +++ b/code/modules/unit_tests/icon_state_worn.dm @@ -1,25 +1,9 @@ /// Makes sure suit slot items aren't using CS:S fallbacks. -/datum/unit_test/worn_icons - var/static/list/possible_icon_states = list() - /// additional_icon_location is for downstream modularity support for finding missing sprites in additonal DMI file locations. - /// Make sure this location is also present in tools/deploy.sh - /// If you need additional paths ontop of this second one, you can add another generate_possible_icon_states_list("your/folder/path/") below the if(additional_icon_location) block in Run(), and make sure to add that path to tools/deploy.sh as well. - var/additional_icon_location = null - -/datum/unit_test/worn_icons/proc/generate_possible_icon_states_list(directory_path) - if(!directory_path) - directory_path = "icons/mob/clothing/" - for(var/file_path in flist(directory_path)) - if(findtext(file_path, ".dmi")) - for(var/sprite_icon in icon_states("[directory_path][file_path]", 1)) //2nd arg = 1 enables 64x64+ icon support, otherwise you'll end up with "sword0_1" instead of "sword" - possible_icon_states[sprite_icon] += list("[directory_path][file_path]") - else - possible_icon_states += generate_possible_icon_states_list("[directory_path][file_path]") - -/datum/unit_test/worn_icons/Run() - generate_possible_icon_states_list() - if(additional_icon_location) - generate_possible_icon_states_list(additional_icon_location) +/datum/unit_test/missing_icons/worn_icons + default_location = "icons/mob/clothing/" + +/datum/unit_test/missing_icons/worn_icons/Run() + compile_icon_state_locations() generate_possible_icon_states_list("modular_darkpack/") // DARKPACK EDIT ADD var/list/already_warned_icons = list() diff --git a/code/modules/unit_tests/icons_missing.dm b/code/modules/unit_tests/icons_missing.dm new file mode 100644 index 000000000000..9780e64774c8 --- /dev/null +++ b/code/modules/unit_tests/icons_missing.dm @@ -0,0 +1,22 @@ +/datum/unit_test/missing_icons + abstract_type = /datum/unit_test/missing_icons + var/list/possible_icon_states = list() + var/default_location = "icons/" + /// additional_icon_locations is for downstream modularity support for finding missing sprites in additonal DMI file locations. + /// Make sure these locations are also present in tools/deploy.sh + var/additional_icon_locations + +/datum/unit_test/missing_icons/proc/generate_possible_icon_states_list(directory_path) + if(!directory_path) + directory_path = default_location + for(var/file_path in flist(directory_path)) + if(findtext(file_path, ".dmi")) + for(var/sprite_icon in icon_states("[directory_path][file_path]", 1)) //2nd arg = 1 enables 64x64+ icon support, otherwise you'll end up with "sword0_1" instead of "sword" + possible_icon_states[sprite_icon] += list("[directory_path][file_path]") + else + possible_icon_states += generate_possible_icon_states_list("[directory_path][file_path]") + +/datum/unit_test/missing_icons/proc/compile_icon_state_locations() + generate_possible_icon_states_list(default_location) + for(var/path in additional_icon_locations) + generate_possible_icon_states_list(path) diff --git a/code/modules/unit_tests/missing_icons.dm b/code/modules/unit_tests/missing_icons.dm deleted file mode 100644 index a0eef116b873..000000000000 --- a/code/modules/unit_tests/missing_icons.dm +++ /dev/null @@ -1,59 +0,0 @@ -/// Makes sure objects actually have icons that exist! -/datum/unit_test/missing_icons - var/static/list/possible_icon_states = list() - /// additional_icon_location is for downstream modularity support. - /// Make sure this location is also present in tools/deploy.sh - /// If you need additional paths ontop of this second one, you can add another generate_possible_icon_states_list("your/folder/path/") below the if(additional_icon_location) block in Run(), and make sure to add that path to tools/deploy.sh as well. - var/additional_icon_location = null - -/datum/unit_test/missing_icons/proc/generate_possible_icon_states_list(directory_path) - if(!directory_path) - directory_path = "icons/obj/" - for(var/file_path in flist(directory_path)) - if(findtext(file_path, ".dmi")) - for(var/sprite_icon in icon_states("[directory_path][file_path]", 1)) //2nd arg = 1 enables 64x64+ icon support, otherwise you'll end up with "sword0_1" instead of "sword" - possible_icon_states[sprite_icon] += list("[directory_path][file_path]") - else - possible_icon_states += generate_possible_icon_states_list("[directory_path][file_path]") - -/datum/unit_test/missing_icons/Run() - generate_possible_icon_states_list() - generate_possible_icon_states_list("icons/effects/") - if(additional_icon_location) - generate_possible_icon_states_list(additional_icon_location) - - - //Add EVEN MORE paths if needed here! - generate_possible_icon_states_list("modular_darkpack/") // DARKPACK EDIT CHANGE - var/list/bad_list = list() - for(var/obj/obj_path as anything in valid_subtypesof(/obj)) // DARKPACK EDIT CHANGE - if(ispath(obj_path, /obj/item)) - var/obj/item/item_path = obj_path - if(initial(item_path.item_flags) & ABSTRACT) - continue - - if(initial(obj_path.greyscale_colors) && initial(obj_path.greyscale_config)) //GAGS has its own unit test. - continue - - var/icon = initial(obj_path.icon) - if(isnull(icon)) - continue - var/icon_state = initial(obj_path.icon_state) - if(isnull(icon_state)) - continue - - if(length(bad_list) && (icon_state in bad_list[icon])) - continue - - if(icon_exists(icon, icon_state)) - continue - - bad_list[icon] += list(icon_state) - - var/match_message - if(icon_state in possible_icon_states) - for(var/file_place in possible_icon_states[icon_state]) - match_message += (match_message ? " & '[file_place]'" : " - Matching sprite found in: '[file_place]'") - - TEST_FAIL("Missing icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"[match_message]") - From 57f2bcbbff7e29f0bab9a7189dd688cdc267ccc8 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 12 Feb 2026 12:39:46 -0600 Subject: [PATCH 5/6] edits --- code/modules/unit_tests/icon_state.dm | 5 ++- code/modules/unit_tests/icon_state_inhand.dm | 7 ++++ code/modules/unit_tests/icon_state_worn.dm | 8 +++- .../modules/unit_tests/onfloor_icons.dm | 39 +++++++------------ 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/code/modules/unit_tests/icon_state.dm b/code/modules/unit_tests/icon_state.dm index 986e0598049c..47f1bc2a4cbc 100644 --- a/code/modules/unit_tests/icon_state.dm +++ b/code/modules/unit_tests/icon_state.dm @@ -5,12 +5,13 @@ /datum/unit_test/missing_icons/icon_state/compile_icon_state_locations() . = ..() generate_possible_icon_states_list("icons/effects/") + generate_possible_icon_states_list("modular_darkpack/master_files/icons/obj/") // DARKPACK EDIT ADD + generate_possible_icon_states_list("modular_darkpack/master_files/icons/effects/") // DARKPACK EDIT ADD + generate_possible_icon_states_list("modular_darkpack/modules/") // DARKPACK EDIT ADD /datum/unit_test/missing_icons/icon_state/Run() compile_icon_state_locations() - //Add EVEN MORE paths if needed here! - //generate_possible_icon_states_list("your/folder/path/") var/list/bad_list = list() for(var/obj/obj_path as anything in subtypesof(/obj)) if(ispath(obj_path, /obj/item)) diff --git a/code/modules/unit_tests/icon_state_inhand.dm b/code/modules/unit_tests/icon_state_inhand.dm index 53aee8d79708..d3af9e98af9c 100644 --- a/code/modules/unit_tests/icon_state_inhand.dm +++ b/code/modules/unit_tests/icon_state_inhand.dm @@ -4,6 +4,13 @@ var/fallback_log_message var/unset_inhand_var_message +// DARKPACK EDIT ADD START +/datum/unit_test/missing_icons/inhand_icon_state/compile_icon_state_locations() + . = ..() + generate_possible_icon_states_list("modular_darkpack/master_files/icons/mob/inhands/") // DARKPACK EDIT ADD + generate_possible_icon_states_list("modular_darkpack/modules/") // DARKPACK EDIT ADD +// DARKPACK EDIT ADD END + /datum/unit_test/missing_icons/inhand_icon_state/Run() compile_icon_state_locations() diff --git a/code/modules/unit_tests/icon_state_worn.dm b/code/modules/unit_tests/icon_state_worn.dm index 2ada5817132b..53528349ab4f 100644 --- a/code/modules/unit_tests/icon_state_worn.dm +++ b/code/modules/unit_tests/icon_state_worn.dm @@ -2,10 +2,16 @@ /datum/unit_test/missing_icons/worn_icons default_location = "icons/mob/clothing/" +// DARKPACK EDIT ADD START +/datum/unit_test/missing_icons/worn_icons/compile_icon_state_locations() + . = ..() + generate_possible_icon_states_list("modular_darkpack/master_files/icons/mob/clothing/") // DARKPACK EDIT ADD + generate_possible_icon_states_list("modular_darkpack/modules/") // DARKPACK EDIT ADD +// DARKPACK EDIT ADD END + /datum/unit_test/missing_icons/worn_icons/Run() compile_icon_state_locations() - generate_possible_icon_states_list("modular_darkpack/") // DARKPACK EDIT ADD var/list/already_warned_icons = list() for(var/obj/item/item_path as anything in (valid_subtypesof(/obj/item) - typesof(/obj/item/mod))) // DARKPACK EDIT CHANGE diff --git a/modular_darkpack/modules/unit_tests/onfloor_icons.dm b/modular_darkpack/modules/unit_tests/onfloor_icons.dm index 33875dced383..e5821ba97e96 100644 --- a/modular_darkpack/modules/unit_tests/onfloor_icons.dm +++ b/modular_darkpack/modules/unit_tests/onfloor_icons.dm @@ -1,30 +1,17 @@ /// Makes sure objects actually have icons that exist! -/datum/unit_test/missing_onfloor_icons - var/static/list/possible_icon_states = list() - /// additional_icon_location is for downstream modularity support. - /// Make sure this location is also present in tools/deploy.sh - /// If you need additional paths ontop of this second one, you can add another generate_possible_icon_states_list("your/folder/path/") below the if(additional_icon_location) block in Run(), and make sure to add that path to tools/deploy.sh as well. - var/additional_icon_location = null - -/datum/unit_test/missing_onfloor_icons/proc/generate_possible_icon_states_list(directory_path) - if(!directory_path) - directory_path = "icons/obj/" - for(var/file_path in flist(directory_path)) - if(findtext(file_path, ".dmi")) - for(var/sprite_icon in icon_states("[directory_path][file_path]", 1)) //2nd arg = 1 enables 64x64+ icon support, otherwise you'll end up with "sword0_1" instead of "sword" - possible_icon_states[sprite_icon] += list("[directory_path][file_path]") - else - possible_icon_states += generate_possible_icon_states_list("[directory_path][file_path]") - -/datum/unit_test/missing_onfloor_icons/Run() - generate_possible_icon_states_list() - generate_possible_icon_states_list("icons/effects/") - if(additional_icon_location) - generate_possible_icon_states_list(additional_icon_location) - - - //Add EVEN MORE paths if needed here! - generate_possible_icon_states_list("modular_darkpack/") +/datum/unit_test/missing_icons/onfloor + default_location = "icons/obj/" + +// DARKPACK EDIT ADD START +/datum/unit_test/missing_icons/onfloor/compile_icon_state_locations() + . = ..() + generate_possible_icon_states_list("modular_darkpack/master_files/icons/obj/") // DARKPACK EDIT ADD + generate_possible_icon_states_list("modular_darkpack/modules/") // DARKPACK EDIT ADD +// DARKPACK EDIT ADD END + +/datum/unit_test/missing_icons/onfloor/Run() + compile_icon_state_locations() + var/list/bad_list = list() for(var/obj/item/item_path as anything in valid_subtypesof(/obj/item)) if(item_path::item_flags & ABSTRACT) From 6c9f3c38adecf8151ff10cfdf5505299210ceea2 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 12 Feb 2026 12:46:52 -0600 Subject: [PATCH 6/6] yea --- code/modules/unit_tests/icon_state.dm | 10 +++++++--- code/modules/unit_tests/icon_state_inhand.dm | 13 ++++++------- code/modules/unit_tests/icon_state_worn.dm | 13 ++++++------- .../modules/unit_tests/onfloor_icons.dm | 11 ++++------- 4 files changed, 23 insertions(+), 24 deletions(-) diff --git a/code/modules/unit_tests/icon_state.dm b/code/modules/unit_tests/icon_state.dm index 47f1bc2a4cbc..4b6233555126 100644 --- a/code/modules/unit_tests/icon_state.dm +++ b/code/modules/unit_tests/icon_state.dm @@ -1,13 +1,17 @@ /// Makes sure objects actually have icons that exist! /datum/unit_test/missing_icons/icon_state default_location = "icons/obj/" + // DARKPACK EDIT ADD START + additional_icon_locations = list( + "modular_darkpack/master_files/icons/obj/", + "modular_darkpack/master_files/icons/effects/", + "modular_darkpack/modules/", + ) + // DARKPACK EDIT ADD END /datum/unit_test/missing_icons/icon_state/compile_icon_state_locations() . = ..() generate_possible_icon_states_list("icons/effects/") - generate_possible_icon_states_list("modular_darkpack/master_files/icons/obj/") // DARKPACK EDIT ADD - generate_possible_icon_states_list("modular_darkpack/master_files/icons/effects/") // DARKPACK EDIT ADD - generate_possible_icon_states_list("modular_darkpack/modules/") // DARKPACK EDIT ADD /datum/unit_test/missing_icons/icon_state/Run() compile_icon_state_locations() diff --git a/code/modules/unit_tests/icon_state_inhand.dm b/code/modules/unit_tests/icon_state_inhand.dm index d3af9e98af9c..ba4cae3eb1d3 100644 --- a/code/modules/unit_tests/icon_state_inhand.dm +++ b/code/modules/unit_tests/icon_state_inhand.dm @@ -1,16 +1,15 @@ /// Makes sure items with defined inhand_icon_states... actually have icons that exist! /datum/unit_test/missing_icons/inhand_icon_state default_location = "icons/mob/inhands/" + // DARKPACK EDIT ADD END + additional_icon_locations = list( + "modular_darkpack/master_files/icons/mob/inhands/", + "modular_darkpack/modules/", + ) + // DARKPACK EDIT ADD END var/fallback_log_message var/unset_inhand_var_message -// DARKPACK EDIT ADD START -/datum/unit_test/missing_icons/inhand_icon_state/compile_icon_state_locations() - . = ..() - generate_possible_icon_states_list("modular_darkpack/master_files/icons/mob/inhands/") // DARKPACK EDIT ADD - generate_possible_icon_states_list("modular_darkpack/modules/") // DARKPACK EDIT ADD -// DARKPACK EDIT ADD END - /datum/unit_test/missing_icons/inhand_icon_state/Run() compile_icon_state_locations() diff --git a/code/modules/unit_tests/icon_state_worn.dm b/code/modules/unit_tests/icon_state_worn.dm index 53528349ab4f..3b96e1095fb5 100644 --- a/code/modules/unit_tests/icon_state_worn.dm +++ b/code/modules/unit_tests/icon_state_worn.dm @@ -1,13 +1,12 @@ /// Makes sure suit slot items aren't using CS:S fallbacks. /datum/unit_test/missing_icons/worn_icons default_location = "icons/mob/clothing/" - -// DARKPACK EDIT ADD START -/datum/unit_test/missing_icons/worn_icons/compile_icon_state_locations() - . = ..() - generate_possible_icon_states_list("modular_darkpack/master_files/icons/mob/clothing/") // DARKPACK EDIT ADD - generate_possible_icon_states_list("modular_darkpack/modules/") // DARKPACK EDIT ADD -// DARKPACK EDIT ADD END + // DARKPACK EDIT ADD START + additional_icon_locations = list( + "modular_darkpack/master_files/icons/mob/clothing/", + "modular_darkpack/modules/", + ) + // DARKPACK EDIT ADD END /datum/unit_test/missing_icons/worn_icons/Run() compile_icon_state_locations() diff --git a/modular_darkpack/modules/unit_tests/onfloor_icons.dm b/modular_darkpack/modules/unit_tests/onfloor_icons.dm index e5821ba97e96..b5aad69fce09 100644 --- a/modular_darkpack/modules/unit_tests/onfloor_icons.dm +++ b/modular_darkpack/modules/unit_tests/onfloor_icons.dm @@ -1,13 +1,10 @@ /// Makes sure objects actually have icons that exist! /datum/unit_test/missing_icons/onfloor default_location = "icons/obj/" - -// DARKPACK EDIT ADD START -/datum/unit_test/missing_icons/onfloor/compile_icon_state_locations() - . = ..() - generate_possible_icon_states_list("modular_darkpack/master_files/icons/obj/") // DARKPACK EDIT ADD - generate_possible_icon_states_list("modular_darkpack/modules/") // DARKPACK EDIT ADD -// DARKPACK EDIT ADD END + additional_icon_locations = list( + "modular_darkpack/master_files/icons/obj/", + "modular_darkpack/modules/" + ) /datum/unit_test/missing_icons/onfloor/Run() compile_icon_state_locations()