anchor.diff:  	return ..()
   
   /obj/structure/carp_rift/process(delta_time)
  -	time_charged = min(time_charged + delta_time, max_charge + 1)
  -	update_check()
  +	// Heal carp on our loc.
   	for(var/mob/living/simple_animal/hostile/hostilehere in loc)
   		if("carp" in hostilehere.faction)
   			hostilehere.adjustHealth(-5 * delta_time)
   			var/obj/effect/temp_visual/heal/H = new /obj/effect/temp_visual/heal(get_turf(hostilehere))
   			H.color = "#0000FF"
  -	if(time_charged < max_charge)
  -		desc = "A rift akin to the ones space carp use to travel long distances.  It seems to be [(time_charged / max_charge) * 100]% charged."
  -		if(carp_stored == 0)
  -			icon_state = "carp_rift"
  -			light_color = LIGHT_COLOR_BLUE
  -		else
  -			icon_state = "carp_rift_carpspawn"
  -			light_color = LIGHT_COLOR_PURPLE
  -	else
  -		if(DT_PROB(1.25, delta_time))
  -			new /mob/living/simple_animal/hostile/carp(loc)
  +
  +	// If we're fully charged, just start mass spawning carp.
  +	if(charge_state == CHARGE_COMPLETED && DT_PROB(1.25, delta_time))
  +		new /mob/living/simple_animal/hostile/carp(loc)
  +		return
  +
  +	// Increase time trackers and check for any updated states.
  +	time_charged = min(time_charged + delta_time, max_charge)
  +	last_carp_inc += delta_time
  +	update_check()
   
   /obj/structure/carp_rift/attack_ghost(mob/user)
   	. = ..()
  
positive.code: 	if(S)
  		S.carp += newcarp.mind
  	to_chat(newcarp, "<span class='boldwarning'>You have arrived in order to assist the space dragon with securing the rift.  Do not jeopardize the mission, and protect the rift at all costs!</span>")
  	carp_stored -= 1
  	return TRUE
  
negative.code: 	armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 50, BIO = 100, RAD = 100, FIRE = 100, ACID = 100)
  	max_integrity = 300
  	icon = 'icons/obj/carp_rift.dmi'
  	icon_state = "carp_rift_carpspawn"
  	light_color = LIGHT_COLOR_PURPLE
  	light_range = 10
  	anchored = TRUE
  	density = FALSE
  	layer = MASSIVE_OBJ_LAYER
  	/// The amount of time the rift has charged for.
  	var/time_charged = 0
  	/// The maximum charge the rift can have.
  	var/max_charge = 480
  	/// How many carp spawns it has available.
  	var/carp_stored = 1
  	/// A reference to the Space Dragon that created it.
  	var/mob/living/simple_animal/hostile/space_dragon/dragon
  	/// Current charge state of the rift.
  	var/charge_state = CHARGE_ONGOING
  	/// The time since an extra carp was added to the ghost role spawning pool.
  	var/last_carp_inc = 0
  
  /obj/structure/carp_rift/Initialize(mapload)
  	. = ..()
  	START_PROCESSING(SSobj, src)
  
  /obj/structure/carp_rift/examine(mob/user)
  	. = ..()
  	if(time_charged < max_charge)
  		. += "<span class='notice'>It seems to be [(time_charged / max_charge) * 100]% charged.</span>"
  	else
  		. += "<span class='warning'>This one is fully charged, and is capable of bringing many carp to the station's location.</span>"
  
  	if(isobserver(user))
  		. += "<span class='notice'>It has [carp_stored] carp available to spawn as.</span>"
  
  /obj/structure/carp_rift/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
  	playsound(src, 'sound/magic/lightningshock.ogg', 50, TRUE)
  