diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index 29313624e7c..05eb31d2fc7 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -133,6 +133,8 @@ update_markings() update_body(1, 1) //Update the body and force limb icon regeneration to update the head with the new icon. + if(wear_mask) + update_inv_wear_mask() return 1 /mob/living/carbon/human/proc/reset_hair() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index a7afed9976b..43a8a5c120e 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -1013,13 +1013,21 @@ var/global/list/damage_icon_parts = list() if(inv) inv.update_icon() if(wear_mask && (istype(wear_mask, /obj/item/clothing/mask) || istype(wear_mask, /obj/item/clothing/accessory))) + var/obj/item/organ/external/head/head_organ = get_organ("head") + var/datum/sprite_accessory/alt_heads/alternate_head + if(head_organ.alt_head && head_organ.alt_head != "None") + alternate_head = alt_heads_list[head_organ.alt_head] + var/image/standing + var/icon/mask_icon = new(wear_mask.icon) if(wear_mask.icon_override) - standing = image("icon" = wear_mask.icon_override, "icon_state" = "[wear_mask.icon_state]") + mask_icon = new(wear_mask.icon_override) + standing = image("icon" = wear_mask.icon_override, "icon_state" = "[wear_mask.icon_state][(alternate_head && ("[wear_mask.icon_state]_[alternate_head.suffix]" in mask_icon.IconStates())) ? "_[alternate_head.suffix]" : ""]") else if(wear_mask.sprite_sheets && wear_mask.sprite_sheets[species.name]) - standing = image("icon" = wear_mask.sprite_sheets[species.name], "icon_state" = "[wear_mask.icon_state]") + mask_icon = new(wear_mask.sprite_sheets[species.name]) + standing = image("icon" = wear_mask.sprite_sheets[species.name], "icon_state" = "[wear_mask.icon_state][(alternate_head && ("[wear_mask.icon_state]_[alternate_head.suffix]" in mask_icon.IconStates())) ? "_[alternate_head.suffix]" : ""]") else - standing = image("icon" = 'icons/mob/mask.dmi', "icon_state" = "[wear_mask.icon_state]") + standing = image("icon" = 'icons/mob/mask.dmi', "icon_state" = "[wear_mask.icon_state][(alternate_head && ("[wear_mask.icon_state]_[alternate_head.suffix]" in mask_icon.IconStates())) ? "_[alternate_head.suffix]" : ""]") if(!istype(wear_mask, /obj/item/clothing/mask/cigarette) && wear_mask.blood_DNA) var/image/bloodsies = image("icon" = species.blood_mask, "icon_state" = "maskblood") @@ -1292,13 +1300,15 @@ var/global/list/damage_icon_parts = list() icon_path = "[copytext(icon_path, 1, findtext(icon_path, "/suit.dmi"))]/collar.dmi" //If this file doesn't exist, the end result is that COLLAR_LAYER will be unchanged (empty). if(fexists(icon_path)) //Just ensuring the nonexistance of a file with the above path won't cause a runtime. var/icon/icon_file = new(icon_path) - standing = image("icon" = icon_file, "icon_state" = "[wear_suit.icon_state]") + if(wear_suit.icon_state in icon_file.IconStates()) + standing = image("icon" = icon_file, "icon_state" = "[wear_suit.icon_state]") else if(wear_suit.sprite_sheets && wear_suit.sprite_sheets[species.name]) var/icon_path = "[wear_suit.sprite_sheets[species.name]]" icon_path = "[copytext(icon_path, 1, findtext(icon_path, "/suit.dmi"))]/collar.dmi" //If this file doesn't exist, the end result is that COLLAR_LAYER will be unchanged (empty). if(fexists(icon_path)) //Just ensuring the nonexistance of a file with the above path won't cause a runtime. var/icon/icon_file = new(icon_path) - standing = image("icon" = icon_file, "icon_state" = "[wear_suit.icon_state]") + if(wear_suit.icon_state in icon_file.IconStates()) + standing = image("icon" = icon_file, "icon_state" = "[wear_suit.icon_state]") else if(wear_suit.icon_state in C.IconStates()) standing = image("icon" = C, "icon_state" = "[wear_suit.icon_state]") diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 3a8dcb74216..2eab7ff9092 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -2349,6 +2349,7 @@ icon = null icon_state = null species_allowed = null + var/suffix = null /datum/sprite_accessory/alt_heads/none name = "None" @@ -2360,3 +2361,4 @@ name = "Unathi Sharp Snout" species_allowed = list("Unathi") icon_state = "head_sharp" + suffix = "sharp" diff --git a/icons/mob/species/tajaran/mask.dmi b/icons/mob/species/tajaran/mask.dmi index ea17113a2fc..9217fb7730c 100644 Binary files a/icons/mob/species/tajaran/mask.dmi and b/icons/mob/species/tajaran/mask.dmi differ diff --git a/icons/mob/species/unathi/helmet.dmi b/icons/mob/species/unathi/helmet.dmi index 4ad3b228849..46b11152ba7 100644 Binary files a/icons/mob/species/unathi/helmet.dmi and b/icons/mob/species/unathi/helmet.dmi differ diff --git a/icons/mob/species/unathi/mask.dmi b/icons/mob/species/unathi/mask.dmi index a211a035012..e0571e592db 100644 Binary files a/icons/mob/species/unathi/mask.dmi and b/icons/mob/species/unathi/mask.dmi differ diff --git a/icons/mob/species/vox/mask.dmi b/icons/mob/species/vox/mask.dmi index b39ee5577a6..93dacb8f058 100644 Binary files a/icons/mob/species/vox/mask.dmi and b/icons/mob/species/vox/mask.dmi differ diff --git a/icons/mob/species/vulpkanin/mask.dmi b/icons/mob/species/vulpkanin/mask.dmi index f0353c1766d..14a70e1bb4c 100644 Binary files a/icons/mob/species/vulpkanin/mask.dmi and b/icons/mob/species/vulpkanin/mask.dmi differ