anchor.diff:  
   /obj/machinery/atmospherics/components/unary/thermomachine/process_atmos()
   	..()
  -	if(!on || !nodes[1])
  -		return
  +	if(!is_operational || !on || !nodes[1])  //if it has no power or its switched off, dont process atmos
  +		return
  +	else if(is_operational && was_on == TRUE)  //if it was switched on before it turned off due to no power, turn the machine back on
  +		on = TRUE
   	var/datum/gas_mixture/air_contents = airs[1]
   
   	var/air_heat_capacity = air_contents.heat_capacity()
  
positive.code: 			use_power = on ? ACTIVE_POWER_USE : IDLE_POWER_USE
  			investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", INVESTIGATE_ATMOS)
  			. = TRUE
  		if("cooling")
  			swap_function()
  			investigate_log("was changed to [cooling ? "cooling" : "heating"] by [key_name(usr)]", INVESTIGATE_ATMOS)
  
negative.code: 		var/combined_energy = heat_capacity * target_temperature + air_heat_capacity * air_contents.temperature
  		air_contents.temperature = combined_energy/combined_heat_capacity
  
  	var/temperature_delta = abs(old_temperature - air_contents.temperature)
  	if(temperature_delta > 1)
  		active_power_usage = (heat_capacity * temperature_delta) / 10 + idle_power_usage
  		update_parents()
  	else
  		active_power_usage = idle_power_usage
  	return TRUE //kills atmos process
  
  /obj/machinery/atmospherics/components/unary/thermomachine/attackby(obj/item/I, mob/user, params)
  	if(!on)
  