From d2611536f3385b72f559073ac670e609e403c4c8 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sat, 21 Feb 2026 22:16:52 -0800 Subject: [PATCH 01/13] Remove RenderFireClock from nuke-capable units --- units/UAS0304/UAS0304_unit.bp | 1 - units/UES0304/UES0304_unit.bp | 1 - units/URS0304/URS0304_unit.bp | 1 - units/XSS0302/XSS0302_unit.bp | 3 --- 4 files changed, 6 deletions(-) diff --git a/units/UAS0304/UAS0304_unit.bp b/units/UAS0304/UAS0304_unit.bp index c36d2892c55..1434d3889ef 100644 --- a/units/UAS0304/UAS0304_unit.bp +++ b/units/UAS0304/UAS0304_unit.bp @@ -280,7 +280,6 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_IndirectFire", RateOfFire = 10/100, --10/integer interval in ticks - RenderFireClock = true, TargetPriorities = { "TECH3 STRUCTURE", "TECH2 STRUCTURE", diff --git a/units/UES0304/UES0304_unit.bp b/units/UES0304/UES0304_unit.bp index 7e147daacc8..061e0dac89c 100644 --- a/units/UES0304/UES0304_unit.bp +++ b/units/UES0304/UES0304_unit.bp @@ -277,7 +277,6 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_IndirectFire", RateOfFire = 10/100, --10/integer interval in ticks - RenderFireClock = true, TargetPriorities = { "TECH3 STRUCTURE", "TECH2 STRUCTURE", diff --git a/units/URS0304/URS0304_unit.bp b/units/URS0304/URS0304_unit.bp index 1883ef9d42e..29761b780bd 100644 --- a/units/URS0304/URS0304_unit.bp +++ b/units/URS0304/URS0304_unit.bp @@ -315,7 +315,6 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_IndirectFire", RateOfFire = 10/100, --10/integer interval in ticks - RenderFireClock = true, TargetPriorities = { "TECH3 STRUCTURE", "TECH2 STRUCTURE", diff --git a/units/XSS0302/XSS0302_unit.bp b/units/XSS0302/XSS0302_unit.bp index 38efd20486c..1a59ac99d05 100644 --- a/units/XSS0302/XSS0302_unit.bp +++ b/units/XSS0302/XSS0302_unit.bp @@ -234,7 +234,6 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks - RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { @@ -298,7 +297,6 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks - RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { @@ -362,7 +360,6 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks - RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { From edaf6332a9ff5ec934b3b4c7c5cfe47335084220 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sat, 21 Feb 2026 23:10:07 -0800 Subject: [PATCH 02/13] Revert "Remove RenderFireClock from nuke-capable units" This reverts commit d2611536f3385b72f559073ac670e609e403c4c8. --- units/UAS0304/UAS0304_unit.bp | 1 + units/UES0304/UES0304_unit.bp | 1 + units/URS0304/URS0304_unit.bp | 1 + units/XSS0302/XSS0302_unit.bp | 3 +++ 4 files changed, 6 insertions(+) diff --git a/units/UAS0304/UAS0304_unit.bp b/units/UAS0304/UAS0304_unit.bp index 1434d3889ef..c36d2892c55 100644 --- a/units/UAS0304/UAS0304_unit.bp +++ b/units/UAS0304/UAS0304_unit.bp @@ -280,6 +280,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_IndirectFire", RateOfFire = 10/100, --10/integer interval in ticks + RenderFireClock = true, TargetPriorities = { "TECH3 STRUCTURE", "TECH2 STRUCTURE", diff --git a/units/UES0304/UES0304_unit.bp b/units/UES0304/UES0304_unit.bp index 061e0dac89c..7e147daacc8 100644 --- a/units/UES0304/UES0304_unit.bp +++ b/units/UES0304/UES0304_unit.bp @@ -277,6 +277,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_IndirectFire", RateOfFire = 10/100, --10/integer interval in ticks + RenderFireClock = true, TargetPriorities = { "TECH3 STRUCTURE", "TECH2 STRUCTURE", diff --git a/units/URS0304/URS0304_unit.bp b/units/URS0304/URS0304_unit.bp index 29761b780bd..1883ef9d42e 100644 --- a/units/URS0304/URS0304_unit.bp +++ b/units/URS0304/URS0304_unit.bp @@ -315,6 +315,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_IndirectFire", RateOfFire = 10/100, --10/integer interval in ticks + RenderFireClock = true, TargetPriorities = { "TECH3 STRUCTURE", "TECH2 STRUCTURE", diff --git a/units/XSS0302/XSS0302_unit.bp b/units/XSS0302/XSS0302_unit.bp index 1a59ac99d05..38efd20486c 100644 --- a/units/XSS0302/XSS0302_unit.bp +++ b/units/XSS0302/XSS0302_unit.bp @@ -234,6 +234,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks + RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { @@ -297,6 +298,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks + RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { @@ -360,6 +362,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks + RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { From 96ef4a592e7545892a2874212ac033addd1dc75e Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sat, 21 Feb 2026 23:14:05 -0800 Subject: [PATCH 03/13] non-working fix --- lua/sim/weapons/DefaultProjectileWeapon.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lua/sim/weapons/DefaultProjectileWeapon.lua b/lua/sim/weapons/DefaultProjectileWeapon.lua index ecf9d09f2ea..448b8a834e5 100644 --- a/lua/sim/weapons/DefaultProjectileWeapon.lua +++ b/lua/sim/weapons/DefaultProjectileWeapon.lua @@ -935,10 +935,14 @@ DefaultProjectileWeapon = ClassWeapon(Weapon) { local unit = self.unit local clockTime = math.round(10 * rateOfFire) local totalTime = clockTime - while clockTime >= 0 and - not self:BeenDestroyed() and - not unit.Dead do - unit:SetWorkProgress(1 - clockTime / totalTime) + while clockTime >= 0 + and not self:BeenDestroyed() + and not unit.Dead + do + -- do not override work progress that is used for replenishing silo ammo upon unit transfer + if not unit:IsUnitState("SiloBuildingAmmo") then + unit:SetWorkProgress(1 - clockTime / totalTime) + end clockTime = clockTime - 1 WaitSeconds(0.1) end From 05ed4ba350c34e2ebc86aa9fd610c7706985b68f Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sat, 21 Feb 2026 23:17:32 -0800 Subject: [PATCH 04/13] Reapply "Remove RenderFireClock from nuke-capable units" This reverts commit edaf6332a9ff5ec934b3b4c7c5cfe47335084220. --- units/UAS0304/UAS0304_unit.bp | 1 - units/UES0304/UES0304_unit.bp | 1 - units/URS0304/URS0304_unit.bp | 1 - units/XSS0302/XSS0302_unit.bp | 3 --- 4 files changed, 6 deletions(-) diff --git a/units/UAS0304/UAS0304_unit.bp b/units/UAS0304/UAS0304_unit.bp index c36d2892c55..1434d3889ef 100644 --- a/units/UAS0304/UAS0304_unit.bp +++ b/units/UAS0304/UAS0304_unit.bp @@ -280,7 +280,6 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_IndirectFire", RateOfFire = 10/100, --10/integer interval in ticks - RenderFireClock = true, TargetPriorities = { "TECH3 STRUCTURE", "TECH2 STRUCTURE", diff --git a/units/UES0304/UES0304_unit.bp b/units/UES0304/UES0304_unit.bp index 7e147daacc8..061e0dac89c 100644 --- a/units/UES0304/UES0304_unit.bp +++ b/units/UES0304/UES0304_unit.bp @@ -277,7 +277,6 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_IndirectFire", RateOfFire = 10/100, --10/integer interval in ticks - RenderFireClock = true, TargetPriorities = { "TECH3 STRUCTURE", "TECH2 STRUCTURE", diff --git a/units/URS0304/URS0304_unit.bp b/units/URS0304/URS0304_unit.bp index 1883ef9d42e..29761b780bd 100644 --- a/units/URS0304/URS0304_unit.bp +++ b/units/URS0304/URS0304_unit.bp @@ -315,7 +315,6 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_IndirectFire", RateOfFire = 10/100, --10/integer interval in ticks - RenderFireClock = true, TargetPriorities = { "TECH3 STRUCTURE", "TECH2 STRUCTURE", diff --git a/units/XSS0302/XSS0302_unit.bp b/units/XSS0302/XSS0302_unit.bp index 38efd20486c..1a59ac99d05 100644 --- a/units/XSS0302/XSS0302_unit.bp +++ b/units/XSS0302/XSS0302_unit.bp @@ -234,7 +234,6 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks - RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { @@ -298,7 +297,6 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks - RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { @@ -362,7 +360,6 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks - RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { From 5d1a8ca43db0f7960b39d95049e49d28fb9b9e8c Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sat, 21 Feb 2026 23:18:26 -0800 Subject: [PATCH 05/13] Revert "non-working fix" This reverts commit 96ef4a592e7545892a2874212ac033addd1dc75e. --- lua/sim/weapons/DefaultProjectileWeapon.lua | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/lua/sim/weapons/DefaultProjectileWeapon.lua b/lua/sim/weapons/DefaultProjectileWeapon.lua index 448b8a834e5..ecf9d09f2ea 100644 --- a/lua/sim/weapons/DefaultProjectileWeapon.lua +++ b/lua/sim/weapons/DefaultProjectileWeapon.lua @@ -935,14 +935,10 @@ DefaultProjectileWeapon = ClassWeapon(Weapon) { local unit = self.unit local clockTime = math.round(10 * rateOfFire) local totalTime = clockTime - while clockTime >= 0 - and not self:BeenDestroyed() - and not unit.Dead - do - -- do not override work progress that is used for replenishing silo ammo upon unit transfer - if not unit:IsUnitState("SiloBuildingAmmo") then - unit:SetWorkProgress(1 - clockTime / totalTime) - end + while clockTime >= 0 and + not self:BeenDestroyed() and + not unit.Dead do + unit:SetWorkProgress(1 - clockTime / totalTime) clockTime = clockTime - 1 WaitSeconds(0.1) end From ecc424425c716a85a1b8f2d793fff7fa2e131d8b Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sun, 22 Feb 2026 13:06:40 -0800 Subject: [PATCH 06/13] Create fix.7051.md --- changelog/snippets/fix.7051.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog/snippets/fix.7051.md diff --git a/changelog/snippets/fix.7051.md b/changelog/snippets/fix.7051.md new file mode 100644 index 00000000000..c8437c87134 --- /dev/null +++ b/changelog/snippets/fix.7051.md @@ -0,0 +1 @@ +- (#7051) Fix a unit-transfer exploit that adds silo progress to nuke subs and the Seraphim battleship for free. From d6b811e5da72854c290132b7839ec35d0ef5b803 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sun, 22 Feb 2026 13:07:49 -0800 Subject: [PATCH 07/13] Update WeaponBlueprint.lua --- engine/Core/Blueprints/WeaponBlueprint.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/engine/Core/Blueprints/WeaponBlueprint.lua b/engine/Core/Blueprints/WeaponBlueprint.lua index 2aad3796013..2be5646e000 100644 --- a/engine/Core/Blueprints/WeaponBlueprint.lua +++ b/engine/Core/Blueprints/WeaponBlueprint.lua @@ -280,7 +280,9 @@ ---@field RateOfFire number --- if this weapon will find new target on miss events ---@field ReTargetOnMiss? boolean ---- if `true`, will set the orange work progress bar to display the reload progress of this weapon +--- if `true`, will set the orange work progress bar to display the reload progress of this weapon. +--- Should not be used for units with silo weapons, as the work progress of the reload will transfer +--- as silo build progress after unit transfer. ---@field RenderFireClock? boolean --- used by the XSL0402 (Othuy "lighting storm") to define the time to re-aquire a new target before going --- through the next lighting strike process From 6f5bd13bab6c0aba581118e34fe076a4e02bea43 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sun, 22 Feb 2026 16:27:35 -0800 Subject: [PATCH 08/13] Reapply "non-working fix" This reverts commit 5d1a8ca43db0f7960b39d95049e49d28fb9b9e8c. --- lua/sim/weapons/DefaultProjectileWeapon.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lua/sim/weapons/DefaultProjectileWeapon.lua b/lua/sim/weapons/DefaultProjectileWeapon.lua index ecf9d09f2ea..448b8a834e5 100644 --- a/lua/sim/weapons/DefaultProjectileWeapon.lua +++ b/lua/sim/weapons/DefaultProjectileWeapon.lua @@ -935,10 +935,14 @@ DefaultProjectileWeapon = ClassWeapon(Weapon) { local unit = self.unit local clockTime = math.round(10 * rateOfFire) local totalTime = clockTime - while clockTime >= 0 and - not self:BeenDestroyed() and - not unit.Dead do - unit:SetWorkProgress(1 - clockTime / totalTime) + while clockTime >= 0 + and not self:BeenDestroyed() + and not unit.Dead + do + -- do not override work progress that is used for replenishing silo ammo upon unit transfer + if not unit:IsUnitState("SiloBuildingAmmo") then + unit:SetWorkProgress(1 - clockTime / totalTime) + end clockTime = clockTime - 1 WaitSeconds(0.1) end From fe0c8bf5bb2959f1043aa2a925f9b405811db313 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sun, 22 Feb 2026 16:27:38 -0800 Subject: [PATCH 09/13] Revert "Reapply "Remove RenderFireClock from nuke-capable units"" This reverts commit 05ed4ba350c34e2ebc86aa9fd610c7706985b68f. --- units/UAS0304/UAS0304_unit.bp | 1 + units/UES0304/UES0304_unit.bp | 1 + units/URS0304/URS0304_unit.bp | 1 + units/XSS0302/XSS0302_unit.bp | 3 +++ 4 files changed, 6 insertions(+) diff --git a/units/UAS0304/UAS0304_unit.bp b/units/UAS0304/UAS0304_unit.bp index 1434d3889ef..c36d2892c55 100644 --- a/units/UAS0304/UAS0304_unit.bp +++ b/units/UAS0304/UAS0304_unit.bp @@ -280,6 +280,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_IndirectFire", RateOfFire = 10/100, --10/integer interval in ticks + RenderFireClock = true, TargetPriorities = { "TECH3 STRUCTURE", "TECH2 STRUCTURE", diff --git a/units/UES0304/UES0304_unit.bp b/units/UES0304/UES0304_unit.bp index 061e0dac89c..7e147daacc8 100644 --- a/units/UES0304/UES0304_unit.bp +++ b/units/UES0304/UES0304_unit.bp @@ -277,6 +277,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_IndirectFire", RateOfFire = 10/100, --10/integer interval in ticks + RenderFireClock = true, TargetPriorities = { "TECH3 STRUCTURE", "TECH2 STRUCTURE", diff --git a/units/URS0304/URS0304_unit.bp b/units/URS0304/URS0304_unit.bp index 29761b780bd..1883ef9d42e 100644 --- a/units/URS0304/URS0304_unit.bp +++ b/units/URS0304/URS0304_unit.bp @@ -315,6 +315,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_IndirectFire", RateOfFire = 10/100, --10/integer interval in ticks + RenderFireClock = true, TargetPriorities = { "TECH3 STRUCTURE", "TECH2 STRUCTURE", diff --git a/units/XSS0302/XSS0302_unit.bp b/units/XSS0302/XSS0302_unit.bp index 1a59ac99d05..38efd20486c 100644 --- a/units/XSS0302/XSS0302_unit.bp +++ b/units/XSS0302/XSS0302_unit.bp @@ -234,6 +234,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks + RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { @@ -297,6 +298,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks + RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { @@ -360,6 +362,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks + RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { From 1a12b51dff6fb2ee98985a9300da5e3f7df6866c Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sun, 22 Feb 2026 18:49:40 -0800 Subject: [PATCH 10/13] Don't transfer work progress if unit is not building ammo --- lua/SimUtils.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/SimUtils.lua b/lua/SimUtils.lua index e9f44fde83e..f9d193cd3ea 100644 --- a/lua/SimUtils.lua +++ b/lua/SimUtils.lua @@ -289,7 +289,7 @@ function TransferUnitsOwnership(units, toArmy, captured, noRestrictions) -- B E F O R E local orientation = unit:GetOrientation() - local workprogress = unit:GetWorkProgress() + local siloWorkProgress = unit:IsUnitState("SiloBuildingAmmo") and unit:GetWorkProgress() or 0 local numNukes = unit:GetNukeSiloAmmoCount() -- nuclear missiles; SML or SMD local numTacMsl = unit:GetTacticalSiloAmmoCount() local massKilled = unit.VetExperience @@ -448,7 +448,7 @@ function TransferUnitsOwnership(units, toArmy, captured, noRestrictions) end if newUnit.Blueprint.CategoriesHash["SILO"] then - newUnit:GiveNukeSiloBlocks(workprogress) + newUnit:GiveNukeSiloBlocks(siloWorkProgress) end local newShield = newUnit.MyShield From c9336ba31703af8c9bc8e5dc2f4fb9256166e242 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sun, 22 Feb 2026 19:04:40 -0800 Subject: [PATCH 11/13] Reset work progress upon silo build --- lua/sim/Unit.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lua/sim/Unit.lua b/lua/sim/Unit.lua index e0b93be0a2b..a445068ed9e 100644 --- a/lua/sim/Unit.lua +++ b/lua/sim/Unit.lua @@ -2556,6 +2556,11 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni self.SiloWeapon = weapon self.SiloProjectile = weapon:GetProjectileBlueprint() + -- Prevent work progress set by weapons using `RenderFireClock` from + -- turning into silo progress after ownership transfer of a unit paused + -- in the silo build state without having updated progress by the engine. + self:SetWorkProgress(0) + -- for AI events self.Brain:OnUnitSiloBuildStart(self, weapon) end, From 5ecb75af059cd2326ff92aa3867f53aa9d209966 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sun, 22 Feb 2026 19:04:48 -0800 Subject: [PATCH 12/13] Debugging setup --- lua/SimUtils.lua | 1 + lua/sim/Unit.lua | 10 ++++++++++ units/XSS0302/XSS0302_unit.bp | 4 ++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lua/SimUtils.lua b/lua/SimUtils.lua index f9d193cd3ea..1c2b551bed7 100644 --- a/lua/SimUtils.lua +++ b/lua/SimUtils.lua @@ -290,6 +290,7 @@ function TransferUnitsOwnership(units, toArmy, captured, noRestrictions) -- B E F O R E local orientation = unit:GetOrientation() local siloWorkProgress = unit:IsUnitState("SiloBuildingAmmo") and unit:GetWorkProgress() or 0 + unit:DebugLog("Transfer progress:", siloWorkProgress) local numNukes = unit:GetNukeSiloAmmoCount() -- nuclear missiles; SML or SMD local numTacMsl = unit:GetTacticalSiloAmmoCount() local massKilled = unit.VetExperience diff --git a/lua/sim/Unit.lua b/lua/sim/Unit.lua index a445068ed9e..5dece7d3a18 100644 --- a/lua/sim/Unit.lua +++ b/lua/sim/Unit.lua @@ -2550,6 +2550,13 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni self.Brain:OnUnitFailedToBeBuilt(self) end, + ---@param self Unit + ---@param progress number + SetWorkProgress = function(self, progress) + -- self:DebugLog(string.format("%d - Engine progress: %f Lua Progress: %f", GetGameTick(), self:GetWorkProgress(), progress), debug.traceback()) + moho.unit_methods.SetWorkProgress(self, progress) + end, + ---@param self Unit ---@param weapon Weapon OnSiloBuildStart = function(self, weapon) @@ -2563,6 +2570,8 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni -- for AI events self.Brain:OnUnitSiloBuildStart(self, weapon) + + self:DebugLog("Start silo build") end, ---@param self Unit @@ -2573,6 +2582,7 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni -- for AI events self.Brain:OnUnitSiloBuildEnd(self, weapon) + self:DebugLog("Ended silo build") end, ------------------------------------------------------------------------------------------- diff --git a/units/XSS0302/XSS0302_unit.bp b/units/XSS0302/XSS0302_unit.bp index 38efd20486c..76509effbef 100644 --- a/units/XSS0302/XSS0302_unit.bp +++ b/units/XSS0302/XSS0302_unit.bp @@ -298,7 +298,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks - RenderFireClock = true, + RenderFireClock = false, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { @@ -362,7 +362,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks - RenderFireClock = true, + RenderFireClock = false, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { From cbab5a377f86c9bb67f70cab53aa9ae8d97a9dec Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sun, 22 Feb 2026 19:04:59 -0800 Subject: [PATCH 13/13] Revert "Debugging setup" This reverts commit 5ecb75af059cd2326ff92aa3867f53aa9d209966. --- lua/SimUtils.lua | 1 - lua/sim/Unit.lua | 10 ---------- units/XSS0302/XSS0302_unit.bp | 4 ++-- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/lua/SimUtils.lua b/lua/SimUtils.lua index 1c2b551bed7..f9d193cd3ea 100644 --- a/lua/SimUtils.lua +++ b/lua/SimUtils.lua @@ -290,7 +290,6 @@ function TransferUnitsOwnership(units, toArmy, captured, noRestrictions) -- B E F O R E local orientation = unit:GetOrientation() local siloWorkProgress = unit:IsUnitState("SiloBuildingAmmo") and unit:GetWorkProgress() or 0 - unit:DebugLog("Transfer progress:", siloWorkProgress) local numNukes = unit:GetNukeSiloAmmoCount() -- nuclear missiles; SML or SMD local numTacMsl = unit:GetTacticalSiloAmmoCount() local massKilled = unit.VetExperience diff --git a/lua/sim/Unit.lua b/lua/sim/Unit.lua index 5dece7d3a18..a445068ed9e 100644 --- a/lua/sim/Unit.lua +++ b/lua/sim/Unit.lua @@ -2550,13 +2550,6 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni self.Brain:OnUnitFailedToBeBuilt(self) end, - ---@param self Unit - ---@param progress number - SetWorkProgress = function(self, progress) - -- self:DebugLog(string.format("%d - Engine progress: %f Lua Progress: %f", GetGameTick(), self:GetWorkProgress(), progress), debug.traceback()) - moho.unit_methods.SetWorkProgress(self, progress) - end, - ---@param self Unit ---@param weapon Weapon OnSiloBuildStart = function(self, weapon) @@ -2570,8 +2563,6 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni -- for AI events self.Brain:OnUnitSiloBuildStart(self, weapon) - - self:DebugLog("Start silo build") end, ---@param self Unit @@ -2582,7 +2573,6 @@ Unit = ClassUnit(moho.unit_methods, IntelComponent, VeterancyComponent, DebugUni -- for AI events self.Brain:OnUnitSiloBuildEnd(self, weapon) - self:DebugLog("Ended silo build") end, ------------------------------------------------------------------------------------------- diff --git a/units/XSS0302/XSS0302_unit.bp b/units/XSS0302/XSS0302_unit.bp index 76509effbef..38efd20486c 100644 --- a/units/XSS0302/XSS0302_unit.bp +++ b/units/XSS0302/XSS0302_unit.bp @@ -298,7 +298,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks - RenderFireClock = false, + RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = { @@ -362,7 +362,7 @@ UnitBlueprint{ RackSlavedToTurret = false, RangeCategory = "UWRC_DirectFire", RateOfFire = 10/40, --10/integer interval in ticks - RenderFireClock = false, + RenderFireClock = true, SlavedToBody = true, SlavedToBodyArcRange = 155, TargetPriorities = {