diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 8c595876076..5e095f38993 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -430,7 +430,11 @@ parts_covered += "head" if(body_parts_covered & CHEST) parts_covered += "torso" - if(length(parts_covered)) // Just in case someone makes spaceproof gloves or something + if(body_parts_covered & ARMS|HANDS) + parts_covered += "arms" + if(body_parts_covered & LEGS|FEET) + parts_covered += "legs" + if(length(parts_covered)) readout += "[output_string] will protect the wearer's [english_list(parts_covered)] from [span_tooltip("The extremely low pressure is the biggest danger posed by the vacuum of space.", "low pressure")]." var/heat_prot diff --git a/code/modules/clothing/gloves/special.dm b/code/modules/clothing/gloves/special.dm index 88274322e71..d9b888fcd0e 100644 --- a/code/modules/clothing/gloves/special.dm +++ b/code/modules/clothing/gloves/special.dm @@ -168,7 +168,7 @@ resistance_flags = FIRE_PROOF siemens_coefficient = 0.3 clothing_traits = list(TRAIT_QUICKER_CARRY, TRAIT_CHUNKYFINGERS) - clothing_flags = THICKMATERIAL + clothing_flags = THICKMATERIAL|STOPSPRESSUREDAMAGE /obj/item/clothing/gloves/atmos/Initialize(mapload) . = ..() diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index 38d4770244a..0109c422210 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -12,7 +12,7 @@ strip_delay = 70 equip_delay_other = 70 resistance_flags = FIRE_PROOF - + clothing_flags = STOPSPRESSUREDAMAGE slowdown = SHOES_SLOWDOWN /// Whether the magpulse system is active var/magpulse = FALSE diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 6bdbf8322f2..048f7bcfe2c 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -52,15 +52,21 @@ /mob/living/carbon/human/calculate_affecting_pressure(pressure) - var/chest_covered = FALSE - var/head_covered = FALSE + var/chest_covered = !get_bodypart(BODY_ZONE_CHEST) + var/head_covered = !get_bodypart(BODY_ZONE_HEAD) + var/hands_covered = !get_bodypart(BODY_ZONE_L_ARM) && !get_bodypart(BODY_ZONE_R_ARM) + var/feet_covered = !get_bodypart(BODY_ZONE_L_LEG) && !get_bodypart(BODY_ZONE_R_LEG) for(var/obj/item/clothing/equipped in get_equipped_items()) - if((equipped.body_parts_covered & CHEST) && (equipped.clothing_flags & STOPSPRESSUREDAMAGE)) + if(!chest_covered && (equipped.body_parts_covered & CHEST) && (equipped.clothing_flags & STOPSPRESSUREDAMAGE)) chest_covered = TRUE - if((equipped.body_parts_covered & HEAD) && (equipped.clothing_flags & STOPSPRESSUREDAMAGE)) + if(!head_covered && (equipped.body_parts_covered & HEAD) && (equipped.clothing_flags & STOPSPRESSUREDAMAGE)) head_covered = TRUE + if(!hands_covered && (equipped.body_parts_covered & HANDS|ARMS) && (equipped.clothing_flags & STOPSPRESSUREDAMAGE)) + hands_covered = TRUE + if(!feet_covered && (equipped.body_parts_covered & FEET|LEGS) && (equipped.clothing_flags & STOPSPRESSUREDAMAGE)) + feet_covered = TRUE - if(chest_covered && head_covered) + if(chest_covered && head_covered && hands_covered && feet_covered) return ONE_ATMOSPHERE if(ismovable(loc)) /// If we're in a space with 0.5 content pressure protection, it averages the values, for example.