[MIRROR] Fixes exploits and bugs that allowed for infinite pressure&temp atmos. (#9853)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-01-12 15:35:31 +01:00
committed by GitHub
co-authored by Cameron Lennox
parent 654a0a90b6
commit 85f80353ae
3 changed files with 5 additions and 2 deletions
+2 -1
View File
@@ -318,7 +318,8 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin
zone.remove_liquidfuel(used_liquid_fuel, !check_combustability())
//calculate the energy produced by the reaction and then set the new temperature of the mix
temperature = (starting_energy + vsc.fire_fuel_energy_release * (used_gas_fuel + used_liquid_fuel)) / heat_capacity()
if(heat_capacity() > 0)
temperature = min((starting_energy + vsc.fire_fuel_energy_release * (used_gas_fuel + used_liquid_fuel)) / heat_capacity(), MAX_ATMOS_TEMPERATURE)
update_values()
#ifdef FIREDBG
+1
View File
@@ -98,3 +98,4 @@
// Used in various things like tanks and oxygen pumps.
#define TANK_MAX_RELEASE_PRESSURE (3*ONE_ATMOSPHERE)
#define TANK_DEFAULT_RELEASE_PRESSURE ONE_ATMOSPHERE
#define MAX_ATMOS_TEMPERATURE 1e7 //Without having a max temp, you can get .inf temps
+2 -1
View File
@@ -144,7 +144,8 @@
return 0
var/thermal_energy_limit = -(temperature - TCMB)*heat_capacity //ensure temperature does not go below TCMB
thermal_energy = max( thermal_energy, thermal_energy_limit ) //thermal_energy and thermal_energy_limit are negative here.
temperature += thermal_energy/heat_capacity
if(heat_capacity > 0)
temperature = min(temperature + thermal_energy / heat_capacity, MAX_ATMOS_TEMPERATURE)
return thermal_energy
//Returns the thermal energy change required to get to a new temperature