Paranoid updates to maybe fix air duplication

This commit is contained in:
Putnam
2021-03-20 22:02:47 -07:00
parent c230fda10e
commit f1e55f2df0
19 changed files with 68 additions and 33 deletions
@@ -30,23 +30,10 @@
var/pressure_delta = abs(external_pressure - internal_pressure)
if(pressure_delta > 0.5)
if(external_pressure < internal_pressure)
var/air_temperature = (external.return_temperature() > 0) ? external.return_temperature() : internal.return_temperature()
var/transfer_moles = (pressure_delta * external.return_volume()) / (air_temperature * R_IDEAL_GAS_EQUATION)
var/datum/gas_mixture/removed = internal.remove(transfer_moles)
external.merge(removed)
else
var/air_temperature = (internal.return_temperature() > 0) ? internal.return_temperature() : external.return_temperature()
var/transfer_moles = (pressure_delta * internal.return_volume()) / (air_temperature * R_IDEAL_GAS_EQUATION)
transfer_moles = min(transfer_moles, external.total_moles() * internal.return_volume() / external.return_volume())
var/datum/gas_mixture/removed = external.remove(transfer_moles)
if(isnull(removed))
return
internal.merge(removed)
equalize_all_gases_in_list(list(internal,external))
active = TRUE
active = internal.temperature_share(external, OPEN_HEAT_TRANSFER_COEFFICIENT) ? TRUE : active
active = internal.temperature_share(external, OPEN_HEAT_TRANSFER_COEFFICIENT) || active
if(active)
air_update_turf()
@@ -156,10 +156,8 @@
return FALSE
if(scrubbing & SCRUBBING)
var/transfer_moles = min(1, volume_rate/environment.return_volume())*environment.total_moles()
//Take a gas sample
var/datum/gas_mixture/removed = tile.remove_air(transfer_moles)
var/datum/gas_mixture/removed = tile.remove_air_ratio(volume_rate/environment.return_volume())
//Nothing left to remove from the tile
if(isnull(removed))
@@ -173,9 +171,7 @@
else //Just siphoning all air
var/transfer_moles = environment.total_moles()*(volume_rate/environment.return_volume())
var/datum/gas_mixture/removed = tile.remove_air(transfer_moles)
var/datum/gas_mixture/removed = tile.remove_air_ratio((volume_rate/environment.return_volume()))
air_contents.merge(removed)
tile.air_update_turf()