anchor.diff:  				var/turf/Trajectory = T
   				while(Trajectory != epicenter)
   					Trajectory = get_step_towards(Trajectory, epicenter)
  -					if(Trajectory.density && Trajectory.explosion_block)
  -						dist += Trajectory.explosion_block
  -
  -					for(var/obj/machinery/door/D in Trajectory)
  -						if(D.density && D.explosion_block)
  -							dist += D.explosion_block
  +					dist += cached_exp_block[Trajectory]
   
   			var/flame_dist = 0
   //			var/throw_dist = max_range - dist
  
positive.code: 		flame_range = min (MAX_EX_FLAME_RANGE, flame_range)
  
  	spawn(0)
  		var/start = world.timeofday
  		if(!epicenter) return
  
  		var/max_range = max(devastation_range, heavy_impact_range, light_impact_range, flame_range)
  
  		if(adminlog)
  			message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[epicenter.x];Y=[epicenter.y];Z=[epicenter.z]'>JMP</a>)")
  
negative.code: 			//------- TURF FIRES -------
  
  			if(T)
  				if(flame_dist && prob(40) && !istype(T, /turf/space) && !T.density)
  					PoolOrNew(/obj/effect/hotspot, T) //Mostly for ambience!
  				if(dist > 0)
  					for(var/atom_movable in T.contents)	//bypass type checking since only atom/movable can be contained by turfs anyway
  						var/atom/movable/AM = atom_movable
  						if(AM && AM.simulated)	AM.ex_act(dist)
  					T.ex_act(dist)
  
  			//--- THROW ITEMS AROUND ---
  