anchor.diff:  
   	location.active_hotspot = src
   
  -	if(volume > CELL_VOLUME*0.95)
  -		bypassing = TRUE
  -	else
  -		bypassing = FALSE
  +	bypassing = !just_spawned && (volume > CELL_VOLUME*0.95)
   
   	if(bypassing)
  -		if(!just_spawned)
  -			location.air.temperature = max(temperature, location.air.temperature)
  -			location.air.react(src)
  -			temperature = location.air.temperature
  -			volume = location.air.reaction_results["fire"]*FIRE_GROWTH_RATE
  +		volume = location.air.reaction_results["fire"]*FIRE_GROWTH_RATE
  +		temperature = location.air.temperature
   	else
   		var/datum/gas_mixture/affected = location.air.remove_ratio(volume/location.air.volume)
  -		affected.temperature = temperature
  -		affected.react(src)
  -		temperature = affected.temperature
  -		volume = affected.reaction_results["fire"]*FIRE_GROWTH_RATE
  -		location.assume_air(affected)
  +		if(affected) //in case volume is 0
  +			affected.temperature = temperature
  +			affected.react(src)
  +			temperature = affected.temperature
  +			volume = affected.reaction_results["fire"]*FIRE_GROWTH_RATE
  +			location.assume_air(affected)
   
   	for(var/A in location)
   		var/atom/AT = A
  
positive.code: 		if(oxy < 0.5)
  			return 0
  
  		active_hotspot = new /obj/effect/hotspot(src)
  		active_hotspot.temperature = exposed_temperature
  		active_hotspot.volume = exposed_volume*25
  
  		active_hotspot.just_spawned = (current_cycle < SSair.times_fired)
  			//remove just_spawned protection if no longer processing this cell
  
negative.code: 	var/bypassing = FALSE
  	var/visual_update_tick = 0
  
  /obj/effect/hotspot/Initialize(mapload, starting_volume, starting_temperature)
  	. = ..()
  	SSair.hotspots += src
  	if(!isnull(starting_volume))
  		volume = starting_volume
  	if(!isnull(starting_temperature))
  		temperature = starting_temperature
  	perform_exposure()
  	setDir(pick(GLOB.cardinals))
  	air_update_turf()
  