anchor.diff:  	set background = 1
   
   	if(src.attached)
  -		if(!(get_dist(src, src.attached) <= 1))
  +		if(!(get_dist(src, src.attached) <= 1 && isturf(src.attached.loc)))
   			visible_message("The needle is ripped out of [src.attached], doesn't that hurt?")
   			src.attached:apply_damage(3, BRUTE, pick("r_arm", "l_arm"))
   			src.attached = null
  
positive.code: 
  	if(src.attached && src.beaker)
  		// Give blood
  		if(mode == "give" && src.beaker.volume > 0)
  			var/transfer_amount = REAGENTS_METABOLISM
  			if(istype(src.beaker, /obj/item/weapon/reagent_containers/blood))
  				// speed up transfer on blood packs
  				transfer_amount = 4
  			src.beaker.reagents.trans_to(src.attached, transfer_amount)
  			update_icon()
  
  		// Take blood
  		else if(mode == "take")
  			var/amount = beaker.reagents.maximum_volume - beaker.reagents.total_volume
  			amount = min(amount, 4)
  			// If the beaker is full, ping
  
negative.code: 		usr << "\red You can't do that."
  		return
  
  	if(usr.stat)
  		return
  
  	mode = !mode
  	usr << "The IV drip is now [mode ? "injecting" : "taking blood"]."
  
  /obj/machinery/iv_drip/examine()
  	set src in view()
  	..()
  	if (!(usr in view(2)) && usr!=src.loc) return
  
  	usr << "The IV drip is [mode ? "injecting" : "taking blood"]."
  
  	if(beaker)
  		if(beaker.reagents && beaker.reagents.reagent_list.len)
  			usr << "\blue Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid."
  		else
  			usr << "\blue Attached is an empty [beaker]."
  	else
  		usr << "\blue No chemicals are attached."
  
  	usr << "\blue [attached ? attached : "No one"] is attached."