From 73578cb9cd0fcbbc206f957802bc90f8b0ac3d03 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sat, 1 Jun 2013 06:31:15 +0400 Subject: [PATCH] Fixes #2926 Now master alarm in area polls all other alarms and sets area alert level to highest out of them. So no more green alarms opening lockdowns until they turn red too. --- code/game/machinery/alarm.dm | 77 ++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 34 deletions(-) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index f31746de802..1945be11a65 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -135,30 +135,7 @@ if(!istype(location)) return//returns if loc is not simulated var/datum/gas_mixture/environment = location.return_air() - var/partial_pressure = R_IDEAL_GAS_EQUATION*environment.temperature/environment.volume - - var/list/current_settings = TLV["pressure"] - var/environment_pressure = environment.return_pressure() - var/pressure_dangerlevel = get_danger_level(environment_pressure, current_settings) - - current_settings = TLV["oxygen"] - var/oxygen_dangerlevel = get_danger_level(environment.oxygen*partial_pressure, current_settings) - - current_settings = TLV["carbon dioxide"] - var/co2_dangerlevel = get_danger_level(environment.carbon_dioxide*partial_pressure, current_settings) - - current_settings = TLV["plasma"] - var/plasma_dangerlevel = get_danger_level(environment.toxins*partial_pressure, current_settings) - - current_settings = TLV["other"] - var/other_moles = 0.0 - for(var/datum/gas/G in environment.trace_gases) - other_moles+=G.moles - var/other_dangerlevel = get_danger_level(other_moles*partial_pressure, current_settings) - - current_settings = TLV["temperature"] - var/temperature_dangerlevel = get_danger_level(environment.temperature, current_settings) - + var/temperature_dangerlevel = get_danger_level(environment.temperature, TLV["temperature"]) //Handle temperature adjustment here. if(temperature_dangerlevel || regulating_temperature) //If it goes too far, we should adjust ourselves back before stopping. @@ -194,18 +171,14 @@ "You hear a click as a faint electronic humming stops.") - var/old_danger_level = danger_level - danger_level = max(pressure_dangerlevel, - oxygen_dangerlevel, - co2_dangerlevel, - plasma_dangerlevel, - other_dangerlevel, - temperature_dangerlevel) + danger_level = overall_danger_level() + log_debug("Processing [name] : level - [danger_level]") - if (old_danger_level != danger_level) - apply_danger_level(danger_level) + if (alarm_area.master_air_alarm == src) + refresh_danger_level() + update_icon() - if (mode==AALARM_MODE_CYCLE && environment_pressure level) + level = AA.danger_level + apply_danger_level(level) + proc/air_doors_close(manual) var/area/A = get_area(src) if(!A.master.air_doors_activated)