From 1830b4c752d21f7d38b3a99423daa3904be184fb Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Fri, 6 Feb 2026 16:26:56 +0100 Subject: [PATCH] #CONTROLLABLE - Added OptionAllowFormationSideSwap() - Added OptionAIRunwayLineup() --- Moose Development/Moose/DCS.lua | 3 ++ Moose Development/Moose/Ops/CTLD.lua | 1 - .../Moose/Wrapper/Controllable.lua | 40 +++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/Moose Development/Moose/DCS.lua b/Moose Development/Moose/DCS.lua index ca7ec0a95..cebedcfd6 100644 --- a/Moose Development/Moose/DCS.lua +++ b/Moose Development/Moose/DCS.lua @@ -1672,6 +1672,9 @@ do -- AI -- @field OPTION_RADIO_USAGE_KILL -- @field JETT_TANKS_IF_EMPTY -- @field FORCED_ATTACK + -- @field PREFER_VERTICAL + -- @field ALLOW_FORMATION_SIDE_SWAP + -- @field AI_RUNWAY_LINE_UP --- -- @type AI.Option.Air.val diff --git a/Moose Development/Moose/Ops/CTLD.lua b/Moose Development/Moose/Ops/CTLD.lua index 2809c7048..9f43c8ef1 100644 --- a/Moose Development/Moose/Ops/CTLD.lua +++ b/Moose Development/Moose/Ops/CTLD.lua @@ -5053,7 +5053,6 @@ end --- (Internal) Housekeeping - Cleanup crates when build -- @param #CTLD self --- -- @param #table Crates Table of #CTLD_CARGO objects near the unit. -- @param #CTLD.Buildable Build Table build object. -- @param #number Number Number of objects in Crates (found) to limit search. diff --git a/Moose Development/Moose/Wrapper/Controllable.lua b/Moose Development/Moose/Wrapper/Controllable.lua index e9e629a0b..dc8582ec6 100644 --- a/Moose Development/Moose/Wrapper/Controllable.lua +++ b/Moose Development/Moose/Wrapper/Controllable.lua @@ -3658,6 +3658,46 @@ function CONTROLLABLE:OptionPreferVerticalLanding() return nil end +--- Air - Allow formation side swap +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionAllowFormationSideSwap() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( AI.Option.Air.id.ALLOW_FORMATION_SIDE_SWAP, true ) + end + + return self + end + + return nil +end + +--- Air - Allow formation takeoff, if enough space +-- @param #CONTROLLABLE self +-- @return #CONTROLLABLE self +function CONTROLLABLE:OptionAIRunwayLineUp() + self:F2( { self.ControllableName } ) + + local DCSControllable = self:GetDCSObject() + if DCSControllable then + local Controller = self:_GetController() + + if self:IsAir() then + Controller:setOption( 37, true ) + end + + return self + end + + return nil +end + --- Can the CONTROLLABLE evade on enemy fire? -- @param #CONTROLLABLE self -- @return #boolean