anchor.diff:  		if(3)
   			energy -= round(((energy+1)/4),1)
   
  -/obj/singularity/process()
  +/obj/singularity/process(delta_time)
   	if(current_size >= STAGE_TWO)
   		if(prob(event_chance))//Chance for it to run a special event TODO:Come up with one or two more that fit
   			event()
  -	dissipate()
  +	dissipate(delta_time)
   	check_energy()
   
  -/obj/singularity/proc/dissipate()
  -	if(!dissipate)
  -		return
  -	if(dissipate_track >= dissipate_delay)
  -		src.energy -= dissipate_strength
  -		dissipate_track = 0
  -	else
  -		dissipate_track++
  +/obj/singularity/proc/dissipate(delta_time)
  +	if (!dissipate)
  +		return
  +
  +	time_since_last_dissipiation += delta_time
  +
  +	// Uses a while in case of especially long delta times
  +	while (time_since_last_dissipiation >= dissipate_delay)
  +		energy -= dissipate_strength
  +		time_since_last_dissipiation -= dissipate_delay
   
   /obj/singularity/proc/expand(force_size)
   	var/temp_allowed_size = src.allowed_size
  
positive.code: 				new_grav_pull = 10
  				new_consume_range = 3
  				dissipate_delay = 10
  				dissipate_track = 0
  				dissipate_strength = 10
  		if(STAGE_FIVE)//this one also lacks a check for gens because it eats everything
  			current_size = STAGE_FIVE
  
negative.code: 	var/allowed_size = 1
  	var/energy = 100 //How strong are we?
  	var/dissipate = TRUE //Do we lose energy over time?
  	/// How long should it take for us to dissipate in seconds?
  	var/dissipate_delay = 20
  	/// How much energy do we lose every dissipate_delay?
  	var/dissipate_strength = 1
  	/// How long its been (in seconds) since the last dissipation
  	var/time_since_last_dissipiation = 0
  	var/event_chance = 10 //Prob for event each tick
  	var/move_self = TRUE
  	var/consumed_supermatter = FALSE //If the singularity has eaten a supermatter shard and can go to stage six
  