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 )
  +				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()))
   					. = 0
   					break mainloop
   	if(progbar)
  
positive.code: 			drifting = 0
  			user_loc = user.loc
  
  		if((!drifting && user.loc != user_loc) || target.loc != target_loc || user.get_active_held_item() != holding || user.incapacitated() || user.lying )
  			. = 0
  			break
  	if (progress)
  		qdel(progbar)
  
  
  /proc/do_after(mob/user, delay, needhand = 1, atom/target = null, progress = 1)
  	if(!user)
  		return 0
  	var/atom/Tloc = null
  
negative.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
  
  