diff --git a/code/modules/clothing/clothing_ch.dm b/code/modules/clothing/clothing_ch.dm index 1e97b6d43e..bc3655e87b 100644 --- a/code/modules/clothing/clothing_ch.dm +++ b/code/modules/clothing/clothing_ch.dm @@ -1,6 +1,7 @@ //CHOMP Overrides for if holder is digitigrade /obj/item/clothing - var/update_icon_define_orig = null + var/update_icon_define_orig = null // temp storage for original update_icon_define (if it exists) + var/fit_for_digi = FALSE // flag for if clothing has already been reskinned to digitigrade /obj/item/clothing/proc/handle_digitigrade(var/mob/user) if(ishuman(user)) @@ -20,13 +21,14 @@ update_icon_define_digi = "icons/inventory/uniform/mob_digi_ch.dmi" else return - - // only override icon if a corresponding digitigrade replacement icon_state exists - // otherwise, keep the old non-digi icon - if(icon_state && icon_states(update_icon_define_digi).Find(icon_state)) - - // Don't reset if already set - if(update_icon_define <> update_icon_define_digi) + + // Don't reset if already set + if(!fit_for_digi) + fit_for_digi = TRUE // set flag even if no icon_state exists, so we don't repeat checks + + // only override icon if a corresponding digitigrade replacement icon_state exists + // otherwise, keep the old non-digi icon + if(icon_state && icon_states(update_icon_define_digi).Find(icon_state)) //if update_icon_define is already set to something, place it in a var to hold it temporarily if(update_icon_define) @@ -36,16 +38,18 @@ update_icon_define = update_icon_define_digi - // if not-digitigrade and update_icon_define set by previous digi-user, replacing an 'original' value - else if(update_icon_define_orig) - update_icon_define = update_icon_define_orig - update_icon_define_orig = null - - - else if(update_icon_define) - // if not-digitigrade and update_icon_define set by previous digi-user, but nothing replaced - update_icon_define = null - + // if not-digitigrade, only act if the clothing was previously fit for a digitigrade char + else + if(fit_for_digi) + fit_for_digi = FALSE + + //either reset update_icon_define to it's old value + // or reset update_icon_define to null + if(update_icon_define_orig) + update_icon_define = update_icon_define_orig + update_icon_define_orig = null + else + update_icon_define = null /obj/item/clothing/shoes/equipped(var/mob/user, var/slot) . = ..()