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