From 4e0989ee0bd613a010e56f1d61b34172bfce2c45 Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 10 Feb 2017 21:51:08 +0100 Subject: [PATCH] Ghost interaction with atmos machinery --- .../components/binary_devices/passive_gate.dm | 29 ++++++++------ .../components/binary_devices/pump.dm | 27 +++++++------ .../components/binary_devices/valve.dm | 22 ++++++----- .../components/binary_devices/volume_pump.dm | 27 +++++++------ .../components/omni_devices/omni_base.dm | 11 ++++-- .../components/trinary_devices/filter.dm | 39 ++++++++++--------- .../components/trinary_devices/mixer.dm | 34 ++++++++++------ .../components/trinary_devices/tvalve.dm | 22 ++++++----- 8 files changed, 123 insertions(+), 88 deletions(-) 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

Desirable output pressure: - [src.target_pressure]kPa | Change + [target_pressure]kPa | Change "} var/datum/browser/popup = new(user, "atmo_filter", name, 400, 400) popup.set_content(dat) popup.open(0) onclose(user, "atmo_filter") - return /obj/machinery/atmospherics/trinary/filter/Topic(href, href_list) // -- TLE if(..()) return 1 usr.set_machine(src) - src.add_fingerprint(usr) + add_fingerprint(usr) if(href_list["filterset"]) - src.filter_type = text2num(href_list["filterset"]) + filter_type = text2num(href_list["filterset"]) if(href_list["temp"]) - src.temp = null + temp = null 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)) if(href_list["power"]) on=!on - src.update_icon() - src.updateUsrDialog() -/* - for(var/mob/M in viewers(1, src)) - if((M.client && M.machine == src)) - src.attack_hand(M) -*/ - return + update_icon() + updateUsrDialog() \ No newline at end of file diff --git a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm index bef88fe6f3b..54ec88c63a7 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/mixer.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/mixer.dm @@ -107,14 +107,25 @@ parent3.update = 1 return 1 + +/obj/machinery/atmospherics/trinary/mixer/attack_ghost(mob/user) + add_fingerprint(user) + user.set_machine(src) + interact(user) -/obj/machinery/atmospherics/trinary/mixer/attack_hand(user as mob) +/obj/machinery/atmospherics/trinary/mixer/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 + + user.set_machine(src) + interact(user) + +/obj/machinery/atmospherics/trinary/mixer/interact(mob/user) usr.set_machine(src) var/dat = {"Power: [on?"On":"Off"]
Desirable output pressure: @@ -139,7 +150,6 @@ popup.set_content(dat) popup.open(0) onclose(user, "atmo_mixer") - return /obj/machinery/atmospherics/trinary/mixer/Topic(href,href_list) if(..()) @@ -147,16 +157,16 @@ if(href_list["power"]) on = !on 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)) if(href_list["node1_c"]) var/value = text2num(href_list["node1_c"]) - src.node1_concentration = max(0, min(1, src.node1_concentration + value)) - src.node2_concentration = max(0, min(1, src.node2_concentration - value)) + node1_concentration = max(0, min(1, node1_concentration + value)) + node2_concentration = max(0, min(1, node2_concentration - value)) if(href_list["node2_c"]) var/value = text2num(href_list["node2_c"]) - src.node2_concentration = max(0, min(1, src.node2_concentration + value)) - src.node1_concentration = max(0, min(1, src.node1_concentration - value)) - src.update_icon() - src.updateUsrDialog() + node2_concentration = max(0, min(1, node2_concentration + value)) + node1_concentration = max(0, min(1, node1_concentration - value)) + update_icon() + updateUsrDialog() return diff --git a/code/ATMOSPHERICS/components/trinary_devices/tvalve.dm b/code/ATMOSPHERICS/components/trinary_devices/tvalve.dm index 2195bab16d8..ece9a5de27d 100644 --- a/code/ATMOSPHERICS/components/trinary_devices/tvalve.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/tvalve.dm @@ -30,7 +30,7 @@ if(flipped) flipstate = "m" if(animation) - flick("tvalve[flipstate][src.state][!src.state]",src) + flick("tvalve[flipstate][state][!state]",src) else icon_state = "tvalve[flipstate][state]" @@ -52,9 +52,9 @@ /obj/machinery/atmospherics/trinary/tvalve/proc/switch_side() if(state == TVALVE_STATE_STRAIGHT) - src.go_to_side() + go_to_side() else - src.go_straight() + go_straight() /obj/machinery/atmospherics/trinary/tvalve/proc/go_to_side() if(state == TVALVE_STATE_SIDE) @@ -86,10 +86,14 @@ investigate_log("was set to straight by [usr ? key_name(usr) : "a remote signal"]", "atmos") return 1 -/obj/machinery/atmospherics/trinary/tvalve/attack_ai(mob/user as mob) +/obj/machinery/atmospherics/trinary/tvalve/attack_ai(mob/user) return + +/obj/machinery/atmospherics/trinary/tvalve/attack_ghost(mob/user) + if(user.can_advanced_admin_interact()) + return attack_hand(user) -/obj/machinery/atmospherics/trinary/tvalve/attack_hand(mob/user as mob) +/obj/machinery/atmospherics/trinary/tvalve/attack_hand(mob/usermob) add_fingerprint(usr) update_icon(1) sleep(10) @@ -128,13 +132,13 @@ if(!powered()) icon_state = "tvalvenopower" -/obj/machinery/atmospherics/trinary/tvalve/digital/attack_ai(mob/user as mob) - return src.attack_hand(user) +/obj/machinery/atmospherics/trinary/tvalve/digital/attack_ai(mob/user) + return attack_hand(user) -/obj/machinery/atmospherics/trinary/tvalve/digital/attack_hand(mob/user as mob) +/obj/machinery/atmospherics/trinary/tvalve/digital/attack_hand(mob/user) if(!powered()) return - if(!src.allowed(user)) + if(!allowed(user) && !user.can_admin_interact()) to_chat(user, "Access denied.") return ..()