public override void TickRare() { if (this.compFlickable.SwitchIsOn) { float ambientTemperature = base.AmbientTemperature; float num; if (ambientTemperature > this.compTempControl.targetTemperature - 1f && ambientTemperature < this.compTempControl.targetTemperature + 1f) { num = 0f; } else if (ambientTemperature < this.compTempControl.targetTemperature - 1f) { if (ambientTemperature < 20f) { num = 1f; } else if (ambientTemperature > 1000f) { num = 0f; } else { num = Mathf.InverseLerp(1000f, 100f, ambientTemperature); } } else if (ambientTemperature > this.compTempControl.targetTemperature + 1f) { if (ambientTemperature < -50f) { num = -Mathf.InverseLerp(-273f, -50f, ambientTemperature); } else { num = -1f; } } else { num = 0f; } float energyLimit = this.compTempControl.prop.energyPerSecond * num * 4.16666651f; float num2 = GenTemperature.ControlTemperatureTempChange(base.Position, base.Map, energyLimit, this.compTempControl.targetTemperature); bool flag = !Mathf.Approximately(num2, 0f); if (flag) { this.energyCostPerSec = compTempControl.prop.energyCostPerSec; if (netPort.TryGetEnergy(energyCostPerSec)) { this.GetRoomGroup().Temperature += num2; powerOn = true; } else { powerOn = false; } } else { this.energyCostPerSec = compTempControl.prop.energyCostPerSec * this.compTempControl.prop.lowPowerConsumptionFactor; if (netPort.TryGetEnergy(energyCostPerSec)) { powerOn = true; } else { powerOn = false; } } this.compTempControl.operatingAtHighPower = flag; } }