Merge remote-tracking branch 'origin/master' into what-should-i-name-this-branch

This commit is contained in:
LetterN
2021-11-12 08:50:23 +08:00
100 changed files with 814 additions and 709 deletions
+16 -9
View File
@@ -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.
@@ -196,9 +201,9 @@
mole_adjustments[entry] = -required_moles
mole_adjustments[breath_results[entry]] = required_moles
if(required_pp < safe_min)
var/multiplier = 0
var/multiplier = handle_too_little_breath(H, required_pp, safe_min, required_moles)
if(required_moles > 0)
multiplier = handle_too_little_breath(H, required_pp, safe_min, required_moles) / required_moles
multiplier /= required_moles
for(var/adjustment in mole_adjustments)
mole_adjustments[adjustment] *= multiplier
if(alert_category)
@@ -222,8 +227,7 @@
alert_category = breathing_class.high_alert_category
alert_type = breathing_class.high_alert_datum
danger_reagent = breathing_class.danger_reagent
for(var/gas in gases)
found_pp += PP(breath, gas)
found_pp = breathing_class.get_effective_pp(breath)
else
danger_reagent = danger_reagents[entry]
if(entry in breath_alert_info)
@@ -517,17 +521,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)
@@ -106,7 +106,7 @@
applyOrganDamage(maxHealth * decay_factor * (seconds * 0.5))
/obj/item/organ/proc/can_decay()
if(CHECK_BITFIELD(organ_flags, ORGAN_NO_SPOIL | ORGAN_SYNTHETIC | ORGAN_FAILING))
if(organ_flags & (ORGAN_NO_SPOIL | ORGAN_SYNTHETIC | ORGAN_FAILING))
return FALSE
return TRUE
+1 -1
View File
@@ -71,7 +71,7 @@
var/turf/T = get_turf(patient)
var/obj/structure/table/optable/table = locate(/obj/structure/table/optable, T)
if(table?.computer && !CHECK_BITFIELD(table.computer.stat, NOPOWER|BROKEN))
if(table?.computer && !(table.computer.stat & (NOPOWER|BROKEN)))
advanced_surgeries |= table.computer.advanced_surgeries
if(istype(tool, /obj/item/surgical_drapes/advanced))