From 0651ab83b6d80b707b2d29c0c77ffb078dfde0bd Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Wed, 1 Jan 2025 17:26:19 -0800 Subject: [PATCH 1/4] debug logging Use with replay 23962051 to see drones not being cleaned up --- lua/SimUtils.lua | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lua/SimUtils.lua b/lua/SimUtils.lua index f006a8ca13..0b0672955a 100644 --- a/lua/SimUtils.lua +++ b/lua/SimUtils.lua @@ -532,11 +532,14 @@ end ---@param trackers RebuildTracker[] ---@param army Army function TryRebuildUnits(trackers, army) + LOG(repr(trackers, {depth = 2}), army, debug.traceback()) local rebuilders = {} for k, tracker in ipairs(trackers) do if tracker.Success then + LOG('skipping rebuilder', k) continue end + LOG('creating rebuilder', k) -- create invisible drone which belongs to allied army. BuildRange = 10000 local rebuilder = CreateUnitHPR('ZXA0001', army, 5, 20, 5, 0, 0, 0) rebuilder.TargetBuildTime = tracker.TargetBuildTime @@ -545,6 +548,8 @@ function TryRebuildUnits(trackers, army) IssueBuildMobile({ rebuilder }, tracker.UnitPos, tracker.UnitBlueprintID, {}) end + LOG('supposedly Created rebuilders') + WaitTicks(3) -- wait some ticks (3 is minimum), IssueBuildMobile() is not instant for k, rebuilder in rebuilders do @@ -553,8 +558,12 @@ function TryRebuildUnits(trackers, army) rebuilder:SetConsumptionPerSecondEnergy(0) end + LOG('supposedly rebuilding') + WaitTicks(1) + LOG('supposedly rebuilt') + for k, rebuilder in ipairs(rebuilders) do local tracker = trackers[k] local newUnit = rebuilder:GetFocusUnit() @@ -562,7 +571,11 @@ function TryRebuildUnits(trackers, army) if newUnit and math.abs(progressDif) < 0.001 then newUnit:SetHealth(newUnit, tracker.UnitHealth) tracker.Success = true + LOG('succeeded tracker', k) + else + LOG('failed tracker', k, 'newUnit', newUnit, 'progressDiff', math.abs(progressDif)) end + LOG('rebuilder destroyed', k) rebuilder:Destroy() end end From 0f1555940645da8c3f3824a3194818a331bcbba5 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Wed, 1 Jan 2025 17:27:12 -0800 Subject: [PATCH 2/4] Remove ipairs iterators from `TryRebuildUnits` --- lua/SimUtils.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/SimUtils.lua b/lua/SimUtils.lua index 0b0672955a..8cd8ab4a15 100644 --- a/lua/SimUtils.lua +++ b/lua/SimUtils.lua @@ -534,7 +534,7 @@ end function TryRebuildUnits(trackers, army) LOG(repr(trackers, {depth = 2}), army, debug.traceback()) local rebuilders = {} - for k, tracker in ipairs(trackers) do + for k, tracker in trackers do if tracker.Success then LOG('skipping rebuilder', k) continue @@ -564,7 +564,7 @@ function TryRebuildUnits(trackers, army) LOG('supposedly rebuilt') - for k, rebuilder in ipairs(rebuilders) do + for k, rebuilder in rebuilders do local tracker = trackers[k] local newUnit = rebuilder:GetFocusUnit() local progressDif = rebuilder:GetWorkProgress() - tracker.UnitProgress From f4ca343328db938d6df23f0901683fa4181d3a27 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Wed, 1 Jan 2025 17:28:18 -0800 Subject: [PATCH 3/4] Remove logging --- lua/SimUtils.lua | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/lua/SimUtils.lua b/lua/SimUtils.lua index 8cd8ab4a15..1850dbc8f3 100644 --- a/lua/SimUtils.lua +++ b/lua/SimUtils.lua @@ -532,14 +532,11 @@ end ---@param trackers RebuildTracker[] ---@param army Army function TryRebuildUnits(trackers, army) - LOG(repr(trackers, {depth = 2}), army, debug.traceback()) local rebuilders = {} for k, tracker in trackers do if tracker.Success then - LOG('skipping rebuilder', k) continue end - LOG('creating rebuilder', k) -- create invisible drone which belongs to allied army. BuildRange = 10000 local rebuilder = CreateUnitHPR('ZXA0001', army, 5, 20, 5, 0, 0, 0) rebuilder.TargetBuildTime = tracker.TargetBuildTime @@ -548,8 +545,6 @@ function TryRebuildUnits(trackers, army) IssueBuildMobile({ rebuilder }, tracker.UnitPos, tracker.UnitBlueprintID, {}) end - LOG('supposedly Created rebuilders') - WaitTicks(3) -- wait some ticks (3 is minimum), IssueBuildMobile() is not instant for k, rebuilder in rebuilders do @@ -558,12 +553,8 @@ function TryRebuildUnits(trackers, army) rebuilder:SetConsumptionPerSecondEnergy(0) end - LOG('supposedly rebuilding') - WaitTicks(1) - LOG('supposedly rebuilt') - for k, rebuilder in rebuilders do local tracker = trackers[k] local newUnit = rebuilder:GetFocusUnit() @@ -571,11 +562,7 @@ function TryRebuildUnits(trackers, army) if newUnit and math.abs(progressDif) < 0.001 then newUnit:SetHealth(newUnit, tracker.UnitHealth) tracker.Success = true - LOG('succeeded tracker', k) - else - LOG('failed tracker', k, 'newUnit', newUnit, 'progressDiff', math.abs(progressDif)) end - LOG('rebuilder destroyed', k) rebuilder:Destroy() end end From 878abda85b310b2225bc2e3f4240fa603e8ebaf3 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Wed, 1 Jan 2025 17:39:06 -0800 Subject: [PATCH 4/4] Create fix.6609.md --- changelog/snippets/fix.6609.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog/snippets/fix.6609.md diff --git a/changelog/snippets/fix.6609.md b/changelog/snippets/fix.6609.md new file mode 100644 index 0000000000..e15719897a --- /dev/null +++ b/changelog/snippets/fix.6609.md @@ -0,0 +1 @@ +- (#6609) Fix drones meant to rebuild unbuilt units during unit transfer not being cleaned up when rebuilding fails.