From 39a280effdc45055da0726744d73b11027b7d3f9 Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Wed, 10 Nov 2021 10:23:47 +0100 Subject: [PATCH] Shooting fuel tanks now is logged properly objects that get qdeleted are only hit once by bullets --- code/modules/projectiles/projectile.dm | 2 ++ code/modules/reagents/reagent_dispenser.dm | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index b3461ad20a9..116d69fd0b7 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -276,6 +276,8 @@ speed = round(speed) step_towards(src, locate(new_x, new_y, z)) + if(QDELETED(src)) // It hit something during the move + return if(speed <= 1) pixel_x = pixel_x_offset pixel_y = pixel_y_offset diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 962f9d6d443..2a0e07b5df3 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -107,13 +107,13 @@ return ..() /obj/structure/reagent_dispensers/fueltank/bullet_act(obj/item/projectile/P) + var/will_explode = !QDELETED(src) && !P.nodamage && (P.damage_type == BURN || P.damage_type == BRUTE) + + if(will_explode) // Log here while you have the information needed + add_attack_logs(P.firer, src, "shot with [P.name]", ATKLOG_FEW) + log_game("[key_name(P.firer)] triggered a fueltank explosion with [P.name] at [COORD(loc)]") + investigate_log("[key_name(P.firer)] triggered a fueltank explosion with [P.name] at [COORD(loc)]", INVESTIGATE_BOMB) ..() - if(!QDELETED(src)) //wasn't deleted by the projectile's effects. - if(!P.nodamage && ((P.damage_type == BURN) || (P.damage_type == BRUTE))) - add_attack_logs(P.firer, src, "shot with [P.name]", ATKLOG_FEW) - log_game("[key_name(P.firer)] triggered a fueltank explosion with [P.name] at [COORD(loc)]") - investigate_log("[key_name(P.firer)] triggered a fueltank explosion with [P.name] at [COORD(loc)]", INVESTIGATE_BOMB) - boom() /obj/structure/reagent_dispensers/fueltank/do_boom(rigtrigger = FALSE, log_attack = FALSE) // Prevent case where someone who rigged the tank is blamed for the explosion when the rig isn't what triggered the explosion if(rigtrigger) // If the explosion is triggered by an assembly holder