/obj/proc/analyze_gases(var/atom/A, var/mob/user) if(src != A) user.visible_message("\The [user] has used \an [src] on \the [A]") A.add_fingerprint(user) var/list/result = A.atmosanalyze(user) if(result && result.len) to_chat(user, "Results of the analysis[src == A ? "" : " of \the [A]"]") for(var/line in result) to_chat(user, "[line]") return 1 to_chat(user, "Your [src] flashes a red light as it fails to analyze \the [A].") return 0 /proc/atmosanalyzer_scan(var/atom/target, var/datum/gas_mixture/mixture, var/mob/user) var/list/results = list() if (mixture && mixture.total_moles > 0) var/pressure = mixture.return_pressure() var/total_moles = mixture.total_moles results += "Pressure: [round(pressure,0.1)] kPa" for(var/mix in mixture.gas) results += "[gas_data.name[mix]]: [round((mixture.gas[mix] / total_moles) * 100)]%" results += "Temperature: [round(mixture.temperature-T0C)]°C" else results += "\The [target] is empty!" return results /turf/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.air, user) /atom/proc/atmosanalyze(var/mob/user) return /obj/item/weapon/tank/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.air_contents, user) /obj/machinery/portable_atmospherics/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.air_contents, user) /obj/machinery/atmospherics/pipe/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.parent.air, user) /obj/machinery/atmospherics/portables_connector/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.network.gases, user) /obj/machinery/atmospherics/unary/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.air_contents, user) /obj/machinery/atmospherics/binary/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.air1, user) /obj/machinery/atmospherics/trinary/atmos_filter/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.air1, user) /obj/machinery/atmospherics/trinary/mixer/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.air3, user) /obj/machinery/atmospherics/omni/atmos_filter/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.input.air, user) /obj/machinery/atmospherics/omni/mixer/atmosanalyze(var/mob/user) return atmosanalyzer_scan(src, src.output.air, user) /obj/machinery/meter/atmosanalyze(var/mob/user) var/datum/gas_mixture/mixture = null if(src.target) mixture = src.target.parent.air return atmosanalyzer_scan(src, mixture, user) /obj/machinery/power/rad_collector/atmosanalyze(var/mob/user) if(P) return atmosanalyzer_scan(src, src.P.air_contents, user) /obj/item/weapon/flamethrower/atmosanalyze(var/mob/user) if(ptank) return atmosanalyzer_scan(src, ptank.air_contents, user)