diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 1550eb7ae9..b80b317d46 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -1,3 +1,8 @@ +#define EXTERNAL_PRESSURE_BOUND ONE_ATMOSPHERE +#define INTERNAL_PRESSURE_BOUND 0 +#define PRESSURE_CHECKS 1 +#undefine + /obj/machinery/atmospherics/unary/vent_pump icon = 'icons/obj/atmospherics/vent_pump.dmi' icon_state = "off" @@ -14,14 +19,19 @@ var/on = 0 var/pump_direction = 1 //0 = siphoning, 1 = releasing - var/external_pressure_bound = ONE_ATMOSPHERE - var/internal_pressure_bound = 0 + var/external_pressure_bound = EXTERNAL_PRESSURE_BOUND + var/internal_pressure_bound = INTERNAL_PRESSURE_BOUND - var/pressure_checks = 1 + var/pressure_checks = PRESSURE_CHECKS //1: Do not pass external_pressure_bound //2: Do not pass internal_pressure_bound //3: Do not pass either + // Used when handling incoming radio signals requesting default settings + var/external_pressure_bound_default = EXTERNAL_PRESSURE_BOUND + var/internal_pressure_bound_default = INTERNAL_PRESSURE_BOUND + var/pressure_checks_default = PRESSURE_CHECKS + var/welded = 0 // Added for aliens -- TLE var/frequency = 1439 @@ -205,7 +215,10 @@ on = !on if(signal.data["checks"] != null) - pressure_checks = text2num(signal.data["checks"]) + if (signal.data["set_internal_pressure"] == "default") + pressure_checks = pressure_checks_default + else + pressure_checks = text2num(signal.data["checks"]) if(signal.data["checks_toggle"] != null) pressure_checks = (pressure_checks?0:3) @@ -214,18 +227,24 @@ pump_direction = text2num(signal.data["direction"]) if(signal.data["set_internal_pressure"] != null) - internal_pressure_bound = between( - 0, - text2num(signal.data["set_internal_pressure"]), - ONE_ATMOSPHERE*50 - ) + if (signal.data["set_internal_pressure"] == "default") + internal_pressure_bound = internal_pressure_bound_default + else + internal_pressure_bound = between( + 0, + text2num(signal.data["set_internal_pressure"]), + ONE_ATMOSPHERE*50 + ) if(signal.data["set_external_pressure"] != null) - external_pressure_bound = between( - 0, - text2num(signal.data["set_external_pressure"]), - ONE_ATMOSPHERE*50 - ) + if (signal.data["set_external_pressure"] == "default") + external_pressure_bound = external_pressure_bound_default + else + external_pressure_bound = between( + 0, + text2num(signal.data["set_external_pressure"]), + ONE_ATMOSPHERE*50 + ) if(signal.data["adjust_internal_pressure"] != null) internal_pressure_bound = between( @@ -235,6 +254,8 @@ ) if(signal.data["adjust_external_pressure"] != null) + + external_pressure_bound = between( 0, external_pressure_bound + text2num(signal.data["adjust_external_pressure"]), diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index c788dc6430..522882577d 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -71,6 +71,7 @@ active_power_usage = 8 power_channel = ENVIRON req_one_access = list(access_atmospherics, access_engine_equip) + var/breach_detection = 1 // Whether to use automatic breach detection or not var/frequency = 1439 //var/skipprocess = 0 //Experimenting var/alarm_frequency = 1437 @@ -276,17 +277,20 @@ if(!istype(location)) return 0 - + + if(breach_detection == 0) + return 0 + var/datum/gas_mixture/environment = location.return_air() var/environment_pressure = environment.return_pressure() var/pressure_levels = TLV["pressure"] - + if (environment_pressure <= pressure_levels[1]) //low pressures if (!(mode == AALARM_MODE_PANIC || mode == AALARM_MODE_CYCLE)) return 1 - + return 0 - + /obj/machinery/alarm/proc/master_is_operating() return alarm_area.master_air_alarm && !(alarm_area.master_air_alarm.stat & (NOPOWER|BROKEN)) @@ -397,14 +401,12 @@ return 1 /obj/machinery/alarm/proc/apply_mode() - var/current_pressures = TLV["pressure"] - var/target_pressure = (current_pressures[2] + current_pressures[3])/2 switch(mode) if(AALARM_MODE_SCRUBBING) for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list("power"= 1, "co2_scrub"= 1, "scrubbing"= 1, "panic_siphon"= 0) ) for(var/device_id in alarm_area.air_vent_names) - send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) ) + send_signal(device_id, list("power"= 1, "checks"= "default", "set_external_pressure"= "default") ) if(AALARM_MODE_PANIC, AALARM_MODE_CYCLE) for(var/device_id in alarm_area.air_scrub_names) @@ -416,13 +418,13 @@ for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list("power"= 1, "panic_siphon"= 1) ) for(var/device_id in alarm_area.air_vent_names) - send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) ) + send_signal(device_id, list("power"= 1, "checks"= "default", "set_external_pressure"= "default") ) if(AALARM_MODE_FILL) for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list("power"= 0) ) for(var/device_id in alarm_area.air_vent_names) - send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) ) + send_signal(device_id, list("power"= 1, "checks"= "default", "set_external_pressure"= "default") ) if(AALARM_MODE_OFF) for(var/device_id in alarm_area.air_scrub_names)