anchor.diff:  		beam_segments[beam_index] = null	//record start.
   
   /obj/item/projectile/proc/process_hitscan()
  -	var/safety = range * 3
  +	var/safety = range * 10
   	record_hitscan_start(RETURN_POINT_VECTOR_INCREMENT(src, Angle, MUZZLE_EFFECT_PIXEL_INCREMENT, 1))
   	while(loc && !QDELETED(src))
   		if(paused)
  
positive.code: /obj/item/projectile/proc/cleanup_beam_segments()
  	QDEL_LIST_ASSOC(beam_segments)
  	beam_segments = list()
  	qdel(beam_index)
  
  /obj/item/projectile/proc/finalize_hitscan_and_generate_tracers(impacting = TRUE)
  	if(trajectory && beam_index)
  
negative.code: 		START_PROCESSING(SSprojectiles, src)
  	pixel_move(1, FALSE)	//move it now!
  
  /obj/item/projectile/proc/setAngle(new_angle, hitscan_store_segment = TRUE)	//wrapper for overrides.
  	Angle = new_angle
  	if(!nondirectional_sprite)
  		var/matrix/M = new
  		M.Turn(Angle)
  		transform = M
  	if(fired && hitscan && trajectory && isloc(loc) && (loc != last_angle_set_hitscan_store))
  		last_angle_set_hitscan_store = loc
  		var/datum/point/pcache = trajectory.copy_to()
  		store_hitscan_collision(pcache)
  	if(trajectory)
  		trajectory.set_angle(new_angle)
  	return TRUE
  