diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
index 4f3c3d65635..c96a1b0b325 100644
--- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
@@ -88,7 +88,7 @@
return 1
-/obj/machinery/atmospherics/binary/passive_gate/interact(mob/user as mob)
+/obj/machinery/atmospherics/binary/passive_gate/interact(mob/user)
var/dat = {"Power: [on?"On":"Off"]
Desirable output pressure:
[round(target_pressure,0.1)]kPa | Change
@@ -131,32 +131,37 @@
update_icon()
return
-/obj/machinery/atmospherics/binary/passive_gate/attack_hand(user as mob)
+/obj/machinery/atmospherics/binary/passive_gate/attack_hand(mob/user)
if(..())
return
- src.add_fingerprint(usr)
- if(!src.allowed(user))
+ add_fingerprint(user)
+ if(!allowed(user))
to_chat(user, "Access denied.")
return
- usr.set_machine(src)
+ user.set_machine(src)
+ interact(user)
+
+/obj/machinery/atmospherics/binary/passive_gate/attack_ghost(mob/user)
+ add_fingerprint(user)
+ user.set_machine(src)
interact(user)
- return
/obj/machinery/atmospherics/binary/passive_gate/Topic(href,href_list)
- if(..()) return
+ if(..())
+ return 1
if(href_list["power"])
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
if(href_list["set_press"])
- var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",src.target_pressure) as num
- src.target_pressure = max(0, min(4500, new_pressure))
+ var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",target_pressure) as num
+ target_pressure = max(0, min(4500, new_pressure))
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
usr.set_machine(src)
- src.update_icon()
- src.updateUsrDialog()
+ update_icon()
+ updateUsrDialog()
return
-/obj/machinery/atmospherics/binary/passive_gate/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params)
+/obj/machinery/atmospherics/binary/passive_gate/attackby(var/obj/item/weapon/W, var/mob/user, params)
if(!istype(W, /obj/item/weapon/wrench))
return ..()
if(on)
diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm
index 3b1ca109a81..40faf440cfd 100644
--- a/code/ATMOSPHERICS/components/binary_devices/pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm
@@ -103,7 +103,7 @@ Thus, the two variables affect pump operation are set in New():
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
return 1
-/obj/machinery/atmospherics/binary/pump/interact(mob/user as mob)
+/obj/machinery/atmospherics/binary/pump/interact(mob/user)
var/dat = {"Power: [on?"On":"Off"]
Desirable output pressure:
[round(target_pressure,0.1)]kPa | Change
@@ -151,16 +151,20 @@ Thus, the two variables affect pump operation are set in New():
update_icon()
return
-/obj/machinery/atmospherics/binary/pump/attack_hand(user as mob)
+/obj/machinery/atmospherics/binary/pump/attack_hand(mob/user)
if(..())
return
- src.add_fingerprint(usr)
- if(!src.allowed(user))
+ add_fingerprint(user)
+ if(!allowed(user))
to_chat(user, "Access denied.")
return
- usr.set_machine(src)
+ user.set_machine(src)
+ interact(user)
+
+/obj/machinery/atmospherics/binary/pump/attack_ghost(mob/user)
+ add_fingerprint(user)
+ user.set_machine(src)
interact(user)
- return
/obj/machinery/atmospherics/binary/pump/Topic(href,href_list)
if(..())
@@ -169,13 +173,12 @@ Thus, the two variables affect pump operation are set in New():
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
if(href_list["set_press"])
- var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",src.target_pressure) as num
- src.target_pressure = max(0, min(4500, new_pressure))
+ var/new_pressure = input(usr,"Enter new output pressure (0-4500kPa)","Pressure control",target_pressure) as num
+ target_pressure = max(0, min(4500, new_pressure))
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
usr.set_machine(src)
- src.update_icon()
- src.updateUsrDialog()
- return
+ update_icon()
+ updateUsrDialog()
/obj/machinery/atmospherics/binary/pump/power_change()
var/old_stat = stat
@@ -183,7 +186,7 @@ Thus, the two variables affect pump operation are set in New():
if(old_stat != stat)
update_icon()
-/obj/machinery/atmospherics/binary/pump/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params)
+/obj/machinery/atmospherics/binary/pump/attackby(var/obj/item/weapon/W, var/mob/user, params)
if(!istype(W, /obj/item/weapon/wrench))
return ..()
if(!(stat & NOPOWER) && on)
diff --git a/code/ATMOSPHERICS/components/binary_devices/valve.dm b/code/ATMOSPHERICS/components/binary_devices/valve.dm
index 1a2a4ea541f..2737b7abfbd 100644
--- a/code/ATMOSPHERICS/components/binary_devices/valve.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/valve.dm
@@ -45,17 +45,21 @@
investigate_log("was closed by [usr ? key_name(usr) : "a remote signal"]", "atmos")
return
-/obj/machinery/atmospherics/binary/valve/attack_ai(mob/user as mob)
+/obj/machinery/atmospherics/binary/valve/attack_ai(mob/user)
return
+
+/obj/machinery/atmospherics/binary/valve/attack_ghost(mob/user)
+ if(user.can_advanced_admin_interact())
+ return attack_hand(user)
-/obj/machinery/atmospherics/binary/valve/attack_hand(mob/user as mob)
+/obj/machinery/atmospherics/binary/valve/attack_hand(mob/user)
add_fingerprint(usr)
update_icon(1)
sleep(10)
if(open)
close()
- return
- open()
+ else
+ open()
/obj/machinery/atmospherics/binary/valve/digital // can be controlled by AI
name = "digital valve"
@@ -67,13 +71,13 @@
var/datum/radio_frequency/radio_connection
settagwhitelist = list("id_tag")
-/obj/machinery/atmospherics/binary/valve/digital/attack_ai(mob/user as mob)
- return src.attack_hand(user)
+/obj/machinery/atmospherics/binary/valve/digital/attack_ai(mob/user)
+ return attack_hand(user)
-/obj/machinery/atmospherics/binary/valve/digital/attack_hand(mob/user as mob)
+/obj/machinery/atmospherics/binary/valve/digital/attack_hand(mob/user)
if(!powered())
return
- if(!src.allowed(user))
+ if(!allowed(user) && !user.can_advanced_admin_interact())
to_chat(user, "Access denied.")
return
..()
@@ -130,7 +134,7 @@
if(open)
close()
-/obj/machinery/atmospherics/binary/valve/digital/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
+/obj/machinery/atmospherics/binary/valve/digital/attackby(var/obj/item/weapon/W as obj, var/mob/user)
if(istype(W, /obj/item/device/multitool))
update_multitool_menu(user)
return 1
diff --git a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
index 80e1ad2e8b9..4f2cbb56117 100644
--- a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
@@ -99,7 +99,7 @@ Thus, the two variables affect pump operation are set in New():
return 1
-/obj/machinery/atmospherics/binary/volume_pump/interact(mob/user as mob)
+/obj/machinery/atmospherics/binary/volume_pump/interact(mob/user)
var/dat = {"Power: [on?"On":"Off"]
Desirable output flow:
[round(transfer_rate,1)]l/s | Change
@@ -142,16 +142,20 @@ Thus, the two variables affect pump operation are set in New():
broadcast_status()
update_icon()
-/obj/machinery/atmospherics/binary/volume_pump/attack_hand(user as mob)
+/obj/machinery/atmospherics/binary/volume_pump/attack_hand(mob/user)
if(..())
return
- src.add_fingerprint(usr)
- if(!src.allowed(user))
+ add_fingerprint(user)
+ if(!allowed(user) && !user.can_admin_interact())
to_chat(user, "Access denied.")
return
- usr.set_machine(src)
+ user.set_machine(src)
+ interact(user)
+
+/obj/machinery/atmospherics/binary/volume_pump/attack_ghost(mob/user)
+ add_fingerprint(user)
+ user.set_machine(src)
interact(user)
- return
/obj/machinery/atmospherics/binary/volume_pump/Topic(href,href_list)
if(..())
@@ -160,13 +164,12 @@ Thus, the two variables affect pump operation are set in New():
on = !on
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
if(href_list["set_transfer_rate"])
- var/new_transfer_rate = input(usr,"Enter new output volume (0-200l/s)","Flow control",src.transfer_rate) as num
- src.transfer_rate = max(0, min(200, new_transfer_rate))
+ var/new_transfer_rate = input(usr,"Enter new output volume (0-200l/s)","Flow control",transfer_rate) as num
+ transfer_rate = max(0, min(200, new_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()
- return
+ update_icon()
+ updateUsrDialog()
/obj/machinery/atmospherics/binary/volume_pump/power_change()
var/old_stat = stat
@@ -174,7 +177,7 @@ Thus, the two variables affect pump operation are set in New():
if(old_stat != stat)
update_icon()
-/obj/machinery/atmospherics/binary/volume_pump/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params)
+/obj/machinery/atmospherics/binary/volume_pump/attackby(var/obj/item/weapon/W, var/mob/user, params)
if(!istype(W, /obj/item/weapon/wrench))
return ..()
if(!(stat & NOPOWER) && on)
diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm
index beae30e55db..cacc1e8b9a0 100644
--- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm
+++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm
@@ -107,7 +107,7 @@
to_chat(user, "You cannot unwrench [src], it is too exerted due to internal pressure.")
add_fingerprint(user)
return 1
- playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
+ playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
to_chat(user, "You begin to unfasten \the [src]...")
if(do_after(user, 40, target = src))
user.visible_message( \
@@ -119,14 +119,17 @@
else
return ..()
-/obj/machinery/atmospherics/omni/attack_hand(user as mob)
+/obj/machinery/atmospherics/omni/attack_hand(mob/user)
if(..())
return
- src.add_fingerprint(usr)
+ add_fingerprint(usr)
ui_interact(user)
- return
+/obj/machinery/atmospherics/omni/attack_ghost(mob/user)
+ add_fingerprint(usr)
+ ui_interact(user)
+
/obj/machinery/atmospherics/omni/proc/build_icons()
if(!check_icon_cache())
return
diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm
index 021bec1cd24..732013765d2 100755
--- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm
+++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm
@@ -146,15 +146,25 @@ Filter types:
/obj/machinery/atmospherics/trinary/filter/initialize()
set_frequency(frequency)
..()
+
+/obj/machinery/atmospherics/trinary/filter/attack_ghost(mob/user)
+ add_fingerprint(user)
+ user.set_machine(src)
+ interact(user)
-/obj/machinery/atmospherics/trinary/filter/attack_hand(user as mob) // -- TLE
+/obj/machinery/atmospherics/trinary/filter/attack_hand(mob/user)
if(..())
return
- if(!src.allowed(user))
+ add_fingerprint(user)
+ if(!allowed(user) && !user.can_admin_interact())
to_chat(user, "Access denied.")
return
-
+
+ user.set_machine(src)
+ interact(user)
+
+/obj/machinery/atmospherics/trinary/filter/interact(mob/user)
var/dat
var/current_filter_type
switch(filter_type)
@@ -184,34 +194,27 @@ Filter types:
Nitrous Oxide
Nothing