From 59f3c7b423b54b23b744448c68074c3ecb7bfc85 Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Wed, 5 May 2021 22:38:36 +0200 Subject: [PATCH] do_boom --- code/modules/reagents/reagent_dispenser.dm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 7e376b0ebaa..d2986ac87d1 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -11,6 +11,8 @@ var/tank_volume = 1000 //In units, how much the dispenser can hold var/reagent_id = "water" //The ID of the reagent that the dispenser uses var/lastrigger = "" // The last person to rig this fuel tank - Stored with the object. Only the last person matter for investigation + /// If the dispenser is being blown up already. Used to avoid multiple boom calls due to itself exploding etc + var/went_boom = FALSE /obj/structure/reagent_dispensers/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) . = ..() @@ -35,7 +37,13 @@ if(reagents) reagents.temperature_reagents(exposed_temperature) -/obj/structure/reagent_dispensers/proc/boom() +/obj/structure/reagent_dispensers/proc/boom(rigtrigger = FALSE, log_attack = FALSE) + if(went_boom) + return + went_boom = TRUE + do_boom(rigtrigger, log_attack) + +/obj/structure/reagent_dispensers/proc/do_boom(rigtrigger = FALSE, log_attack = FALSE) visible_message("[src] ruptures!") chem_splash(loc, 5, list(reagents)) qdel(src) @@ -89,7 +97,7 @@ investigate_log("[key_name(P.firer)] triggered a fueltank explosion with [P.name] at [COORD(loc)]", INVESTIGATE_BOMB) boom() -/obj/structure/reagent_dispensers/fueltank/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 +/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 log_game("A fueltank, last rigged by [lastrigger], triggered at [COORD(loc)]") add_attack_logs(lastrigger, src, "rigged fuel tank exploded", ATKLOG_FEW)