anchor.diff:  
   		pixel_x = 0
   		pixel_y = 0
  -		shocked_things.Cut()
  -		tesla_zap(src, 3, TESLA_DEFAULT_POWER, shocked_targets = shocked_things)
  +		shocked_things.Cut(1, shocked_things.len / 1.3)
  +		var/list/shocking_info = list()
  +		tesla_zap(src, 3, TESLA_DEFAULT_POWER, shocked_targets = shocking_info)
   
   		pixel_x = -32
   		pixel_y = -32
   		for (var/ball in orbiting_balls)
   			var/range = rand(1, clamp(orbiting_balls.len, 2, 3))
   			var/list/temp_shock = list()
  -			tesla_zap(ball, range, TESLA_MINI_POWER/7*range, shocked_targets = temp_shock)
  -			shocked_things += temp_shock
  +			//We zap off the main ball instead of ourselves to make things looks proper
  +			tesla_zap(src, range, TESLA_MINI_POWER/7*range, shocked_targets = temp_shock)
  +			shocking_info += temp_shock
  +		shocked_things += shocking_info
   
   /obj/energy_ball/examine(mob/user)
   	. = ..()
  
positive.code: 
  /obj/energy_ball/proc/move(move_amount)
  	var/list/dirs = GLOB.alldirs.Copy()
  	for (var/i in 1 to 30)
  		var/atom/real_thing = pick(shocked_things)
  		dirs += get_dir(src, real_thing) //Carry some momentum yeah? Just a bit tho
  	for (var/i in 0 to move_amount)
  		var/move_dir = pick(dirs) //ensures teslas don't just sit around
  		if (target && prob(10))
  
negative.code: 		power /= 1.5
  
  	else
  		power = closest_atom.zap_act(power, zap_flags)
  	if(prob(20))//I know I know
  		var/list/shocked_copy = shocked_targets.Copy()
  		tesla_zap(closest_atom, next_range, power * 0.5, zap_flags, shocked_copy)//Normally I'd copy here so grounding rods work properly, but it fucks with movement
  		tesla_zap(closest_atom, next_range, power * 0.5, zap_flags, shocked_targets)
  		shocked_targets += shocked_copy
  	else
  		tesla_zap(closest_atom, next_range, power, zap_flags, shocked_targets)
  
  