Lowers roundstart strain on SStimers (#9794)

This commit is contained in:
Erki
2020-08-26 20: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(..())
@@ -23,6 +23,8 @@
var/id = null
var/datum/radio_frequency/radio_connection
var/broadcast_status_next_process = FALSE
level = 1
/obj/machinery/atmospherics/unary/outlet_injector/Initialize()
@@ -55,9 +57,13 @@
last_power_draw = 0
last_flow_rate = 0
if (broadcast_status_next_process)
broadcast_status()
broadcast_status_next_process = FALSE
if((stat & (NOPOWER|BROKEN)) || !use_power)
return
var/power_draw = -1
var/datum/gas_mixture/environment = loc.return_air()
@@ -143,10 +149,10 @@
volume_rate = between(0, number, air_contents.volume)
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()
/obj/machinery/atmospherics/unary/outlet_injector/hide(var/i)
@@ -49,6 +49,8 @@
var/radio_filter_out
var/radio_filter_in
var/broadcast_status_next_process = FALSE
/obj/machinery/atmospherics/unary/vent_pump/on
use_power = 1
icon_state = "map_vent_out"
@@ -166,6 +168,10 @@
/obj/machinery/atmospherics/unary/vent_pump/machinery_process()
..()
if (broadcast_status_next_process)
broadcast_status()
broadcast_status_next_process = FALSE
if (hibernate > world.time)
return 1
@@ -336,14 +342,11 @@
return
if(signal.data["status"] != null)
addtimer(CALLBACK(src, .proc/broadcast_status), 2, TIMER_UNIQUE)
broadcast_status_next_process = TRUE
return //do not update_icon
//log_debug("DEBUG \[[world.timeofday]\]: vent_pump/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
addtimer(CALLBACK(src, .proc/broadcast_status), 2, TIMER_UNIQUE)
broadcast_status_next_process = TRUE
update_icon()
return
/obj/machinery/atmospherics/unary/vent_pump/attackby(obj/item/W, mob/user)
if(W.iswelder())
@@ -31,6 +31,8 @@
var/welded = 0
var/broadcast_status_next_process = FALSE
/obj/machinery/atmospherics/unary/vent_scrubber/on
use_power = 1
icon_state = "map_scrubber_on"
@@ -138,7 +140,11 @@
if (!node)
use_power = 0
//broadcast_status()
if (broadcast_status_next_process)
broadcast_status()
broadcast_status_next_process = FALSE
if(!use_power || (stat & (NOPOWER|BROKEN)))
return 0
if(welded)
@@ -244,11 +250,10 @@
return
if(signal.data["status"] != null)
addtimer(CALLBACK(src, .proc/broadcast_status), 2, TIMER_UNIQUE)
broadcast_status_next_process = TRUE
return //do not update_icon
// log_debug("DEBUG \[[world.timeofday]\]: vent_scrubber/receive_signal: unknown command \"[signal.data["command"]]\"\n[signal.debug_print()]")
addtimer(CALLBACK(src, .proc/broadcast_status), 2, TIMER_UNIQUE)
broadcast_status_next_process = TRUE
update_icon()
return