diff --git a/code/__DEFINES/wires.dm b/code/__DEFINES/wires.dm
index 633dcc360c2..2b4c528abc2 100644
--- a/code/__DEFINES/wires.dm
+++ b/code/__DEFINES/wires.dm
@@ -64,12 +64,6 @@
#define WIRE_ZAP1 "High Voltage Circuit 1"
#define WIRE_ZAP2 "High Voltage Circuit 2"
#define WIRE_OVERCLOCK "Overclock"
-#define WIRE_VALVE "Valve"
-#define WIRE_SHIELDING "Shielding"
-#define WIRE_REGULATOR_MIN "Minimize Regulator Pressure"
-#define WIRE_REGULATOR_MAX "Maximize Regulator Pressure"
-#define WIRE_TANK_EJECT "Eject Tank"
-#define WIRE_REACTION_SUPPRESSION "Reaction Suppression"
// Wire states for the AI
#define AI_WIRE_NORMAL 0
diff --git a/code/datums/wires/canister.dm b/code/datums/wires/canister.dm
deleted file mode 100644
index c692ff22872..00000000000
--- a/code/datums/wires/canister.dm
+++ /dev/null
@@ -1,33 +0,0 @@
-/datum/wires/canister
- holder_type = /obj/machinery/portable_atmospherics/canister
- proper_name = "Canister"
-
-/datum/wires/canister/New(atom/holder)
- wires = list(WIRE_VALVE, WIRE_SHIELDING, WIRE_REGULATOR_MIN, WIRE_REGULATOR_MAX, WIRE_TANK_EJECT, WIRE_REACTION_SUPPRESSION)
- ..()
-
-/datum/wires/canister/on_pulse(wire)
- var/obj/machinery/portable_atmospherics/canister/the_canister = holder
- if(!the_canister.internal_cell)
- return
- switch(wire)
- if(WIRE_VALVE)
- the_canister.toggle_valve(usr, wire_pulsed = TRUE)
- if(WIRE_SHIELDING)
- the_canister.toggle_shielding(usr, wire_pulsed = TRUE)
- if(WIRE_TANK_EJECT)
- the_canister.eject_tank(usr, wire_pulsed = TRUE)
- if(WIRE_REGULATOR_MIN)
- the_canister.release_pressure = CAN_MIN_RELEASE_PRESSURE
- the_canister.investigate_log("was set to [the_canister.release_pressure] kPa by [key_name(usr)] via wire pulse.", INVESTIGATE_ATMOS)
- if(WIRE_REGULATOR_MAX)
- the_canister.release_pressure = CAN_MAX_RELEASE_PRESSURE
- the_canister.investigate_log("was set to [the_canister.release_pressure] kPa by [key_name(usr)] via wire pulse.", INVESTIGATE_ATMOS)
- if(WIRE_REACTION_SUPPRESSION)
- the_canister.toggle_reaction_suppression(usr, wire_pulsed = TRUE)
-
-/datum/wires/canister/can_reveal_wires(mob/user)
- if(HAS_TRAIT(user, TRAIT_KNOW_ENGI_WIRES))
- return TRUE
-
- return ..()
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index bef8eb7300d..18fe9817e81 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -38,12 +38,6 @@
var/obj/item/stock_parts/cell/internal_cell
///used while processing to update appearance only when its pressure state changes
var/current_pressure_state
- /// An assembly attached to the canister
- var/obj/item/assembly_holder/rig = null
- /// The person who attached an assembly to this canister, usually for ignition purposes in tandem with valve wire pulse
- var/mob/last_rigger = ""
- //overlay of attached assemblies
- var/mutable_appearance/assemblies_overlay
/datum/armor/portable_atmospherics_canister
melee = 50
@@ -60,8 +54,6 @@
if(mapload)
internal_cell = new /obj/item/stock_parts/cell/high(src)
- set_wires(new /datum/wires/canister(src))
-
if(existing_mixture)
air_contents.copy_from(existing_mixture)
else
@@ -81,17 +73,6 @@
AddComponent(/datum/component/gas_leaker, leak_rate=0.01)
register_context()
-/obj/machinery/portable_atmospherics/canister/Destroy()
- QDEL_NULL(wires)
- return ..()
-
-/obj/machinery/portable_atmospherics/canister/Exited(atom/movable/gone)
- if(gone == rig)
- rig = null
- last_rigger = null
- cut_overlays(assemblies_overlay)
- return ..()
-
/obj/machinery/portable_atmospherics/canister/interact(mob/user)
. = ..()
if(!allowed(user))
@@ -101,14 +82,10 @@
/obj/machinery/portable_atmospherics/canister/add_context(atom/source, list/context, obj/item/held_item, mob/user)
. = ..()
- if(rig)
- context[SCREENTIP_CONTEXT_RMB] = "Remove rigged device"
if(holding)
context[SCREENTIP_CONTEXT_ALT_LMB] = "Remove tank"
if(!held_item)
return CONTEXTUAL_SCREENTIP_SET
- if(istype(held_item, /obj/item/assembly_holder))
- context[SCREENTIP_CONTEXT_LMB] = "Rig"
if(istype(held_item, /obj/item/stock_parts/cell))
context[SCREENTIP_CONTEXT_LMB] = "Insert cell"
switch(held_item.tool_behaviour)
@@ -132,11 +109,6 @@
. += span_notice("Warning, no cell installed, use a screwdriver to open the hatch and insert one.")
if(panel_open)
. += span_notice("Hatch open, close it with a screwdriver.")
- if(get_dist(user, src) <= 2)
- if(rig)
- . += span_warning("There is some kind of device rigged to the canister!")
- else
- . += span_notice("It looks like you could rig a device to the canister.")
// Please keep the canister types sorted
// Basic canister per gas below here
@@ -411,50 +383,8 @@
balloon_alert(user, "you install the cell")
internal_cell = active_cell
return TRUE
- if(is_wire_tool(item) && panel_open)
- wires.interact(user)
- return
- if(istype(item, /obj/item/assembly_holder))
- if(rig)
- balloon_alert(user, "another device is in the way!")
- return ..()
- var/obj/item/assembly_holder/holder = item
-
- user.balloon_alert_to_viewers("attaching rig...")
- add_fingerprint(user)
- if(!do_after(user, 2 SECONDS, target = src) || !user.transferItemToLoc(holder, src))
- return
- rig = holder
- holder.master = src
- holder.on_attach()
- assemblies_overlay = holder
- assemblies_overlay.layer = 3.3
- assemblies_overlay.pixel_y -= 5
- add_overlay(assemblies_overlay)
- log_bomber(user, "attached [holder.name] to ", src)
- last_rigger = user
- user.balloon_alert_to_viewers("attached rig")
- return
-
return ..()
-/obj/machinery/portable_atmospherics/canister/attack_hand_secondary(mob/user, list/modifiers)
- if(!rig)
- return
- // mousetrap rigs only make sense if you can set them off, can't step on them
- // If you see a mousetrap-rigged fuel tank, just leave it alone
- rig.on_found()
- if(QDELETED(src))
- return
- user.balloon_alert_to_viewers("detaching rig...")
- if(!do_after(user, 2 SECONDS, target = src))
- return
- user.balloon_alert_to_viewers("detached rig")
- user.log_message("detached [rig] from [src].", LOG_GAME)
- if(!user.put_in_hands(rig))
- rig.forceMove(get_turf(user))
- return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
-
/obj/machinery/portable_atmospherics/canister/screwdriver_act(mob/living/user, obj/item/screwdriver)
if(default_deconstruction_screwdriver(user, icon_state, icon_state, screwdriver))
update_appearance()
@@ -723,39 +653,47 @@
update_appearance()
-
/// Opens/closes the canister valve
/obj/machinery/portable_atmospherics/canister/proc/toggle_valve(mob/user, wire_pulsed = FALSE)
- var/logmsg
- var/admin_msg
- var/danger = FALSE
- var/n = 0
valve_open = !valve_open
- if(valve_open)
- SSair.start_processing_machine(src)
- logmsg = "Valve was opened by [key_name(user)] [wire_pulsed ? "via wire pulse" : ""], starting a transfer into \the [holding || "air"].
"
- if(!holding)
- var/list/gaseslog = list() //list for logging all gases in canister
- for(var/id in air_contents.gases)
- var/gas = air_contents.gases[id]
- gaseslog[gas[GAS_META][META_GAS_NAME]] = gas[MOLES] //adds gases to gaseslog
- if(!gas[GAS_META][META_GAS_DANGER])
- continue
- if(gas[MOLES] > (gas[GAS_META][META_GAS_MOLES_VISIBLE] || MOLES_GAS_VISIBLE)) //if moles_visible is undefined, default to default visibility
- danger = TRUE //at least 1 danger gas
- logmsg = "[key_name(user)] opened a canister [wire_pulsed ? "via wire pulse" : ""] that contains the following:"
- admin_msg = "[ADMIN_LOOKUPFLW(user)] opened a canister [wire_pulsed ? "via wire pulse" : ""] that contains the following at [ADMIN_VERBOSEJMP(src)]:"
- for(var/name in gaseslog)
- n = n + 1
- logmsg += "\n[name]: [gaseslog[name]] moles."
- if(n <= 5) //the first five gases added
- admin_msg += "\n[name]: [gaseslog[name]] moles."
- if(n == 5 && length(gaseslog) > 5) //message added if more than 5 gases
- admin_msg += "\nToo many gases to log. Check investigate log."
- if(danger) //sent to admin's chat if contains dangerous gases
- message_admins(admin_msg)
- else
- logmsg = "valve was closed by [key_name(user)] [wire_pulsed ? "via wire pulse" : ""], stopping the transfer into \the [holding || "air"].
"
+ if(!valve_open)
+ var/logmsg = "valve was closed by [key_name(user)] [wire_pulsed ? "via wire pulse" : ""], stopping the transfer into \the [holding || "air"].
"
+ investigate_log(logmsg, INVESTIGATE_ATMOS)
+ release_log += logmsg
+ return
+
+ SSair.start_processing_machine(src)
+ if(holding)
+ var/logmsg = "Valve was opened by [key_name(user)] [wire_pulsed ? "via wire pulse" : ""], starting a transfer into \the [holding || "air"].
"
+ investigate_log(logmsg, INVESTIGATE_ATMOS)
+ release_log += logmsg
+ return
+
+ // Go over the gases in canister, pull all their info and mark the spooky ones
+ var/list/output = list()
+ output += "[key_name(user)] opened a canister [wire_pulsed ? "via wire pulse" : ""] that contains the following:"
+ var/list/admin_output = list()
+ admin_output += "[ADMIN_LOOKUPFLW(user)] opened a canister [wire_pulsed ? "via wire pulse" : ""] that contains the following at [ADMIN_VERBOSEJMP(src)]:"
+ var/list/gases = air_contents.gases
+ var/danger = FALSE
+ for(var/gas_index in 1 to length(gases))
+ var/list/gas_info = gases[gases[gas_index]]
+ var/list/meta = gas_info[GAS_META]
+ var/name = meta[META_GAS_NAME]
+ var/moles = gas_info[MOLES]
+
+ output += "[name]: [moles] moles."
+ if(gas_index <= 5) //the first five gases added
+ admin_output += "[name]: [moles] moles."
+ else if(gas_index == 6) // anddd the warning
+ admin_output += "Too many gases to log. Check investigate log."
+ //if moles_visible is undefined, default to default visibility
+ if(meta[META_GAS_DANGER] && moles > (meta[META_GAS_MOLES_VISIBLE] || MOLES_GAS_VISIBLE))
+ danger = TRUE
+
+ if(danger) //sent to admin's chat if contains dangerous gases
+ message_admins(admin_output.Join("\n"))
+ var/logmsg = output.Join("\n")
investigate_log(logmsg, INVESTIGATE_ATMOS)
release_log += logmsg
@@ -769,12 +707,13 @@
/// Ejects tank from canister, if any
/obj/machinery/portable_atmospherics/canister/proc/eject_tank(mob/user, wire_pulsed = FALSE)
- if(holding)
- if(valve_open)
- message_admins("[ADMIN_LOOKUPFLW(user)] removed [holding] from [src] with valve still open [wire_pulsed ? "via wire pulse" : ""] at [ADMIN_VERBOSEJMP(src)] releasing contents into the [span_boldannounce("air")].")
- user.investigate_log("removed the [holding] [wire_pulsed ? "via wire pulse" : ""], leaving the valve open and transferring into the [span_boldannounce("air")].", INVESTIGATE_ATMOS)
- replace_tank(user, FALSE)
- return TRUE
+ if(!holding)
+ return FALSE
+ if(valve_open)
+ message_admins("[ADMIN_LOOKUPFLW(user)] removed [holding] from [src] with valve still open [wire_pulsed ? "via wire pulse" : ""] at [ADMIN_VERBOSEJMP(src)] releasing contents into the [span_boldannounce("air")].")
+ user.investigate_log("removed the [holding] [wire_pulsed ? "via wire pulse" : ""], leaving the valve open and transferring into the [span_boldannounce("air")].", INVESTIGATE_ATMOS)
+ replace_tank(user, FALSE)
+ return TRUE
/// Turns hyper-noblium crystal reaction suppression in the canister on or off
/obj/machinery/portable_atmospherics/canister/proc/toggle_reaction_suppression(mob/user, wire_pulsed = FALSE)
diff --git a/tgstation.dme b/tgstation.dme
index b06cf4b55b9..1615237a9b7 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1904,7 +1904,6 @@
#include "code\datums\wires\airlock.dm"
#include "code\datums\wires\apc.dm"
#include "code\datums\wires\autolathe.dm"
-#include "code\datums\wires\canister.dm"
#include "code\datums\wires\conveyor.dm"
#include "code\datums\wires\ecto_sniffer.dm"
#include "code\datums\wires\emitter.dm"