anchor.diff:  	for(var/turf/T in turflist)
   		if(T == previousturf)
   			continue	//so we don't burn the tile we be standin on
  -		if(!T.atmos_adjacent_turfs || !T.atmos_adjacent_turfs[previousturf])
  +		var/list/turfs_sharing_with_prev = previousturf.GetAtmosAdjacentTurfs(alldir=1)
  +		if(!(T in turfs_sharing_with_prev))
   			break
  -		ignite_turf(T)
  +		if(igniter)
  +			igniter.ignite_turf(src,T)
  +		else
  +			default_ignite(T)
   		sleep(1)
   		previousturf = T
   	operating = 0
   	for(var/mob/M in viewers(1, loc))
   		if((M.client && M.machine == src))
   			attack_self(M)
  -	return
  -
  -
  -/obj/item/weapon/flamethrower/proc/ignite_turf(turf/target, release_amount = 0.05)
  +
  +
  +/obj/item/weapon/flamethrower/proc/default_ignite(turf/target, release_amount = 0.05)
   	//TODO: DEFERRED Consider checking to make sure tank pressure is high enough before doing this...
   	//Transfer 5% of current tank air contents to turf
   	var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(release_amount)
  
positive.code: 	target.hotspot_expose((ptank.air_contents.temperature*2) + 380,500)
  	//location.hotspot_expose(1000,500,1)
  	SSair.add_to_active(target, 0)
  	return
  
  
  /obj/item/weapon/flamethrower/full/New(var/loc)
  	..()
  	if(!weldtool)
  		weldtool = new /obj/item/weapon/weldingtool(src)
  	weldtool.status = 0
  	if(!igniter)
  		igniter = new /obj/item/device/assembly/igniter(src)
  	igniter.secured = 0
  	status = 1
  	update_icon()
  
  /obj/item/weapon/flamethrower/full/tank/New(var/loc)
  	..()
  	ptank = new /obj/item/weapon/tank/internals/plasma/full(src)
  	update_icon()
  
  
  /obj/item/weapon/flamethrower/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
  	if(ptank && damage && attack_type == PROJECTILE_ATTACK && prob(15))
  		owner.visible_message("<span class='danger'>[attack_text] hits the fueltank on [owner]'s [src], rupturing it! What a shot!</span>")
  		var/target_turf = get_turf(owner)
  		ignite_turf(target_turf, 100)
  		qdel(ptank)
  		return 1 //It hit the flamethrower, not them
  
negative.code: 	if(istype(W, /obj/item/weapon/wrench) && !status)//Taking this apart
  		var/turf/T = get_turf(src)
  		if(weldtool)
  			weldtool.forceMove(T)
  			weldtool = null
  		if(igniter)
  			igniter.forceMove(T)
  			igniter = null
  		if(ptank)
  			ptank.forceMove(T)
  			ptank = null
  		new /obj/item/stack/rods(T)
  		qdel(src)
  