diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm index 08601522c5e..785e4549a47 100644 --- a/code/modules/assembly/igniter.dm +++ b/code/modules/assembly/igniter.dm @@ -28,7 +28,7 @@ if(istype(src.loc.loc, /obj/structure/reagent_dispensers/fueltank/)) var/obj/structure/reagent_dispensers/fueltank/tank = src.loc.loc if(tank) - tank.boom() + tank.boom(TRUE) if(istype(src.loc.loc, /obj/item/reagent_containers/glass/beaker/)) var/obj/item/reagent_containers/glass/beaker/beakerbomb = src.loc.loc if(beakerbomb) @@ -41,4 +41,4 @@ /obj/item/assembly/igniter/attack_self(mob/user as mob) activate() add_fingerprint(user) - return \ No newline at end of file + return diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index a80c4142d87..7bd02ab26dd 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -9,6 +9,7 @@ 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 /obj/structure/reagent_dispensers/attackby(obj/item/W, mob/user, params) return @@ -77,11 +78,16 @@ ..() if(!QDELETED(src)) //wasn't deleted by the projectile's effects. if(!P.nodamage && ((P.damage_type == BURN) || (P.damage_type == BRUTE))) - message_admins("[key_name_admin(P.firer)] triggered a fueltank explosion.") - log_game("[key_name(P.firer)] triggered a fueltank explosion.") + message_admins("[key_name_admin(P.firer)] triggered a fueltank explosion with [P.name] at [COORD(loc)] ") + 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/boom() +/obj/structure/reagent_dispensers/fueltank/boom(var/rigtrigger = 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 == TRUE) // If the explosion is triggered by an assembly holder + message_admins("A fueltank, last rigged by [lastrigger], had exploded at [COORD(loc)]") // Then admin is informed of the last person who rigged the fuel tank + log_game("A fueltank, last rigged by [lastrigger], had exploded at [COORD(loc)]") + investigate_log("A fueltank, last rigged by [lastrigger], had exploded at [COORD(loc)]", INVESTIGATE_BOMB) explosion(loc, 0, 1, 5, 7, 10, flame_range = 5) qdel(src) @@ -111,6 +117,7 @@ usr.visible_message("[usr] detaches [rig] from [src].", "You detach [rig] from [src].") rig.forceMove(get_turf(usr)) rig = null + lastrigger = null overlays.Cut() /obj/structure/reagent_dispensers/fueltank/attackby(obj/item/I, mob/user, params) @@ -124,9 +131,11 @@ var/obj/item/assembly_holder/H = I if(istype(H.a_left, /obj/item/assembly/igniter) || istype(H.a_right, /obj/item/assembly/igniter)) - msg_admin_attack("[key_name_admin(user)] rigged a fueltank for explosion (JMP)") - log_game("[key_name(user)] rigged fueltank a fueltank for explosion at [loc.x], [loc.y], [loc.z]") + msg_admin_attack("[key_name_admin(user)] rigged [src.name] with [I.name] for explosion (JMP)") + log_game("[key_name(user)] rigged [src.name] with [I.name] for explosion at [COORD(loc)]") + investigate_log("[key_name(user)] rigged [src.name] with [I.name] for explosion at [COORD(loc)]", INVESTIGATE_BOMB) + lastrigger = "[key_name(user)]" rig = H user.drop_item() H.forceMove(src) @@ -151,8 +160,9 @@ W.update_icon() else user.visible_message("[user] catastrophically fails at refilling \his [W]!", "That was stupid of you.") - message_admins("[key_name_admin(user)] triggered a fueltank explosion.") - log_game("[key_name(user)] triggered a fueltank explosion.") + message_admins("[key_name_admin(user)] triggered a fueltank explosion at [COORD(loc)]") + log_game("[key_name(user)] triggered a fueltank explosion at [COORD(loc)]") + investigate_log("[key_name(user)] triggered a fueltank explosion at [COORD(loc)]", INVESTIGATE_BOMB) boom() else ..()