From 2e3a90293d198c13acf8203921d94b780c7b6d1f Mon Sep 17 00:00:00 2001 From: FlufflesTheDog Date: Tue, 28 May 2024 05:32:28 -0700 Subject: [PATCH] Dehardcoded modsuit fixes (#83425) ## About The Pull Request Patches up some things that were lacking post #82905 - Some missing (un)seal messages - a missed direct use of the mod_parts list EDIT: Also fixes the modsuit painter, and makes sure modsuits can still be set to use custom dmi files via `MOD_ICON_OVERRIDE`/`MOD_WORN_ICON_OVERRIDE` Fixes #83442 ## Changelog :cl: fix: some missing modsuit (un)sealing messages should no longer be missing fix: MOD circuit adapter core deployed parts output should work again fix: Modsuit painter works again /:cl: --- code/modules/mod/mod_paint.dm | 4 ++-- code/modules/mod/mod_theme.dm | 18 ++++++++++++++++++ code/modules/wiremod/shell/module.dm | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/code/modules/mod/mod_paint.dm b/code/modules/mod/mod_paint.dm index 1402a4aebc6..77af1f7290c 100644 --- a/code/modules/mod/mod_paint.dm +++ b/code/modules/mod/mod_paint.dm @@ -151,7 +151,7 @@ if(!pick) balloon_alert(user, "no skin picked!") return - mod.theme.set_skin(pick) + mod.theme.set_skin(mod, pick) /obj/item/mod/paint/proc/check_menu(obj/item/mod/control/mod, mob/user) if(user.incapacitated() || !user.is_holding(src) || !mod || mod.active || mod.activating) @@ -186,7 +186,7 @@ if(!(skin in mod.theme.variants)) balloon_alert(user, "incompatible theme!") return TRUE - mod.theme.set_skin(skin) + mod.theme.set_skin(mod, skin) balloon_alert(user, "skin applied") qdel(src) return TRUE diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm index ecfa570dde1..971ccaf5c72 100644 --- a/code/modules/mod/mod_theme.dm +++ b/code/modules/mod/mod_theme.dm @@ -143,6 +143,8 @@ control_part_datum.part_item = mod mod.mod_parts["[mod.slot_flags]"] = control_part_datum for(var/path in variants[default_skin]) + if(!ispath(path)) + continue var/obj/item/mod_part = new path(mod) if(mod_part.slot_flags == ITEM_SLOT_OCLOTHING && isclothing(mod_part)) var/obj/item/clothing/chestplate = mod_part @@ -576,10 +578,14 @@ /obj/item/clothing/gloves/mod = list( SEALED_CLOTHING = THICKMATERIAL, CAN_OVERSLOT = TRUE, + UNSEALED_MESSAGE = GAUNTLET_UNSEAL_MESSAGE, + SEALED_MESSAGE = GAUNTLET_SEAL_MESSAGE, ), /obj/item/clothing/shoes/mod = list( SEALED_CLOTHING = THICKMATERIAL, CAN_OVERSLOT = TRUE, + UNSEALED_MESSAGE = BOOT_UNSEAL_MESSAGE, + SEALED_MESSAGE = BOOT_SEAL_MESSAGE, ), ), ) @@ -1361,10 +1367,14 @@ /obj/item/clothing/gloves/mod = list( SEALED_CLOTHING = THICKMATERIAL, CAN_OVERSLOT = TRUE, + UNSEALED_MESSAGE = GAUNTLET_UNSEAL_MESSAGE, + SEALED_MESSAGE = GAUNTLET_SEAL_MESSAGE, ), /obj/item/clothing/shoes/mod = list( SEALED_CLOTHING = THICKMATERIAL, CAN_OVERSLOT = TRUE, + UNSEALED_MESSAGE = BOOT_UNSEAL_MESSAGE, + SEALED_MESSAGE = BOOT_SEAL_MESSAGE, ), ), ) @@ -1506,6 +1516,8 @@ UNSEALED_CLOTHING = THICKMATERIAL|CASTING_CLOTHES, SEALED_CLOTHING = STOPSPRESSUREDAMAGE, SEALED_INVISIBILITY = HIDEJUMPSUIT, + UNSEALED_MESSAGE = CHESTPLATE_UNSEAL_MESSAGE, + SEALED_MESSAGE = CHESTPLATE_SEAL_MESSAGE, ), /obj/item/clothing/gloves/mod = list( UNSEALED_CLOTHING = THICKMATERIAL, @@ -2155,14 +2167,20 @@ /obj/item/clothing/suit/mod = list( UNSEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE, SEALED_INVISIBILITY = HIDEJUMPSUIT, + UNSEALED_MESSAGE = CHESTPLATE_UNSEAL_MESSAGE, + SEALED_MESSAGE = CHESTPLATE_SEAL_MESSAGE, ), /obj/item/clothing/gloves/mod = list( UNSEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE, CAN_OVERSLOT = TRUE, + UNSEALED_MESSAGE = GAUNTLET_UNSEAL_MESSAGE, + SEALED_MESSAGE = GAUNTLET_SEAL_MESSAGE, ), /obj/item/clothing/shoes/mod = list( UNSEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE, CAN_OVERSLOT = TRUE, + UNSEALED_MESSAGE = BOOT_UNSEAL_MESSAGE, + SEALED_MESSAGE = BOOT_SEAL_MESSAGE, ), ), ) diff --git a/code/modules/wiremod/shell/module.dm b/code/modules/wiremod/shell/module.dm index 9061bac3e30..14092f5d2c8 100644 --- a/code/modules/wiremod/shell/module.dm +++ b/code/modules/wiremod/shell/module.dm @@ -271,7 +271,7 @@ SIGNAL_HANDLER var/string_list = list() var/is_deployed = TRUE - for(var/obj/item/part as anything in attached_module.mod.mod_parts) + for(var/obj/item/part as anything in attached_module.mod.get_parts()) if(part.loc == attached_module.mod) is_deployed = FALSE else