diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index f9718c62587b..adb80ca45cd6 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -263,6 +263,10 @@ var/temp_change = temp_sign * (1 - (thermal_protection * protection_modifier)) * ((0.1 * max(1, abs(temp_delta))) ** 1.8) * temperature_normalization_speed // Cap increase and decrease temp_change = temp_change < 0 ? max(temp_change, BODYTEMP_ENVIRONMENT_COOLING_MAX) : min(temp_change, BODYTEMP_ENVIRONMENT_HEATING_MAX) + // Boost when returning to equilibrium + if(equilibrium_temp < standard_body_temperature - 2 KELVIN || equilibrium_temp > standard_body_temperature + 2 KELVIN) + temp_change *= 3 + adjust_body_temperature(temp_change * seconds_per_tick) // no use_insulation beacuse we account for it manually /mob/living/silicon/handle_environment(datum/gas_mixture/environment, seconds_per_tick, times_fired) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 37168fa7da1e..a09a595409a3 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -258,7 +258,7 @@ /// Note that more of this = more nutrition is consumed every life tick. var/temperature_homeostasis_speed = 0.5 /// Protection (insulation) from temperature changes, max 1 - var/temperature_insulation = 0 + var/temperature_insulation = 0.1 /// Whether we currently have temp alerts, minor optimization VAR_PRIVATE/temp_alerts = FALSE diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index a313a02cbcde..3af54191188d 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -81,6 +81,8 @@ if(amount == 0) return 0 amount = round(amount, 0.01) + min_temp = max(min_temp, TCMB) + max_temp = min(max_temp, CELCIUS_TO_KELVIN(330 CELCIUS)) if(body_temperature >= min_temp && body_temperature <= max_temp) var/old_temp = body_temperature