From 31ce9d598eb5e049fbc9508b1f4db7f85b2166d0 Mon Sep 17 00:00:00 2001 From: Will Berry <73126355+wdberry@users.noreply.github.com> Date: Tue, 4 Apr 2023 12:09:16 -0400 Subject: [PATCH] Fix edge case where manager script.on_nth_tick could clobber main script.on_nth_tick --- cybersyn/scripts/main.lua | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/cybersyn/scripts/main.lua b/cybersyn/scripts/main.lua index e276892..85a27ab 100644 --- a/cybersyn/scripts/main.lua +++ b/cybersyn/scripts/main.lua @@ -847,17 +847,26 @@ local function grab_all_settings() end local function register_tick() script.on_nth_tick(nil) - if mod_settings.tps > DELTA then - local nth_tick_main = ceil(60/mod_settings.tps)--[[@as uint]] - script.on_nth_tick(nth_tick_main, function() + --edge case catch to register both main and manager tick if they're scheduled to run on the same ticks + if mod_settings.manager_enabled and mod_settings.manager_ups == mod_settings.tps and mod_settings.tps > DELTA then + local nth_tick = ceil(60/mod_settings.tps) + script.on_nth_tick(nth_tick, function() tick(global, mod_settings) - end) - end - if mod_settings.manager_enabled and mod_settings.manager_ups > DELTA then - local nth_tick_manager = ceil(60/mod_settings.manager_ups)--[[@as uint]] - script.on_nth_tick(nth_tick_manager, function() manager.tick(global) end) + else + if mod_settings.tps > DELTA then + local nth_tick_main = ceil(60/mod_settings.tps)--[[@as uint]] + script.on_nth_tick(nth_tick_main, function() + tick(global, mod_settings) + end) + end + if mod_settings.manager_enabled and mod_settings.manager_ups > DELTA then + local nth_tick_manager = ceil(60/mod_settings.manager_ups)--[[@as uint]] + script.on_nth_tick(nth_tick_manager, function() + manager.tick(global) + end) + end end end local function on_settings_changed(event)