Lowers roundstart strain on SStimers (#9794)

This commit is contained in:
Erki
2020-08-27 02:33:55 +03:00
committed by GitHub
parent a43c5a2f04
commit 29a4cf7f8d
8 changed files with 67 additions and 31 deletions
@@ -41,6 +41,8 @@
//2: Do not pass input_pressure_min
//4: Do not pass output_pressure_max
var/broadcast_status_next_process = FALSE
/obj/machinery/atmospherics/binary/dp_vent_pump/Initialize()
. = ..()
air1.volume = ATMOS_DEFAULT_VOLUME_PUMP
@@ -106,6 +108,10 @@
if(stat & (NOPOWER|BROKEN) || !use_power)
return 0
if (broadcast_status_next_process)
broadcast_status()
broadcast_status_next_process = FALSE
var/datum/gas_mixture/environment = loc.return_air()
var/power_draw = -1
@@ -248,10 +254,10 @@
)
if(signal.data["status"])
addtimer(CALLBACK(src, .proc/broadcast_status), 2, TIMER_UNIQUE)
broadcast_status_next_process = TRUE
return //do not update_icon
addtimer(CALLBACK(src, .proc/broadcast_status), 2, TIMER_UNIQUE)
broadcast_status_next_process = TRUE
update_icon()
#undef DEFAULT_PRESSURE_DELTA
@@ -24,6 +24,8 @@
var/id = null
var/datum/radio_frequency/radio_connection
var/broadcast_status_next_process = FALSE
/obj/machinery/atmospherics/binary/passive_gate/Initialize()
. = ..()
air1.volume = ATMOS_DEFAULT_VOLUME_PUMP * 2.5
@@ -47,6 +49,10 @@
/obj/machinery/atmospherics/binary/passive_gate/machinery_process()
..()
if (broadcast_status_next_process)
broadcast_status()
broadcast_status_next_process = FALSE
last_flow_rate = 0
if(!unlocked)
@@ -152,10 +158,10 @@
regulate_mode = text2num(signal.data["set_flow_rate"])
if("status" in signal.data)
addtimer(CALLBACK(src, .proc/broadcast_status), 2, TIMER_UNIQUE)
broadcast_status_next_process = TRUE
return //do not update_icon
addtimer(CALLBACK(src, .proc/broadcast_status), 2, TIMER_UNIQUE)
broadcast_status_next_process = TRUE
update_icon()
return
@@ -34,6 +34,8 @@ Thus, the two variables affect pump operation are set in New():
var/id = null
var/datum/radio_frequency/radio_connection
var/broadcast_status_next_process = FALSE
/obj/machinery/atmospherics/binary/pump/Initialize()
. = ..()
air1.volume = ATMOS_DEFAULT_VOLUME_PUMP
@@ -69,6 +71,10 @@ Thus, the two variables affect pump operation are set in New():
if((stat & (NOPOWER|BROKEN)) || !use_power)
return
if (broadcast_status_next_process)
broadcast_status()
broadcast_status_next_process = FALSE
var/power_draw = -1
var/pressure_delta = target_pressure - air2.return_pressure()
@@ -169,12 +175,11 @@ Thus, the two variables affect pump operation are set in New():
)
if(signal.data["status"])
addtimer(CALLBACK(src, .proc/broadcast_status), 2, TIMER_UNIQUE)
broadcast_status_next_process = TRUE
return //do not update_icon
addtimer(CALLBACK(src, .proc/broadcast_status), 2, TIMER_UNIQUE)
broadcast_status_next_process = TRUE
update_icon()
return
/obj/machinery/atmospherics/binary/pump/attack_hand(user as mob)
if(..())