anchor.diff:  	return ..()
   
   /obj/singularity/Move(atom/newloc, direct)
  +	var/turf/T = get_turf(src)
  +	for(var/dir in GLOB.cardinals)
  +		if(direct & dir)
  +			T = get_step(T, dir)
  +			if(!T)
  +				break
  +			// eat the stuff if we're going to move into it so it doesn't mess up our movement
  +			for(var/atom/A in T.contents)
  +				consume(A)
  +			consume(T)
  +
   	if(current_size >= STAGE_FIVE || check_turfs_in(direct))
   		last_failed_movement = 0//Reset this because we moved
   		return ..()
  
positive.code: 
  /obj/singularity/Bump(atom/A)
  	consume(A)
  	return
  
  
  /obj/singularity/Bumped(atom/movable/AM)
  	consume(AM)
  
negative.code: 	if(!move_self)
  		return 0
  
  	var/drifting_dir = pick(GLOB.alldirs - last_failed_movement)
  
  	if(force_move)
  		drifting_dir = force_move
  
  	if(target && prob(60))
  		drifting_dir = get_dir(src,target) //moves to a singulo beacon, if there is one
  
  	step(src, drifting_dir)
  
  /obj/singularity/proc/check_cardinals_range(steps, retry_with_move = FALSE)
  	. = length(GLOB.cardinals)			//Should be 4.
  