mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-16 12:07:48 +00:00
89 lines
2.5 KiB
Plaintext
89 lines
2.5 KiB
Plaintext
/obj/machinery/atmospherics/binary/valve
|
|
icon = 'icons/obj/atmospherics/binary_devices.dmi'
|
|
icon_state = "mvalve_map"
|
|
name = "manual valve"
|
|
desc = "A pipe valve"
|
|
can_unwrench = 1
|
|
var/open = 0
|
|
var/frequency = 0
|
|
var/id = null
|
|
|
|
/obj/machinery/atmospherics/binary/valve/open
|
|
open = 1
|
|
|
|
//Separate this because we don't need to update pipe icons if we just are going to crank the handle
|
|
/obj/machinery/atmospherics/binary/valve/update_icon_nopipes(animation = 0)
|
|
normalize_dir()
|
|
icon_state = "mvalve_off"
|
|
overlays.Cut()
|
|
if(animation)
|
|
overlays += getpipeimage('icons/obj/atmospherics/binary_devices.dmi', "mvalve_[open][!open]")
|
|
else if(open)
|
|
overlays += getpipeimage('icons/obj/atmospherics/binary_devices.dmi', "mvalve_on")
|
|
|
|
/obj/machinery/atmospherics/binary/valve/update_icon()
|
|
update_icon_nopipes()
|
|
var/connected = 0
|
|
underlays.Cut()
|
|
//Add non-broken pieces
|
|
if(node1)
|
|
connected = icon_addintact(node1, connected)
|
|
if(node2)
|
|
connected = icon_addintact(node2, connected)
|
|
//Add broken pieces
|
|
icon_addbroken(connected)
|
|
|
|
/obj/machinery/atmospherics/binary/valve/proc/open()
|
|
open = 1
|
|
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()
|
|
if(dir==2)
|
|
dir = 1
|
|
else if(dir==8)
|
|
dir = 4
|
|
|
|
/obj/machinery/atmospherics/binary/valve/attack_ai(mob/user)
|
|
return
|
|
|
|
/obj/machinery/atmospherics/binary/valve/attack_hand(mob/user)
|
|
add_fingerprint(usr)
|
|
update_icon_nopipes(1)
|
|
sleep(10)
|
|
if(open)
|
|
close()
|
|
else
|
|
open()
|
|
parent1.reconcile_air()
|
|
|
|
/obj/machinery/atmospherics/binary/valve/digital // can be controlled by AI
|
|
name = "digital valve"
|
|
desc = "A digitally controlled valve."
|
|
icon_state = "dvalve_map"
|
|
|
|
/obj/machinery/atmospherics/binary/valve/digital/attack_ai(mob/user)
|
|
return src.attack_hand(user)
|
|
|
|
/obj/machinery/atmospherics/binary/valve/digital/update_icon_nopipes(animation)
|
|
normalize_dir()
|
|
if(stat & NOPOWER)
|
|
icon_state = "dvalve_nopower"
|
|
overlays.Cut()
|
|
return
|
|
icon_state = "dvalve_off"
|
|
overlays.Cut()
|
|
if(animation)
|
|
overlays += getpipeimage('icons/obj/atmospherics/binary_devices.dmi', "dvalve_[open][!open]")
|
|
else if(open)
|
|
overlays += getpipeimage('icons/obj/atmospherics/binary_devices.dmi', "dvalve_on")
|