mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Adjustments for Forrestal by Pene
This commit is contained in:
parent
fe3079caad
commit
8af3f89c14
@ -27,11 +27,11 @@
|
|||||||
-- **Supported Carriers:**
|
-- **Supported Carriers:**
|
||||||
--
|
--
|
||||||
-- * [USS John C. Stennis](https://en.wikipedia.org/wiki/USS_John_C._Stennis) (CVN-74)
|
-- * [USS John C. Stennis](https://en.wikipedia.org/wiki/USS_John_C._Stennis) (CVN-74)
|
||||||
-- * [USS Theodore Roosevelt](https://en.wikipedia.org/wiki/USS_Theodore_Roosevelt_(CVN-71)) (CVN-71) [Super Carrier Module]
|
-- * [USS Theodore Roosevelt](https://en.wikipedia.org/wiki/USS_Theodore_Roosevelt_(CVN-71)) (CVN-71) [Super Carrier Module]
|
||||||
-- * [USS Abraham Lincoln](https://en.wikipedia.org/wiki/USS_Abraham_Lincoln_(CVN-72)) (CVN-72) [Super Carrier Module]
|
-- * [USS Abraham Lincoln](https://en.wikipedia.org/wiki/USS_Abraham_Lincoln_(CVN-72)) (CVN-72) [Super Carrier Module]
|
||||||
-- * [USS George Washington](https://en.wikipedia.org/wiki/USS_George_Washington_(CVN-73)) (CVN-73) [Super Carrier Module]
|
-- * [USS George Washington](https://en.wikipedia.org/wiki/USS_George_Washington_(CVN-73)) (CVN-73) [Super Carrier Module]
|
||||||
-- * [USS Harry S. Truman](https://en.wikipedia.org/wiki/USS_Harry_S._Truman) (CVN-75) [Super Carrier Module]
|
-- * [USS Harry S. Truman](https://en.wikipedia.org/wiki/USS_Harry_S._Truman) (CVN-75) [Super Carrier Module]
|
||||||
-- * [USS Forrestal](https://en.wikipedia.org/wiki/USS_Forrestal_(CV-59)) (CV-59) [Heatblur Carrier Module]
|
-- * [USS Forrestal](https://en.wikipedia.org/wiki/USS_Forrestal_(CV-59)) (CV-59) [Heatblur Carrier Module]
|
||||||
-- * [USS Tarawa](https://en.wikipedia.org/wiki/USS_Tarawa_(LHA-1)) (LHA-1) [**WIP**]
|
-- * [USS Tarawa](https://en.wikipedia.org/wiki/USS_Tarawa_(LHA-1)) (LHA-1) [**WIP**]
|
||||||
-- * [USS America](https://en.wikipedia.org/wiki/USS_America_(LHA-6)) (LHA-6) [**WIP**]
|
-- * [USS America](https://en.wikipedia.org/wiki/USS_America_(LHA-6)) (LHA-6) [**WIP**]
|
||||||
-- * [Juan Carlos I](https://en.wikipedia.org/wiki/Spanish_amphibious_assault_ship_Juan_Carlos_I) (L61) [**WIP**]
|
-- * [Juan Carlos I](https://en.wikipedia.org/wiki/Spanish_amphibious_assault_ship_Juan_Carlos_I) (L61) [**WIP**]
|
||||||
@ -300,7 +300,7 @@
|
|||||||
--
|
--
|
||||||
-- Once the aircraft reaches the Initial, the landing pattern begins. The important steps of the pattern are shown in the image above.
|
-- Once the aircraft reaches the Initial, the landing pattern begins. The important steps of the pattern are shown in the image above.
|
||||||
-- The AV-8B Harrier pattern is very similar, the only differences are as there is no angled deck there is no wake check. from the ninety you wil fly a straight approach offset 26 ft to port (left) of the tram line.
|
-- The AV-8B Harrier pattern is very similar, the only differences are as there is no angled deck there is no wake check. from the ninety you wil fly a straight approach offset 26 ft to port (left) of the tram line.
|
||||||
-- The aim is to arrive abeam the landing spot in a stable hover at 120 ft with forward speed matched to the boat. From there the LSO will call "cleared to land". You then level cross to the tram line at the designated landing spot at land vertcally.
|
-- The aim is to arrive abeam the landing spot in a stable hover at 120 ft with forward speed matched to the boat. From there the LSO will call "cleared to land". You then level cross to the tram line at the designated landing spot at land vertcally.
|
||||||
--
|
--
|
||||||
--
|
--
|
||||||
-- ## CASE III
|
-- ## CASE III
|
||||||
@ -2028,10 +2028,10 @@ function AIRBOSS:New(carriername, alias)
|
|||||||
self:_GetZonePlatform(case):SmokeZone(SMOKECOLOR.Blue, 45)
|
self:_GetZonePlatform(case):SmokeZone(SMOKECOLOR.Blue, 45)
|
||||||
self:_GetZoneCorridor(case):SmokeZone(SMOKECOLOR.Green, 45)
|
self:_GetZoneCorridor(case):SmokeZone(SMOKECOLOR.Green, 45)
|
||||||
self:_GetZoneHolding(case, 1):SmokeZone(SMOKECOLOR.White, 45)
|
self:_GetZoneHolding(case, 1):SmokeZone(SMOKECOLOR.White, 45)
|
||||||
self:_GetZoneHolding(case, 2):SmokeZone(SMOKECOLOR.White, 45)
|
self:_GetZoneHolding(case, 2):SmokeZone(SMOKECOLOR.White, 45)
|
||||||
self:_GetZoneInitial(case):SmokeZone(SMOKECOLOR.Orange, 45)
|
self:_GetZoneInitial(case):SmokeZone(SMOKECOLOR.Orange, 45)
|
||||||
self:_GetZoneCommence(case, 1):SmokeZone(SMOKECOLOR.Red, 45)
|
self:_GetZoneCommence(case, 1):SmokeZone(SMOKECOLOR.Red, 45)
|
||||||
self:_GetZoneCommence(case, 2):SmokeZone(SMOKECOLOR.Red, 45)
|
self:_GetZoneCommence(case, 2):SmokeZone(SMOKECOLOR.Red, 45)
|
||||||
self:_GetZoneAbeamLandingSpot():SmokeZone(SMOKECOLOR.Red, 5)
|
self:_GetZoneAbeamLandingSpot():SmokeZone(SMOKECOLOR.Red, 5)
|
||||||
self:_GetZoneLandingSpot():SmokeZone(SMOKECOLOR.Red, 5)
|
self:_GetZoneLandingSpot():SmokeZone(SMOKECOLOR.Red, 5)
|
||||||
end
|
end
|
||||||
@ -2855,7 +2855,7 @@ function AIRBOSS:SetLineupErrorThresholds(_max,_min, Left, LeftMed, LEFT, Right,
|
|||||||
self.lue.LeftMed=LeftMed or -2.0
|
self.lue.LeftMed=LeftMed or -2.0
|
||||||
self.lue.LEFT=LEFT or -3.0
|
self.lue.LEFT=LEFT or -3.0
|
||||||
self.lue.Right=Right or 1.0
|
self.lue.Right=Right or 1.0
|
||||||
self.lue.RightMed=RightMed or 2.0
|
self.lue.RightMed=RightMed or 2.0
|
||||||
self.lue.RIGHT=RIGHT or 3.0
|
self.lue.RIGHT=RIGHT or 3.0
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
@ -4404,10 +4404,10 @@ function AIRBOSS:_InitForrestal()
|
|||||||
self.carrierparam.rwywidth = 25
|
self.carrierparam.rwywidth = 25
|
||||||
|
|
||||||
-- Wires.
|
-- Wires.
|
||||||
self.carrierparam.wire1 = 42 -- Distance from stern to first wire.
|
self.carrierparam.wire1 = 44 -- Distance from stern to first wire. Original from Frank - 42
|
||||||
self.carrierparam.wire2 = 51.5
|
self.carrierparam.wire2 = 54 --51.5
|
||||||
self.carrierparam.wire3 = 62
|
self.carrierparam.wire3 = 64 --62
|
||||||
self.carrierparam.wire4 = 72.5
|
self.carrierparam.wire4 = 74 --72.5
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -5012,7 +5012,7 @@ function AIRBOSS:_InitVoiceOvers()
|
|||||||
duration=2.0,
|
duration=2.0,
|
||||||
subduration=5,
|
subduration=5,
|
||||||
},
|
},
|
||||||
EXPECTSPOT5={
|
EXPECTSPOT5={
|
||||||
file="LSO-ExpectSpot5",
|
file="LSO-ExpectSpot5",
|
||||||
suffix="ogg",
|
suffix="ogg",
|
||||||
loud=false,
|
loud=false,
|
||||||
@ -5851,8 +5851,8 @@ function AIRBOSS:_GetAircraftParameters(playerData, step)
|
|||||||
elseif skyhawk then
|
elseif skyhawk then
|
||||||
alt=UTILS.FeetToMeters(600)
|
alt=UTILS.FeetToMeters(600)
|
||||||
speed=UTILS.KnotsToMps(250)
|
speed=UTILS.KnotsToMps(250)
|
||||||
elseif goshawk then
|
elseif goshawk then
|
||||||
alt=UTILS.FeetToMeters(800)
|
alt=UTILS.FeetToMeters(800)
|
||||||
speed=UTILS.KnotsToMps(300)
|
speed=UTILS.KnotsToMps(300)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -5864,8 +5864,8 @@ function AIRBOSS:_GetAircraftParameters(playerData, step)
|
|||||||
elseif skyhawk then
|
elseif skyhawk then
|
||||||
alt=UTILS.FeetToMeters(600)
|
alt=UTILS.FeetToMeters(600)
|
||||||
speed=UTILS.KnotsToMps(250)
|
speed=UTILS.KnotsToMps(250)
|
||||||
elseif goshawk then
|
elseif goshawk then
|
||||||
alt=UTILS.FeetToMeters(800)
|
alt=UTILS.FeetToMeters(800)
|
||||||
speed=UTILS.KnotsToMps(300)
|
speed=UTILS.KnotsToMps(300)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -5902,7 +5902,7 @@ function AIRBOSS:_GetAircraftParameters(playerData, step)
|
|||||||
dist=UTILS.NMToMeters(1.2)
|
dist=UTILS.NMToMeters(1.2)
|
||||||
end
|
end
|
||||||
|
|
||||||
if goshawk then
|
if goshawk then
|
||||||
-- 0.9 to 1.1 NM per natops ch.4 page 48
|
-- 0.9 to 1.1 NM per natops ch.4 page 48
|
||||||
dist=UTILS.NMToMeters(0.9)
|
dist=UTILS.NMToMeters(0.9)
|
||||||
else
|
else
|
||||||
@ -5913,7 +5913,7 @@ function AIRBOSS:_GetAircraftParameters(playerData, step)
|
|||||||
|
|
||||||
if hornet or tomcat then
|
if hornet or tomcat then
|
||||||
alt=UTILS.FeetToMeters(500)
|
alt=UTILS.FeetToMeters(500)
|
||||||
elseif goshawk then
|
elseif goshawk then
|
||||||
alt=UTILS.FeetToMeters(450)
|
alt=UTILS.FeetToMeters(450)
|
||||||
elseif skyhawk then
|
elseif skyhawk then
|
||||||
alt=UTILS.FeetToMeters(500)
|
alt=UTILS.FeetToMeters(500)
|
||||||
@ -5946,7 +5946,7 @@ function AIRBOSS:_GetAircraftParameters(playerData, step)
|
|||||||
alt=UTILS.FeetToMeters(300) --?
|
alt=UTILS.FeetToMeters(300) --?
|
||||||
elseif harrier then
|
elseif harrier then
|
||||||
-- 300-325 ft
|
-- 300-325 ft
|
||||||
alt=UTILS.FeetToMeters(300)-- Need to verify
|
alt=UTILS.FeetToMeters(300)-- Need to verify
|
||||||
end
|
end
|
||||||
|
|
||||||
aoa=aoaac.OnSpeed
|
aoa=aoaac.OnSpeed
|
||||||
@ -6415,8 +6415,8 @@ function AIRBOSS:_MarshalPlayer(playerData, stack)
|
|||||||
-- Set stack flag.
|
-- Set stack flag.
|
||||||
flight.flag=stack
|
flight.flag=stack
|
||||||
|
|
||||||
-- Trigger Marshal event.
|
-- Trigger Marshal event.
|
||||||
self:Marshal(flight)
|
self:Marshal(flight)
|
||||||
end
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
@ -9674,7 +9674,7 @@ function AIRBOSS:_Bullseye(playerData)
|
|||||||
self:_PlayerHint(playerData)
|
self:_PlayerHint(playerData)
|
||||||
|
|
||||||
-- LSO expect spot 5 or 7.5 call
|
-- LSO expect spot 5 or 7.5 call
|
||||||
if playerData.actype==AIRBOSS.AircraftCarrier.AV8B and self.carriertype==AIRBOSS.CarrierType.JCARLOS then
|
if playerData.actype==AIRBOSS.AircraftCarrier.AV8B and self.carriertype==AIRBOSS.CarrierType.JCARLOS then
|
||||||
self:RadioTransmission(self.LSORadio, self.LSOCall.EXPECTSPOT5, nil, nil, nil, true)
|
self:RadioTransmission(self.LSORadio, self.LSOCall.EXPECTSPOT5, nil, nil, nil, true)
|
||||||
elseif playerData.actype==AIRBOSS.AircraftCarrier.AV8B then
|
elseif playerData.actype==AIRBOSS.AircraftCarrier.AV8B then
|
||||||
self:RadioTransmission(self.LSORadio, self.LSOCall.EXPECTSPOT75, nil, nil, nil, true)
|
self:RadioTransmission(self.LSORadio, self.LSOCall.EXPECTSPOT75, nil, nil, nil, true)
|
||||||
@ -9859,7 +9859,7 @@ function AIRBOSS:_Abeam(playerData)
|
|||||||
self:RadioTransmission(self.LSORadio, self.LSOCall.PADDLESCONTACT, nil, nil, nil, true)
|
self:RadioTransmission(self.LSORadio, self.LSOCall.PADDLESCONTACT, nil, nil, nil, true)
|
||||||
|
|
||||||
-- LSO expect spot 5 or 7.5 call
|
-- LSO expect spot 5 or 7.5 call
|
||||||
if playerData.actype==AIRBOSS.AircraftCarrier.AV8B and self.carriertype==AIRBOSS.CarrierType.JCARLOS then
|
if playerData.actype==AIRBOSS.AircraftCarrier.AV8B and self.carriertype==AIRBOSS.CarrierType.JCARLOS then
|
||||||
self:RadioTransmission(self.LSORadio, self.LSOCall.EXPECTSPOT5, false, 5, nil, true)
|
self:RadioTransmission(self.LSORadio, self.LSOCall.EXPECTSPOT5, false, 5, nil, true)
|
||||||
elseif playerData.actype==AIRBOSS.AircraftCarrier.AV8B then
|
elseif playerData.actype==AIRBOSS.AircraftCarrier.AV8B then
|
||||||
self:RadioTransmission(self.LSORadio, self.LSOCall.EXPECTSPOT75, false, 5, nil, true)
|
self:RadioTransmission(self.LSORadio, self.LSOCall.EXPECTSPOT75, false, 5, nil, true)
|
||||||
@ -10249,25 +10249,25 @@ function AIRBOSS:_Groove(playerData)
|
|||||||
-- Distance in NM.
|
-- Distance in NM.
|
||||||
local d=UTILS.MetersToNM(rho)
|
local d=UTILS.MetersToNM(rho)
|
||||||
|
|
||||||
-- Drift on lineup.
|
-- Drift on lineup.
|
||||||
if rho>=RAR and rho<=RIM then
|
if rho>=RAR and rho<=RIM then
|
||||||
if gd.LUE>0.22 and lineupError<-0.22 then
|
if gd.LUE>0.22 and lineupError<-0.22 then
|
||||||
env.info" Drift Right across centre ==> DR-"
|
env.info" Drift Right across centre ==> DR-"
|
||||||
gd.Drift=" DR"
|
gd.Drift=" DR"
|
||||||
self:T(self.lid..string.format("Got Drift Right across centre step %s, d=%.3f: Max LUE=%.3f, lower LUE=%.3f", gs, d, gd.LUE, lineupError))
|
self:T(self.lid..string.format("Got Drift Right across centre step %s, d=%.3f: Max LUE=%.3f, lower LUE=%.3f", gs, d, gd.LUE, lineupError))
|
||||||
elseif gd.LUE<-0.22 and lineupError>0.22 then
|
elseif gd.LUE<-0.22 and lineupError>0.22 then
|
||||||
env.info" Drift Left ==> DL-"
|
env.info" Drift Left ==> DL-"
|
||||||
gd.Drift=" DL"
|
gd.Drift=" DL"
|
||||||
self:T(self.lid..string.format("Got Drift Left across centre at step %s, d=%.3f: Min LUE=%.3f, lower LUE=%.3f", gs, d, gd.LUE, lineupError))
|
self:T(self.lid..string.format("Got Drift Left across centre at step %s, d=%.3f: Min LUE=%.3f, lower LUE=%.3f", gs, d, gd.LUE, lineupError))
|
||||||
elseif gd.LUE>0.13 and lineupError<-0.14 then
|
elseif gd.LUE>0.13 and lineupError<-0.14 then
|
||||||
env.info" Little Drift Right across centre ==> (DR-)"
|
env.info" Little Drift Right across centre ==> (DR-)"
|
||||||
gd.Drift=" (DR)"
|
gd.Drift=" (DR)"
|
||||||
self:T(self.lid..string.format("Got Little Drift Right across centre at step %s, d=%.3f: Max LUE=%.3f, lower LUE=%.3f", gs, d, gd.LUE, lineupError))
|
self:T(self.lid..string.format("Got Little Drift Right across centre at step %s, d=%.3f: Max LUE=%.3f, lower LUE=%.3f", gs, d, gd.LUE, lineupError))
|
||||||
elseif gd.LUE<-0.13 and lineupError>0.14 then
|
elseif gd.LUE<-0.13 and lineupError>0.14 then
|
||||||
env.info" Little Drift Left across centre ==> (DL-)"
|
env.info" Little Drift Left across centre ==> (DL-)"
|
||||||
gd.Drift=" (DL)"
|
gd.Drift=" (DL)"
|
||||||
self:E(self.lid..string.format("Got Little Drift Left across centre at step %s, d=%.3f: Min LUE=%.3f, lower LUE=%.3f", gs, d, gd.LUE, lineupError))
|
self:E(self.lid..string.format("Got Little Drift Left across centre at step %s, d=%.3f: Min LUE=%.3f, lower LUE=%.3f", gs, d, gd.LUE, lineupError))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Update max deviation of line up error.
|
-- Update max deviation of line up error.
|
||||||
@ -10613,10 +10613,10 @@ function AIRBOSS:_GetWire(Lcoord, dc)
|
|||||||
|
|
||||||
-- Corrected landing distance wrt to stern. Landing distance needs to be reduced due to delayed landing event for human players.
|
-- Corrected landing distance wrt to stern. Landing distance needs to be reduced due to delayed landing event for human players.
|
||||||
local d=Ldist-dc
|
local d=Ldist-dc
|
||||||
|
|
||||||
-- Multiplayer wire correction.
|
-- Multiplayer wire correction.
|
||||||
if self.mpWireCorrection then
|
if self.mpWireCorrection then
|
||||||
d=d-self.mpWireCorrection
|
d=d-self.mpWireCorrection
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Shift wires from stern to their correct position.
|
-- Shift wires from stern to their correct position.
|
||||||
@ -10709,7 +10709,7 @@ function AIRBOSS:_Trapped(playerData)
|
|||||||
elseif playerData.actype==AIRBOSS.AircraftCarrier.A4EC then
|
elseif playerData.actype==AIRBOSS.AircraftCarrier.A4EC then
|
||||||
-- A-4E gets slowed down much faster the the F/A-18C!
|
-- A-4E gets slowed down much faster the the F/A-18C!
|
||||||
dcorr=56
|
dcorr=56
|
||||||
elseif playerData.actype==AIRBOSS.AircraftCarrier.T45C then
|
elseif playerData.actype==AIRBOSS.AircraftCarrier.T45C then
|
||||||
-- T-45 also gets slowed down much faster the the F/A-18C.
|
-- T-45 also gets slowed down much faster the the F/A-18C.
|
||||||
dcorr=56
|
dcorr=56
|
||||||
end
|
end
|
||||||
@ -11340,7 +11340,7 @@ function AIRBOSS:_GetZoneHolding(case, stack)
|
|||||||
-- So stay 0-5 NM (+1 NM error margin) port of 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=self.zoneHolding or ZONE_POLYGON_BASE:New("CASE II/III Holding Zone")
|
||||||
|
|
||||||
self.zoneHolding:UpdateFromVec2(p)
|
self.zoneHolding:UpdateFromVec2(p)
|
||||||
end
|
end
|
||||||
|
|
||||||
return self.zoneHolding
|
return self.zoneHolding
|
||||||
@ -11386,12 +11386,12 @@ function AIRBOSS:_GetZoneCommence(case, stack)
|
|||||||
-- Create holding zone.
|
-- Create holding zone.
|
||||||
self.zoneCommence=self.zoneCommence or ZONE_RADIUS:New("CASE I Commence Zone")
|
self.zoneCommence=self.zoneCommence or ZONE_RADIUS:New("CASE I Commence Zone")
|
||||||
|
|
||||||
self.zoneCommence:UpdateFromVec2(Three:GetVec2(), R)
|
self.zoneCommence:UpdateFromVec2(Three:GetVec2(), R)
|
||||||
|
|
||||||
else
|
else
|
||||||
-- Case II/III
|
-- Case II/III
|
||||||
|
|
||||||
stack=stack or 1
|
stack=stack or 1
|
||||||
|
|
||||||
-- Start point at 21 NM for stack=1.
|
-- Start point at 21 NM for stack=1.
|
||||||
local l=20+stack
|
local l=20+stack
|
||||||
@ -11419,7 +11419,7 @@ function AIRBOSS:_GetZoneCommence(case, stack)
|
|||||||
-- Zone polygon.
|
-- Zone polygon.
|
||||||
self.zoneCommence=self.zoneCommence or ZONE_POLYGON_BASE:New("CASE II/III Commence Zone")
|
self.zoneCommence=self.zoneCommence or ZONE_POLYGON_BASE:New("CASE II/III Commence Zone")
|
||||||
|
|
||||||
self.zoneCommence:UpdateFromVec2(p)
|
self.zoneCommence:UpdateFromVec2(p)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -11679,7 +11679,7 @@ function AIRBOSS:_GetOptLandingCoordinate()
|
|||||||
if self.carriertype==AIRBOSS.CarrierType.TARAWA then
|
if self.carriertype==AIRBOSS.CarrierType.TARAWA then
|
||||||
|
|
||||||
-- Landing 100 ft abeam, 120 ft alt.
|
-- Landing 100 ft abeam, 120 ft alt.
|
||||||
self.landingcoord:UpdateFromCoordinate(self:_GetLandingSpotCoordinate()):Translate(35, FB-90, true, true)
|
self.landingcoord:UpdateFromCoordinate(self:_GetLandingSpotCoordinate()):Translate(35, FB-90, true, true)
|
||||||
--stern=self:_GetLandingSpotCoordinate():Translate(35, FB-90)
|
--stern=self:_GetLandingSpotCoordinate():Translate(35, FB-90)
|
||||||
|
|
||||||
-- Alitude 120 ft.
|
-- Alitude 120 ft.
|
||||||
@ -11687,21 +11687,21 @@ function AIRBOSS:_GetOptLandingCoordinate()
|
|||||||
elseif self.carriertype==AIRBOSS.CarrierType.AMERICA then
|
elseif self.carriertype==AIRBOSS.CarrierType.AMERICA then
|
||||||
|
|
||||||
-- Landing 100 ft abeam, 120 ft alt. To allow adjustments to match different deck configurations.
|
-- Landing 100 ft abeam, 120 ft alt. To allow adjustments to match different deck configurations.
|
||||||
self.landingcoord:UpdateFromCoordinate(self:_GetLandingSpotCoordinate()):Translate(35, FB-90, true, true)
|
self.landingcoord:UpdateFromCoordinate(self:_GetLandingSpotCoordinate()):Translate(35, FB-90, true, true)
|
||||||
--stern=self:_GetLandingSpotCoordinate():Translate(35, FB-90)
|
--stern=self:_GetLandingSpotCoordinate():Translate(35, FB-90)
|
||||||
|
|
||||||
-- Alitude 120 ft.
|
-- Alitude 120 ft.
|
||||||
self.landingcoord:SetAltitude(UTILS.FeetToMeters(120))
|
self.landingcoord:SetAltitude(UTILS.FeetToMeters(120))
|
||||||
|
|
||||||
elseif self.carriertype==AIRBOSS.CarrierType.JCARLOS then
|
elseif self.carriertype==AIRBOSS.CarrierType.JCARLOS then
|
||||||
|
|
||||||
-- Landing 100 ft abeam, 120 ft alt.
|
-- Landing 100 ft abeam, 120 ft alt.
|
||||||
self.landingcoord:UpdateFromCoordinate(self:_GetLandingSpotCoordinate()):Translate(35, FB-100, true, true)
|
self.landingcoord:UpdateFromCoordinate(self:_GetLandingSpotCoordinate()):Translate(35, FB-100, true, true)
|
||||||
--stern=self:_GetLandingSpotCoordinate():Translate(35, FB-100)
|
--stern=self:_GetLandingSpotCoordinate():Translate(35, FB-100)
|
||||||
|
|
||||||
-- Alitude 120 ft.
|
-- Alitude 120 ft.
|
||||||
self.landingcoord:SetAltitude(UTILS.FeetToMeters(120))
|
self.landingcoord:SetAltitude(UTILS.FeetToMeters(120))
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
-- Ideally we want to land between 2nd and 3rd wire.
|
-- Ideally we want to land between 2nd and 3rd wire.
|
||||||
@ -11743,7 +11743,7 @@ function AIRBOSS:_GetLandingSpotCoordinate()
|
|||||||
|
|
||||||
-- Primary landing spot 7.5 a little further forwad on the America
|
-- Primary landing spot 7.5 a little further forwad on the America
|
||||||
self.landingspotcoord:Translate(59, hdg, true, true):SetAltitude(self.carrierparam.deckheight)
|
self.landingspotcoord:Translate(59, hdg, true, true):SetAltitude(self.carrierparam.deckheight)
|
||||||
|
|
||||||
elseif self.carriertype==AIRBOSS.CarrierType.JCARLOS then
|
elseif self.carriertype==AIRBOSS.CarrierType.JCARLOS then
|
||||||
|
|
||||||
-- Landing 100 ft abeam, 120 alt.
|
-- Landing 100 ft abeam, 120 alt.
|
||||||
@ -11751,7 +11751,7 @@ function AIRBOSS:_GetLandingSpotCoordinate()
|
|||||||
|
|
||||||
-- Primary landing spot 5.0 -- TODO voice for different landing Spots.
|
-- Primary landing spot 5.0 -- TODO voice for different landing Spots.
|
||||||
self.landingspotcoord:Translate(89, hdg, true, true):SetAltitude(self.carrierparam.deckheight)
|
self.landingspotcoord:Translate(89, hdg, true, true):SetAltitude(self.carrierparam.deckheight)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return self.landingspotcoord
|
return self.landingspotcoord
|
||||||
@ -12241,10 +12241,10 @@ end
|
|||||||
-- * 12-21 seconds: OK (15-18 is ideal)
|
-- * 12-21 seconds: OK (15-18 is ideal)
|
||||||
-- * 22-24 seconds: Fair "(OK)
|
-- * 22-24 seconds: Fair "(OK)
|
||||||
-- * > 24 seconds: No Grade "--"
|
-- * > 24 seconds: No Grade "--"
|
||||||
--
|
--
|
||||||
-- If you manage to be between 16.4 and and 16.6 seconds, you will even get and okay underline "\_OK\_".
|
-- If you manage to be between 16.4 and and 16.6 seconds, you will even get and okay underline "\_OK\_".
|
||||||
-- No groove time for Harrier on LHA, LHD set to Tgroove Unicorn as starting point to allow possible _OK_ 5.0.
|
-- No groove time for Harrier on LHA, LHD set to Tgroove Unicorn as starting point to allow possible _OK_ 5.0.
|
||||||
-- If time in the AV-8B
|
-- If time in the AV-8B
|
||||||
--
|
--
|
||||||
-- * < 90 seconds: OK V/STOL
|
-- * < 90 seconds: OK V/STOL
|
||||||
-- * > 91 Seconds: SLOW V/STOL (Early hover stop selection)
|
-- * > 91 Seconds: SLOW V/STOL (Early hover stop selection)
|
||||||
@ -12256,7 +12256,7 @@ function AIRBOSS:_EvalGrooveTime(playerData)
|
|||||||
|
|
||||||
-- Time in groove.
|
-- Time in groove.
|
||||||
local t=playerData.Tgroove
|
local t=playerData.Tgroove
|
||||||
|
|
||||||
local grade=""
|
local grade=""
|
||||||
if t<9 then
|
if t<9 then
|
||||||
grade="_NESA_"
|
grade="_NESA_"
|
||||||
@ -12276,12 +12276,12 @@ function AIRBOSS:_EvalGrooveTime(playerData)
|
|||||||
else
|
else
|
||||||
grade="LIG"
|
grade="LIG"
|
||||||
end
|
end
|
||||||
|
|
||||||
-- The unicorn!
|
-- The unicorn!
|
||||||
if t>=16.4 and t<=16.6 then
|
if t>=16.4 and t<=16.6 then
|
||||||
grade="_OK_"
|
grade="_OK_"
|
||||||
end
|
end
|
||||||
|
|
||||||
-- V/STOL Unicorn!
|
-- V/STOL Unicorn!
|
||||||
if playerData.actype==AIRBOSS.AircraftCarrier.AV8B and (t>=65.0 and t<=75.0) then
|
if playerData.actype==AIRBOSS.AircraftCarrier.AV8B and (t>=65.0 and t<=75.0) then
|
||||||
grade="_OK_ V/STOL"
|
grade="_OK_ V/STOL"
|
||||||
@ -12322,7 +12322,7 @@ function AIRBOSS:_LSOgrade(playerData)
|
|||||||
local Tgroove=playerData.Tgroove
|
local Tgroove=playerData.Tgroove
|
||||||
local TgrooveUnicorn=Tgroove and (Tgroove>=15.0 and Tgroove<=18.99) or false
|
local TgrooveUnicorn=Tgroove and (Tgroove>=15.0 and Tgroove<=18.99) or false
|
||||||
local TgrooveVstolUnicorn=Tgroove and (Tgroove>=65.0 and Tgroove<=70.0)and playerData.actype==AIRBOSS.AircraftCarrier.AV8B or false
|
local TgrooveVstolUnicorn=Tgroove and (Tgroove>=65.0 and Tgroove<=70.0)and playerData.actype==AIRBOSS.AircraftCarrier.AV8B or false
|
||||||
|
|
||||||
local grade
|
local grade
|
||||||
local points
|
local points
|
||||||
if N==0 and (TgrooveUnicorn or TgrooveVstolUnicorn ) then
|
if N==0 and (TgrooveUnicorn or TgrooveVstolUnicorn ) then
|
||||||
@ -12331,18 +12331,18 @@ function AIRBOSS:_LSOgrade(playerData)
|
|||||||
points=5.0
|
points=5.0
|
||||||
G="Unicorn"
|
G="Unicorn"
|
||||||
else
|
else
|
||||||
|
|
||||||
-- Add AV-8B Harrier devation allowances due to lower groundspeed and 3x conventional groove time, this allows to maintain LSO tolerances while respecting the deviations are not unsafe. (WIP requires feedback)
|
-- Add AV-8B Harrier devation allowances due to lower groundspeed and 3x conventional groove time, this allows to maintain LSO tolerances while respecting the deviations are not unsafe. (WIP requires feedback)
|
||||||
-- Large devaitions still result in a No Grade, A Unicorn still requires a clean pass with no deviation.
|
-- Large devaitions still result in a No Grade, A Unicorn still requires a clean pass with no deviation.
|
||||||
if nL>3 and playerData.actype==AIRBOSS.AircraftCarrier.AV8B then
|
if nL>3 and playerData.actype==AIRBOSS.AircraftCarrier.AV8B then
|
||||||
-- Larger deviations ==> "No grade" 2.0 points.
|
-- Larger deviations ==> "No grade" 2.0 points.
|
||||||
grade="--"
|
grade="--"
|
||||||
points=2.0
|
points=2.0
|
||||||
elseif nN>2 and playerData.actype==AIRBOSS.AircraftCarrier.AV8B then
|
elseif nN>2 and playerData.actype==AIRBOSS.AircraftCarrier.AV8B then
|
||||||
-- Only average deviations ==> "Fair Pass" Pass with average deviations and corrections.
|
-- Only average deviations ==> "Fair Pass" Pass with average deviations and corrections.
|
||||||
grade="(OK)"
|
grade="(OK)"
|
||||||
points=3.0
|
points=3.0
|
||||||
elseif nL>0 then
|
elseif nL>0 then
|
||||||
-- Larger deviations ==> "No grade" 2.0 points.
|
-- Larger deviations ==> "No grade" 2.0 points.
|
||||||
grade="--"
|
grade="--"
|
||||||
points=2.0
|
points=2.0
|
||||||
@ -12355,7 +12355,7 @@ function AIRBOSS:_LSOgrade(playerData)
|
|||||||
grade="OK"
|
grade="OK"
|
||||||
points=4.0
|
points=4.0
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Replace" )"( and "__"
|
-- Replace" )"( and "__"
|
||||||
@ -12466,35 +12466,35 @@ function AIRBOSS:_Flightdata2Text(playerData, groovestep)
|
|||||||
|
|
||||||
-- Aircraft specific AoA values.
|
-- Aircraft specific AoA values.
|
||||||
local acaoa=self:_GetAircraftAoA(playerData)
|
local acaoa=self:_GetAircraftAoA(playerData)
|
||||||
|
|
||||||
--Angled Approach.
|
--Angled Approach.
|
||||||
local P=nil
|
local P=nil
|
||||||
if step==AIRBOSS.PatternStep.GROOVE_XX and ROL<=4.0 and playerData.case<3 then
|
if step==AIRBOSS.PatternStep.GROOVE_XX and ROL<=4.0 and playerData.case<3 then
|
||||||
if LUE>self.lue.RIGHT then
|
if LUE>self.lue.RIGHT then
|
||||||
P=underline("AA")
|
P=underline("AA")
|
||||||
elseif
|
elseif
|
||||||
LUE>self.lue.RightMed then
|
LUE>self.lue.RightMed then
|
||||||
P="AA "
|
P="AA "
|
||||||
elseif
|
elseif
|
||||||
LUE>self.lue.Right then
|
LUE>self.lue.Right then
|
||||||
P=little("AA")
|
P=little("AA")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--Overshoot Start.
|
--Overshoot Start.
|
||||||
local O=nil
|
local O=nil
|
||||||
if step==AIRBOSS.PatternStep.GROOVE_XX then
|
if step==AIRBOSS.PatternStep.GROOVE_XX then
|
||||||
if LUE<self.lue.LEFT then
|
if LUE<self.lue.LEFT then
|
||||||
O=underline("OS")
|
O=underline("OS")
|
||||||
elseif
|
elseif
|
||||||
LUE<self.lue.Left then
|
LUE<self.lue.Left then
|
||||||
O="OS"
|
O="OS"
|
||||||
elseif
|
elseif
|
||||||
LUE<self.lue._min then
|
LUE<self.lue._min then
|
||||||
O=little("OS")
|
O=little("OS")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Speed via AoA. Depends on aircraft type.
|
-- Speed via AoA. Depends on aircraft type.
|
||||||
local S=nil
|
local S=nil
|
||||||
if AOA>acaoa.SLOW then
|
if AOA>acaoa.SLOW then
|
||||||
@ -12536,21 +12536,21 @@ function AIRBOSS:_Flightdata2Text(playerData, groovestep)
|
|||||||
elseif LUE>self.lue._max then
|
elseif LUE>self.lue._max then
|
||||||
D=little("LUL")
|
D=little("LUL")
|
||||||
elseif playerData.case<3 then
|
elseif playerData.case<3 then
|
||||||
if LUE<self.lue.LEFT and step~=AIRBOSS.PatternStep.GROOVE_XX then
|
if LUE<self.lue.LEFT and step~=AIRBOSS.PatternStep.GROOVE_XX then
|
||||||
D=underline("LUR")
|
D=underline("LUR")
|
||||||
elseif LUE<self.lue.Left and step~=AIRBOSS.PatternStep.GROOVE_XX then
|
elseif LUE<self.lue.Left and step~=AIRBOSS.PatternStep.GROOVE_XX then
|
||||||
D="LUR"
|
D="LUR"
|
||||||
elseif LUE<self.lue._min and step~=AIRBOSS.PatternStep.GROOVE_XX then
|
elseif LUE<self.lue._min and step~=AIRBOSS.PatternStep.GROOVE_XX then
|
||||||
D=little("LUR")
|
D=little("LUR")
|
||||||
end
|
end
|
||||||
elseif playerData.case==3 then
|
elseif playerData.case==3 then
|
||||||
if LUE<self.lue.LEFT then
|
if LUE<self.lue.LEFT then
|
||||||
D=underline("LUR")
|
D=underline("LUR")
|
||||||
elseif LUE<self.lue.Left then
|
elseif LUE<self.lue.Left then
|
||||||
D="LUR"
|
D="LUR"
|
||||||
elseif LUE<self.lue._min then
|
elseif LUE<self.lue._min then
|
||||||
D=little("LUR")
|
D=little("LUR")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Compile.
|
-- Compile.
|
||||||
@ -12564,7 +12564,7 @@ function AIRBOSS:_Flightdata2Text(playerData, groovestep)
|
|||||||
if P then
|
if P then
|
||||||
G=G..P
|
G=G..P
|
||||||
n=n
|
n=n
|
||||||
end
|
end
|
||||||
-- Speed.
|
-- Speed.
|
||||||
if S then
|
if S then
|
||||||
G=G..S
|
G=G..S
|
||||||
@ -12583,14 +12583,14 @@ function AIRBOSS:_Flightdata2Text(playerData, groovestep)
|
|||||||
--Drift in Lineup
|
--Drift in Lineup
|
||||||
if fdata.Drift then
|
if fdata.Drift then
|
||||||
G=G..fdata.Drift
|
G=G..fdata.Drift
|
||||||
n=n -- Drift doesn't affect score, advisory only.
|
n=n -- Drift doesn't affect score, advisory only.
|
||||||
end
|
end
|
||||||
-- Overshoot.
|
-- Overshoot.
|
||||||
if O then
|
if O then
|
||||||
G=G..O
|
G=G..O
|
||||||
n=n+1
|
n=n+1
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Add current step.
|
-- Add current step.
|
||||||
local step=self:_GS(step)
|
local step=self:_GS(step)
|
||||||
step=step:gsub("XX","X")
|
step=step:gsub("XX","X")
|
||||||
@ -14855,8 +14855,8 @@ end
|
|||||||
-- @param #table param Parameters.
|
-- @param #table param Parameters.
|
||||||
-- @param #number time Time.
|
-- @param #number time Time.
|
||||||
function AIRBOSS._CheckRadioQueueT(param, time)
|
function AIRBOSS._CheckRadioQueueT(param, time)
|
||||||
AIRBOSS._CheckRadioQueue(param.airboss, param.radioqueue, param.name)
|
AIRBOSS._CheckRadioQueue(param.airboss, param.radioqueue, param.name)
|
||||||
return time+0.05
|
return time+0.05
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Radio queue item.
|
--- Radio queue item.
|
||||||
@ -14880,15 +14880,15 @@ function AIRBOSS:_CheckRadioQueue(radioqueue, name)
|
|||||||
-- Check if queue is empty.
|
-- Check if queue is empty.
|
||||||
if #radioqueue==0 then
|
if #radioqueue==0 then
|
||||||
|
|
||||||
if name=="LSO" then
|
if name=="LSO" then
|
||||||
self:T(self.lid..string.format("Stopping LSO radio queue."))
|
self:T(self.lid..string.format("Stopping LSO radio queue."))
|
||||||
self.radiotimer:Stop(self.RQLid)
|
self.radiotimer:Stop(self.RQLid)
|
||||||
self.RQLid=nil
|
self.RQLid=nil
|
||||||
elseif name=="MARSHAL" then
|
elseif name=="MARSHAL" then
|
||||||
self:T(self.lid..string.format("Stopping Marshal radio queue."))
|
self:T(self.lid..string.format("Stopping Marshal radio queue."))
|
||||||
self.radiotimer:Stop(self.RQMid)
|
self.radiotimer:Stop(self.RQMid)
|
||||||
self.RQMid=nil
|
self.RQMid=nil
|
||||||
end
|
end
|
||||||
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@ -15030,11 +15030,11 @@ function AIRBOSS:RadioTransmission(radio, call, loud, delay, interval, click, pi
|
|||||||
|
|
||||||
caller="LSOCall"
|
caller="LSOCall"
|
||||||
|
|
||||||
-- Schedule radio queue checks.
|
-- Schedule radio queue checks.
|
||||||
if not self.RQLid then
|
if not self.RQLid then
|
||||||
self:T(self.lid..string.format("Starting LSO radio queue."))
|
self:T(self.lid..string.format("Starting LSO radio queue."))
|
||||||
self.RQLid=self.radiotimer:Schedule(nil, AIRBOSS._CheckRadioQueue, {self, self.RQLSO, "LSO"}, 0.02, 0.05)
|
self.RQLid=self.radiotimer:Schedule(nil, AIRBOSS._CheckRadioQueue, {self, self.RQLSO, "LSO"}, 0.02, 0.05)
|
||||||
end
|
end
|
||||||
|
|
||||||
elseif radio.alias=="MARSHAL" then
|
elseif radio.alias=="MARSHAL" then
|
||||||
|
|
||||||
@ -15042,10 +15042,10 @@ function AIRBOSS:RadioTransmission(radio, call, loud, delay, interval, click, pi
|
|||||||
|
|
||||||
caller="MarshalCall"
|
caller="MarshalCall"
|
||||||
|
|
||||||
if not self.RQMid then
|
if not self.RQMid then
|
||||||
self:T(self.lid..string.format("Starting Marhal radio queue."))
|
self:T(self.lid..string.format("Starting Marhal radio queue."))
|
||||||
self.RQMid=self.radiotimer:Schedule(nil, AIRBOSS._CheckRadioQueue, {self, self.RQMarshal, "MARSHAL"}, 0.02, 0.05)
|
self.RQMid=self.radiotimer:Schedule(nil, AIRBOSS._CheckRadioQueue, {self, self.RQMarshal, "MARSHAL"}, 0.02, 0.05)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -16212,9 +16212,9 @@ function AIRBOSS:_SkipperStartRecovery(_unitName, case)
|
|||||||
|
|
||||||
-- Inform player.
|
-- Inform player.
|
||||||
local text=string.format("affirm, Case %d recovery will start in 5 min for %d min. Wind on deck %d knots. U-turn=%s.", case, self.skipperTime, self.skipperSpeed, tostring(self.skipperUturn))
|
local text=string.format("affirm, Case %d recovery will start in 5 min for %d min. Wind on deck %d knots. U-turn=%s.", case, self.skipperTime, self.skipperSpeed, tostring(self.skipperUturn))
|
||||||
if case>1 then
|
if case>1 then
|
||||||
text=text..string.format(" Marshal radial %d°.", self.skipperOffset)
|
text=text..string.format(" Marshal radial %d°.", self.skipperOffset)
|
||||||
end
|
end
|
||||||
if self:IsRecovering() then
|
if self:IsRecovering() then
|
||||||
text="negative, carrier is already recovering."
|
text="negative, carrier is already recovering."
|
||||||
self:MessageToPlayer(playerData, text, "AIRBOSS")
|
self:MessageToPlayer(playerData, text, "AIRBOSS")
|
||||||
@ -18065,12 +18065,12 @@ function AIRBOSS:_SaveTrapSheet(playerData, grade)
|
|||||||
for i=1,9999 do
|
for i=1,9999 do
|
||||||
|
|
||||||
-- Create file name
|
-- Create file name
|
||||||
if self.trapprefix then
|
if self.trapprefix then
|
||||||
filename=string.format("%s_%s-%04d.csv", self.trapprefix, playerData.actype, i)
|
filename=string.format("%s_%s-%04d.csv", self.trapprefix, playerData.actype, i)
|
||||||
else
|
else
|
||||||
local name=UTILS.ReplaceIllegalCharacters(playerData.name, "_")
|
local name=UTILS.ReplaceIllegalCharacters(playerData.name, "_")
|
||||||
filename=string.format("AIRBOSS-%s_Trapsheet-%s_%s-%04d.csv", self.alias, name, playerData.actype, i)
|
filename=string.format("AIRBOSS-%s_Trapsheet-%s_%s-%04d.csv", self.alias, name, playerData.actype, i)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Set path.
|
-- Set path.
|
||||||
if path~=nil then
|
if path~=nil then
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user