diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index f85af5c093d..dc08f65788b 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -43,35 +43,31 @@ /obj/item/tank/proc/toggle_internals(mob/user, silent = FALSE) var/mob/living/carbon/C = user if(!istype(C)) - return 0 + return FALSE if(C.internal == src) to_chat(C, "You close \the [src] valve.") C.internal = null else - var/can_open_valve = 0 - if(C.get_organ_slot("breathing_tube")) - can_open_valve = 1 - else if(C.wear_mask && C.wear_mask.flags & AIRTIGHT) - can_open_valve = 1 - else if(ishuman(C)) - var/mob/living/carbon/human/H = C - if(H.head && H.head.flags & AIRTIGHT) - can_open_valve = 1 + if(!C.get_organ_slot("breathing_tube")) // Breathing tubes can always use internals, if they have one, skip ahead and turn internals on/off + if(!C.wear_mask) // Do we have a mask equipped? + return FALSE - if(can_open_valve) + var/obj/item/clothing/mask/M = C.wear_mask + // If the "mask" isn't actually a mask OR That mask isn't internals compatible AND Their headgear isn't internals compatible + if(!istype(M) || (!(initial(M.flags) & AIRTIGHT) && !(C.head.flags & AIRTIGHT))) + if(!silent) + to_chat(C, "You are not wearing a suitable mask or helmet.") + return FALSE + if(M.mask_adjusted) // If the mask is equipped but pushed down + M.adjustmask(C) // Adjust it back + + if(!silent) if(C.internal) - if(!silent) - to_chat(C, "You switch your internals to [src].") + to_chat(C, "You switch your internals to [src].") else - if(!silent) - to_chat(C, "You open \the [src] valve.") - C.internal = src - else - if(!silent) - to_chat(C, "You are not wearing a suitable mask or helmet.") - return 0 - + to_chat(C, "You open \the [src] valve.") + C.internal = src C.update_action_buttons_icon()