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
+11 -12
View File
@@ -983,25 +983,24 @@ obj/item/newspaper/attackby(obj/item/W as obj, mob/user as mob)
src.paper_remaining--
return
//Removed for now so these aren't even checked every tick. Left this here in-case Agouri needs it later.
///obj/machinery/newscaster/process() //Was thinking of doing the icon update through process, but multiple iterations per second does not
// return //bode well with a newscaster network of 10+ machines. Let's just return it, as it's added in the machines list.
/obj/machinery/newscaster/proc/newsAlert(var/news_call) //This isn't Agouri's work, for it is ugly and vile.
var/turf/T = get_turf(src) //Who the fuck uses spawn(600) anyway, jesus christ
/obj/machinery/newscaster/proc/newsAlert(var/news_call)
var/turf/T = get_turf(src)
if(news_call)
for(var/mob/O in hearers(world.view-1, T))
O.show_message("<span class='newscaster'><EM>[src.name]</EM> beeps, \"[news_call]\"</span>",2)
src.alert = 1
src.update_icon()
addtimer(CALLBACK(src, .proc/clearAlert), 300)
if (!alert)
alert = 1
update_icon()
addtimer(CALLBACK(src, .proc/clearAlert), 300, TIMER_UNIQUE)
playsound(src.loc, 'sound/machines/twobeep.ogg', 75, 1)
else
for(var/mob/O in hearers(world.view-1, T))
O.show_message("<span class='newscaster'><EM>[src.name]</EM> beeps, \"Attention! Wanted issue distributed!\"</span>",2)
playsound(src.loc, 'sound/machines/warning-buzzer.ogg', 75, 1)
playsound(loc, 'sound/machines/warning-buzzer.ogg', 75, 1)
return
/obj/machinery/newscaster/proc/clearAlert()
src.alert = 0
src.update_icon()
alert = 0
update_icon()