- Essex
- Corsair
This commit is contained in:
Frank 2025-06-22 22:29:52 +02:00
parent cbcc893ce5
commit 24b47b02e0
2 changed files with 93 additions and 4 deletions

View File

@ -1699,7 +1699,7 @@ function DATABASE:_EventOnBirth( Event )
if PlayerName then if PlayerName then
-- Debug info. -- Debug info.
self:I(string.format("Player '%s' joined unit '%s' of group '%s'", tostring(PlayerName), tostring(Event.IniDCSUnitName), tostring(Event.IniDCSGroupName))) self:I(string.format("Player '%s' joined unit '%s' (%s) of group '%s'", tostring(PlayerName), tostring(Event.IniDCSUnitName), tostring(Event.IniTypeName), tostring(Event.IniDCSGroupName)))
-- Add client in case it does not exist already. -- Add client in case it does not exist already.
if client == nil or (client and client:CountPlayers() == 0) then if client == nil or (client and client:CountPlayers() == 0) then

View File

@ -1283,6 +1283,8 @@ AIRBOSS = {
-- @field #string RHINOE F/A-18E Superhornet (mod). -- @field #string RHINOE F/A-18E Superhornet (mod).
-- @field #string RHINOF F/A-18F Superhornet (mod). -- @field #string RHINOF F/A-18F Superhornet (mod).
-- @field #string GROWLER FEA-18G Superhornet (mod). -- @field #string GROWLER FEA-18G Superhornet (mod).
-- @field #string CORSAIR F4U-1D Corsair.
-- @field #string CORSAIR_CW F4U-1D Corsair Mk.4 (clipped wing).
AIRBOSS.AircraftCarrier={ AIRBOSS.AircraftCarrier={
AV8B="AV8BNA", AV8B="AV8BNA",
HORNET="FA-18C_hornet", HORNET="FA-18C_hornet",
@ -1299,6 +1301,8 @@ AIRBOSS.AircraftCarrier={
RHINOE="FA-18E", RHINOE="FA-18E",
RHINOF="FA-18F", RHINOF="FA-18F",
GROWLER="EA-18G", GROWLER="EA-18G",
CORSAIR="F4U-1D",
CORSAIR_CW="F4U-1D CW",
} }
--- Carrier types. --- Carrier types.
@ -1310,6 +1314,7 @@ AIRBOSS.AircraftCarrier={
-- @field #string TRUMAN USS Harry S. Truman (CVN-75) [Super Carrier Module] -- @field #string TRUMAN USS Harry S. Truman (CVN-75) [Super Carrier Module]
-- @field #string FORRESTAL USS Forrestal (CV-59) [Heatblur Carrier Module] -- @field #string FORRESTAL USS Forrestal (CV-59) [Heatblur Carrier Module]
-- @field #string VINSON USS Carl Vinson (CVN-70) [Deprecated!] -- @field #string VINSON USS Carl Vinson (CVN-70) [Deprecated!]
-- @field #string ESSEX Essex class carrier (e.g. USS Yorktown (CV-10)) [Magnitude 3 Carrier Module]
-- @field #string HERMES HMS Hermes (R12) [V/STOL Carrier] -- @field #string HERMES HMS Hermes (R12) [V/STOL Carrier]
-- @field #string INVINCIBLE HMS Invincible (R05) [V/STOL Carrier] -- @field #string INVINCIBLE HMS Invincible (R05) [V/STOL Carrier]
-- @field #string TARAWA USS Tarawa (LHA-1) [V/STOL Carrier] -- @field #string TARAWA USS Tarawa (LHA-1) [V/STOL Carrier]
@ -1325,6 +1330,7 @@ AIRBOSS.CarrierType = {
STENNIS = "Stennis", STENNIS = "Stennis",
FORRESTAL = "Forrestal", FORRESTAL = "Forrestal",
VINSON = "VINSON", VINSON = "VINSON",
ESSEX = "Essex",
HERMES = "HERMES81", HERMES = "HERMES81",
INVINCIBLE = "hms_invincible", INVINCIBLE = "hms_invincible",
TARAWA = "LHA_Tarawa", TARAWA = "LHA_Tarawa",
@ -2013,6 +2019,8 @@ function AIRBOSS:New( carriername, alias )
elseif self.carriertype == AIRBOSS.CarrierType.VINSON then elseif self.carriertype == AIRBOSS.CarrierType.VINSON then
-- Carl Vinson is legacy now. -- Carl Vinson is legacy now.
self:_InitStennis() self:_InitStennis()
elseif self.carriertype == AIRBOSS.CarrierType.ESSEX then
self:_InitEssex()
elseif self.carriertype == AIRBOSS.CarrierType.HERMES then elseif self.carriertype == AIRBOSS.CarrierType.HERMES then
-- Hermes parameters. -- Hermes parameters.
self:_InitHermes() self:_InitHermes()
@ -4627,6 +4635,51 @@ function AIRBOSS:_InitForrestal()
end end
--- Init parameters for Essec class carriers.
-- @param #AIRBOSS self
function AIRBOSS:_InitEssex()
-- Init Nimitz as default.
self:_InitNimitz()
-- Carrier Parameters.
self.carrierparam.sterndist = -126
self.carrierparam.deckheight = 19.27 --DCS World\CoreMods\tech\M3 WWII PTO units\Database\Essex_Class_Carrier_1944.lua
-- Total size of the carrier (approx as rectangle).
self.carrierparam.totlength = 268
self.carrierparam.totwidthport = 23
self.carrierparam.totwidthstarboard = 23
-- Landing runway.
self.carrierparam.rwyangle = 0.0
self.carrierparam.rwylength = 265
self.carrierparam.rwywidth = 20
-- Wires.
self.carrierparam.wire1 = 21.9
self.carrierparam.wire2 = 28.3
self.carrierparam.wire3 = 34.7
self.carrierparam.wire4 = 41.1
self.carrierparam.wire5 = 47.4
self.carrierparam.wire6 = 53.7
self.carrierparam.wire7 = 59.0
self.carrierparam.wire8 = 64.1
self.carrierparam.wire9 = 72.7
self.carrierparam.wire10 = 78.0
self.carrierparam.wire11 = 85.5
self.carrierparam.wire12 = 105.9
self.carrierparam.wire13 = 113.3
self.carrierparam.wire14 = 121.0
self.carrierparam.wire15 = 128.5
-- Landing distance.
self.carrierparam.landingdist = self.carrierparam.sterndist+self.carrierparam.wire3
end
--- Init parameters for R12 HMS Hermes carrier. --- Init parameters for R12 HMS Hermes carrier.
-- @param #AIRBOSS self -- @param #AIRBOSS self
function AIRBOSS:_InitHermes() function AIRBOSS:_InitHermes()
@ -5330,6 +5383,7 @@ function AIRBOSS:_GetAircraftAoA( playerData )
local skyhawk = playerData.actype == AIRBOSS.AircraftCarrier.A4EC local skyhawk = playerData.actype == AIRBOSS.AircraftCarrier.A4EC
local harrier = playerData.actype == AIRBOSS.AircraftCarrier.AV8B local harrier = playerData.actype == AIRBOSS.AircraftCarrier.AV8B
local tomcat = playerData.actype == AIRBOSS.AircraftCarrier.F14A or playerData.actype == AIRBOSS.AircraftCarrier.F14B local tomcat = playerData.actype == AIRBOSS.AircraftCarrier.F14A or playerData.actype == AIRBOSS.AircraftCarrier.F14B
local corsair = playerData.actype == AIRBOSS.AircraftCarrier.CORSAIR or playerData.actype == AIRBOSS.AircraftCarrier.CORSAIR_CW
-- Table with AoA values. -- Table with AoA values.
local aoa = {} -- #AIRBOSS.AircraftAoA local aoa = {} -- #AIRBOSS.AircraftAoA
@ -5374,7 +5428,6 @@ function AIRBOSS:_GetAircraftAoA( playerData )
aoa.Fast = 8.25 -- =17.5/2 aoa.Fast = 8.25 -- =17.5/2
aoa.FAST = 8.00 -- =16.5/2 aoa.FAST = 8.00 -- =16.5/2
elseif harrier then elseif harrier then
-- AV-8B Harrier parameters. Tuning done on the Fast AoA to allow for abeam and ninety at Nozzles 55. Pene testing -- AV-8B Harrier parameters. Tuning done on the Fast AoA to allow for abeam and ninety at Nozzles 55. Pene testing
aoa.SLOW = 16.0 aoa.SLOW = 16.0
aoa.Slow = 13.5 aoa.Slow = 13.5
@ -5383,7 +5436,15 @@ function AIRBOSS:_GetAircraftAoA( playerData )
aoa.OnSpeedMin = 9.5 aoa.OnSpeedMin = 9.5
aoa.Fast = 8.0 aoa.Fast = 8.0
aoa.FAST = 7.5 aoa.FAST = 7.5
elseif corsair then
-- F4U-1D Corsair parameters.
aoa.SLOW = 16.0
aoa.Slow = 13.5
aoa.OnSpeedMax = 12.5
aoa.OnSpeed = 10.0
aoa.OnSpeedMin = 9.5
aoa.Fast = 8.0
aoa.FAST = 7.5
end end
return aoa return aoa
@ -5496,6 +5557,7 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
local tomcat = playerData.actype == AIRBOSS.AircraftCarrier.F14A or playerData.actype == AIRBOSS.AircraftCarrier.F14B local tomcat = playerData.actype == AIRBOSS.AircraftCarrier.F14A or playerData.actype == AIRBOSS.AircraftCarrier.F14B
local harrier = playerData.actype == AIRBOSS.AircraftCarrier.AV8B local harrier = playerData.actype == AIRBOSS.AircraftCarrier.AV8B
local goshawk = playerData.actype == AIRBOSS.AircraftCarrier.T45C local goshawk = playerData.actype == AIRBOSS.AircraftCarrier.T45C
local corsair = playerData.actype == AIRBOSS.AircraftCarrier.CORSAIR or playerData.actype == AIRBOSS.AircraftCarrier.CORSAIR_CW
-- Return values. -- Return values.
local alt local alt
@ -5555,6 +5617,9 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
elseif goshawk then elseif goshawk then
alt = UTILS.FeetToMeters( 800 ) alt = UTILS.FeetToMeters( 800 )
speed = UTILS.KnotsToMps( 300 ) speed = UTILS.KnotsToMps( 300 )
elseif corsair then
alt = UTILS.FeetToMeters( 300 )
speed = UTILS.KnotsToMps( 120 )
end end
elseif step == AIRBOSS.PatternStep.BREAKENTRY then elseif step == AIRBOSS.PatternStep.BREAKENTRY then
@ -5568,6 +5633,9 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
elseif goshawk then elseif goshawk then
alt = UTILS.FeetToMeters( 800 ) alt = UTILS.FeetToMeters( 800 )
speed = UTILS.KnotsToMps( 300 ) speed = UTILS.KnotsToMps( 300 )
elseif corsair then
alt = UTILS.FeetToMeters( 200 )
speed = UTILS.KnotsToMps( 110 )
end end
elseif step == AIRBOSS.PatternStep.EARLYBREAK then elseif step == AIRBOSS.PatternStep.EARLYBREAK then
@ -5576,6 +5644,9 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
alt = UTILS.FeetToMeters( 800 ) alt = UTILS.FeetToMeters( 800 )
elseif skyhawk then elseif skyhawk then
alt = UTILS.FeetToMeters( 600 ) alt = UTILS.FeetToMeters( 600 )
elseif corsair then
alt = UTILS.FeetToMeters( 200 )
speed = UTILS.KnotsToMps( 100 )
end end
elseif step == AIRBOSS.PatternStep.LATEBREAK then elseif step == AIRBOSS.PatternStep.LATEBREAK then
@ -5584,6 +5655,9 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
alt = UTILS.FeetToMeters( 800 ) alt = UTILS.FeetToMeters( 800 )
elseif skyhawk then elseif skyhawk then
alt = UTILS.FeetToMeters( 600 ) alt = UTILS.FeetToMeters( 600 )
elseif corsair then
alt = UTILS.FeetToMeters( 150 )
speed = UTILS.KnotsToMps( 100 )
end end
elseif step == AIRBOSS.PatternStep.ABEAM then elseif step == AIRBOSS.PatternStep.ABEAM then
@ -5592,6 +5666,9 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
alt = UTILS.FeetToMeters( 600 ) alt = UTILS.FeetToMeters( 600 )
elseif skyhawk then elseif skyhawk then
alt = UTILS.FeetToMeters( 500 ) alt = UTILS.FeetToMeters( 500 )
elseif corsair then
alt = UTILS.FeetToMeters( 150 )
speed = UTILS.KnotsToMps( 90 )
end end
aoa = aoaac.OnSpeed aoa = aoaac.OnSpeed
@ -5616,6 +5693,9 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
alt = UTILS.FeetToMeters( 500 ) alt = UTILS.FeetToMeters( 500 )
elseif harrier then elseif harrier then
alt = UTILS.FeetToMeters( 425 ) alt = UTILS.FeetToMeters( 425 )
elseif corsair then
alt = UTILS.FeetToMeters( 90 )
speed = UTILS.KnotsToMps( 90 )
end end
aoa = aoaac.OnSpeed aoa = aoaac.OnSpeed
@ -5628,6 +5708,8 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
alt = UTILS.FeetToMeters( 430 ) -- Tomcat should be a bit higher as it intercepts the GS a bit higher. alt = UTILS.FeetToMeters( 430 ) -- Tomcat should be a bit higher as it intercepts the GS a bit higher.
elseif skyhawk then elseif skyhawk then
alt = UTILS.FeetToMeters( 370 ) -- ? alt = UTILS.FeetToMeters( 370 ) -- ?
elseif corsair then
alt = UTILS.FeetToMeters( 80 )
end end
-- Harrier wont get into wake pos. Runway is not angled and it stays port. -- Harrier wont get into wake pos. Runway is not angled and it stays port.
@ -5643,6 +5725,8 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
alt = UTILS.FeetToMeters( 300 ) -- ? alt = UTILS.FeetToMeters( 300 ) -- ?
elseif harrier then elseif harrier then
alt=UTILS.FeetToMeters(312)-- 300-325 ft alt=UTILS.FeetToMeters(312)-- 300-325 ft
elseif corsair then
alt = UTILS.FeetToMeters( 80 )
end end
aoa = aoaac.OnSpeed aoa = aoaac.OnSpeed
@ -6519,6 +6603,8 @@ function AIRBOSS:_LandAI( flight )
Speed = UTILS.KnotsToKmph( 175 ) Speed = UTILS.KnotsToKmph( 175 )
elseif flight.actype == AIRBOSS.AircraftCarrier.S3B or flight.actype == AIRBOSS.AircraftCarrier.S3BTANKER then elseif flight.actype == AIRBOSS.AircraftCarrier.S3B or flight.actype == AIRBOSS.AircraftCarrier.S3BTANKER then
Speed = UTILS.KnotsToKmph( 140 ) Speed = UTILS.KnotsToKmph( 140 )
elseif flight.actype == AIRBOSS.AircraftCarrier.CORSAIR or flight.actype == AIRBOSS.AircraftCarrier.CORSAIR_CW then
Speed = UTILS.KnotsToKmph( 100 )
end end
-- Carrier position. -- Carrier position.
@ -10314,6 +10400,9 @@ function AIRBOSS:_GetSternCoord()
elseif self.carriertype == AIRBOSS.CarrierType.FORRESTAL then elseif self.carriertype == AIRBOSS.CarrierType.FORRESTAL then
-- Forrestal -- Forrestal
self.sterncoord:Translate( self.carrierparam.sterndist, hdg, true, true ):Translate( 7.5, FB + 90, true, true ) self.sterncoord:Translate( self.carrierparam.sterndist, hdg, true, true ):Translate( 7.5, FB + 90, true, true )
elseif self.carriertype == AIRBOSS.CarrierType.ESSEX then
-- Forrestal
self.sterncoord:Translate( self.carrierparam.sterndist, hdg, true, true ):Translate( -1, FB + 90, true, true )
else else
-- Nimitz SC: translate 8 meters starboard wrt Final bearing. -- Nimitz SC: translate 8 meters starboard wrt Final bearing.
self.sterncoord:Translate( self.carrierparam.sterndist, hdg, true, true ):Translate( 9.5, FB + 90, true, true ) self.sterncoord:Translate( self.carrierparam.sterndist, hdg, true, true ):Translate( 9.5, FB + 90, true, true )