diff --git a/code/_onclick/hud/screen_object_types/internals.dm b/code/_onclick/hud/screen_object_types/internals.dm index b936f2c0505..79cdf17ce99 100644 --- a/code/_onclick/hud/screen_object_types/internals.dm +++ b/code/_onclick/hud/screen_object_types/internals.dm @@ -14,14 +14,7 @@ if(C.internals) C.internals.icon_state = "internal0" else - - var/no_mask - if(!(C.wear_mask && C.wear_mask.item_flags & AIRTIGHT)) - var/mob/living/carbon/human/H = C - if(!(H.head && H.head.item_flags & AIRTIGHT)) - no_mask = 1 - - if(no_mask) + if(!has_internals_mask(C)) to_chat(C, "You are not wearing a suitable mask or helmet.") return 1 else @@ -150,3 +143,14 @@ C.internals.icon_state = "internal1" else to_chat(C, "You don't have a[breathes==GAS_OXYGEN ? "n oxygen" : addtext(" ",breathes)] tank.") + +/obj/screen/internals/proc/lose_internals(var/mob/living/carbon/human/user) + icon_state = "internal0" + user.internal = null + +/obj/screen/internals/proc/has_internals_mask(var/mob/living/carbon/human/user) + if(user.wear_mask && HAS_FLAG(user.wear_mask.item_flags, AIRTIGHT)) + return TRUE + if(user.head && HAS_FLAG(user.head.item_flags, AIRTIGHT)) + return TRUE + return FALSE diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index c718e8841fc..6b42f26e124 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -142,6 +142,8 @@ This saves us from having to call add_fingerprint() any time something is put in update_inv_l_ear(0) update_inv_r_ear(0) update_inv_wear_mask(0) + if(internal && internals && !internals.has_internals_mask(src)) + internals.lose_internals(src) update_inv_head() else if (W == l_ear) l_ear = null @@ -176,10 +178,8 @@ This saves us from having to call add_fingerprint() any time something is put in update_hair(0) //rebuild hair update_inv_l_ear(0) update_inv_r_ear(0) - if(internal) - if(internals) - internals.icon_state = "internal0" - internal = null + if(internal && internals && !internals.has_internals_mask(src)) + internals.lose_internals(src) update_inv_wear_mask() else if (W == wear_id) wear_id = null diff --git a/html/changelogs/geeves-internals_dropping.yml b/html/changelogs/geeves-internals_dropping.yml new file mode 100644 index 00000000000..40dce6b9d33 --- /dev/null +++ b/html/changelogs/geeves-internals_dropping.yml @@ -0,0 +1,7 @@ +author: Geeves + +delete-after: True + +changes: + - bugfix: "You will no longer lose internals if you drop a mask/helmet and have an airtight helmet/mask to spare." + - bugfix: "You will now lose internals if you drop a helmet and don't have an airtight mask to spare." \ No newline at end of file