From b62df3a2df39a335fac4b88d8e62f612c51bc3ba Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Tue, 5 Apr 2022 11:02:54 -0700 Subject: [PATCH] MODSuit clothing icon files can be overridden by its skin (#65733) This allows the MODSuit skin to change the icon and worn icon files of the modsuit pieces. --- code/__DEFINES/mod.dm | 4 ++++ code/modules/mod/mod_control.dm | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/mod.dm b/code/__DEFINES/mod.dm index 1ffc12d601f..26d6c99fa13 100644 --- a/code/__DEFINES/mod.dm +++ b/code/__DEFINES/mod.dm @@ -30,5 +30,9 @@ #define UNSEALED_COVER "unsealed_cover" #define SEALED_COVER "sealed_cover" +//Defines used to override MOD clothing's icon and worn icon files in the skin. +#define MOD_ICON_OVERRIDE "mod_icon_override" +#define MOD_WORN_ICON_OVERRIDE "mod_worn_icon_override" + /// Global list of all /datum/mod_theme GLOBAL_LIST_INIT(mod_themes, setup_mod_themes()) diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm index 59b415d8e4f..dd4475c0da5 100644 --- a/code/modules/mod/mod_control.dm +++ b/code/modules/mod/mod_control.dm @@ -100,7 +100,6 @@ slowdown_inactive = theme.slowdown_inactive slowdown_active = theme.slowdown_active complexity_max = theme.complexity_max - skin = new_skin || theme.default_skin ui_theme = theme.ui_theme charge_drain = theme.charge_drain initial_modules += theme.inbuilt_modules @@ -134,8 +133,7 @@ piece.min_cold_protection_temperature = theme.min_cold_protection_temperature piece.permeability_coefficient = theme.permeability_coefficient piece.siemens_coefficient = theme.siemens_coefficient - piece.icon_state = "[skin]-[initial(piece.icon_state)]" - update_flags() + set_mod_skin(new_skin || theme.default_skin) update_speed() for(var/obj/item/mod/module/module as anything in initial_modules) module = new module(src) @@ -618,7 +616,12 @@ /obj/item/mod/control/proc/set_mod_skin(new_skin) skin = new_skin var/list/skin_updating = mod_parts.Copy() + src + var/list/selected_skin = theme.skins[new_skin] for(var/obj/item/piece as anything in skin_updating) + if(selected_skin[MOD_ICON_OVERRIDE]) + piece.icon = selected_skin[MOD_ICON_OVERRIDE] + if(selected_skin[MOD_WORN_ICON_OVERRIDE]) + piece.worn_icon = selected_skin[MOD_WORN_ICON_OVERRIDE] piece.icon_state = "[skin]-[initial(piece.icon_state)]" update_flags() wearer?.regenerate_icons()