anchor.diff:  	if(hasShocked)
   		return 0
   	if(isliving(user))
  +		var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
  +		s.set_up(5, 1, user.loc)
  +		s.start()
  +
   		hasShocked = 1
   		var/shock_damage = min(rand(30,40),rand(30,40))
   
  
positive.code: 			"<span class='danger'>You hear an electrical crack.</span>")
  
  		user.updatehealth()
  		bump(user)
  
  		spawn(5)
  			hasShocked = 0
  	return
  
  /obj/machinery/field/proc/bump(atom/movable/AM as mob|obj)
  	var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
  	s.set_up(5, 1, AM.loc)
  	s.start()
  	var/atom/target = get_edge_target_turf(AM, get_dir(src, get_step_away(AM, src)))
  	AM.throw_at(target, 200, 4)
  
negative.code: /obj/machinery/field
  	var/hasShocked = 0 //Used to add a delay between shocks. In some cases this used to crash servers by spawning hundreds of sparks every second.
  
  /obj/machinery/field/CanPass(atom/movable/mover, turf/target, height=0)
  	if(isliving(mover)) // Don't let mobs through
  		shock(mover)
  		return 0
  	return ..()
  
  