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: 
  
  /obj/machinery/iv_drip/var/mob/living/carbon/human/attached = null
  /obj/machinery/iv_drip/var/mode = 1 // 1 is injecting, 0 is taking blood.
  /obj/machinery/iv_drip/var/obj/item/weapon/reagent_containers/beaker = null
  
  /obj/machinery/iv_drip/update_icon()
  