Fixed an issue with the overhead parameter

Now the GCI will spawn the actual overhead needed, independent of the
grouping parameter. For example, when grouping was 1 and overhead 1.5,
only one plane was spawned. Now two planes are spawned of 2 groups of 1
unit.
This commit is contained in:
FlightControl_Master
2017-08-01 07:19:29 +02:00
parent 616e035e9a
commit 9ec29f607f
@@ -772,6 +772,8 @@ do -- AI_A2A_DISPATCHER
self:SetEngageRadius() self:SetEngageRadius()
self:SetGciRadius() self:SetGciRadius()
self:SetIntercept( 300 ) -- A default intercept delay time of 300 seconds.
self:SetDisengageRadius( 100000 ) -- The default disengage radius is 100 km.
self:SetDefaultTakeoff( AI_A2A_DISPATCHER.Takeoff.Air ) self:SetDefaultTakeoff( AI_A2A_DISPATCHER.Takeoff.Air )
self:SetDefaultLanding( AI_A2A_DISPATCHER.Landing.NearAirbase ) self:SetDefaultLanding( AI_A2A_DISPATCHER.Landing.NearAirbase )
@@ -781,8 +783,6 @@ do -- AI_A2A_DISPATCHER
self:SetDefaultDamageThreshold( 0.4 ) -- When 40% of damage, go RTB. self:SetDefaultDamageThreshold( 0.4 ) -- When 40% of damage, go RTB.
self:SetDefaultCapTimeInterval( 180, 600 ) -- Between 180 and 600 seconds. self:SetDefaultCapTimeInterval( 180, 600 ) -- Between 180 and 600 seconds.
self:SetDefaultCapLimit( 1 ) -- Maximum one CAP per squadron. self:SetDefaultCapLimit( 1 ) -- Maximum one CAP per squadron.
self:SetIntercept( 300 ) -- A default intercept delay time of 300 seconds.
self:SetDisengageRadius( 100000 ) -- The default disengage radius is 100 km.
self:AddTransition( "Started", "Assign", "Started" ) self:AddTransition( "Started", "Assign", "Started" )
@@ -2446,7 +2446,13 @@ do -- AI_A2A_DISPATCHER
local DefenderGrouping = DefenderSquadron.Grouping or self.DefenderDefault.Grouping local DefenderGrouping = DefenderSquadron.Grouping or self.DefenderDefault.Grouping
local DefendersNeeded = math.ceil( DefendersCount * DefenderOverhead ) local DefendersNeeded = math.ceil( DefendersCount * DefenderOverhead )
local Spawn = DefenderSquadron.Spawn[ math.random( 1, #DefenderSquadron.Spawn ) ] self:F( { DefaultOverhead = self.DefenderDefault.Overhead, Overhead = DefenderOverhead } )
self:F( { DefaultGrouping = self.DefenderDefault.Grouping, Grouping = DefenderGrouping } )
self:F( { DefendersCount = DefendersCount, DefendersNeeded = DefendersNeeded } )
while ( DefendersNeeded > 0 ) do
local Spawn = DefenderSquadron.Spawn[ math.random( 1, #DefenderSquadron.Spawn ) ] -- Functional.Spawn#SPAWN
if DefenderGrouping then if DefenderGrouping then
Spawn:InitGrouping( ( DefenderGrouping < DefendersNeeded ) and DefenderGrouping or DefendersNeeded ) Spawn:InitGrouping( ( DefenderGrouping < DefendersNeeded ) and DefenderGrouping or DefendersNeeded )
else else
@@ -2457,8 +2463,9 @@ do -- AI_A2A_DISPATCHER
local DefenderGCI = Spawn:SpawnAtAirbase( DefenderSquadron.Airbase, TakeoffMethod ) local DefenderGCI = Spawn:SpawnAtAirbase( DefenderSquadron.Airbase, TakeoffMethod )
self:F( { GCIDefender = DefenderGCI:GetName() } ) self:F( { GCIDefender = DefenderGCI:GetName() } )
self:AddDefenderToSquadron( DefenderSquadron, DefenderGCI ) DefendersNeeded = DefendersNeeded - DefenderGCI:GetSize()
self:AddDefenderToSquadron( DefenderSquadron, DefenderGCI )
if DefenderGCI then if DefenderGCI then
@@ -2502,6 +2509,7 @@ do -- AI_A2A_DISPATCHER
end end
end end
end end
end
else else
-- There isn't any closest airbase anymore, break the loop. -- There isn't any closest airbase anymore, break the loop.
break break