From e3c31d2fa7adf0efd0eb9f761d0570f7d952cbce Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Fri, 31 Mar 2017 14:20:40 -0400 Subject: [PATCH] Roundstart Events. Fixes xeno egg announcement timer (#25659) * Add support for roundstart events * Fixes #25649 --- code/controllers/subsystem/ticker.dm | 13 +++++++++++++ .../objects/effects/spawners/xeno_egg_delivery.dm | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index ca07a287690..7aafb8c3ebb 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -58,6 +58,8 @@ var/datum/controller/subsystem/ticker/ticker var/late_join_disabled + var/list/round_start_events + /datum/controller/subsystem/ticker/New() NEW_SS_GLOBAL(ticker) @@ -202,6 +204,11 @@ var/datum/controller/subsystem/ticker/ticker transfer_characters() //transfer keys to the new mobs Master.RoundStart() //let the party begin... + + for(var/I in round_start_events) + var/datum/callback/cb = I + cb.InvokeAsync() + LAZYCLEARLIST(round_start_events) log_world("Game start took [(world.timeofday - init_start)/10]s") round_start_time = world.time @@ -234,6 +241,12 @@ var/datum/controller/subsystem/ticker/ticker var/list/allmins = adm["present"] send2irc("Server", "Round of [hide_mode ? "secret":"[mode.name]"] has started[allmins.len ? ".":" with no active admins online!"]") +/datum/controller/subsystem/ticker/proc/OnRoundstart(datum/callback/cb) + if(current_state < GAME_STATE_PLAYING) + LAZYADD(round_start_events, cb) + else + cb.InvokeAsync() + /datum/controller/subsystem/ticker/proc/station_explosion_detonation(atom/bomb) if(bomb) //BOOM var/turf/epi = bomb.loc diff --git a/code/game/objects/effects/spawners/xeno_egg_delivery.dm b/code/game/objects/effects/spawners/xeno_egg_delivery.dm index 639df98214c..c2b31a6e58d 100644 --- a/code/game/objects/effects/spawners/xeno_egg_delivery.dm +++ b/code/game/objects/effects/spawners/xeno_egg_delivery.dm @@ -16,5 +16,5 @@ message_admins("An alien egg has been delivered to [A] at [ADMIN_COORDJMP(T)].") log_game("An alien egg has been delivered to [A] at [COORD(T)]") var/message = "Attention [station_name()], we have entrusted you with a research specimen in [A]. Remember to follow all safety precautions when dealing with the specimen." - addtimer(CALLBACK(GLOBAL_PROC, /.proc/print_command_report, message), announcement_time) + ticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/addtimer, CALLBACK(GLOBAL_PROC, /.proc/print_command_report, message), announcement_time)) qdel(src)