From 8bf56b8b1a1977c2112627388e4d4fdbcf2c7585 Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 26 Jul 2023 16:36:44 +0200 Subject: [PATCH] Update Airboss.lua - Fixed AI handling (got lost in some merge with develop branch and was using FLIGHTGROUPS) --- Moose Development/Moose/Ops/Airboss.lua | 61 ++++++++++++++++++++----- 1 file changed, 49 insertions(+), 12 deletions(-) diff --git a/Moose Development/Moose/Ops/Airboss.lua b/Moose Development/Moose/Ops/Airboss.lua index 6a0a032d5..2a17e4c13 100644 --- a/Moose Development/Moose/Ops/Airboss.lua +++ b/Moose Development/Moose/Ops/Airboss.lua @@ -5822,27 +5822,64 @@ function AIRBOSS:_ScanCarrierZone() -- Get aircraft type name. local actype = group:GetTypeName() - -- Create a new flight group if knownflight then + -- Debug output. + self:T2(self.lid..string.format("Known flight group %s of type %s in CCA.", groupname, actype)) + -- Check if flight is AI and if we want to handle it at all. - if knownflight.ai and knownflight.flag == -100 and self.handleai and false then --Disabled AI handling because of incorrect OPSGROUP reference! + if knownflight.ai and self.handleai then - local putintomarshal = false + -- Defines if AI group should be handled by the airboss. + local iscarriersquad=true - -- Get flight group. - local flight = _DATABASE:GetOpsGroup( groupname ) - - if flight and flight:IsInbound() and flight.destbase:GetName() == self.carrier:GetName() then - if flight.ishelo then + -- Check if AI group is part of the group set if a set was defined. + if self.squadsetAI then + local group=self.squadsetAI:FindGroup(groupname) + if group then + iscarriersquad=true else - putintomarshal = true + iscarriersquad=false end - flight.airboss = self end - -- Send AI flight to marshal stack. - if putintomarshal then + -- Check if group was explicitly excluded. + if self.excludesetAI then + local group=self.excludesetAI:FindGroup(groupname) + if group then + iscarriersquad=false + end + + end + + + -- Get distance to carrier. + local dist=knownflight.group:GetCoordinate():Get2DDistance(self:GetCoordinate()) + + -- Close in distance. Is >0 if AC comes closer wrt to first detected distance d0. + local closein=knownflight.dist0-dist + + -- Debug info. + self:T3(self.lid..string.format("Known AI flight group %s closed in by %.1f NM", knownflight.groupname, UTILS.MetersToNM(closein))) + + -- Is this group the tanker? + local istanker=self.tanker and self.tanker.tanker:GetName()==groupname + + -- Is this group the AWACS? + local isawacs=self.awacs and self.awacs.tanker:GetName()==groupname + + -- Send tanker to marshal stack? + local tanker2marshal = istanker and self.tanker:IsReturning() and self.tanker.airbase:GetName()==self.airbase:GetName() and knownflight.flag==-100 and self.tanker.recovery==true + + -- Send AWACS to marhsal stack? + local awacs2marshal = isawacs and self.awacs:IsReturning() and self.awacs.airbase:GetName()==self.airbase:GetName() and knownflight.flag==-100 and self.awacs.recovery==true + + -- Put flight into Marshal. + local putintomarshal=closein>UTILS.NMToMeters(5) and knownflight.flag==-100 and iscarriersquad and istanker==false and isawacs==false + + -- Send AI flight to marshal stack if group closes in more than 5 and has initial flag value. + if putintomarshal or tanker2marshal or awacs2marshal then + -- Get the next free stack for current recovery case. local stack = self:_GetFreeStack( knownflight.ai )