diff --git a/Moose Development/Moose/Ops/Airboss.lua b/Moose Development/Moose/Ops/Airboss.lua index 6748709ef..c98b0b21e 100644 --- a/Moose Development/Moose/Ops/Airboss.lua +++ b/Moose Development/Moose/Ops/Airboss.lua @@ -1706,7 +1706,7 @@ AIRBOSS.MenuF10Root=nil --- Airboss class version. -- @field #string version -AIRBOSS.version="1.1.5" +AIRBOSS.version="1.1.6" ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- TODO list @@ -1940,7 +1940,7 @@ function AIRBOSS:New(carriername, alias) -- Welcome players. self:SetWelcomePlayers(true) - + -- Coordinates self.landingcoord=COORDINATE:New(0,0,0) --Core.Point#COORDINATE self.sterncoord=COORDINATE:New(0, 0, 0) --Core.Point#COORDINATE @@ -1952,11 +1952,11 @@ function AIRBOSS:New(carriername, alias) elseif self.carriertype==AIRBOSS.CarrierType.ROOSEVELT then self:_InitNimitz() elseif self.carriertype==AIRBOSS.CarrierType.LINCOLN then - self:_InitNimitz() - elseif self.carriertype==AIRBOSS.CarrierType.WASHINGTON then self:_InitNimitz() - elseif self.carriertype==AIRBOSS.CarrierType.TRUMAN then - self:_InitNimitz() + elseif self.carriertype==AIRBOSS.CarrierType.WASHINGTON then + self:_InitNimitz() + elseif self.carriertype==AIRBOSS.CarrierType.TRUMAN then + self:_InitNimitz() elseif self.carriertype==AIRBOSS.CarrierType.VINSON then -- TODO: Carl Vinson parameters. self:_InitStennis() @@ -1994,7 +1994,7 @@ function AIRBOSS:New(carriername, alias) self:_GetZoneGroove():SmokeZone(SMOKECOLOR.Red, 5) self:_GetZoneLineup():SmokeZone(SMOKECOLOR.Green, 5) self:_GetZoneBullseye(case):SmokeZone(SMOKECOLOR.White, 45) - self:_GetZoneDirtyUp(case):SmokeZone(SMOKECOLOR.Orange, 45) + self:_GetZoneDirtyUp(case):SmokeZone(SMOKECOLOR.Orange, 45) self:_GetZoneArcIn(case):SmokeZone(SMOKECOLOR.Blue, 45) self:_GetZoneArcOut(case):SmokeZone(SMOKECOLOR.Blue, 45) self:_GetZonePlatform(case):SmokeZone(SMOKECOLOR.Blue, 45) @@ -2034,7 +2034,7 @@ function AIRBOSS:New(carriername, alias) -- Bow bow:FlareYellow() - + -- Runway half width = 10 m. local r1=stern:Translate(self.carrierparam.rwywidth*0.5, FB+90) local r2=stern:Translate(self.carrierparam.rwywidth*0.5, FB-90) @@ -3285,7 +3285,7 @@ function AIRBOSS:GetNextRecoveryTime(InSeconds) if InSeconds then return self.recoverywindow.START, self.recoverywindow.STOP else - return UTILS.SecondsToClock(self.recoverywindow.START), UTILS.SecondsToClock(self.recoverywindow.STOP) + return UTILS.SecondsToClock(self.recoverywindow.START), UTILS.SecondsToClock(self.recoverywindow.STOP) end else if InSeconds then @@ -3399,7 +3399,7 @@ function AIRBOSS:onafterStart(From, Event, To) --self.StatusScheduler=SCHEDULER:New(self) --self.StatusScheduler:Schedule(self, self._Status, {}, 1, 0.5) - + self.StatusTimer=TIMER:New(self._Status, self):Start(2, 0.5) -- Start status check in 1 second. @@ -3485,9 +3485,9 @@ function AIRBOSS:onafterStatus(From, Event, To) -- Disable turn into the wind for this window so that we do not do this all over again. self.recoverywindow.WIND=false end - + end - + end @@ -3583,9 +3583,9 @@ function AIRBOSS:_CheckAIStatus() -- Get lineup and distance to carrier. local lineup=self:_Lineup(unit, true) - + local unitcoord=unit:GetCoord() - + local dist=unitcoord:Get2DDistance(self:GetCoord()) -- Distance in NM. @@ -4146,7 +4146,7 @@ end -- @param #string To To state. function AIRBOSS:onafterStop(From, Event, To) self:I(self.lid..string.format("Stopping airboss script.")) - + -- Unhandle events. self:UnHandleEvent(EVENTS.Birth) self:UnHandleEvent(EVENTS.Land) @@ -4170,7 +4170,7 @@ function AIRBOSS:_InitStennis() -- Carrier Parameters. self.carrierparam.sterndist =-153 - self.carrierparam.deckheight = 19 + self.carrierparam.deckheight = 19.06 -- Total size of the carrier (approx as rectangle). self.carrierparam.totlength=310 -- Wiki says 332.8 meters overall length. @@ -4178,7 +4178,7 @@ function AIRBOSS:_InitStennis() self.carrierparam.totwidthstarboard=30 -- Landing runway. - self.carrierparam.rwyangle = -9 + self.carrierparam.rwyangle = -9.1359 self.carrierparam.rwylength = 225 self.carrierparam.rwywidth = 20 @@ -4321,7 +4321,7 @@ function AIRBOSS:_InitNimitz() -- Carrier Parameters. self.carrierparam.sterndist =-164 - self.carrierparam.deckheight = 20 + self.carrierparam.deckheight = 20.1494 --DCS World OpenBeta\CoreMods\tech\USS_Nimitz\Database\USS_CVN_7X.lua -- Total size of the carrier (approx as rectangle). self.carrierparam.totlength=332.8 -- Wiki says 332.8 meters overall length. @@ -4329,7 +4329,7 @@ function AIRBOSS:_InitNimitz() self.carrierparam.totwidthstarboard=35 -- Landing runway. - self.carrierparam.rwyangle = -9 + self.carrierparam.rwyangle = -9.1359 --DCS World OpenBeta\CoreMods\tech\USS_Nimitz\scripts\USS_Nimitz_RunwaysAndRoutes.lua self.carrierparam.rwylength = 250 self.carrierparam.rwywidth = 25 @@ -5742,7 +5742,7 @@ function AIRBOSS:_GetAircraftParameters(playerData, step) else dist=UTILS.NMToMeters(1.2) end - + if goshawk then -- 0.9 to 1.1 NM per natops ch.4 page 48 dist=UTILS.NMToMeters(0.9) @@ -6112,7 +6112,7 @@ function AIRBOSS:_ScanCarrierZone() -- Get flight group. local flight=_DATABASE:GetFlightGroup(groupname) - + if flight and flight:IsInbound() and flight.destbase:GetName()==self.carrier:GetName() then if flight.ishelo then else @@ -6149,7 +6149,7 @@ function AIRBOSS:_ScanCarrierZone() -- Break the loop to not have all flights at once! Spams the message screen. break - end -- Closed in or tanker/AWACS + end -- Closed in or tanker/AWACS end @@ -6255,7 +6255,7 @@ function AIRBOSS:_MarshalPlayer(playerData, stack) -- Set stack flag. flight.flag=stack - + -- Trigger Marshal event. self:Marshal(flight) end @@ -6514,7 +6514,7 @@ function AIRBOSS:_MarshalAI(flight, nstack, respawn) -- Route group. flight.group:Route(wp, 1) - + -- Trigger Marshal event. self:Marshal(flight) @@ -7050,7 +7050,7 @@ function AIRBOSS:_GetFreeStack(ai, case, empty) -- Recovery case. case=case or self.case - + if case==1 then return self:_GetFreeStack_Old(ai, case, empty) end @@ -7066,7 +7066,7 @@ function AIRBOSS:_GetFreeStack(ai, case, empty) for i=1,nmaxstacks do stack[i]=self.NmaxStack -- Number of human flights per stack. end - + local nmax=1 -- Loop over all flights in marshal stack. @@ -7078,7 +7078,7 @@ function AIRBOSS:_GetFreeStack(ai, case, empty) -- Get stack of flight. local n=flight.flag - + if n>nmax then nmax=n end @@ -7095,7 +7095,7 @@ function AIRBOSS:_GetFreeStack(ai, case, empty) end end - + local nfree=nil if stack[nmax]==0 then -- Max occupied stack is completely full! @@ -7111,7 +7111,7 @@ function AIRBOSS:_GetFreeStack(ai, case, empty) -- Case II/III return next stack nfree=nmax+1 end - + elseif stack[nmax]==self.NmaxStack then -- Max occupied stack is completely empty! This should happen only when there is no other flight in the marshal queue. self:E(self.lid..string.format("ERROR: Max occupied stack is empty. Should not happen! Nmax=%d, stack[nmax]=%d", nmax, stack[nmax])) @@ -7123,7 +7123,7 @@ function AIRBOSS:_GetFreeStack(ai, case, empty) else nfree=nmax end - + end self:I(self.lid..string.format("Returning free stack %s", tostring(nfree))) @@ -10396,7 +10396,7 @@ function AIRBOSS:_GetSternCoord() self.sterncoord:Translate(self.carrierparam.sterndist, hdg, true, true):Translate(7, FB+90, true, true) else -- Nimitz SC: translate 8 meters starboard wrt Final bearing. - self.sterncoord:Translate(self.carrierparam.sterndist, hdg, true, true):Translate(8.5, FB+90, true, true) + self.sterncoord:Translate(self.carrierparam.sterndist, hdg, true, true):Translate(9.5, FB+90, true, true) end -- Set altitude. @@ -10646,7 +10646,7 @@ function AIRBOSS:_GetZoneInitial(case) -- Polygon zone. --local zone=ZONE_POLYGON_BASE:New("Zone CASE I/II Initial", vec2) - + self.zoneInitial:UpdateFromVec2(vec2) --return zone @@ -10675,13 +10675,13 @@ function AIRBOSS:_GetZoneLineup() -- Vec2 array. local vec2={c1:GetVec2(), c2:GetVec2(), c3:GetVec2(), c4:GetVec2(), c5:GetVec2()} - + self.zoneLineup:UpdateFromVec2(vec2) -- Polygon zone. --local zone=ZONE_POLYGON_BASE:New("Zone Lineup", vec2) --return zone - + return self.zoneLineup end @@ -10716,13 +10716,13 @@ function AIRBOSS:_GetZoneGroove(l, w, b) -- Vec2 array. local vec2={c1:GetVec2(), c2:GetVec2(), c3:GetVec2(), c4:GetVec2(), c5:GetVec2(), c6:GetVec2()} - + self.zoneGroove:UpdateFromVec2(vec2) -- Polygon zone. --local zone=ZONE_POLYGON_BASE:New("Zone Groove", vec2) --return zone - + return self.zoneGroove end @@ -10748,7 +10748,7 @@ function AIRBOSS:_GetZoneBullseye(case) -- Create zone. local zone=ZONE_RADIUS:New("Zone Bullseye", vec2, radius) return zone - + --self.zoneBullseye=self.zoneBullseye or ZONE_RADIUS:New("Zone Bullseye", vec2, radius) end @@ -10977,9 +10977,9 @@ function AIRBOSS:_GetZoneCarrierBox() -- Create polygon zone. --local zone=ZONE_POLYGON_BASE:New("Carrier Box Zone", vec2) --return zone - + self.zoneCarrierbox:UpdateFromVec2(vec2) - + return self.zoneCarrierbox end @@ -11014,9 +11014,9 @@ function AIRBOSS:_GetZoneRunwayBox() -- Create polygon zone. --local zone=ZONE_POLYGON_BASE:New("Landing Runway Zone", vec2) --return zone - + self.zoneRunwaybox:UpdateFromVec2(vec2) - + return self.zoneRunwaybox end @@ -11147,7 +11147,7 @@ function AIRBOSS:_GetZoneHolding(case, stack) -- Square zone length=7NM width=6 NM behind the carrier starting at angels+15 NM behind the carrier. -- So stay 0-5 NM (+1 NM error margin) port of carrier. self.zoneHolding=self.zoneHolding or ZONE_POLYGON_BASE:New("CASE II/III Holding Zone") - + self.zoneHolding:UpdateFromVec2(p) end @@ -11193,12 +11193,12 @@ function AIRBOSS:_GetZoneCommence(case, stack) -- Create holding zone. self.zoneCommence=self.zoneCommence or ZONE_RADIUS:New("CASE I Commence Zone") - + self.zoneCommence:UpdateFromVec2(Three:GetVec2(), R) else -- Case II/III - + stack=stack or 1 -- Start point at 21 NM for stack=1. @@ -11226,7 +11226,7 @@ function AIRBOSS:_GetZoneCommence(case, stack) -- Zone polygon. self.zoneCommence=self.zoneCommence or ZONE_POLYGON_BASE:New("CASE II/III Commence Zone") - + self.zoneCommence:UpdateFromVec2(p) end @@ -11474,7 +11474,7 @@ end -- @param #AIRBOSS self -- @return Core.Point#COORDINATE Optimal landing coordinate. function AIRBOSS:_GetOptLandingCoordinate() - + -- Start with stern coordiante. self.landingcoord:UpdateFromCoordinate(self:_GetSternCoord())