diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm
index 1bd7d02609..7c7af4e27b 100644
--- a/code/modules/projectiles/guns/misc/blastcannon.dm
+++ b/code/modules/projectiles/guns/misc/blastcannon.dm
@@ -19,9 +19,7 @@
pin = new
/obj/item/gun/blastcannon/Destroy()
- if(bomb)
- qdel(bomb)
- bomb = null
+ QDEL_NULL(bomb)
return ..()
/obj/item/gun/blastcannon/attack_self(mob/user)
@@ -49,17 +47,17 @@
if(!T.tank_one || !T.tank_two)
to_chat(user, "What good would an incomplete bomb do?")
return FALSE
- if(!user.transferItemToLoc(O, src))
- to_chat(user, "[O] seems to be stuck to your hand!")
+ if(!user.transferItemToLoc(T, src))
+ to_chat(user, "[T] seems to be stuck to your hand!")
return FALSE
- user.visible_message("[user] attaches [O] to [src]!")
- bomb = O
+ user.visible_message("[user] attaches [T] to [src]!")
+ bomb = T
update_icon()
return TRUE
return ..()
/obj/item/gun/blastcannon/proc/calculate_bomb()
- if(!istype(bomb)||!istype(bomb.tank_one)||!istype(bomb.tank_two))
+ if(!istype(bomb) || !istype(bomb.tank_one) || !istype(bomb.tank_two))
return 0
var/datum/gas_mixture/temp = new(60) //directional buff.
temp.merge(bomb.tank_one.air_contents.remove_ratio(1))
@@ -70,18 +68,18 @@
qdel(temp)
if(pressure < TANK_FRAGMENT_PRESSURE)
return 0
- return (pressure/TANK_FRAGMENT_SCALE)
+ return (pressure / TANK_FRAGMENT_SCALE)
/obj/item/gun/blastcannon/afterattack(atom/target, mob/user, flag, params)
if((!bomb) || (!target) || (get_dist(get_turf(target), get_turf(user)) <= 2))
return ..()
var/power = calculate_bomb()
- qdel(bomb)
+ QDEL_NULL(bomb)
update_icon()
var/heavy = power * 0.2
var/medium = power * 0.5
var/light = power
- user.visible_message("[user] opens \the [bomb] on \his [name] and fires a blast wave at \the [target]!","You open \the [bomb] on your [name] and fire a blast wave at \the [target]!")
+ user.visible_message("[user] opens [bomb] on [user.p_their()] [name] and fires a blast wave at [target]!","You open [bomb] on your [name] and fire a blast wave at [target]!")
playsound(user, "explosion", 100, 1)
var/turf/starting = get_turf(user)
var/turf/targturf = get_turf(target)
@@ -111,17 +109,21 @@
/obj/item/projectile/blastwave/Range()
..()
+ var/amount_destruction = EXPLODE_NONE
if(heavyr)
- loc.ex_act(EXPLODE_DEVASTATE)
+ amount_destruction = EXPLODE_DEVASTATE
else if(mediumr)
- loc.ex_act(EXPLODE_HEAVY)
+ amount_destruction = EXPLODE_HEAVY
else if(lightr)
- loc.ex_act(EXPLODE_LIGHT)
+ amount_destruction = EXPLODE_LIGHT
+ if(amount_destruction)
+ loc.ex_act(amount_destruction)
else
qdel(src)
- heavyr--
- mediumr--
- lightr--
+
+ heavyr = max(heavyr - 1, 0)
+ mediumr = max(mediumr - 1, 0)
+ lightr = max(lightr - 1, 0)
/obj/item/projectile/blastwave/ex_act()
- return
+ return
\ No newline at end of file