diff --git a/Moose Development/Moose/Core/Database.lua b/Moose Development/Moose/Core/Database.lua index 85bde137c..2d985a021 100644 --- a/Moose Development/Moose/Core/Database.lua +++ b/Moose Development/Moose/Core/Database.lua @@ -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 diff --git a/Moose Development/Moose/Ops/Airboss.lua b/Moose Development/Moose/Ops/Airboss.lua index d6d7b03a7..1754ab219 100644 --- a/Moose Development/Moose/Ops/Airboss.lua +++ b/Moose Development/Moose/Ops/Airboss.lua @@ -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 )