From 2935c3592c15fa7371e4fd092772cb5ccd606a02 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Thu, 7 Nov 2024 03:33:36 -0800 Subject: [PATCH 01/19] Debug setup --- units/URA0304/URA0304_Script.lua | 30 +++++++++++++++++++++++++++++- units/URA0304/URA0304_unit.bp | 4 ++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/units/URA0304/URA0304_Script.lua b/units/URA0304/URA0304_Script.lua index d66eba9c4a..52545b0ed8 100644 --- a/units/URA0304/URA0304_Script.lua +++ b/units/URA0304/URA0304_Script.lua @@ -12,7 +12,35 @@ local CAAAutocannon = import("/lua/cybranweapons.lua").CAAAutocannon ---@class URA0304 : CAirUnit URA0304 = ClassUnit(CAirUnit) { Weapons = { - Bomb = ClassWeapon(CIFBombNeutronWeapon) {}, + ---@class Bomb : CIFBombNeutronWeapon + Bomb = ClassWeapon(CIFBombNeutronWeapon) { + LastDrop = 0, + Drops = 0, + SumDropInterval = 0, + + ---@param self Bomb + CreateProjectileAtMuzzle = function(self, muzzle) + if self.LastDrop ~= 0 then + local dt = GetGameTick() - self.LastDrop + self.Drops = self.Drops + 1 + self.SumDropInterval = self.SumDropInterval + dt + local ux,uy,uz = self.unit:GetVelocity() + local spd = math.sqrt(ux*ux+uy*uy+uz*uz) * 10 -- convert from ogrids/tick to ogrids/s + LOG(('Ticks between bomb drops %d (avg over %d: %.1f); Unit speed ogrids/s: %.1f'):format( + dt, self.Drops, self.SumDropInterval / self.Drops, spd + )) + end + self.LastDrop = GetGameTick() + CIFBombNeutronWeapon.CreateProjectileAtMuzzle(self, muzzle) + end, + + OnLostTarget = function(self) + self.LastDrop = 0 + self.Drops = 0 + self.SumDropInterval = 0 + CIFBombNeutronWeapon.OnLostTarget(self) + end, + }, AAGun1 = ClassWeapon(CAAAutocannon) {}, AAGun2 = ClassWeapon(CAAAutocannon) {}, }, diff --git a/units/URA0304/URA0304_unit.bp b/units/URA0304/URA0304_unit.bp index 8b9f14e8c3..e5bdb99b99 100644 --- a/units/URA0304/URA0304_unit.bp +++ b/units/URA0304/URA0304_unit.bp @@ -181,8 +181,8 @@ UnitBlueprint{ LifeBarSize = 2, Physics = { Elevation = 18, - FuelRechargeRate = 15, - FuelUseTime = 1000, + FuelRechargeRate = 0, + FuelUseTime = 0, GroundCollisionOffset = 2, MaxSpeed = 0.5, MotionType = "RULEUMT_Air", From f47175722b5670fa2c3fe7f53c360e04b50a38d1 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Thu, 7 Nov 2024 07:19:11 -0800 Subject: [PATCH 02/19] Remove incorrect annotation BombDropThreshold is a weapon blueprint field, not a unit air blueprint field --- engine/Core/Blueprints/UnitBlueprint.lua | 2 -- 1 file changed, 2 deletions(-) diff --git a/engine/Core/Blueprints/UnitBlueprint.lua b/engine/Core/Blueprints/UnitBlueprint.lua index 4d3783ec71..3a868b528c 100644 --- a/engine/Core/Blueprints/UnitBlueprint.lua +++ b/engine/Core/Blueprints/UnitBlueprint.lua @@ -169,8 +169,6 @@ ---@field BankFactor? number --- true if aircraft banks forward/back as well as sideways ---@field BankForward? boolean ---- distance from the target unit will start firing bombs ----@field BombDropThreshold? number --- distance to break off before turning around for another attack run ---@field BreakOffDistance? number --- if the air unit's new target is close-by, it will break off first to increase From fbe13d912c0ca7089e318a1c928c868001531f69 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Thu, 7 Nov 2024 07:19:35 -0800 Subject: [PATCH 03/19] Add units comment for Unit:GetVelocity --- engine/Sim/Unit.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/engine/Sim/Unit.lua b/engine/Sim/Unit.lua index ff305ea867..da5716f2df 100644 --- a/engine/Sim/Unit.lua +++ b/engine/Sim/Unit.lua @@ -293,6 +293,7 @@ end function Unit:GetUnitId() end +--- Returns unit velocity in ogrids/tick ---@return number x ---@return number y ---@return number z From ffec4d2578017b097fdfff86a383d4d58a032482 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Fri, 15 Nov 2024 06:23:03 -0800 Subject: [PATCH 04/19] Masively increase drop threshold --- units/URA0304/URA0304_unit.bp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/units/URA0304/URA0304_unit.bp b/units/URA0304/URA0304_unit.bp index e5bdb99b99..98fd8eb903 100644 --- a/units/URA0304/URA0304_unit.bp +++ b/units/URA0304/URA0304_unit.bp @@ -222,7 +222,7 @@ UnitBlueprint{ }, AutoInitiateAttackCommand = true, BallisticArc = "RULEUBA_None", - BombDropThreshold = 3.5, + BombDropThreshold = 10, CollideFriendly = false, Damage = 2750, DamageFriendly = true, From e3d61fedcb7d6543c45141d725e1703ea74c0bd3 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Fri, 15 Nov 2024 06:26:00 -0800 Subject: [PATCH 05/19] Increase turn speed --- units/URA0304/URA0304_unit.bp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/units/URA0304/URA0304_unit.bp b/units/URA0304/URA0304_unit.bp index 98fd8eb903..d626db4742 100644 --- a/units/URA0304/URA0304_unit.bp +++ b/units/URA0304/URA0304_unit.bp @@ -9,7 +9,7 @@ UnitBlueprint{ BreakOffIfNearNewTarget = true, BreakOffTrigger = 30, CanFly = true, - CombatTurnSpeed = 0.8, + CombatTurnSpeed = 1.5, EngageDistance = 50, KLift = 3, KLiftDamping = 2.5, @@ -25,7 +25,7 @@ UnitBlueprint{ PredictAheadForBombDrop = 3, StartTurnDistance = 5, TightTurnMultiplier = 0, - TurnSpeed = 0.8, + TurnSpeed = 1.5, Winged = true, }, Audio = { From 787f7cd372a2021e88063a0d924a0b995488ab7c Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Fri, 15 Nov 2024 06:26:10 -0800 Subject: [PATCH 06/19] Increase lift factor similar to notha --- units/URA0304/URA0304_unit.bp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/units/URA0304/URA0304_unit.bp b/units/URA0304/URA0304_unit.bp index d626db4742..2e67c8674a 100644 --- a/units/URA0304/URA0304_unit.bp +++ b/units/URA0304/URA0304_unit.bp @@ -19,7 +19,7 @@ UnitBlueprint{ KRollDamping = 2, KTurn = 0.8, KTurnDamping = 1, - LiftFactor = 7, + LiftFactor = 17, MaxAirspeed = 17, MinAirspeed = 15, PredictAheadForBombDrop = 3, From e21b3373a4697c0307f1ca7470928641d12e8865 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Fri, 15 Nov 2024 06:26:34 -0800 Subject: [PATCH 07/19] Hover only at shorter waypoint distance --- units/URA0304/URA0304_unit.bp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/units/URA0304/URA0304_unit.bp b/units/URA0304/URA0304_unit.bp index 2e67c8674a..bb2e211ee6 100644 --- a/units/URA0304/URA0304_unit.bp +++ b/units/URA0304/URA0304_unit.bp @@ -23,7 +23,7 @@ UnitBlueprint{ MaxAirspeed = 17, MinAirspeed = 15, PredictAheadForBombDrop = 3, - StartTurnDistance = 5, + StartTurnDistance = 2, TightTurnMultiplier = 0, TurnSpeed = 1.5, Winged = true, From 5278ebfd9b37113b0ff35488dd7b81d50392f983 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Fri, 15 Nov 2024 06:26:49 -0800 Subject: [PATCH 08/19] Prettier turns --- units/URA0304/URA0304_unit.bp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/units/URA0304/URA0304_unit.bp b/units/URA0304/URA0304_unit.bp index bb2e211ee6..f78e46181b 100644 --- a/units/URA0304/URA0304_unit.bp +++ b/units/URA0304/URA0304_unit.bp @@ -3,7 +3,7 @@ UnitBlueprint{ AI = { GuardReturnRadius = 125 }, Air = { AutoLandTime = 1, - BankFactor = 2.5, + BankFactor = 3, BankForward = false, BreakOffDistance = 60, BreakOffIfNearNewTarget = true, From c9feeb6b9326ac69b308f0078089a5fca39626f7 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Fri, 15 Nov 2024 06:27:11 -0800 Subject: [PATCH 09/19] Smaller loops on auto attack aka +DPS --- units/URA0304/URA0304_unit.bp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/units/URA0304/URA0304_unit.bp b/units/URA0304/URA0304_unit.bp index f78e46181b..e6c387c14b 100644 --- a/units/URA0304/URA0304_unit.bp +++ b/units/URA0304/URA0304_unit.bp @@ -5,9 +5,10 @@ UnitBlueprint{ AutoLandTime = 1, BankFactor = 3, BankForward = false, - BreakOffDistance = 60, + BreakOffDistance = 40, BreakOffIfNearNewTarget = true, BreakOffTrigger = 30, + RandomBreakOffDistanceMult = 1, CanFly = true, CombatTurnSpeed = 1.5, EngageDistance = 50, From 6a9c0556ac871fe277b8eb239b2bcc41df13abcc Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Mon, 2 Dec 2024 21:13:50 -0800 Subject: [PATCH 10/19] Debug: log speed of initial bombing run --- units/URA0304/URA0304_Script.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/units/URA0304/URA0304_Script.lua b/units/URA0304/URA0304_Script.lua index 52545b0ed8..bc056d1913 100644 --- a/units/URA0304/URA0304_Script.lua +++ b/units/URA0304/URA0304_Script.lua @@ -20,15 +20,17 @@ URA0304 = ClassUnit(CAirUnit) { ---@param self Bomb CreateProjectileAtMuzzle = function(self, muzzle) + local ux,uy,uz = self.unit:GetVelocity() + local spd = math.sqrt(ux*ux+uy*uy+uz*uz) * 10 -- convert from ogrids/tick to ogrids/s if self.LastDrop ~= 0 then local dt = GetGameTick() - self.LastDrop self.Drops = self.Drops + 1 self.SumDropInterval = self.SumDropInterval + dt - local ux,uy,uz = self.unit:GetVelocity() - local spd = math.sqrt(ux*ux+uy*uy+uz*uz) * 10 -- convert from ogrids/tick to ogrids/s LOG(('Ticks between bomb drops %d (avg over %d: %.1f); Unit speed ogrids/s: %.1f'):format( dt, self.Drops, self.SumDropInterval / self.Drops, spd )) + else + LOG(("Unit speed ogrids/s: %.1f"):format(spd)) end self.LastDrop = GetGameTick() CIFBombNeutronWeapon.CreateProjectileAtMuzzle(self, muzzle) From fbfcb244cab19d50c8e0bf0972399a24efbe0d4e Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Mon, 2 Dec 2024 21:24:20 -0800 Subject: [PATCH 11/19] Re-add fuel removing it gets the unit stuck inside air staging upon docking --- units/URA0304/URA0304_unit.bp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/units/URA0304/URA0304_unit.bp b/units/URA0304/URA0304_unit.bp index e6c387c14b..88f3e3169f 100644 --- a/units/URA0304/URA0304_unit.bp +++ b/units/URA0304/URA0304_unit.bp @@ -182,8 +182,8 @@ UnitBlueprint{ LifeBarSize = 2, Physics = { Elevation = 18, - FuelRechargeRate = 0, - FuelUseTime = 0, + FuelRechargeRate = 15, + FuelUseTime = 1000, GroundCollisionOffset = 2, MaxSpeed = 0.5, MotionType = "RULEUMT_Air", From 8e7eb8a5acd6110a895af868c90cb91566adc31d Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Mon, 2 Dec 2024 21:24:46 -0800 Subject: [PATCH 12/19] Revert "Hover only at shorter waypoint distance" This reverts commit e21b3373a4697c0307f1ca7470928641d12e8865. --- units/URA0304/URA0304_unit.bp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/units/URA0304/URA0304_unit.bp b/units/URA0304/URA0304_unit.bp index 88f3e3169f..579f44ca0b 100644 --- a/units/URA0304/URA0304_unit.bp +++ b/units/URA0304/URA0304_unit.bp @@ -24,7 +24,7 @@ UnitBlueprint{ MaxAirspeed = 17, MinAirspeed = 15, PredictAheadForBombDrop = 3, - StartTurnDistance = 2, + StartTurnDistance = 5, TightTurnMultiplier = 0, TurnSpeed = 1.5, Winged = true, From 485fedbc92b3b26fc1491b7344525a34f3bf2fb7 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Mon, 2 Dec 2024 22:17:55 -0800 Subject: [PATCH 13/19] Annotate air staging related fields --- engine/Core/Blueprints/UnitBlueprint.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/engine/Core/Blueprints/UnitBlueprint.lua b/engine/Core/Blueprints/UnitBlueprint.lua index f56c280d54..46c9681c6e 100644 --- a/engine/Core/Blueprints/UnitBlueprint.lua +++ b/engine/Core/Blueprints/UnitBlueprint.lua @@ -147,13 +147,13 @@ --- unit should unpack before firing weapon --- Engine sets tracking radius to 1x, calls OnLostTarget when given a move order, and OnGotTarget only when not moving ---@field NeedUnpack boolean ---- this muliplier is applied when a staging platform is refueling an air unit +--- this muliplier is applied to an air unit's refuel rate when the staging platform is refueling it ---@field RefuelingMultiplier number ---- shis amount of repair per second offered to refueling air units +--- this amount of repair per **second** is offered to refueling air units ---@field RefuelingRepairAmount number ---- this amount of energy per second is required to repair the air unit +--- this amount of energy per **tick** is required to repair the air unit ---@field RepairConsumeEnergy? number ---- this amount of mass per second is required to repair the air unit +--- this amount of mass per **tick** is required to repair the air unit ---@field RepairConsumeMass? number --- if the assist range for the unit is shown if it's selected ---@field ShowAssistRangeOnSelect? boolean @@ -1097,9 +1097,9 @@ --- if true, terrain under building's skirt will be flattened ---@field FlattenSkirt boolean ---@field Footprint FootprintBlueprint ---- unit fuels up at this rate per second +--- unit fuels up at this rate per second. Required for air staging to undock automatically. ---@field FuelRechargeRate number ---- unit has fuel for this number of seconds +--- unit has fuel for this number of seconds. Required for air staging to undock automatically. ---@field FuelUseTime number --- How much the collision model is offset from the ground. Used to make aircraft land properly. ---@field GroundCollisionOffset? number @@ -1210,7 +1210,7 @@ ---@field ClassGenericUpTo? integer --- how many external docking slots available for air staging platforms ---@field DockingSlots? number ---- repairs units attached to me at this % of max health per second +--- Doesn't seem to work. "repairs units attached to me at this % of max health per second" ---@field RepairRate number --- Maximum number of large units this transport can carry. If larger than the number of large slots --- calculated from the number hooks, that smaller number is used instead. From 11c206d6b023a8b66eea4b3099c994a898fc22d9 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Mon, 2 Dec 2024 22:18:18 -0800 Subject: [PATCH 14/19] Annotate `SustainedTurnThreshold ` --- engine/Core/Blueprints/UnitBlueprint.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/engine/Core/Blueprints/UnitBlueprint.lua b/engine/Core/Blueprints/UnitBlueprint.lua index 46c9681c6e..325797dfde 100644 --- a/engine/Core/Blueprints/UnitBlueprint.lua +++ b/engine/Core/Blueprints/UnitBlueprint.lua @@ -235,6 +235,8 @@ ---@field RandomMinChangeCombatStateTime? number --- distance from target at which to start turning to align with it ---@field StartTurnDistance number +--- Length of time in seconds allowed for sustained turn before we re-try a different approach. Defaults to 10 +---@field SustainedTurnThreshold number --- additional turning multiplier ability during a tight turn maneuver ---@field TightTurnMultiplier? number --- how heigh the transport will stay when picking up and dropping off units From e1761dd495062af0a96d9a24d412e988048fe8ae Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Mon, 2 Dec 2024 22:18:45 -0800 Subject: [PATCH 15/19] Annotate some default values for air BP --- engine/Core/Blueprints/UnitBlueprint.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/engine/Core/Blueprints/UnitBlueprint.lua b/engine/Core/Blueprints/UnitBlueprint.lua index 325797dfde..82557b2c0c 100644 --- a/engine/Core/Blueprints/UnitBlueprint.lua +++ b/engine/Core/Blueprints/UnitBlueprint.lua @@ -227,11 +227,11 @@ ---@field MinAirspeed? number --- time to predict ahead for moving targets ---@field PredictAheadForBombDrop? number ---- random multiplier applied to break off distance for winged aircrafts +--- random multiplier applied to break off distance for winged aircrafts. Defaults to 1.5 ---@field RandomBreakOffDistanceMult? number ---- random max time to switch combat state in seconds for winged aircrafts +--- random max time to switch combat state in seconds for winged aircrafts. Defaults to 6 ---@field RandomMaxChangeCombatStateTime? number ---- random min time to switch combat state in seconds for winged aircrafts +--- random min time to switch combat state in seconds for winged aircrafts. Defaults to 3 ---@field RandomMinChangeCombatStateTime? number --- distance from target at which to start turning to align with it ---@field StartTurnDistance number From 23a384e6b670f1bd687f53cf3e5bc78c19ba7f23 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Tue, 3 Dec 2024 00:54:12 -0800 Subject: [PATCH 16/19] Revert "Debug: log speed of initial bombing run" This reverts commit 6a9c0556ac871fe277b8eb239b2bcc41df13abcc. --- units/URA0304/URA0304_Script.lua | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/units/URA0304/URA0304_Script.lua b/units/URA0304/URA0304_Script.lua index bc056d1913..52545b0ed8 100644 --- a/units/URA0304/URA0304_Script.lua +++ b/units/URA0304/URA0304_Script.lua @@ -20,17 +20,15 @@ URA0304 = ClassUnit(CAirUnit) { ---@param self Bomb CreateProjectileAtMuzzle = function(self, muzzle) - local ux,uy,uz = self.unit:GetVelocity() - local spd = math.sqrt(ux*ux+uy*uy+uz*uz) * 10 -- convert from ogrids/tick to ogrids/s if self.LastDrop ~= 0 then local dt = GetGameTick() - self.LastDrop self.Drops = self.Drops + 1 self.SumDropInterval = self.SumDropInterval + dt + local ux,uy,uz = self.unit:GetVelocity() + local spd = math.sqrt(ux*ux+uy*uy+uz*uz) * 10 -- convert from ogrids/tick to ogrids/s LOG(('Ticks between bomb drops %d (avg over %d: %.1f); Unit speed ogrids/s: %.1f'):format( dt, self.Drops, self.SumDropInterval / self.Drops, spd )) - else - LOG(("Unit speed ogrids/s: %.1f"):format(spd)) end self.LastDrop = GetGameTick() CIFBombNeutronWeapon.CreateProjectileAtMuzzle(self, muzzle) From 5eccda73855598802e7b32824ebc877cbe29cafa Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Tue, 3 Dec 2024 00:54:18 -0800 Subject: [PATCH 17/19] Revert "Debug setup" This reverts commit 2935c3592c15fa7371e4fd092772cb5ccd606a02. --- units/URA0304/URA0304_Script.lua | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/units/URA0304/URA0304_Script.lua b/units/URA0304/URA0304_Script.lua index 52545b0ed8..d66eba9c4a 100644 --- a/units/URA0304/URA0304_Script.lua +++ b/units/URA0304/URA0304_Script.lua @@ -12,35 +12,7 @@ local CAAAutocannon = import("/lua/cybranweapons.lua").CAAAutocannon ---@class URA0304 : CAirUnit URA0304 = ClassUnit(CAirUnit) { Weapons = { - ---@class Bomb : CIFBombNeutronWeapon - Bomb = ClassWeapon(CIFBombNeutronWeapon) { - LastDrop = 0, - Drops = 0, - SumDropInterval = 0, - - ---@param self Bomb - CreateProjectileAtMuzzle = function(self, muzzle) - if self.LastDrop ~= 0 then - local dt = GetGameTick() - self.LastDrop - self.Drops = self.Drops + 1 - self.SumDropInterval = self.SumDropInterval + dt - local ux,uy,uz = self.unit:GetVelocity() - local spd = math.sqrt(ux*ux+uy*uy+uz*uz) * 10 -- convert from ogrids/tick to ogrids/s - LOG(('Ticks between bomb drops %d (avg over %d: %.1f); Unit speed ogrids/s: %.1f'):format( - dt, self.Drops, self.SumDropInterval / self.Drops, spd - )) - end - self.LastDrop = GetGameTick() - CIFBombNeutronWeapon.CreateProjectileAtMuzzle(self, muzzle) - end, - - OnLostTarget = function(self) - self.LastDrop = 0 - self.Drops = 0 - self.SumDropInterval = 0 - CIFBombNeutronWeapon.OnLostTarget(self) - end, - }, + Bomb = ClassWeapon(CIFBombNeutronWeapon) {}, AAGun1 = ClassWeapon(CAAAutocannon) {}, AAGun2 = ClassWeapon(CAAAutocannon) {}, }, From 31f460d88beb9112f2f16eacef096fb7dc16e450 Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Tue, 3 Dec 2024 00:56:11 -0800 Subject: [PATCH 18/19] Apply changes to non-cybran strats --- units/UAA0304/UAA0304_unit.bp | 13 +++++++------ units/UEA0304/UEA0304_unit.bp | 13 +++++++------ units/XSA0304/XSA0304_unit.bp | 13 +++++++------ 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/units/UAA0304/UAA0304_unit.bp b/units/UAA0304/UAA0304_unit.bp index 0d2bf05d1e..ea1bbe323a 100644 --- a/units/UAA0304/UAA0304_unit.bp +++ b/units/UAA0304/UAA0304_unit.bp @@ -3,13 +3,14 @@ UnitBlueprint{ AI = { GuardReturnRadius = 125 }, Air = { AutoLandTime = 1, - BankFactor = 2.5, + BankFactor = 3, BankForward = false, - BreakOffDistance = 60, + BreakOffDistance = 40, BreakOffIfNearNewTarget = true, BreakOffTrigger = 30, + RandomBreakOffDistanceMult = 1, CanFly = true, - CombatTurnSpeed = 0.8, + CombatTurnSpeed = 1.5, EngageDistance = 50, KLift = 3, KLiftDamping = 2.5, @@ -19,13 +20,13 @@ UnitBlueprint{ KRollDamping = 2, KTurn = 0.8, KTurnDamping = 1, - LiftFactor = 7, + LiftFactor = 17, MaxAirspeed = 17, MinAirspeed = 15, PredictAheadForBombDrop = 3, StartTurnDistance = 5, TightTurnMultiplier = 0, - TurnSpeed = 0.8, + TurnSpeed = 1.5, Winged = true, }, Audio = { @@ -192,7 +193,7 @@ UnitBlueprint{ }, AutoInitiateAttackCommand = true, BallisticArc = "RULEUBA_None", - BombDropThreshold = 3.5, + BombDropThreshold = 10, Buffs = { { Add = { OnImpact = true }, diff --git a/units/UEA0304/UEA0304_unit.bp b/units/UEA0304/UEA0304_unit.bp index 6b14344d8a..edda7d38d4 100644 --- a/units/UEA0304/UEA0304_unit.bp +++ b/units/UEA0304/UEA0304_unit.bp @@ -3,13 +3,14 @@ UnitBlueprint{ AI = { GuardReturnRadius = 125 }, Air = { AutoLandTime = 1, - BankFactor = 2.5, + BankFactor = 3, BankForward = false, - BreakOffDistance = 60, + BreakOffDistance = 40, BreakOffIfNearNewTarget = true, BreakOffTrigger = 30, + RandomBreakOffDistanceMult = 1, CanFly = true, - CombatTurnSpeed = 0.8, + CombatTurnSpeed = 1.5, EngageDistance = 50, KLift = 3, KLiftDamping = 2.5, @@ -19,13 +20,13 @@ UnitBlueprint{ KRollDamping = 2, KTurn = 0.8, KTurnDamping = 1, - LiftFactor = 7, + LiftFactor = 17, MaxAirspeed = 17, MinAirspeed = 15, PredictAheadForBombDrop = 3, StartTurnDistance = 5, TightTurnMultiplier = 0, - TurnSpeed = 0.8, + TurnSpeed = 1.5, Winged = true, }, Audio = { @@ -230,7 +231,7 @@ UnitBlueprint{ }, AutoInitiateAttackCommand = true, BallisticArc = "RULEUBA_None", - BombDropThreshold = 3.5, + BombDropThreshold = 10, CollideFriendly = false, Damage = 3100, DamageFriendly = true, diff --git a/units/XSA0304/XSA0304_unit.bp b/units/XSA0304/XSA0304_unit.bp index f01db67978..513697fb34 100644 --- a/units/XSA0304/XSA0304_unit.bp +++ b/units/XSA0304/XSA0304_unit.bp @@ -3,13 +3,14 @@ UnitBlueprint{ AI = { GuardReturnRadius = 125 }, Air = { AutoLandTime = 1, - BankFactor = 2.5, + BankFactor = 3, BankForward = false, - BreakOffDistance = 60, + BreakOffDistance = 40, BreakOffIfNearNewTarget = true, BreakOffTrigger = 30, + RandomBreakOffDistanceMult = 1, CanFly = true, - CombatTurnSpeed = 0.8, + CombatTurnSpeed = 1.5, EngageDistance = 50, KLift = 3, KLiftDamping = 2.5, @@ -19,13 +20,13 @@ UnitBlueprint{ KRollDamping = 2, KTurn = 0.8, KTurnDamping = 1, - LiftFactor = 7, + LiftFactor = 17, MaxAirspeed = 17, MinAirspeed = 15, PredictAheadForBombDrop = 3, StartTurnDistance = 5, TightTurnMultiplier = 0, - TurnSpeed = 0.8, + TurnSpeed = 1.5, Winged = true, }, Audio = { @@ -212,7 +213,7 @@ UnitBlueprint{ }, AutoInitiateAttackCommand = true, BallisticArc = "RULEUBA_None", - BombDropThreshold = 3.5, + BombDropThreshold = 10, CollideFriendly = false, Damage = 3000, DamageFriendly = true, From f2f7db2976f077b2816d2c62b78d246fd7eac68c Mon Sep 17 00:00:00 2001 From: lL1l1 <82986251+lL1l1@users.noreply.github.com> Date: Tue, 3 Dec 2024 01:16:38 -0800 Subject: [PATCH 19/19] Create balance.6535.md --- changelog/snippets/balance.6535.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 changelog/snippets/balance.6535.md diff --git a/changelog/snippets/balance.6535.md b/changelog/snippets/balance.6535.md new file mode 100644 index 0000000000..e0f312f816 --- /dev/null +++ b/changelog/snippets/balance.6535.md @@ -0,0 +1,14 @@ +- (#6535) Improve the maneuverability and reliability of Strategic Bombers to promote proactive use of them and as a competing option to T3 gunships + - Maneuverability: + - Increase turn speed: 0.8 -> 1.5 + This lets it effectively micro against flak damage, and leaves less time/opportunities for ASF/SAMs to deal damage. + - Increase Lift Factor: 7 -> 17 + This improves the speed of the bomber lifting off, complementing the new turn speed. + - Reliability: + - Bomb drop threshold: 3.5 -> 10 + This greatly improves the ability of the bomber to fire on uneven terrain or during turns, where it may get a less than ideal path. It is necessary because every bomb of a strategic bomber matters, and it can be devastating if one of them doesn't fire because the engine decided the small drop zone was unfortunately in the wrong place. A similar massive increase for the threshold was done for the Ahwassa (4 -> 20) (#2465)[https://github.com/FAForever/fa/pull/2465]. + - Smaller loops on auto attack to maximize DPS: + This only increases DPS when bombing a single target with multiple passes, so I wouldn't put it exactly under the HP/DPS buff restriction. Previously bombs would drop only every ~13 seconds, and with the turn speed and breakoff distance reduction they drop every ~8 seconds. + It can also be argued that this is just simplifying the micro of multiple bombers when you want to maximize DPS. There will of course still be micro against AA or to have good bombing paths that make use of the reload, both of which are far more engaging than figuring out when to turn multiple bombers just to bomb a single target on reload with multiple passes. + - `BreakOffDistance`: 60 -> 40 + - `RandomBreakOffDistanceMult`: 1.5 -> 1