anchor.diff:  		pin = new
   
   /obj/item/gun/blastcannon/Destroy()
  -	QDEL_NULL(bomb)
  +	if(bomb)
  +		QDEL_NULL(bomb)
   	return ..()
   
   /obj/item/gun/blastcannon/attack_self(mob/user)
  
positive.code: 	nodamage = FALSE
  	movement_type = FLYING
  	projectile_phasing = ALL		// just blows up the turfs lmao
  	var/heavyr = 0
  	var/mediumr = 0
  	var/lightr = 0
  	var/hugbox = TRUE
  	range = 150
  
  /obj/projectile/blastwave/Initialize(mapload, _h, _m, _l)
  	heavyr = _h
  	mediumr = _m
  	lightr = _l
  	return ..()
  
  /obj/projectile/blastwave/Range()
  	..()
  	var/amount_destruction = EXPLODE_NONE
  	var/wallbreak_chance = 0
  	if(heavyr)
  		amount_destruction = EXPLODE_DEVASTATE
  		wallbreak_chance = 99
  	else if(mediumr)
  		amount_destruction = EXPLODE_HEAVY
  		wallbreak_chance = 66
  	else if(lightr)
  		amount_destruction = EXPLODE_LIGHT
  		wallbreak_chance = 33
  	if(amount_destruction)
  		if(hugbox)
  			loc.contents_explosion(EXPLODE_HEAVY, loc)
  			if(istype(loc, /turf/closed/wall))
  				var/turf/closed/wall/W = loc
  				if(prob(wallbreak_chance))
  					W.dismantle_wall(TRUE, TRUE)
  		else
  			switch(amount_destruction)
  				if(EXPLODE_DEVASTATE)
  					SSexplosions.highturf += loc
  				if(EXPLODE_HEAVY)
  					SSexplosions.medturf += loc
  				if(EXPLODE_LIGHT)
  					SSexplosions.lowturf += loc
  	else
  		qdel(src)
  
  	heavyr = max(heavyr - 1, 0)
  	mediumr = max(mediumr - 1, 0)
  	lightr = max(lightr - 1, 0)
  
  /obj/projectile/blastwave/ex_act()
  	return
  
negative.code: 	return ..()
  
  /obj/item/gun/blastcannon/update_icon_state()
  	. = ..()
  	icon_state = bomb ? icon_state_loaded : initial(icon_state)
  
  /obj/item/gun/blastcannon/attackby(obj/item/transfer_valve/bomb_to_attach, mob/user)
  	if(!istype(bomb_to_attach))
  		return ..()
  
  	if(!bomb_to_attach.tank_one || !bomb_to_attach.tank_two)
  		to_chat(user, "<span class='warning'>What good would an incomplete bomb do?</span>")
  		return FALSE
  	if(!user.transferItemToLoc(bomb_to_attach, src))
  		to_chat(user, "<span class='warning'>[bomb_to_attach] seems to be stuck to your hand!</span>")
  		return FALSE
  
  	user.visible_message("<span class='warning'>[user] attaches [bomb_to_attach] to [src]!</span>")
  	bomb = bomb_to_attach
  	name = "blast cannon"
  	desc = "A makeshift device used to concentrate a bomb's blast energy to a narrow wave."
  	update_icon()
  	return TRUE
  
  /// Handles the bomb power calculations
  /obj/item/gun/blastcannon/proc/calculate_bomb()
  	if(!istype(bomb) || !istype(bomb.tank_one) || !istype(bomb.tank_two))
  		return 0
  
  	var/datum/gas_mixture/temp = new(max(reaction_volume_mod, 0))
  	bomb.merge_gases(temp)
  
  	if(prereaction)
  		temp.react(src)
  		var/prereaction_pressure = temp.return_pressure()
  