diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm
index 953988cf929..3d0a829d875 100644
--- a/code/ATMOSPHERICS/atmospherics.dm
+++ b/code/ATMOSPHERICS/atmospherics.dm
@@ -93,6 +93,7 @@ Pipelines + Other Objects -> Pipe network
"[user] unfastens \the [src].", \
"You have unfastened \the [src].", \
"You hear ratchet.")
+ investigate_log("was REMOVED by [key_name(usr)]", "atmos")
Deconstruct()
else
return ..()
diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
index 36d74069cd1..240057ed6eb 100644
--- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
@@ -107,6 +107,8 @@ Passive gate is similar to the regular pump except:
if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command"))
return 0
+ var/old_on = on //for logging
+
if("power" in signal.data)
on = text2num(signal.data["power"])
@@ -120,6 +122,9 @@ Passive gate is similar to the regular pump except:
ONE_ATMOSPHERE*50
)
+ if(on != old_on)
+ investigate_log("was turned [on ? "on" : "off"] by a remote signal", "atmos")
+
if("status" in signal.data)
spawn(2)
broadcast_status()
@@ -147,8 +152,10 @@ Passive gate is similar to the regular pump except:
if(..()) return
if(href_list["power"])
on = !on
+ investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
if(href_list["set_press"])
target_pressure = max(0, min(4500, safe_input("Pressure control", "Enter new output pressure (0-4500kPa)", target_pressure)))
+ investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
usr.set_machine(src)
src.update_icon()
src.updateUsrDialog()
diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm
index 77508a31c7d..464b37fef82 100644
--- a/code/ATMOSPHERICS/components/binary_devices/pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm
@@ -115,6 +115,8 @@ Thus, the two variables affect pump operation are set in New():
if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command"))
return 0
+ var/old_on = on //for logging
+
if("power" in signal.data)
on = text2num(signal.data["power"])
@@ -128,6 +130,9 @@ Thus, the two variables affect pump operation are set in New():
ONE_ATMOSPHERE*50
)
+ if(on != old_on)
+ investigate_log("was turned [on ? "on" : "off"] by a remote signal", "atmos")
+
if("status" in signal.data)
spawn(2)
broadcast_status()
@@ -154,8 +159,10 @@ Thus, the two variables affect pump operation are set in New():
if(..()) return
if(href_list["power"])
on = !on
+ investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
if(href_list["set_press"])
target_pressure = max(0, min(4500, safe_input("Pressure control", "Enter new output pressure (0-4500kPa)", target_pressure)))
+ investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
usr.set_machine(src)
src.update_icon()
src.updateUsrDialog()
diff --git a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
index edd5b7bb3d5..1ed309c8919 100644
--- a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
@@ -113,6 +113,8 @@ Thus, the two variables affect pump operation are set in New():
if(!signal.data["tag"] || (signal.data["tag"] != id) || (signal.data["sigtype"]!="command"))
return 0
+ var/old_on = on //for logging
+
if("power" in signal.data)
on = text2num(signal.data["power"])
@@ -126,6 +128,9 @@ Thus, the two variables affect pump operation are set in New():
air1.volume
)
+ if(on != old_on)
+ investigate_log("was turned [on ? "on" : "off"] by a remote signal", "atmos")
+
if("status" in signal.data)
spawn(2)
broadcast_status()
@@ -151,8 +156,10 @@ Thus, the two variables affect pump operation are set in New():
if(..()) return
if(href_list["power"])
on = !on
+ investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
if(href_list["set_transfer_rate"])
transfer_rate = max(0, min(200, safe_input("Pressure control", "Enter new output pressure (0-4500kPa)", transfer_rate)))
+ investigate_log("was set to [transfer_rate] L/s by [key_name(usr)]", "atmos")
usr.set_machine(src)
src.update_icon()
src.updateUsrDialog()
diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm
index 9685f0ba257..a3e3a7fc68c 100644
--- a/code/ATMOSPHERICS/components/valve.dm
+++ b/code/ATMOSPHERICS/components/valve.dm
@@ -38,11 +38,13 @@
update_icon_nopipes()
parent1.update = 0
parent2.update = 0
+ investigate_log("was opened by [usr ? key_name(usr) : "a remote signal"]", "atmos")
return
/obj/machinery/atmospherics/binary/valve/proc/close()
open = 0
update_icon_nopipes()
+ investigate_log("was closed by [usr ? key_name(usr) : "a remote signal"]", "atmos")
return
/obj/machinery/atmospherics/binary/valve/proc/normalize_dir()
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index a097f9090ab..f6ef51806dc 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -128,6 +128,7 @@ update_flag
playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3)
src.density = 0
update_icon()
+ investigate_log("was destroyed by heat/gunfire.", "atmos")
if (src.holding)
src.holding.loc = src.loc
@@ -229,6 +230,7 @@ update_flag
/obj/machinery/portable_atmospherics/canister/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if(!istype(W, /obj/item/weapon/wrench) && !istype(W, /obj/item/weapon/tank) && !istype(W, /obj/item/device/analyzer) && !istype(W, /obj/item/device/pda))
visible_message("[user] hits \the [src] with a [W]!")
+ investigate_log("was smacked with \a [W] by [key_name(user)]", "atmos")
src.health -= W.force
src.add_fingerprint(user)
healthcheck()
@@ -294,16 +296,22 @@ Release Pressure: - air
"
+ logmsg = "Valve was closed by [key_name(usr)], stopping the transfer into the air
"
else
if (holding)
- release_log += "Valve was opened by [usr] ([usr.ckey]), starting the transfer into the [holding]
"
+ logmsg = "Valve was opened by [key_name(usr)], starting the transfer into the [holding]
"
else
- release_log += "Valve was opened by [usr] ([usr.ckey]), starting the transfer into the air
"
+ logmsg = "Valve was opened by [key_name(usr)], starting the transfer into the air
"
+ if(air_contents.toxins > 0)
+ message_admins("[key_name(usr)] (?) opened a canister that contains plasma! (JMP)")
+ log_admin("[key_name(usr)] opened a canister that contains plasma at [x], [y], [z]")
+ investigate_log(logmsg, "atmos")
+ release_log += logmsg
valve_open = !valve_open
if (href_list["remove_tank"])
diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm
index 7b128727942..3f88d8c4f62 100644
--- a/code/modules/admin/admin_investigate.dm
+++ b/code/modules/admin/admin_investigate.dm
@@ -22,12 +22,12 @@
F << "[time2text(world.timeofday,"hh:mm")] \ref[src] ([x],[y],[z]) || [src] [message]
"
//ADMINVERBS
-/client/proc/investigate_show( subject in list("hrefs","notes","ntsl","singulo","wires","telesci", "gravity", "records", "cargo", "supermatter") )
+/client/proc/investigate_show( subject in list("hrefs","notes","ntsl","singulo","wires","telesci", "gravity", "records", "cargo", "supermatter", "atmos") )
set name = "Investigate"
set category = "Admin"
if(!holder) return
switch(subject)
- if("singulo", "ntsl", "wires", "telesci", "gravity", "records", "cargo", "supermatter") //general one-round-only stuff
+ if("singulo", "ntsl", "wires", "telesci", "gravity", "records", "cargo", "supermatter", "atmos") //general one-round-only stuff
var/F = investigate_subject2file(subject)
if(!F)
src << "Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed."