anchor.diff:  
   
   proc/secondaryexplosion(turf/epicenter, range)
  -	for(var/turf/tile in range(range, epicenter))
  +	for(var/turf/tile in trange(range, epicenter))
   		tile.ex_act(2)
  
positive.code: 		var/y0 = epicenter.y
  		var/z0 = epicenter.z
  
  		for(var/turf/T in range(epicenter, max_range))
  			var/dist = cheap_pythag(T.x - x0,T.y - y0)
  
  			if(dist < devastation_range)		dist = 1
  
negative.code: 	dx = abs(dx); dy = abs(dy);
  	if(dx>=dy)	return dx + (0.5*dy)	//The longest side add half the shortest side approximates the hypotenuse
  	else		return dy + (0.5*dx)
  
  proc/trange(var/Dist=0,var/turf/Center=null)//alternative to range (ONLY processes turfs and thus less intensive)
  	if(Center==null) return
  
  	//var/x1=((Center.x-Dist)<1 ? 1 : Center.x-Dist)
  	//var/y1=((Center.y-Dist)<1 ? 1 : Center.y-Dist)
  	//var/x2=((Center.x+Dist)>world.maxx ? world.maxx : Center.x+Dist)
  	//var/y2=((Center.y+Dist)>world.maxy ? world.maxy : Center.y+Dist)
  
  	var/turf/x1y1 = locate(((Center.x-Dist)<1 ? 1 : Center.x-Dist),((Center.y-Dist)<1 ? 1 : Center.y-Dist),Center.z)
  	var/turf/x2y2 = locate(((Center.x+Dist)>world.maxx ? world.maxx : Center.x+Dist),((Center.y+Dist)>world.maxy ? world.maxy : Center.y+Dist),Center.z)
  	return block(x1y1,x2y2)
  
  
  proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, adminlog = 1)
  