anchor.diff:  			else if(damage >= damage_archived) // The damage is still going up
   				radio.talk_into(src, "[warning_alert] Integrity: [get_integrity()]%", engineering_channel, get_spans(), get_default_language())
   				lastwarning = REALTIMEOFDAY - (WARNING_DELAY * 5)
  -
   			else                                                 // Phew, we're safe
   				radio.talk_into(src, "[safe_alert] Integrity: [get_integrity()]%", engineering_channel, get_spans(), get_default_language())
   				lastwarning = REALTIMEOFDAY
  -
   			if(power > POWER_PENALTY_THRESHOLD)
   				radio.talk_into(src, "Warning: Hyperstructure has reached dangerous power level.", engineering_channel, get_spans(), get_default_language())
   				if(powerloss_inhibitor < 0.5)
   					radio.talk_into(src, "DANGER: CHARGE INERTIA CHAIN REACTION IN PROGRESS.", engineering_channel, get_spans(), get_default_language())
  -
   			if(combined_gas > MOLE_PENALTY_THRESHOLD)
   				radio.talk_into(src, "Warning: Critical coolant mass reached.", engineering_channel, get_spans(), get_default_language())
   
  -		if(damage > explosion_point)
  -			for(var/mob in GLOB.living_mob_list)
  -				var/mob/living/L = mob
  -				if(istype(L) && L.z == z)
  -					if(ishuman(mob))
  -						//Hilariously enough, running into a closet should make you get hit the hardest.
  -						var/mob/living/carbon/human/H = mob
  -						H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) )
  -					var/rads = DETONATION_RADS * sqrt( 1 / (get_dist(L, src) + 1) )
  -					L.rad_act(rads)
  -
  -			explode()
  -
  -
  -	power -= ((power/500)**3) * powerloss_inhibitor
  -
  -	return 1
  +/obj/machinery/power/supermatter_shard/proc/SM_autoprocess_proximity()
  +	for(var/mob/living/carbon/human/l in view(src, HALLUCINATION_RANGE(power))) // If they can see it without mesons on.  Bad on them.
  +		if(!istype(l.glasses, /obj/item/clothing/glasses/meson))
  +			var/D = sqrt(1 / max(1, get_dist(l, src)))
  +			l.hallucination += (power * config_hallucination_power * D) * PROCESSING_HANDICAP
  +			l.hallucination = Clamp(0, 200, l.hallucination)
  +	for(var/mob/living/l in range(src, round((power / 100) ** 0.25)))
  +		var/rads = ((power / 10) * sqrt( 1 / max(get_dist(l, src),1))) * PROCESSING_HANDICAP
  +		l.rad_act(rads)
  +	if(has_gas)		//no gas no power for you!
  +		for(var/obj/machinery/power/rad_collector/R in GLOB.rad_collectors)
  +			if(R.z == z && get_dist(R, src) <= 15) //Better than using orange() every process
  +				R.receive_pulse(power * (1 + power_transmission_bonus)/10 * freon_transmit_modifier)
  +
  +/obj/machinery/power/supermatter_shard/proc/SM_autoprocess_damage(datum/gas_mixture/removed, turf/T)
  +	damage_archived = damage
  +	if(!removed || !removed.total_moles() || isspaceturf(T)) //we're in space or there is no gas to process
  +		damage = min(damage_archived + (DAMAGE_HARDCAP * explosion_point),max((power-1600)/10, 0) + damage)
  +	else
  +		//causing damage
  +		damage = max(damage + ((max(removed.temperature - ((T0C + HEAT_PENALTY_THRESHOLD)*dynamic_heat_resistance), 0) * mole_heat_penalty / 150 ) * DAMAGE_INCREASE_MULTIPLIER) * PROCESSING_HANDICAP, 0)
  +		damage = max(damage + ((max(power - POWER_PENALTY_THRESHOLD, 0)/500) * DAMAGE_INCREASE_MULTIPLIER) * PROCESSING_HANDICAP, 0)
  +		damage = max(damage + ((max(combined_gas - MOLE_PENALTY_THRESHOLD, 0)/80) * DAMAGE_INCREASE_MULTIPLIER) * PROCESSING_HANDICAP, 0)
  +		//healing damage
  +		if(has_gas)		//No gas you go kaboom.
  +			if(combined_gas < MOLE_PENALTY_THRESHOLD)
  +				damage = max(damage + ((min(removed.temperature - (T0C + HEAT_PENALTY_THRESHOLD), 0) / 150 ) * PROCESSING_HANDICAP), 0)
  +			//capping damage
  +		damage = min(damage_archived + (DAMAGE_HARDCAP * explosion_point),damage)
  +		if(damage > damage_archived && prob(10))
  +			playsound(get_turf(src), 'sound/effects/empulse.ogg', 50, 1)
  +
  +/obj/machinery/power/supermatter_shard/proc/SM_autoprocess_lightning()
  +	if(power > POWER_PENALTY_THRESHOLD)
  +		playsound(src.loc, 'sound/weapons/emitter2.ogg', 100, 1, extrarange = 10)
  +		supermatter_zap(src, 5, min(power*2, 20000))
  +		supermatter_zap(src, 5, min(power*2, 20000))
  +		if(power > SEVERE_POWER_PENALTY_THRESHOLD)
  +			supermatter_zap(src, 5, min(power*2, 20000))
  +			if(power > CRITICAL_POWER_PENALTY_THRESHOLD)
  +				supermatter_zap(src, 5, min(power*2, 20000))
  +	else if (damage > damage_penalty_point && prob(20))
  +		playsound(src.loc, 'sound/weapons/emitter2.ogg', 100, 1, extrarange = 10)
  +		supermatter_zap(src, 5, Clamp(power*2, 4000, 20000))
  +
  +/obj/machinery/power/supermatter_shard/proc/SM_autoprocess_anomaly()
  +	if(prob(15) && power > POWER_PENALTY_THRESHOLD)
  +		supermatter_pull(src, power/750)
  +	if(prob(5))
  +		supermatter_anomaly_gen(src, FLUX_ANOMALY, rand(5, 10))
  +	if(power > SEVERE_POWER_PENALTY_THRESHOLD && prob(5) || prob(1))
  +		supermatter_anomaly_gen(src, GRAVITATIONAL_ANOMALY, rand(5, 10))
  +	if(power > SEVERE_POWER_PENALTY_THRESHOLD && prob(2) || prob(0.3) && power > POWER_PENALTY_THRESHOLD)
  +		supermatter_anomaly_gen(src, PYRO_ANOMALY, rand(5, 10))
   
   /obj/machinery/power/supermatter_shard/bullet_act(obj/item/projectile/Proj)
   	var/turf/L = loc
  
positive.code: 	investigate_log("has been attacked ([cause]) by [nom]", INVESTIGATE_SUPERMATTER)
  	playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1)
  	Consume(nom)
  
  /obj/machinery/power/supermatter_shard/proc/transfer_energy()
  	for(var/obj/machinery/power/rad_collector/R in GLOB.rad_collectors)
  		if(R.z == z && get_dist(R, src) <= 15) //Better than using orange() every process
  			R.receive_pulse(power * (1 + power_transmission_bonus)/10 * freon_transmit_modifier)
  
  /obj/machinery/power/supermatter_shard/attackby(obj/item/W, mob/living/user, params)
  	if(!istype(W) || (W.flags & ABSTRACT) || !istype(user))
  
negative.code: 	var/mole_heat_penalty = 0
  	var/freon_transmit_modifier = 1
  
  	var/device_energy = 0
  
  	var/has_gas = TRUE		//Whether we have gas to process.
  
  	var/matter_power = 0
  
  	var/temp_factor = 30
  	var/temp_factor_normal = 30
  	var/temp_factor_optimal = 50
  
  
  	//Temporary values so that we can optimize this
  	//How much the bullets damage should be multiplied by when it is added to the internal variables
  