anchor.diff:  		show_menu(usr)
   
   
  -/obj/item/weapon/pipe_dispenser/afterattack(atom/A, mob/user)
  -	if(!in_range(A,user) || loc != user)
  -		return 0
  -
  -	if(!user.IsAdvancedToolUser())
  -		user << "<span class='warning'>You don't have the dexterity to do this!</span>"
  -		return 0
  -
  -	if(istype(A,/area/shuttle)||istype(A,/turf/open/space/transit))
  -		return 0
  +/obj/item/weapon/pipe_dispenser/pre_attackby(atom/A, mob/user)
  +	if(!user.IsAdvancedToolUser() || istype(A,/turf/open/space/transit))
  +		return ..()
   
   	//So that changing the menu settings doesn't affect the pipes already being built.
   	var/queued_p_type = p_type
   	var/queued_p_dir = p_dir
   	var/queued_p_flipped = p_flipped
   
  +	. = FALSE
   	switch(p_class)
   		if(PAINT_MODE) // Paint pipes
   			if(!istype(A,/obj/machinery/atmospherics/pipe))
   				// Avoid spewing errors about invalid mode -2 when clicking on stuff that aren't pipes.
   				user << "<span class='warning'>\The [src]'s error light flickers!  Perhaps you need to only use it on pipes and pipe meters?</span>"
  -				return 0
  +				return
   			var/obj/machinery/atmospherics/pipe/P = A
   			playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
   			P.add_atom_colour(paint_colors[paint_color], FIXED_COLOUR_PRIORITY)
  
positive.code: 				P.flipped = queued_p_flipped
  				P.update()
  				P.add_fingerprint(usr)
  				return 1
  			return 0
  
  		if(METER_MODE)
  			if(!isturf(A))
  
negative.code: 			if(do_after(user, 2, target = A))
  				activate()
  				new /obj/item/pipe_meter(A)
  
  		if(DISPOSALS_MODE)
  			if(!isturf(A) || is_anchored_dense_turf(A))
  				user << "<span class='warning'>The [src]'s error light flickers!</span>"
  				return
  			user << "<span class='notice'>You start building pipes...</span>"
  			playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
  			if(do_after(user, 20, target = A))
  