anchor.diff:  				user_loc = user.loc
   
   			for(var/atom/target in targets)
  -				if((!drifting && user_loc != user.loc) || originalloc[target] != target.loc || user.get_active_held_item() != holding || user.incapacitated() || user.lying || (extra_checks && !extra_checks.Invoke()))
  +				if((!drifting && user_loc != user.loc) || QDELETED(target) || originalloc[target] != target.loc || user.get_active_held_item() != holding || user.incapacitated() || user.lying || (extra_checks && !extra_checks.Invoke()))
   					. = 0
   					break mainloop
   	if(progbar)
  
positive.code: 			drifting = 0
  			Uloc = user.loc
  
  		if(!user || user.stat || user.weakened || user.stunned  || (!drifting && user.loc != Uloc) || (extra_checks && !extra_checks.Invoke()))
  			. = 0
  			break
  
  		if(Tloc && (!target || Tloc != target.loc))
  			if((Uloc != Tloc || Tloc != user) && !drifting)
  				. = 0
  				break
  
negative.code: 			sleep(1)
  			if(progress)
  				progbar.update(world.time - starttime)
  			if(QDELETED(user) || !targets)
  				. = 0
  				break
  			if(uninterruptible)
  