anchor.diff: -/// How much to scale the light range of the explosion for blastcannon shots.
  -#define BLASTCANNON_LIGHT_RANGE_SCALE (1/20)
  -/// How much to scale the heavy range of the explosion for blastcannon shots.
  -#define BLASTCANNON_HEAVY_RANGE_SCALE (1/10)
  -/// How much to scale the devastation range of the explosion for blastcannon shots.
  -#define BLASTCANNON_DEV_RANGE_SCALE (1/5)
   /// How much to scale the explosion ranges for blastcannon shots.
   #define BLASTCANNON_RANGE_EXP (1 / GLOB.DYN_EX_SCALE)
  +/// How much to scale the explosion ranges for blastcannon shots.
  +#define BLASTCANNON_RANGE_SCALE PI
   
   
   /**
  
positive.code: 	if(QDELETED(src))
  		return
  
  	heavy_ex_range = max(heavy_ex_range - 1, 0)
  	medium_ex_range = max(medium_ex_range - 1, 0)
  	light_ex_range = max(light_ex_range - 1, 0)
  
  	if(heavy_ex_range)
  		SSexplosions.highturf += loc
  	else if(medium_ex_range)
  		SSexplosions.medturf += loc
  	else if(light_ex_range)
  		SSexplosions.lowturf += loc
  	else
  		qdel(src)
  		return
  
negative.code: 	SIGNAL_HANDLER
  	. = COMSIG_CANCEL_EXPLOSION
  
  	var/heavy = (arguments[EXARG_KEY_DEV_RANGE]**BLASTCANNON_RANGE_EXP) * BLASTCANNON_RANGE_SCALE
  	var/medium = (arguments[EXARG_KEY_HEAVY_RANGE]**BLASTCANNON_RANGE_EXP) * BLASTCANNON_RANGE_SCALE
  	var/light = (arguments[EXARG_KEY_LIGHT_RANGE]**BLASTCANNON_RANGE_EXP) * BLASTCANNON_RANGE_SCALE
  	var/range = max(heavy, medium, light, 0)
  	if(!range)
  		visible_message(span_warning("[src] lets out a little \"phut\"."))
  