anchor.diff:  	var/temperature = air.temperature
   	var/list/cached_results = air.reaction_results
   	cached_results["fire"] = 0
  -	var/turf/open/location = isturf(holder) ? holder : null
  +	var/turf/open/location
  +	if(istype(holder,/datum/pipeline)) //Find the tile the reaction is occuring on, or a random part of the network if it's a pipenet.
  +		var/datum/pipeline/pipenet = holder
  +		location = get_turf(pick(pipenet.members))
  +	else
  +		location = get_turf(holder)
   	var/burned_fuel = 0
   
   	if(cached_gases[/datum/gas/oxygen][MOLES] < cached_gases[/datum/gas/tritium][MOLES] || MINIMUM_TRIT_OXYBURN_ENERGY > air.thermal_energy())
  
positive.code: 		location = get_turf(pick(pipenet.members))
  	else
  		location = get_turf(holder)
  	var consumed_amount = min(5, cached_gases[/datum/gas/bz][MOLES], cached_gases[/datum/gas/proto_nitrate][MOLES])
  	if(cached_gases[/datum/gas/bz][MOLES] - consumed_amount < 0)
  		return NO_REACTION
  	if(cached_gases[/datum/gas/bz][MOLES] < 30)
  		cached_gases[/datum/gas/bz][MOLES] -= consumed_amount
  	else
  		for(var/mob/living/carbon/L in location)
  			L.hallucination += cached_gases[/datum/gas/bz][MOLES] * 0.7
  	energy_released += 100
  	if(energy_released)
  		var/new_heat_capacity = air.heat_capacity()
  		if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
  
negative.code: 	var/old_heat_capacity = air.heat_capacity()
  	var/list/cached_gases = air.gases
  	var/temperature = air.temperature
  	var/turf/open/location
  	if(istype(holder,/datum/pipeline)) //Find the tile the reaction is occuring on, or a random part of the network if it's a pipenet.
  		var/datum/pipeline/pipenet = holder
  		location = get_turf(pick(pipenet.members))
  	else
  		location = get_turf(holder)
  	var produced_amount = min(air.temperature / 34 * (cached_gases[/datum/gas/tritium][MOLES] * cached_gases[/datum/gas/proto_nitrate][MOLES]) / (cached_gases[/datum/gas/tritium][MOLES] + 10 * cached_gases[/datum/gas/proto_nitrate][MOLES]), cached_gases[/datum/gas/tritium][MOLES], cached_gases[/datum/gas/proto_nitrate][MOLES] * INVERSE(0.01))
  	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
  	ASSERT_GAS(/datum/gas/hydrogen, air)
  	cached_gases[/datum/gas/tritium][MOLES] -= produced_amount
  	cached_gases[/datum/gas/proto_nitrate][MOLES] -= produced_amount * 0.01
  	cached_gases[/datum/gas/hydrogen][MOLES] += produced_amount
  	energy_released += produced_amount * 10000
  	radiation_pulse(location, max_range = min(sqrt(produced_amount) / 1.5, 20), threshold = 15 * INVERSE(15 + produced_amount), chance = 50)
  	if(energy_released)
  		var/new_heat_capacity = air.heat_capacity()
  		if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
  