mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2026-08-20 17:07:54 +00:00
Improvements in the attack methods! This is going to be great!
This commit is contained in:
@@ -121,13 +121,21 @@ function AI_A2G_BAI:onafterEngage( DefenderGroup, From, Event, To, AttackSetUnit
|
|||||||
|
|
||||||
local AttackTasks = {}
|
local AttackTasks = {}
|
||||||
|
|
||||||
for OrderedID, AttackUnit in ipairs( self.AttackSetUnit:GetSetPerThreatLevel( 10, 0 ) ) do
|
self.AttackSetUnit.AttackIndex = self.AttackSetUnit.AttackIndex and self.AttackSetUnit.AttackIndex + 1 or 1
|
||||||
if AttackUnit then
|
|
||||||
if AttackUnit:IsAlive() and AttackUnit:IsGround() then
|
local AttackSetUnitPerThreatLevel = self.AttackSetUnit:GetSetPerThreatLevel( 10, 0 )
|
||||||
self:T( { "BAI Unit:", AttackUnit:GetName() } )
|
|
||||||
AttackTasks[#AttackTasks+1] = DefenderGroup:TaskAttackUnit( AttackUnit, false, false, nil, nil, EngageAltitude )
|
local AttackUnit = AttackSetUnitPerThreatLevel[self.AttackSetUnit.AttackIndex]
|
||||||
break
|
|
||||||
end
|
if not AttackUnit then
|
||||||
|
self.AttackSetUnit.AttackIndex = 1
|
||||||
|
AttackUnit = AttackSetUnitPerThreatLevel[self.AttackSetUnit.AttackIndex]
|
||||||
|
end
|
||||||
|
|
||||||
|
if AttackUnit then
|
||||||
|
if AttackUnit:IsAlive() and AttackUnit:IsGround() then
|
||||||
|
self:T( { "BAI Unit:", AttackUnit:GetName() } )
|
||||||
|
AttackTasks[#AttackTasks+1] = DefenderGroup:TaskAttackUnit( AttackUnit, false, false, nil, nil, EngageAltitude )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -117,13 +117,21 @@ function AI_A2G_CAS:onafterEngage( DefenderGroup, From, Event, To, AttackSetUnit
|
|||||||
|
|
||||||
local AttackTasks = {}
|
local AttackTasks = {}
|
||||||
|
|
||||||
for OrderedID, AttackUnit in ipairs( self.AttackSetUnit:GetSetPerThreatLevel( 10, 0 ) ) do
|
self.AttackSetUnit.AttackIndex = self.AttackSetUnit.AttackIndex and self.AttackSetUnit.AttackIndex + 1 or 1
|
||||||
if AttackUnit then
|
|
||||||
if AttackUnit:IsAlive() and AttackUnit:IsGround() then
|
local AttackSetUnitPerThreatLevel = self.AttackSetUnit:GetSetPerThreatLevel( 10, 0 )
|
||||||
self:F( { "CAS Unit:", AttackUnit:GetName() } )
|
|
||||||
AttackTasks[#AttackTasks+1] = DefenderGroup:TaskAttackUnit( AttackUnit, false, false, nil, nil, EngageAltitude )
|
local AttackUnit = AttackSetUnitPerThreatLevel[self.AttackSetUnit.AttackIndex]
|
||||||
break
|
|
||||||
end
|
if not AttackUnit then
|
||||||
|
self.AttackSetUnit.AttackIndex = 1
|
||||||
|
AttackUnit = AttackSetUnitPerThreatLevel[self.AttackSetUnit.AttackIndex]
|
||||||
|
end
|
||||||
|
|
||||||
|
if AttackUnit then
|
||||||
|
if AttackUnit:IsAlive() and AttackUnit:IsGround() then
|
||||||
|
self:F( { "CAS Unit:", AttackUnit:GetName() } )
|
||||||
|
AttackTasks[#AttackTasks+1] = DefenderGroup:TaskAttackUnit( AttackUnit, false, false, nil, nil, EngageAltitude )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -3557,13 +3557,14 @@ do -- AI_A2G_DISPATCHER
|
|||||||
|
|
||||||
function Fsm:onafterRTB( Defender, From, Event, To )
|
function Fsm:onafterRTB( Defender, From, Event, To )
|
||||||
self:F({"Defender RTB", Defender:GetName()})
|
self:F({"Defender RTB", Defender:GetName()})
|
||||||
self:GetParent(self).onafterRTB( self, Defender, From, Event, To )
|
|
||||||
|
|
||||||
local DefenderName = Defender:GetName()
|
local DefenderName = Defender:GetName()
|
||||||
local Dispatcher = self:GetDispatcher() -- #AI_A2G_DISPATCHER
|
local Dispatcher = self:GetDispatcher() -- #AI_A2G_DISPATCHER
|
||||||
local Squadron = Dispatcher:GetSquadronFromDefender( Defender )
|
local Squadron = Dispatcher:GetSquadronFromDefender( Defender )
|
||||||
Dispatcher:MessageToPlayers( "Squadron " .. Squadron.Name .. ", " .. DefenderName .. " returning." )
|
Dispatcher:MessageToPlayers( "Squadron " .. Squadron.Name .. ", " .. DefenderName .. " returning." )
|
||||||
|
|
||||||
|
self:GetParent(self).onafterRTB( self, Defender, From, Event, To )
|
||||||
|
|
||||||
Dispatcher:ClearDefenderTaskTarget( Defender )
|
Dispatcher:ClearDefenderTaskTarget( Defender )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -174,14 +174,22 @@ function AI_A2G_SEAD:onafterEngage( DefenderGroup, From, Event, To, AttackSetUni
|
|||||||
|
|
||||||
local AttackTasks = {}
|
local AttackTasks = {}
|
||||||
|
|
||||||
for OrderedID, AttackUnit in ipairs( self.AttackSetUnit:GetSetPerThreatLevel( 10, 0 ) ) do
|
self.AttackSetUnit.AttackIndex = self.AttackSetUnit.AttackIndex and self.AttackSetUnit.AttackIndex + 1 or 1
|
||||||
if AttackUnit then
|
if self.AttackSetUnit.AttackIndex > self.AttackSetUnit:Count() then
|
||||||
if AttackUnit:IsAlive() and AttackUnit:IsGround() then
|
self.AttackSetUnit.AttackIndex = 1
|
||||||
local HasRadar = AttackUnit:HasSEAD()
|
end
|
||||||
if HasRadar then
|
|
||||||
self:F( { "SEAD Unit:", AttackUnit:GetName() } )
|
local AttackSetUnitPerThreatLevel = self.AttackSetUnit:GetSetPerThreatLevel( 10, 0 )
|
||||||
AttackTasks[#AttackTasks+1] = DefenderGroup:TaskAttackUnit( AttackUnit, false, false, nil, nil, EngageAltitude )
|
|
||||||
break
|
for AttackUnitID, AttackUnit in ipairs( AttackSetUnitPerThreatLevel ) do
|
||||||
|
if AttackUnitID >= self.AttackSetUnit.AttackIndex then
|
||||||
|
if AttackUnit then
|
||||||
|
if AttackUnit:IsAlive() and AttackUnit:IsGround() then
|
||||||
|
local HasRadar = AttackUnit:HasSEAD()
|
||||||
|
if HasRadar then
|
||||||
|
self:F( { "SEAD Unit:", AttackUnit:GetName() } )
|
||||||
|
AttackTasks[#AttackTasks+1] = DefenderGroup:TaskAttackUnit( AttackUnit, false, false, nil, nil, EngageAltitude )
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user