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
..()