Added a set of atmospheric analysis sensors to the integrated electronics module

This commit is contained in:
Dunkhan
2017-10-29 14:46:14 +01:00
parent 91298b1106
commit 2dbbd59888

View File

@@ -619,3 +619,235 @@
activate_pin(2)
/obj/item/integrated_circuit/input/atmo_scanner
name = "integrated atmospheric analyser"
desc = "The same atmospheric analysis module that is integrate into every pda. \
This allows the machine to know the composition, temperature and pressure of the surrounding atmosphere."
icon_state = "medscan_adv"
complexity = 9
inputs = list()
outputs = list(
"pressure" = IC_PINTYPE_NUMBER,
"temperature" = IC_PINTYPE_NUMBER,
"oxygen" = IC_PINTYPE_NUMBER,
"nitrogen" = IC_PINTYPE_NUMBER,
"carbon dioxide" = IC_PINTYPE_NUMBER,
"phoron" = IC_PINTYPE_NUMBER,
"other" = IC_PINTYPE_NUMBER,
)
activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3)
power_draw_per_use = 60
/obj/item/integrated_circuit/input/atmo_scanner/do_work()
var/turf/T = get_turf(src)
if(!istype(T)) //Invalid input
return
var/datum/gas_mixture/environment = T.return_air()
var/pressure = environment.return_pressure()
var/total_moles = environment.total_moles
if (total_moles)
var/o2_level = environment.gas["oxygen"]/total_moles
var/n2_level = environment.gas["nitrogen"]/total_moles
var/co2_level = environment.gas["carbon_dioxide"]/total_moles
var/phoron_level = environment.gas["phoron"]/total_moles
var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level)
set_pin_data(IC_OUTPUT, 1, pressure)
set_pin_data(IC_OUTPUT, 2, round(environment.temperature-T0C,0.1))
set_pin_data(IC_OUTPUT, 3, round(o2_level*100,0.1))
set_pin_data(IC_OUTPUT, 4, round(n2_level*100,0.1))
set_pin_data(IC_OUTPUT, 5, round(co2_level*100,0.1))
set_pin_data(IC_OUTPUT, 6, round(phoron_level*100,0.01))
set_pin_data(IC_OUTPUT, 7, round(unknown_level, 0.01))
else
set_pin_data(IC_OUTPUT, 1, 0)
set_pin_data(IC_OUTPUT, 2, -273.15)
set_pin_data(IC_OUTPUT, 3, 0)
set_pin_data(IC_OUTPUT, 4, 0)
set_pin_data(IC_OUTPUT, 5, 0)
set_pin_data(IC_OUTPUT, 6, 0)
set_pin_data(IC_OUTPUT, 7, 0)
push_data()
activate_pin(2)
/obj/item/integrated_circuit/input/pressure_sensor
name = "integrated pressure sensor"
desc = "A tiny pressure sensor module similar to that found in a PDA atmosphere analyser"
icon_state = "medscan_adv"
complexity = 3
inputs = list()
outputs = list(
"pressure" = IC_PINTYPE_NUMBER,
)
activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3)
power_draw_per_use = 20
/obj/item/integrated_circuit/input/pressure_sensor/do_work()
var/turf/T = get_turf(src)
if(!istype(T)) //Invalid input
return
var/datum/gas_mixture/environment = T.return_air()
var/pressure = environment.return_pressure()
var/total_moles = environment.total_moles
if (total_moles)
set_pin_data(IC_OUTPUT, 1, pressure)
else
set_pin_data(IC_OUTPUT, 1, 0)
push_data()
activate_pin(2)
/obj/item/integrated_circuit/input/temperature_sensor
name = "integrated temperature sensor"
desc = "A tiny temperature sensor module similar to that found in a PDA atmosphere analyser"
icon_state = "medscan_adv"
complexity = 3
inputs = list()
outputs = list(
"temperature" = IC_PINTYPE_NUMBER,
)
activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3)
power_draw_per_use = 20
/obj/item/integrated_circuit/input/temperature_sensor/do_work()
var/turf/T = get_turf(src)
if(!istype(T)) //Invalid input
return
var/datum/gas_mixture/environment = T.return_air()
var/total_moles = environment.total_moles
if (total_moles)
set_pin_data(IC_OUTPUT, 1, round(environment.temperature-T0C,0.1))
else
set_pin_data(IC_OUTPUT, 1, -273.15)
push_data()
activate_pin(2)
/obj/item/integrated_circuit/input/oxygen_sensor
name = "integrated oxygen sensor"
desc = "A tiny oxygen sensor module similar to that found in a PDA atmosphere analyser"
icon_state = "medscan_adv"
complexity = 3
inputs = list()
outputs = list(
"oxygen" = IC_PINTYPE_NUMBER,
)
activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3)
power_draw_per_use = 20
/obj/item/integrated_circuit/input/oxygen_sensor/do_work()
var/turf/T = get_turf(src)
if(!istype(T)) //Invalid input
return
var/datum/gas_mixture/environment = T.return_air()
var/total_moles = environment.total_moles
if (total_moles)
var/o2_level = environment.gas["oxygen"]/total_moles
set_pin_data(IC_OUTPUT, 1, round(o2_level*100,0.1))
else
set_pin_data(IC_OUTPUT, 1, 0)
push_data()
activate_pin(2)
/obj/item/integrated_circuit/input/co2_sensor
name = "integrated co2 sensor"
desc = "A tiny carbon dioxide sensor module similar to that found in a PDA atmosphere analyser"
icon_state = "medscan_adv"
complexity = 3
inputs = list()
outputs = list(
"co2" = IC_PINTYPE_NUMBER,
)
activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3)
power_draw_per_use = 20
/obj/item/integrated_circuit/input/co2_sensor/do_work()
var/turf/T = get_turf(src)
if(!istype(T)) //Invalid input
return
var/datum/gas_mixture/environment = T.return_air()
var/total_moles = environment.total_moles
if (total_moles)
var/co2_level = environment.gas["carbon_dioxide"]/total_moles
set_pin_data(IC_OUTPUT, 1, round(co2_level*100,0.1))
else
set_pin_data(IC_OUTPUT, 1, 0)
push_data()
activate_pin(2)
/obj/item/integrated_circuit/input/nitrogen_sensor
name = "integrated nitrogen sensor"
desc = "A tiny nitrogen sensor module similar to that found in a PDA atmosphere analyser"
icon_state = "medscan_adv"
complexity = 3
inputs = list()
outputs = list(
"nitrogen" = IC_PINTYPE_NUMBER,
)
activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3)
power_draw_per_use = 20
/obj/item/integrated_circuit/input/nitrogen_sensor/do_work()
var/turf/T = get_turf(src)
if(!istype(T)) //Invalid input
return
var/datum/gas_mixture/environment = T.return_air()
var/total_moles = environment.total_moles
if (total_moles)
var/n2_level = environment.gas["nitrogen"]/total_moles
set_pin_data(IC_OUTPUT, 1, round(n2_level*100,0.1))
else
set_pin_data(IC_OUTPUT, 1, 0)
push_data()
activate_pin(2)
/obj/item/integrated_circuit/input/phoron_sensor
name = "integrated phoron sensor"
desc = "A tiny phoron gas sensor module similar to that found in a PDA atmosphere analyser"
icon_state = "medscan_adv"
complexity = 3
inputs = list()
outputs = list(
"phoron" = IC_PINTYPE_NUMBER,
)
activators = list("scan" = IC_PINTYPE_PULSE_IN, "on scanned" = IC_PINTYPE_PULSE_OUT)
spawn_flags = IC_SPAWN_RESEARCH
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3)
power_draw_per_use = 20
/obj/item/integrated_circuit/input/phoron_sensor/do_work()
var/turf/T = get_turf(src)
if(!istype(T)) //Invalid input
return
var/datum/gas_mixture/environment = T.return_air()
var/total_moles = environment.total_moles
if (total_moles)
var/phoron_level = environment.gas["phoron"]/total_moles
set_pin_data(IC_OUTPUT, 1, round(phoron_level*100,0.1))
else
set_pin_data(IC_OUTPUT, 1, 0)
push_data()
activate_pin(2)