diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 897c7610a1..1f17709c8c 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -90,6 +90,11 @@ max = safe_breath_dam_max, damage_type = safe_damage_type ) + if(ispath(breathing_class)) + var/datum/breathing_class/class = GLOB.gas_data.breathing_classes[breathing_class] + for(var/g in class.gases) + if(class.gases[g] > 0) + gas_min -= g //TODO: lung health affects lung function /obj/item/organ/lungs/onDamage(damage_mod) //damage might be too low atm. @@ -517,17 +522,20 @@ var/total_moles = breath.total_moles() for(var/id in breath.get_gases()) var/this_pressure = PP(breath, id) - var/req_pressure = (this_pressure * SAFE_THRESHOLD_RATIO) - 1 - if(req_pressure > 0) - gas_min[id] = req_pressure + if(id in gas_min) + var/req_pressure = (this_pressure * SAFE_THRESHOLD_RATIO) - 1 + if(req_pressure > 0) + gas_min[id] = req_pressure + else + gas_min -= id // if there's not even enough of the gas to register, we shouldn't need it if(id in gas_max) gas_max[id] += this_pressure - var/bz = breath.get_moles(GAS_BZ) + var/bz = breath.get_moles(GAS_BZ) // snowflaked cause it's got special behavior, of course if(bz) BZ_trip_balls_min += bz BZ_brain_damage_min += bz - gas_max[GAS_N2] = PP(breath, GAS_N2) + 5 + gas_max[GAS_N2] = max(15, PP(breath, GAS_N2) + 3) // don't want ash lizards breathing on station; sometimes they might be able to, though var/datum/breathing_class/class = GLOB.gas_data.breathing_classes[breathing_class] var/o2_pp = class.get_effective_pp(breath) safe_breath_min = min(3, 0.3 * o2_pp)