Merge branch 'master' into develop

This commit is contained in:
Frank 2025-06-23 22:43:13 +02:00
commit 1f268b3b5d
2 changed files with 116 additions and 20 deletions

View File

@ -1699,7 +1699,7 @@ function DATABASE:_EventOnBirth( Event )
if PlayerName then
-- 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.
if client == nil or (client and client:CountPlayers() == 0) then

View File

@ -32,6 +32,7 @@
-- * [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 Forrestal](https://en.wikipedia.org/wiki/USS_Forrestal_\(CV-59\)) (CV-59) [Heatblur Carrier Module]
-- * [Essex Class](https://en.wikipedia.org/wiki/Essex-class_aircraft_carrier) (CV-11) [Magnitude 3 Carrier Module]
-- * [HMS Hermes](https://en.wikipedia.org/wiki/HMS_Hermes_\(R12\)) (R12)
-- * [HMS Invincible](https://en.wikipedia.org/wiki/HMS_Invincible_\(R05\)) (R05)
-- * [USS Tarawa](https://en.wikipedia.org/wiki/USS_Tarawa_\(LHA-1\)) (LHA-1)
@ -47,6 +48,7 @@
-- * [AV-8B N/A Harrier](https://forums.eagle.ru/forumdisplay.php?f=555) (Player & AI)
-- * [T-45C Goshawk](https://forum.dcs.world/topic/203816-vnao-t-45-goshawk/) (VNAO mod) (Player & AI)
-- * [FE/A-18E/F/G Superhornet](https://forum.dcs.world/topic/316971-cjs-super-hornet-community-mod-v20-official-thread/) (CJS mod) (Player & AI)
-- * [F4U-1D Corsair](https://forum.dcs.world/forum/781-f4u-1d/) (Player & AI)
-- * F/A-18C Hornet (AI)
-- * F-14A Tomcat (AI)
-- * E-2D Hawkeye (AI)
@ -1283,6 +1285,8 @@ AIRBOSS = {
-- @field #string RHINOE F/A-18E Superhornet (mod).
-- @field #string RHINOF F/A-18F 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={
AV8B="AV8BNA",
HORNET="FA-18C_hornet",
@ -1299,6 +1303,8 @@ AIRBOSS.AircraftCarrier={
RHINOE="FA-18E",
RHINOF="FA-18F",
GROWLER="EA-18G",
CORSAIR="F4U-1D",
CORSAIR_CW="F4U-1D CW",
}
--- Carrier types.
@ -1310,6 +1316,7 @@ AIRBOSS.AircraftCarrier={
-- @field #string TRUMAN USS Harry S. Truman (CVN-75) [Super Carrier Module]
-- @field #string FORRESTAL USS Forrestal (CV-59) [Heatblur Carrier Module]
-- @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 INVINCIBLE HMS Invincible (R05) [V/STOL Carrier]
-- @field #string TARAWA USS Tarawa (LHA-1) [V/STOL Carrier]
@ -1325,6 +1332,7 @@ AIRBOSS.CarrierType = {
STENNIS = "Stennis",
FORRESTAL = "Forrestal",
VINSON = "VINSON",
ESSEX = "Essex",
HERMES = "HERMES81",
INVINCIBLE = "hms_invincible",
TARAWA = "LHA_Tarawa",
@ -1747,7 +1755,7 @@ AIRBOSS.MenuF10Root = nil
--- Airboss class version.
-- @field #string version
AIRBOSS.version = "1.3.3"
AIRBOSS.version = "1.4.0"
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- TODO list
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@ -2013,6 +2021,8 @@ function AIRBOSS:New( carriername, alias )
elseif self.carriertype == AIRBOSS.CarrierType.VINSON then
-- Carl Vinson is legacy now.
self:_InitStennis()
elseif self.carriertype == AIRBOSS.CarrierType.ESSEX then
self:_InitEssex()
elseif self.carriertype == AIRBOSS.CarrierType.HERMES then
-- Hermes parameters.
self:_InitHermes()
@ -2866,23 +2876,28 @@ end
function AIRBOSS:SetGlideslopeErrorThresholds(_max,_min, High, HIGH, Low, LOW)
--Check if V/STOL Carrier
if self.carriertype == AIRBOSS.CarrierType.INVINCIBLE or self.carriertype == AIRBOSS.CarrierType.HERMES or self.carriertype == AIRBOSS.CarrierType.TARAWA or self.carriertype == AIRBOSS.CarrierType.AMERICA or self.carriertype == AIRBOSS.CarrierType.JCARLOS or self.carriertype == AIRBOSS.CarrierType.CANBERRA then
if self.carriertype == AIRBOSS.CarrierType.INVINCIBLE or
self.carriertype == AIRBOSS.CarrierType.HERMES or
self.carriertype == AIRBOSS.CarrierType.TARAWA or
self.carriertype == AIRBOSS.CarrierType.AMERICA or
self.carriertype == AIRBOSS.CarrierType.JCARLOS or
self.carriertype == AIRBOSS.CarrierType.CANBERRA then
-- allow a larger GSE for V/STOL operations --Pene Testing
self.gle._max=_max or 0.7
self.gle.High=High or 1.4
self.gle.HIGH=HIGH or 1.9
self.gle._min=_min or -0.5
self.gle.Low=Low or -1.2
self.gle.LOW=LOW or -1.5
-- CVN values
-- allow a larger GSE for V/STOL operations --Pene Testing
self.gle._max=_max or 0.7
self.gle.High=High or 1.4
self.gle.HIGH=HIGH or 1.9
self.gle._min=_min or -0.5
self.gle.Low=Low or -1.2
self.gle.LOW=LOW or -1.5
else
self.gle._max=_max or 0.4
self.gle.High=High or 0.8
self.gle.HIGH=HIGH or 1.5
self.gle._min=_min or -0.3
self.gle.Low=Low or -0.6
self.gle.LOW=LOW or -0.9
-- CVN values
self.gle._max=_max or 0.4
self.gle.High=High or 0.8
self.gle.HIGH=HIGH or 1.5
self.gle._min=_min or -0.3
self.gle.Low=Low or -0.6
self.gle.LOW=LOW or -0.9
end
return self
@ -4627,6 +4642,51 @@ function AIRBOSS:_InitForrestal()
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.
-- @param #AIRBOSS self
function AIRBOSS:_InitHermes()
@ -5329,7 +5389,8 @@ function AIRBOSS:_GetAircraftAoA( playerData )
local goshawk = playerData.actype == AIRBOSS.AircraftCarrier.T45C
local skyhawk = playerData.actype == AIRBOSS.AircraftCarrier.A4EC
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.
local aoa = {} -- #AIRBOSS.AircraftAoA
@ -5374,7 +5435,6 @@ function AIRBOSS:_GetAircraftAoA( playerData )
aoa.Fast = 8.25 -- =17.5/2
aoa.FAST = 8.00 -- =16.5/2
elseif harrier then
-- 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 = 13.5
@ -5383,7 +5443,15 @@ function AIRBOSS:_GetAircraftAoA( playerData )
aoa.OnSpeedMin = 9.5
aoa.Fast = 8.0
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
return aoa
@ -5496,6 +5564,7 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
local tomcat = playerData.actype == AIRBOSS.AircraftCarrier.F14A or playerData.actype == AIRBOSS.AircraftCarrier.F14B
local harrier = playerData.actype == AIRBOSS.AircraftCarrier.AV8B
local goshawk = playerData.actype == AIRBOSS.AircraftCarrier.T45C
local corsair = playerData.actype == AIRBOSS.AircraftCarrier.CORSAIR or playerData.actype == AIRBOSS.AircraftCarrier.CORSAIR_CW
-- Return values.
local alt
@ -5555,6 +5624,9 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
elseif goshawk then
alt = UTILS.FeetToMeters( 800 )
speed = UTILS.KnotsToMps( 300 )
elseif corsair then
alt = UTILS.FeetToMeters( 300 )
speed = UTILS.KnotsToMps( 120 )
end
elseif step == AIRBOSS.PatternStep.BREAKENTRY then
@ -5568,6 +5640,9 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
elseif goshawk then
alt = UTILS.FeetToMeters( 800 )
speed = UTILS.KnotsToMps( 300 )
elseif corsair then
alt = UTILS.FeetToMeters( 200 )
speed = UTILS.KnotsToMps( 110 )
end
elseif step == AIRBOSS.PatternStep.EARLYBREAK then
@ -5576,6 +5651,9 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
alt = UTILS.FeetToMeters( 800 )
elseif skyhawk then
alt = UTILS.FeetToMeters( 600 )
elseif corsair then
alt = UTILS.FeetToMeters( 200 )
speed = UTILS.KnotsToMps( 100 )
end
elseif step == AIRBOSS.PatternStep.LATEBREAK then
@ -5584,6 +5662,9 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
alt = UTILS.FeetToMeters( 800 )
elseif skyhawk then
alt = UTILS.FeetToMeters( 600 )
elseif corsair then
alt = UTILS.FeetToMeters( 150 )
speed = UTILS.KnotsToMps( 100 )
end
elseif step == AIRBOSS.PatternStep.ABEAM then
@ -5592,6 +5673,9 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
alt = UTILS.FeetToMeters( 600 )
elseif skyhawk then
alt = UTILS.FeetToMeters( 500 )
elseif corsair then
alt = UTILS.FeetToMeters( 150 )
speed = UTILS.KnotsToMps( 90 )
end
aoa = aoaac.OnSpeed
@ -5616,6 +5700,9 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
alt = UTILS.FeetToMeters( 500 )
elseif harrier then
alt = UTILS.FeetToMeters( 425 )
elseif corsair then
alt = UTILS.FeetToMeters( 90 )
speed = UTILS.KnotsToMps( 90 )
end
aoa = aoaac.OnSpeed
@ -5628,6 +5715,8 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
alt = UTILS.FeetToMeters( 430 ) -- Tomcat should be a bit higher as it intercepts the GS a bit higher.
elseif skyhawk then
alt = UTILS.FeetToMeters( 370 ) -- ?
elseif corsair then
alt = UTILS.FeetToMeters( 80 )
end
-- Harrier wont get into wake pos. Runway is not angled and it stays port.
@ -5643,6 +5732,8 @@ function AIRBOSS:_GetAircraftParameters( playerData, step )
alt = UTILS.FeetToMeters( 300 ) -- ?
elseif harrier then
alt=UTILS.FeetToMeters(312)-- 300-325 ft
elseif corsair then
alt = UTILS.FeetToMeters( 80 )
end
aoa = aoaac.OnSpeed
@ -6519,6 +6610,8 @@ function AIRBOSS:_LandAI( flight )
Speed = UTILS.KnotsToKmph( 175 )
elseif flight.actype == AIRBOSS.AircraftCarrier.S3B or flight.actype == AIRBOSS.AircraftCarrier.S3BTANKER then
Speed = UTILS.KnotsToKmph( 140 )
elseif flight.actype == AIRBOSS.AircraftCarrier.CORSAIR or flight.actype == AIRBOSS.AircraftCarrier.CORSAIR_CW then
Speed = UTILS.KnotsToKmph( 100 )
end
-- Carrier position.
@ -10314,6 +10407,9 @@ function AIRBOSS:_GetSternCoord()
elseif self.carriertype == AIRBOSS.CarrierType.FORRESTAL then
-- Forrestal
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
-- 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 )