From 9af03e8324578bc054e3e0b95ec1cf7d95ba31ca Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Fri, 24 Jan 2025 19:27:32 -0800 Subject: [PATCH 1/4] Fix use of build effect parameter for cybran factories --- lua/EffectUtilities.lua | 2 +- lua/sim/units/cybran/CAirFactoryUnit.lua | 5 ++++- lua/sim/units/cybran/CLandFactoryUnit.lua | 5 ++++- lua/sim/units/cybran/CSeaFactoryUnit.lua | 6 ++++-- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lua/EffectUtilities.lua b/lua/EffectUtilities.lua index c42fb61acf..2bd6859e45 100644 --- a/lua/EffectUtilities.lua +++ b/lua/EffectUtilities.lua @@ -336,7 +336,7 @@ local UnitBuildEffects = { --- Creates the Cybran factor build effects ---@param builder Unit ---@param unitBeingBuilt Unit ----@param buildBones Bone[] +---@param buildBones BuildBones ---@param buildEffectsBag TrashBag function CreateCybranFactoryBuildEffects(builder, unitBeingBuilt, buildBones, buildEffectsBag) CreateCybranBuildBeamsOpti(builder, nil, unitBeingBuilt, buildEffectsBag, false) diff --git a/lua/sim/units/cybran/CAirFactoryUnit.lua b/lua/sim/units/cybran/CAirFactoryUnit.lua index 84def0afb6..e34563e1c1 100644 --- a/lua/sim/units/cybran/CAirFactoryUnit.lua +++ b/lua/sim/units/cybran/CAirFactoryUnit.lua @@ -38,12 +38,15 @@ local AnimatorSetRate = moho.AnimationManipulator.SetRate ---@class CAirFactoryUnit : AirFactoryUnit ---@field BuildEffectsBag TrashBag ---@field BuildAnimManip moho.AnimationManipulator +---@field BuildBones BuildBones CAirFactoryUnit = ClassUnit(AirFactoryUnit) { ---@param self AirFactoryUnit OnCreate = function(self) AirFactoryUnitOnCreate(self) + self.BuildBones = self.Blueprint.General.BuildBones + local buildAnimManip = CreateAnimator(self) AnimatorPlayAnim(buildAnimManip, self.Blueprint.Display.AnimationBuild, true) AnimatorSetRate(buildAnimManip, 0) @@ -59,7 +62,7 @@ CAirFactoryUnit = ClassUnit(AirFactoryUnit) { end WaitTicks(2) - CreateCybranFactoryBuildEffects(self, unitBeingBuilt, self.BuildEffectBones, self.BuildEffectsBag) + CreateCybranFactoryBuildEffects(self, unitBeingBuilt, self.BuildBones, self.BuildEffectsBag) end, ---@param self CAirFactoryUnit diff --git a/lua/sim/units/cybran/CLandFactoryUnit.lua b/lua/sim/units/cybran/CLandFactoryUnit.lua index 0efa69b00c..3e1fc6bb3c 100644 --- a/lua/sim/units/cybran/CLandFactoryUnit.lua +++ b/lua/sim/units/cybran/CLandFactoryUnit.lua @@ -38,6 +38,7 @@ local AnimatorSetRate = moho.AnimationManipulator.SetRate ---@class CLandFactoryUnit : LandFactoryUnit ---@field BuildEffectsBag TrashBag ---@field BuildAnimManip moho.AnimationManipulator +---@field BuildBones BuildBones CLandFactoryUnit = ClassUnit(LandFactoryUnit) { ---@param self AirFactoryUnit @@ -48,6 +49,8 @@ CLandFactoryUnit = ClassUnit(LandFactoryUnit) { AnimatorPlayAnim(buildAnimManip, self.Blueprint.Display.AnimationBuild, true) AnimatorSetRate(buildAnimManip, 0) self.BuildAnimManip = self.Trash:Add(buildAnimManip) + + self.BuildBones = self.Blueprint.General.BuildBones end, ---@param self CLandFactoryUnit @@ -58,7 +61,7 @@ CLandFactoryUnit = ClassUnit(LandFactoryUnit) { end WaitTicks(2) - CreateCybranFactoryBuildEffects(self, unitBeingBuilt, self.Blueprint.General.BuildBones, self.BuildEffectsBag) + CreateCybranFactoryBuildEffects(self, unitBeingBuilt, self.BuildBones, self.BuildEffectsBag) end, ---@param self CLandFactoryUnit diff --git a/lua/sim/units/cybran/CSeaFactoryUnit.lua b/lua/sim/units/cybran/CSeaFactoryUnit.lua index c31f0b54d0..950daa94cc 100644 --- a/lua/sim/units/cybran/CSeaFactoryUnit.lua +++ b/lua/sim/units/cybran/CSeaFactoryUnit.lua @@ -46,6 +46,7 @@ local AnimatorSetRate = moho.AnimationManipulator.SetRate ---@class CSeaFactoryUnit : SeaFactoryUnit ---@field BuildEffectsBag TrashBag +---@field BuildBones BuildBones CSeaFactoryUnit = ClassUnit(SeaFactoryUnit) { ---@param self CSeaFactoryUnit @@ -56,8 +57,9 @@ CSeaFactoryUnit = ClassUnit(SeaFactoryUnit) { AnimatorPlayAnim(buildAnimManip, self.Blueprint.Display.AnimationBuild, true) AnimatorSetRate(buildAnimManip, 0) self.BuildAnimManip = self.Trash:Add(buildAnimManip) - end, + self.BuildBones = self.Blueprint.General.BuildBones + end, ---@param self CAirFactoryUnit ---@param unitBeingBuilt Unit @@ -68,7 +70,7 @@ CSeaFactoryUnit = ClassUnit(SeaFactoryUnit) { end WaitTicks(2) - CreateCybranFactoryBuildEffects(self, unitBeingBuilt, self.BuildEffectBones, self.BuildEffectsBag) + CreateCybranFactoryBuildEffects(self, unitBeingBuilt, self.BuildBones, self.BuildEffectsBag) end, ---@param self CSeaFactoryUnit From 2a0dfad418e9124ad8c0eeb60c0358c57d0ee87e Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sat, 25 Jan 2025 19:17:39 -0800 Subject: [PATCH 2/4] Fix related intellisense warnings --- lua/EffectUtilities.lua | 85 +++++++++++++++++++------------------ lua/EffectUtilitiesOpti.lua | 2 +- 2 files changed, 44 insertions(+), 43 deletions(-) diff --git a/lua/EffectUtilities.lua b/lua/EffectUtilities.lua index 2bd6859e45..846a7d1433 100644 --- a/lua/EffectUtilities.lua +++ b/lua/EffectUtilities.lua @@ -48,6 +48,49 @@ local IEffectSetEmitterCurveParam = moho.IEffect.SetEmitterCurveParam local IEffectSetEmitterParam = moho.IEffect.SetEmitterParam local TrashBagAdd = TrashBag.Add +--#region Optimized functions + +local EffectUtilitiesOpti = import("/lua/effectutilitiesopti.lua") +local EffectUtilitiesUEF = import("/lua/effectutilitiesuef.lua") +local EffectUtilitiesGeneric = import("/lua/effectutilitiesgeneric.lua") +local EffectUtilitiesAeon = import("/lua/effectutilitiesaeon.lua") + +CreateCybranEngineerBuildEffectsOpti = EffectUtilitiesOpti.CreateCybranEngineerBuildEffects +CreateCybranBuildBeamsOpti = EffectUtilitiesOpti.CreateCybranBuildBeams +SpawnBuildBotsOpti = EffectUtilitiesOpti.SpawnBuildBots + +CreateAeonBuildBaseThread = EffectUtilitiesAeon.CreateAeonBuildBaseThread +CreateAeonConstructionUnitBuildingEffects = EffectUtilitiesAeon.CreateAeonConstructionUnitBuildingEffects +CreateAeonCommanderBuildingEffects = EffectUtilitiesAeon.CreateAeonCommanderBuildingEffects +CreateAeonFactoryBuildingEffects = EffectUtilitiesAeon.CreateAeonFactoryBuildingEffects +CreateAeonColossusBuildingEffects = EffectUtilitiesAeon.CreateAeonColossusBuildingEffects +CreateAeonCZARBuildingEffects = EffectUtilitiesAeon.CreateAeonCZARBuildingEffects +CreateAeonTempestBuildingEffects = EffectUtilitiesAeon.CreateAeonTempestBuildingEffects +CreateAeonParagonBuildingEffects = EffectUtilitiesAeon.CreateAeonParagonBuildingEffects + +CreateEffectsOpti = EffectUtilitiesGeneric.CreateEffectsOpti +CreateEffectsInTrashbag = EffectUtilitiesGeneric.CreateEffectsInTrashbag +CreateEffectsWithOffsetOpti = EffectUtilitiesGeneric.CreateEffectsWithOffsetOpti +CreateEffectsWithOffsetInTrashbag = EffectUtilitiesGeneric.CreateEffectsWithOffsetInTrashbag +CreateEffectsWithRandomOffsetOpti = EffectUtilitiesGeneric.CreateEffectsWithRandomOffsetOpti +CreateEffectsWithRandomOffsetInTrashbag = EffectUtilitiesGeneric.CreateEffectsWithRandomOffsetInTrashbag +CreateBoneEffectsOpti = EffectUtilitiesGeneric.CreateBoneEffectsOpti +CreateBoneEffectsInTrashbag = EffectUtilitiesGeneric.CreateBoneEffectsInTrashbag +CreateBoneEffectsOffsetOpti = EffectUtilitiesGeneric.CreateBoneEffectsOffsetOpti +CreateBoneEffectsOffsetInTrashbag = EffectUtilitiesGeneric.CreateBoneEffectsOffsetInTrashbag +CreateRandomEffectsOpti = EffectUtilitiesGeneric.CreateRandomEffectsOpti +CreateRandomEffectsInTrashbag = EffectUtilitiesGeneric.CreateRandomEffectsInTrashbag +PlayReclaimEffects = EffectUtilitiesGeneric.PlayReclaimEffects +PlayReclaimEndEffects = EffectUtilitiesGeneric.PlayReclaimEndEffects +ApplyWindDirection = EffectUtilitiesGeneric.ApplyWindDirection + +CreateDefaultBuildBeams = EffectUtilitiesUEF.CreateDefaultBuildBeams +CreateUEFBuildSliceBeams = EffectUtilitiesUEF.CreateUEFBuildSliceBeams +CreateUEFUnitBeingBuiltEffects = EffectUtilitiesUEF.CreateUEFUnitBeingBuiltEffects +CreateUEFCommanderBuildSliceBeams = EffectUtilitiesUEF.CreateUEFCommanderBuildSliceBeams +CreateBuildCubeThread = EffectUtilitiesUEF.CreateBuildCubeThread +--#endregion + -- local DeprecatedWarnings = { } ---@alias AdjacencyBeam {Unit: Unit, Trash: TrashBag} @@ -1477,45 +1520,3 @@ function DestroyRemainingTeleportChargingEffects(unit, effectsBag) unit.TeleportCybranSphere:Destroy() end end - ---- Optimized functions -- - -local EffectUtilitiesOpti = import("/lua/effectutilitiesopti.lua") -local EffectUtilitiesUEF = import("/lua/effectutilitiesuef.lua") -local EffectUtilitiesGeneric = import("/lua/effectutilitiesgeneric.lua") -local EffectUtilitiesAeon = import("/lua/effectutilitiesaeon.lua") - -CreateCybranEngineerBuildEffectsOpti = EffectUtilitiesOpti.CreateCybranEngineerBuildEffects -CreateCybranBuildBeamsOpti = EffectUtilitiesOpti.CreateCybranBuildBeams -SpawnBuildBotsOpti = EffectUtilitiesOpti.SpawnBuildBots - -CreateAeonBuildBaseThread = EffectUtilitiesAeon.CreateAeonBuildBaseThread -CreateAeonConstructionUnitBuildingEffects = EffectUtilitiesAeon.CreateAeonConstructionUnitBuildingEffects -CreateAeonCommanderBuildingEffects = EffectUtilitiesAeon.CreateAeonCommanderBuildingEffects -CreateAeonFactoryBuildingEffects = EffectUtilitiesAeon.CreateAeonFactoryBuildingEffects -CreateAeonColossusBuildingEffects = EffectUtilitiesAeon.CreateAeonColossusBuildingEffects -CreateAeonCZARBuildingEffects = EffectUtilitiesAeon.CreateAeonCZARBuildingEffects -CreateAeonTempestBuildingEffects = EffectUtilitiesAeon.CreateAeonTempestBuildingEffects -CreateAeonParagonBuildingEffects = EffectUtilitiesAeon.CreateAeonParagonBuildingEffects - -CreateEffectsOpti = EffectUtilitiesGeneric.CreateEffectsOpti -CreateEffectsInTrashbag = EffectUtilitiesGeneric.CreateEffectsInTrashbag -CreateEffectsWithOffsetOpti = EffectUtilitiesGeneric.CreateEffectsWithOffsetOpti -CreateEffectsWithOffsetInTrashbag = EffectUtilitiesGeneric.CreateEffectsWithOffsetInTrashbag -CreateEffectsWithRandomOffsetOpti = EffectUtilitiesGeneric.CreateEffectsWithRandomOffsetOpti -CreateEffectsWithRandomOffsetInTrashbag = EffectUtilitiesGeneric.CreateEffectsWithRandomOffsetInTrashbag -CreateBoneEffectsOpti = EffectUtilitiesGeneric.CreateBoneEffectsOpti -CreateBoneEffectsInTrashbag = EffectUtilitiesGeneric.CreateBoneEffectsInTrashbag -CreateBoneEffectsOffsetOpti = EffectUtilitiesGeneric.CreateBoneEffectsOffsetOpti -CreateBoneEffectsOffsetInTrashbag = EffectUtilitiesGeneric.CreateBoneEffectsOffsetInTrashbag -CreateRandomEffectsOpti = EffectUtilitiesGeneric.CreateRandomEffectsOpti -CreateRandomEffectsInTrashbag = EffectUtilitiesGeneric.CreateRandomEffectsInTrashbag -PlayReclaimEffects = EffectUtilitiesGeneric.PlayReclaimEffects -PlayReclaimEndEffects = EffectUtilitiesGeneric.PlayReclaimEndEffects -ApplyWindDirection = EffectUtilitiesGeneric.ApplyWindDirection - -CreateDefaultBuildBeams = EffectUtilitiesUEF.CreateDefaultBuildBeams -CreateUEFBuildSliceBeams = EffectUtilitiesUEF.CreateUEFBuildSliceBeams -CreateUEFUnitBeingBuiltEffects = EffectUtilitiesUEF.CreateUEFUnitBeingBuiltEffects -CreateUEFCommanderBuildSliceBeams = EffectUtilitiesUEF.CreateUEFCommanderBuildSliceBeams -CreateBuildCubeThread = EffectUtilitiesUEF.CreateBuildCubeThread diff --git a/lua/EffectUtilitiesOpti.lua b/lua/EffectUtilitiesOpti.lua index b9b0d00bf5..18b810c1cd 100644 --- a/lua/EffectUtilitiesOpti.lua +++ b/lua/EffectUtilitiesOpti.lua @@ -131,7 +131,7 @@ end --- bots share the welding point which each other, as does the builder with --- itself. ---@param builder Unit A builder with builder.buildEffectBones set ----@param bots Unit[] The bots of the builder +---@param bots? Unit[] The bots of the builder ---@param unitBeingBuilt Unit The unit that we're building ---@param buildEffectsBag TrashBag The bag that we use to store / trash all effects ---@param noBuilderBeams boolean Whether or not the builder is a building From 0b514bf7fa862ff171c0a2c698aa614945f4ef15 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sat, 25 Jan 2025 19:32:16 -0800 Subject: [PATCH 3/4] Fix the effect function getting stuck in the build beams' loop --- lua/EffectUtilities.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/EffectUtilities.lua b/lua/EffectUtilities.lua index 846a7d1433..cea1c5dd84 100644 --- a/lua/EffectUtilities.lua +++ b/lua/EffectUtilities.lua @@ -382,7 +382,7 @@ local UnitBuildEffects = { ---@param buildBones BuildBones ---@param buildEffectsBag TrashBag function CreateCybranFactoryBuildEffects(builder, unitBeingBuilt, buildBones, buildEffectsBag) - CreateCybranBuildBeamsOpti(builder, nil, unitBeingBuilt, buildEffectsBag, false) + TrashBagAdd(buildEffectsBag, ForkThread(CreateCybranBuildBeamsOpti, builder, nil, unitBeingBuilt, buildEffectsBag, false)) local builderArmy = builder.Army for _, bone in buildBones.BuildEffectBones do From 48948249e26c4465ffbcbcb80e860fecf8985b5a Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Sat, 25 Jan 2025 19:59:59 -0800 Subject: [PATCH 4/4] Add fix and graphics snippets --- changelog/snippets/fix.6636.md | 1 + changelog/snippets/graphics.6636.md | 1 + 2 files changed, 2 insertions(+) create mode 100644 changelog/snippets/fix.6636.md create mode 100644 changelog/snippets/graphics.6636.md diff --git a/changelog/snippets/fix.6636.md b/changelog/snippets/fix.6636.md new file mode 100644 index 0000000000..a66df767f4 --- /dev/null +++ b/changelog/snippets/fix.6636.md @@ -0,0 +1 @@ +- (#6636) Fix an error that occurs when a Cybran air factory dies while building something. diff --git a/changelog/snippets/graphics.6636.md b/changelog/snippets/graphics.6636.md new file mode 100644 index 0000000000..506178d736 --- /dev/null +++ b/changelog/snippets/graphics.6636.md @@ -0,0 +1 @@ +- (#6636) Fix some build effects for Cybran land and air factories never appearing.