anchor.diff:  	if(!move_self)
   		return 0
   
  -	var/movement_dir = pick(GLOB.alldirs - last_failed_movement)
  +	var/drifting_dir = pick(GLOB.alldirs - last_failed_movement)
   
   	if(force_move)
  -		movement_dir = force_move
  +		drifting_dir = force_move
   
   	if(target && prob(60))
  -		movement_dir = get_dir(src,target) //moves to a singulo beacon, if there is one
  -
  -	step(src, movement_dir)
  +		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.
  
positive.code: 	var/last_failed_movement = 0//Will not move in the same dir if it couldnt before, will help with the getting stuck on fields thing
  	var/last_warning
  	var/consumedSupermatter = 0 //If the singularity has eaten a supermatter shard and can go to stage six
  	resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF
  	obj_flags = CAN_BE_HIT | DANGEROUS_POSSESSION
  
  
negative.code: 
  /obj/singularity/Bump(atom/A)
  	consume(A)
  	if(QDELETED(A)) // don't keep moving into objects that weren't destroyed infinitely
  		step(src, drifting_dir)
  	return
  
  /obj/singularity/Crossed(atom/A)
  	..()
  	consume(A)
  
  /obj/singularity/Bumped(atom/movable/AM)
  	consume(AM)
  