From 8dcd9bef1d17d7e2eac2ad8c1e6f71c570e080e0 Mon Sep 17 00:00:00 2001 From: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Date: Mon, 24 Jul 2023 13:51:57 -0700 Subject: [PATCH] Autotransfer subsystem uses REALTIMEOFDAY (#22397) * autotransfer changes * Update autotransfer.dm * Update autotransfer.dm --- code/controllers/subsystem/ticker.dm | 3 ++- .../modules/autotransfer/code/autotransfer.dm | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 075f3f3ed50..c78ff138a3d 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -282,7 +282,8 @@ SUBSYSTEM_DEF(ticker) round_start_time = world.time //otherwise round_start_time would be 0 for the signals SEND_SIGNAL(src, COMSIG_TICKER_ROUND_STARTING, world.time) - real_round_start_time = world.timeofday //SKYRAT EDIT ADDITION + real_round_start_time = REALTIMEOFDAY //SKYRAT EDIT ADDITION + SSautotransfer.new_shift(real_round_start_time) //SKYRAT EDIT ADDITION log_world("Game start took [(world.timeofday - init_start)/10]s") INVOKE_ASYNC(SSdbcore, TYPE_PROC_REF(/datum/controller/subsystem/dbcore,SetRoundStart)) diff --git a/modular_skyrat/modules/autotransfer/code/autotransfer.dm b/modular_skyrat/modules/autotransfer/code/autotransfer.dm index a9252527e4f..3303245f4b1 100644 --- a/modular_skyrat/modules/autotransfer/code/autotransfer.dm +++ b/modular_skyrat/modules/autotransfer/code/autotransfer.dm @@ -17,7 +17,7 @@ SUBSYSTEM_DEF(autotransfer) return SS_INIT_NO_NEED var/init_vote = CONFIG_GET(number/vote_autotransfer_initial) - starttime = world.realtime // Skyrat edit + starttime = REALTIMEOFDAY targettime = starttime + init_vote voteinterval = CONFIG_GET(number/vote_autotransfer_interval) maxvotes = CONFIG_GET(number/vote_autotransfer_maximum) @@ -29,7 +29,7 @@ SUBSYSTEM_DEF(autotransfer) curvotes = SSautotransfer.curvotes /datum/controller/subsystem/autotransfer/fire() - if(world.realtime < targettime) // Skyrat edit + if(REALTIMEOFDAY < targettime) return if(maxvotes == NO_MAXVOTES_CAP || maxvotes > curvotes) SSvote.initiate_vote(/datum/vote/transfer_vote, "automatic transfer", forced = TRUE) @@ -38,4 +38,17 @@ SUBSYSTEM_DEF(autotransfer) else SSshuttle.autoEnd() +/** + * At shift start, pulls the autotransfer interval from config and applies + * + * Arguments: + * * real_round_shift_time - World time the round left the pregame lobby + */ +/datum/controller/subsystem/autotransfer/proc/new_shift(real_round_start_time) + var/init_vote = CONFIG_GET(number/vote_autotransfer_initial) // Check if an admin has manually set an override in the pre-game lobby + starttime = real_round_start_time + targettime = starttime + init_vote + log_game("Autotransfer enabled, first vote in [DisplayTimeText(targettime - starttime)]") + message_admins("Autotransfer enabled, first vote in [DisplayTimeText(targettime - starttime)]") + #undef NO_MAXVOTES_CAP