anchor.diff:  	var/temperature = air.temperature
   	var/pressure = air.return_pressure()
   	var/old_heat_capacity = air.heat_capacity()
  -	var/reaction_efficency = min(1/((pressure/(0.1*ONE_ATMOSPHERE))*(max(cached_gases[/datum/gas/plasma][MOLES]/cached_gases[/datum/gas/nitrous_oxide][MOLES],1))),cached_gases[/datum/gas/nitrous_oxide][MOLES],cached_gases[/datum/gas/plasma][MOLES]/2)
  -	var/energy_released = 2*reaction_efficency*FIRE_CARBON_ENERGY_RELEASED
  -	if ((cached_gases[/datum/gas/nitrous_oxide][MOLES] - reaction_efficency < 0 )|| (cached_gases[/datum/gas/plasma][MOLES] - (2*reaction_efficency) < 0) || energy_released <= 0) //Shouldn't produce gas from nothing.
  -		return NO_REACTION
  -	ASSERT_GAS(/datum/gas/bz,air)
  -	cached_gases[/datum/gas/bz][MOLES] += reaction_efficency
  +	var/reaction_efficency = min(1 / ((pressure / (0.1 * ONE_ATMOSPHERE)) * (max(cached_gases[/datum/gas/plasma][MOLES] / cached_gases[/datum/gas/nitrous_oxide][MOLES], 1))), cached_gases[/datum/gas/nitrous_oxide][MOLES], cached_gases[/datum/gas/plasma][MOLES] * 0.5)
  +	var/energy_released = 2 * reaction_efficency * FIRE_CARBON_ENERGY_RELEASED
  +	if ((cached_gases[/datum/gas/nitrous_oxide][MOLES] - reaction_efficency < 0 )|| (cached_gases[/datum/gas/plasma][MOLES] - (2 * reaction_efficency) < 0) || energy_released <= 0) //Shouldn't produce gas from nothing.
  +		return NO_REACTION
  +	ASSERT_GAS(/datum/gas/bz, air)
  +	cached_gases[/datum/gas/bz][MOLES] += reaction_efficency * 2
   	if(reaction_efficency == cached_gases[/datum/gas/nitrous_oxide][MOLES])
  -		ASSERT_GAS(/datum/gas/oxygen,air)
  -		cached_gases[/datum/gas/bz][MOLES] -= min(pressure,1)
  -		cached_gases[/datum/gas/oxygen][MOLES] += min(pressure,1)
  +		ASSERT_GAS(/datum/gas/oxygen, air)
  +		cached_gases[/datum/gas/bz][MOLES] -= min(pressure,0.5)
  +		cached_gases[/datum/gas/oxygen][MOLES] += min(pressure,0.5)
   	cached_gases[/datum/gas/nitrous_oxide][MOLES] -= reaction_efficency
  -	cached_gases[/datum/gas/plasma][MOLES]  -= 2*reaction_efficency
  -
  -	SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min((reaction_efficency**2)*BZ_RESEARCH_SCALE),BZ_RESEARCH_MAX_AMOUNT)
  +	cached_gases[/datum/gas/plasma][MOLES]  -= 2 * reaction_efficency
  +
  +	SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min((reaction_efficency**2) * BZ_RESEARCH_SCALE), BZ_RESEARCH_MAX_AMOUNT)
   
   	if(energy_released > 0)
   		var/new_heat_capacity = air.heat_capacity()
   		if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
  -			air.temperature = max(((temperature*old_heat_capacity + energy_released)/new_heat_capacity),TCMB)
  +			air.temperature = max(((temperature * old_heat_capacity + energy_released) / new_heat_capacity), TCMB)
   		return REACTING
   
   /datum/gas_reaction/metalhydrogen
  
positive.code: 	if(temperature < FREON_LOWER_TEMPERATURE) //stop the reaction when too cold
  		temperature_scale = 0
  	else
  		temperature_scale = (FREON_MAXIMUM_BURN_TEMPERATURE - temperature)/(FREON_MAXIMUM_BURN_TEMPERATURE - FREON_LOWER_TEMPERATURE) //calculate the scale based on the temperature
  	if(temperature_scale >= 0)
  		oxygen_burn_rate = OXYGEN_BURN_RATE_BASE - temperature_scale
  		if(cached_gases[/datum/gas/oxygen][MOLES] > cached_gases[/datum/gas/freon][MOLES]*FREON_OXYGEN_FULLBURN)
  			freon_burn_rate = (cached_gases[/datum/gas/freon][MOLES]*temperature_scale)/FREON_BURN_RATE_DELTA
  		else
  			freon_burn_rate = (temperature_scale*(cached_gases[/datum/gas/oxygen][MOLES]/FREON_OXYGEN_FULLBURN))/FREON_BURN_RATE_DELTA
  
  		if(freon_burn_rate > MINIMUM_HEAT_CAPACITY)
  			freon_burn_rate = min(freon_burn_rate,cached_gases[/datum/gas/freon][MOLES],cached_gases[/datum/gas/oxygen][MOLES]/oxygen_burn_rate) //Ensures matter is conserved properly
  			cached_gases[/datum/gas/freon][MOLES] = QUANTIZE(cached_gases[/datum/gas/freon][MOLES] - freon_burn_rate)
  			cached_gases[/datum/gas/oxygen][MOLES] = QUANTIZE(cached_gases[/datum/gas/oxygen][MOLES] - (freon_burn_rate * oxygen_burn_rate))
  			ASSERT_GAS(/datum/gas/carbon_dioxide,air)
  			cached_gases[/datum/gas/carbon_dioxide][MOLES] += freon_burn_rate
  
  			if(temperature < 160 && temperature > 120 && prob(2))
  
negative.code: 	if(energy_used)
  		var/new_heat_capacity = air.heat_capacity()
  		if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
  			air.temperature = max(((temperature * old_heat_capacity + energy_used) / new_heat_capacity), TCMB)
  	return REACTING
  
  /datum/gas_reaction/hexane_formation
  