anchor.diff:  			if(ATMOS_CATEGORY) //Making pipes
   				if(!can_make_pipe)
   					return ..()
  +				A = T
  +				if(is_type_in_typecache(recipe, ventcrawl_machinery) && isclosedturf(A)) //wall escapism sanity check.
  +					to_chat(user, "<span class='warning'>[src]'s error light flickers; there's something in the way!</span>")
  +					return
   				playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
   				if (recipe.type == /datum/pipe_info/meter)
   					to_chat(user, "<span class='notice'>You start building a meter...</span>")
   					if(do_after(user, atmos_build_speed, target = A))
   						activate()
  -						var/obj/item/pipe_meter/PM = new /obj/item/pipe_meter(get_turf(A))
  +						var/obj/item/pipe_meter/PM = new /obj/item/pipe_meter(A)
   						PM.setAttachLayer(piping_layer)
   						if(mode&WRENCH_MODE)
   							PM.wrench_act(user, src)
  
positive.code: 			if(TRANSIT_CATEGORY) //Making transit tubes
  				if(!can_make_pipe)
  					return ..()
  				A = get_turf(A)
  				if(isclosedturf(A))
  					to_chat(user, "<span class='warning'>[src]'s error light flickers; there's something in the way!</span>")
  					return
  
negative.code: 
  /obj/item/pipe_dispenser/pre_attack(atom/A, mob/user)
  	var/turf/T = get_turf(A)
  	if(!user.IsAdvancedToolUser() || !T || istype(T, /turf/open/space/transit) || isindestructiblewall(T))
  		return ..()
  
  	//So that changing the menu settings doesn't affect the pipes already being built.
  