anchor.diff:  	var/list/cached_gases = air.gases
   	var/temperature = air.temperature
   	var/old_heat_capacity = air.heat_capacity()
  -	var/heat_efficency = min(temperature * 0.01, cached_gases[/datum/gas/tritium][MOLES], cached_gases[/datum/gas/bz][MOLES])
  +	var/heat_efficency = min(temperature * 0.01, cached_gases[/datum/gas/tritium][MOLES] * INVERSE(4), cached_gases[/datum/gas/bz][MOLES] * INVERSE(0.25))
   	var/energy_used = heat_efficency * 300
   	ASSERT_GAS(/datum/gas/halon, air)
   	if ((cached_gases[/datum/gas/tritium][MOLES] - heat_efficency * 4 < 0 ) || (cached_gases[/datum/gas/bz][MOLES] - heat_efficency * 0.25 < 0)) //Shouldn't produce gas from nothing.
  
positive.code: 	var/turf/open/location = isturf(holder) ? holder : null
  	if(location == null)
  		return NO_REACTION
  	var produced_amount = min(5, cached_gases[/datum/gas/tritium][MOLES], cached_gases[/datum/gas/proto_nitrate][MOLES])
  	if(cached_gases[/datum/gas/tritium][MOLES] - produced_amount < 0 || cached_gases[/datum/gas/proto_nitrate][MOLES] - produced_amount * 0.01 < 0)
  		return NO_REACTION
  	location.rad_act(produced_amount * 2.4)
  	ASSERT_GAS(/datum/gas/hydrogen, air)
  	cached_gases[/datum/gas/tritium][MOLES] -= produced_amount
  	cached_gases[/datum/gas/hydrogen][MOLES] += produced_amount
  	cached_gases[/datum/gas/proto_nitrate][MOLES] -= produced_amount * 0.01
  	energy_released += 50
  	if(energy_released)
  		var/new_heat_capacity = air.heat_capacity()
  
negative.code: 	return priority_reactions
  
  /datum/gas_reaction
  	/**
  	 * Regarding the requirements list: the minimum or maximum requirements must be non-zero.
  	 * When in doubt, use MINIMUM_MOLE_COUNT.
  	 * Another thing to note is that reactions will not fire if we have any requirements outside of gas id path or MIN_TEMP or MAX_TEMP.
  	 * More complex implementations will require modifications to gas_mixture.react()
  	 */
  	var/list/requirements
  