obj/machinery/air_sensor
icon = 'icons/obj/stationobjs.dmi'
icon_state = "gsensor1"
name = "Gas Sensor"
req_one_access_txt = "24;10"
anchored = 1
var/state = 0
var/bolts = 1
var/id_tag
var/frequency = 1439
Mtoollink = 1
settagwhitelist = list("id_tag")
var/on = 1
var/output = 3
//Flags:
// 1 for pressure
// 2 for temperature
// Output >= 4 includes gas composition
// 4 for oxygen concentration
// 8 for toxins concentration
// 16 for nitrogen concentration
// 32 for carbon dioxide concentration
var/datum/radio_frequency/radio_connection
update_icon()
icon_state = "gsensor[on]"
multitool_menu(var/mob/user, var/obj/item/device/multitool/P)
return {"
Main
"}
multitool_topic(var/mob/user, var/list/href_list, var/obj/O)
. = ..()
if(.)
return .
if("toggle_out_flag" in href_list)
var/bitflag_value = text2num(href_list["toggle_out_flag"])//this is a string normally
if(!(bitflag_value in list(1, 2, 4, 8, 16, 32))) //Here to prevent breaking the sensors with HREF exploits
return 0
if(output&bitflag_value)//the bitflag is on ATM
output &= ~bitflag_value
else//can't not be off
output |= bitflag_value
return MT_UPDATE
if("toggle_bolts" in href_list)
bolts = !bolts
if(bolts)
visible_message("You hear a quite click as the [src] bolts to the floor", "You hear a quite click")
else
visible_message("You hear a quite click as the [src]'s floor bolts raise", "You hear a quite click")
return MT_UPDATE
attackby(var/obj/item/W as obj, var/mob/user as mob)
if(istype(W, /obj/item/device/multitool))
update_multitool_menu(user)
return 1
if(istype(W, /obj/item/weapon/wrench))
if(bolts)
usr << "The [src] is bolted to the floor! You can't detach it like this."
return 1
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
user << "\blue You begin to unfasten \the [src]..."
if(do_after(user, 40))
user.visible_message("[user] unfastens \the [src].", "\blue You have unfastened \the [src].", "You hear ratchet.")
new /obj/item/pipe_gsensor(src.loc)
qdel(src)
return 1
if(..())
return 1
process()
if(on)
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = id_tag
signal.data["timestamp"] = world.time
var/datum/gas_mixture/air_sample = return_air()
if(output&1)
signal.data["pressure"] = num2text(round(air_sample.return_pressure(),0.1),)
if(output&2)
signal.data["temperature"] = round(air_sample.temperature,0.1)
if(output>4)
var/total_moles = air_sample.total_moles()
if(total_moles > 0)
if(output&4)
signal.data["oxygen"] = round(100*air_sample.oxygen/total_moles,0.1)
if(output&8)
signal.data["toxins"] = round(100*air_sample.toxins/total_moles,0.1)
if(output&16)
signal.data["nitrogen"] = round(100*air_sample.nitrogen/total_moles,0.1)
if(output&32)
signal.data["carbon_dioxide"] = round(100*air_sample.carbon_dioxide/total_moles,0.1)
else
signal.data["oxygen"] = 0
signal.data["toxins"] = 0
signal.data["nitrogen"] = 0
signal.data["carbon_dioxide"] = 0
signal.data["sigtype"]="status"
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
proc
set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA)
initialize()
set_frequency(frequency)
New()
..()
if(radio_controller)
set_frequency(frequency)
Destroy()
if(radio_controller)
radio_controller.remove_object(src,frequency)
return ..()
/obj/machinery/computer/general_air_control
icon = 'icons/obj/computer.dmi'
icon_screen = "tank"
icon_keyboard = "atmos_key"
circuit = "/obj/item/weapon/circuitboard/air_management"
req_one_access_txt = "24;10"
name = "Computer"
var/frequency = 1439
var/show_sensors=1
var/list/sensors = list()
Mtoollink = 1
var/list/sensor_information = list()
var/datum/radio_frequency/radio_connection
attack_hand(mob/user)
if(..(user))
return
var/html=return_text()+"