diff --git a/Moose Development/Maths/Probability factor models for Detection.xlsx b/Moose Development/Maths/Probability factor models for Detection.xlsx new file mode 100644 index 000000000..300f24e1e Binary files /dev/null and b/Moose Development/Maths/Probability factor models for Detection.xlsx differ diff --git a/Moose Development/Moose/Core/Fsm.lua b/Moose Development/Moose/Core/Fsm.lua index 1da91cf84..6e7dd0f52 100644 --- a/Moose Development/Moose/Core/Fsm.lua +++ b/Moose Development/Moose/Core/Fsm.lua @@ -530,10 +530,20 @@ do -- FSM function FSM:_call_handler( handler, params, EventName ) + + local ErrorHandler = function( errmsg ) + + env.info( "Error in SCHEDULER function:" .. errmsg ) + if debug ~= nil then + env.info( debug.traceback() ) + end + + return errmsg + end if self[handler] then self:T( "Calling " .. handler ) self._EventSchedules[EventName] = nil - local Value = self[handler]( self, unpack(params) ) + local Result, Value = xpcall( function() return self[handler]( self, unpack( params ) ) end, ErrorHandler ) return Value end end diff --git a/Moose Development/Moose/Core/ScheduleDispatcher.lua b/Moose Development/Moose/Core/ScheduleDispatcher.lua index c831b7bf9..739e12737 100644 --- a/Moose Development/Moose/Core/ScheduleDispatcher.lua +++ b/Moose Development/Moose/Core/ScheduleDispatcher.lua @@ -181,11 +181,15 @@ function SCHEDULEDISPATCHER:Start( Scheduler, CallID ) if CallID then local Schedule = self.Schedule[Scheduler] - Schedule[CallID].ScheduleID = timer.scheduleFunction( - Schedule[CallID].CallHandler, - CallID, - timer.getTime() + Schedule[CallID].Start - ) + -- Only start when there is no ScheduleID defined! + -- This prevents to "Start" the scheduler twice with the same CallID... + if not Schedule[CallID].ScheduleID then + Schedule[CallID].ScheduleID = timer.scheduleFunction( + Schedule[CallID].CallHandler, + CallID, + timer.getTime() + Schedule[CallID].Start + ) + end else for CallID, Schedule in pairs( self.Schedule[Scheduler] ) do self:Start( Scheduler, CallID ) -- Recursive @@ -198,7 +202,12 @@ function SCHEDULEDISPATCHER:Stop( Scheduler, CallID ) if CallID then local Schedule = self.Schedule[Scheduler] - timer.removeFunction( Schedule[CallID].ScheduleID ) + -- Only stop when there is a ScheduleID defined for the CallID. + -- So, when the scheduler was stopped before, do nothing. + if Schedule[CallID].ScheduleID then + timer.removeFunction( Schedule[CallID].ScheduleID ) + Schedule[CallID].ScheduleID = nil + end else for CallID, Schedule in pairs( self.Schedule[Scheduler] ) do self:Stop( Scheduler, CallID ) -- Recursive diff --git a/Moose Development/Moose/Core/Set.lua b/Moose Development/Moose/Core/Set.lua index a069e6138..89dfb023b 100644 --- a/Moose Development/Moose/Core/Set.lua +++ b/Moose Development/Moose/Core/Set.lua @@ -384,6 +384,29 @@ function SET_BASE:Get( ObjectName ) end +--- Gets the first object from the @{Set#SET_BASE} and derived classes. +-- @param #SET_BASE self +-- @return Core.Base#BASE +function SET_BASE:GetFirst() + self:F() + + local t = self.List.first._ + self:T3( { t } ) + return t +end + +--- Gets the last object from the @{Set#SET_BASE} and derived classes. +-- @param #SET_BASE self +-- @return Core.Base#BASE +function SET_BASE:GetLast() + self:F() + + local t = self.List.last._ + self:T3( { t } ) + return t +end + + --- Retrieves the amount of objects in the @{Set#SET_BASE} and derived classes. -- @param #SET_BASE self -- @return #number Count @@ -652,7 +675,8 @@ function SET_BASE:ForEach( IteratorFunction, arg, Set, Function, FunctionArgumen return false end - self.CallScheduler:Schedule( self, Schedule, {}, self.TimeInterval, self.TimeInterval, 0 ) + --self.CallScheduler:Schedule( self, Schedule, {}, self.TimeInterval, self.TimeInterval, 0 ) + Schedule() return self end @@ -725,7 +749,7 @@ end --- SET_GROUP class -- @type SET_GROUP --- @extends #SET_BASE +-- @extends Core.Set#SET_BASE SET_GROUP = { ClassName = "SET_GROUP", Filter = { diff --git a/Moose Development/Moose/Core/Zone.lua b/Moose Development/Moose/Core/Zone.lua index d096962aa..e9eef3e1b 100644 --- a/Moose Development/Moose/Core/Zone.lua +++ b/Moose Development/Moose/Core/Zone.lua @@ -212,6 +212,60 @@ function ZONE_BASE:GetVec2() return nil end + +--- Returns a @{Point#POINT_VEC2} of the zone. +-- @param #ZONE_BASE self +-- @param Dcs.DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. +-- @return Core.Point#POINT_VEC2 The PointVec2 of the zone. +function ZONE_BASE:GetPointVec2() + self:F2( self.ZoneName ) + + local Vec2 = self:GetVec2() + + local PointVec2 = POINT_VEC2:NewFromVec2( Vec2 ) + + self:T2( { PointVec2 } ) + + return PointVec2 +end + + +--- Returns the @{DCSTypes#Vec3} of the zone. +-- @param #ZONE_BASE self +-- @param Dcs.DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. +-- @return Dcs.DCSTypes#Vec3 The Vec3 of the zone. +function ZONE_BASE:GetVec3( Height ) + self:F2( self.ZoneName ) + + Height = Height or 0 + + local Vec2 = self:GetVec2() + + local Vec3 = { x = Vec2.x, y = land.getHeight( self:GetVec2() ) + Height, z = Vec2.y } + + self:T2( { Vec3 } ) + + return Vec3 +end + +--- Returns a @{Point#POINT_VEC3} of the zone. +-- @param #ZONE_BASE self +-- @param Dcs.DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. +-- @return Core.Point#POINT_VEC3 The PointVec3 of the zone. +function ZONE_BASE:GetPointVec3( Height ) + self:F2( self.ZoneName ) + + local Vec3 = self:GetVec3( Height ) + + local PointVec3 = POINT_VEC3:NewFromVec3( Vec3 ) + + self:T2( { PointVec3 } ) + + return PointVec3 +end + + + --- Define a random @{DCSTypes#Vec2} within the zone. -- @param #ZONE_BASE self -- @return Dcs.DCSTypes#Vec2 The Vec2 coordinates. diff --git a/Moose Development/Moose/Functional/Detection.lua b/Moose Development/Moose/Functional/Detection.lua index e458e8cb5..75ea9c577 100644 --- a/Moose Development/Moose/Functional/Detection.lua +++ b/Moose Development/Moose/Functional/Detection.lua @@ -2,17 +2,18 @@ -- -- === -- --- 1) @{Detection#DETECTION_BASE} class, extends @{Base#BASE} --- ========================================================== --- The @{Detection#DETECTION_BASE} class defines the core functions to administer detected objects. --- The @{Detection#DETECTION_BASE} class will detect objects within the battle zone for a list of @{Group}s detecting targets following (a) detection method(s). -- --- 1.1) DETECTION_BASE constructor --- ------------------------------- --- Construct a new DETECTION_BASE instance using the @{Detection#DETECTION_BASE.New}() method. +-- # 1) @{#DETECTION_BASE} class, extends @{Fsm#FSM} +-- +-- The @{#DETECTION_BASE} class defines the core functions to administer detected objects. +-- The @{#DETECTION_BASE} class will detect objects within the battle zone for a list of @{Group}s detecting targets following (a) detection method(s). +-- +-- ## 1.1) DETECTION_BASE constructor +-- +-- Construct a new DETECTION_BASE instance using the @{#DETECTION_BASE.New}() method. +-- +-- ## 1.2) DETECTION_BASE initialization -- --- 1.2) DETECTION_BASE initialization --- ---------------------------------- -- By default, detection will return detected objects with all the detection sensors available. -- However, you can ask how the objects were found with specific detection methods. -- If you use one of the below methods, the detection will work with the detection method specified. @@ -20,966 +21,1881 @@ -- -- Use the following functions to report the objects it detected using the methods Visual, Optical, Radar, IRST, RWR, DLINK: -- --- * @{Detection#DETECTION_BASE.InitDetectVisual}(): Detected using Visual. --- * @{Detection#DETECTION_BASE.InitDetectOptical}(): Detected using Optical. --- * @{Detection#DETECTION_BASE.InitDetectRadar}(): Detected using Radar. --- * @{Detection#DETECTION_BASE.InitDetectIRST}(): Detected using IRST. --- * @{Detection#DETECTION_BASE.InitDetectRWR}(): Detected using RWR. --- * @{Detection#DETECTION_BASE.InitDetectDLINK}(): Detected using DLINK. +-- * @{#DETECTION_BASE.InitDetectVisual}(): Detected using Visual. +-- * @{#DETECTION_BASE.InitDetectOptical}(): Detected using Optical. +-- * @{#DETECTION_BASE.InitDetectRadar}(): Detected using Radar. +-- * @{#DETECTION_BASE.InitDetectIRST}(): Detected using IRST. +-- * @{#DETECTION_BASE.InitDetectRWR}(): Detected using RWR. +-- * @{#DETECTION_BASE.InitDetectDLINK}(): Detected using DLINK. -- --- 1.3) Obtain objects detected by DETECTION_BASE --- ---------------------------------------------- --- DETECTION_BASE builds @{Set}s of objects detected. These @{Set#SET_BASE}s can be retrieved using the method @{Detection#DETECTION_BASE.GetDetectedSets}(). --- The method will return a list (table) of @{Set#SET_BASE} objects. +-- ## 1.3) DETECTION_BASE derived classes group the detected units into a DetectedItems[] list +-- +-- DETECTION_BASE derived classes build a list called DetectedItems[], which is essentially a first later +-- of grouping of detected units. Each DetectedItem within the DetectedItems[] list contains +-- a SET_UNIT object that contains the detected units that belong to that group. +-- +-- Derived classes will apply different methods to group the detected units. +-- Examples are per area, per quadrant, per distance, per type. +-- See further the derived DETECTION classes on which grouping methods are currently supported. +-- +-- Various methods exist how to retrieve the grouped items from a DETECTION_BASE derived class: +-- +-- * The method @{Detection#DETECTION_BASE.GetDetectedItems}() retrieves the DetectedItems[] list. +-- * A DetectedItem from the DetectedItems[] list can be retrieved using the method @{Detection#DETECTION_BASE.GetDetectedItem}( DetectedItemIndex ). +-- Note that this method returns a DetectedItem element from the list, that contains a Set variable and further information +-- about the DetectedItem that is set by the DETECTION_BASE derived classes, used to group the DetectedItem. +-- * A DetectedSet from the DetectedItems[] list can be retrieved using the method @{Detection#DETECTION_BASE.GetDetectedSet}( DetectedItemIndex ). +-- This method retrieves the Set from a DetectedItem element from the DetectedItem list (DetectedItems[ DetectedItemIndex ].Set ). +-- +-- ## 1.4) Apply additional Filters to fine-tune the detected objects +-- +-- By default, DCS World will return any object that is in LOS and within "visual reach", or detectable through one of the electronic detection means. +-- That being said, the DCS World detection algorithm can sometimes be unrealistic. +-- Especially for a visual detection, DCS World is able to report within 1 second a detailed detection of a group of 20 units (including types of the units) that are 10 kilometers away, using only visual capabilities. +-- Additionally, trees and other obstacles are not accounted during the DCS World detection. +-- +-- Therefore, an additional (optional) filtering has been built into the DETECTION_BASE class, that can be set for visual detected units. +-- For electronic detection, this filtering is not applied, only for visually detected targets. +-- +-- The following additional filtering can be applied for visual filtering: +-- +-- * A probability factor per kilometer distance. +-- * A probability factor based on the alpha angle between the detected object and the unit detecting. +-- A detection from a higher altitude allows for better detection than when on the ground. +-- * Define a probability factor for "cloudy zones", which are zones where forests or villages are located. In these zones, detection will be much more difficult. +-- The mission designer needs to define these cloudy zones within the mission, and needs to register these zones in the DETECTION_ objects additing a probability factor per zone. +-- +-- I advise however, that, when you first use the DETECTION derived classes, that you don't use these filters. +-- Only when you experience unrealistic behaviour in your missions, these filters could be applied. +-- +-- ### 1.4.1 ) Distance visual detection probability +-- +-- Upon a **visual** detection, the further away a detected object is, the less likely it is to be detected properly. +-- Also, the speed of accurate detection plays a role. +-- +-- A distance probability factor between 0 and 1 can be given, that will model a linear extrapolated probability over 10 km distance. +-- +-- For example, if a probability factor of 0.6 (60%) is given, the extrapolated probabilities over 15 kilometers would like like: +-- 1 km: 96%, 2 km: 92%, 3 km: 88%, 4 km: 84%, 5 km: 80%, 6 km: 76%, 7 km: 72%, 8 km: 68%, 9 km: 64%, 10 km: 60%, 11 km: 56%, 12 km: 52%, 13 km: 48%, 14 km: 44%, 15 km: 40%. +-- +-- Note that based on this probability factor, not only the detection but also the **type** of the unit will be applied! +-- +-- Use the method @{Detection#DETECTION_BASE.SetDistanceProbability}() to set the probability factor upon a 10 km distance. +-- +-- ### 1.4.2 ) Alpha Angle visual detection probability +-- +-- Upon a **visual** detection, the higher the unit is during the detecting process, the more likely the detected unit is to be detected properly. +-- A detection at a 90% alpha angle is the most optimal, a detection at 10% is less and a detection at 0% is less likely to be correct. +-- +-- A probability factor between 0 and 1 can be given, that will model a progressive extrapolated probability if the target would be detected at a 0° angle. +-- +-- For example, if a alpha angle probability factor of 0.7 is given, the extrapolated probabilities of the different angles would look like: +-- 0°: 70%, 10°: 75,21%, 20°: 80,26%, 30°: 85%, 40°: 89,28%, 50°: 92,98%, 60°: 95,98%, 70°: 98,19%, 80°: 99,54%, 90°: 100% +-- +-- Use the method @{Detection#DETECTION_BASE.SetAlphaAngleProbability}() to set the probability factor if 0°. +-- +-- ### 1.4.3 ) Cloudy Zones detection probability +-- +-- Upon a **visual** detection, the more a detected unit is within a cloudy zone, the less likely the detected unit is to be detected successfully. +-- The Cloudy Zones work with the ZONE_BASE derived classes. The mission designer can define within the mission +-- zones that reflect cloudy areas where detected units may not be so easily visually detected. +-- +-- Use the method @{Detection#DETECTION_BASE.SetZoneProbability}() to set for a defined number of zones, the probability factors. +-- +-- Note however, that the more zones are defined to be "cloudy" within a detection, the more performance it will take +-- from the DETECTION_BASE to calculate the presence of the detected unit within each zone. +-- Expecially for ZONE_POLYGON, try to limit the amount of nodes of the polygon! +-- +-- Typically, this kind of filter would be applied for very specific areas were a detection needs to be very realisting for +-- AI not to detect so easily targets within a forrest or village rich area. +-- +-- ## 1.5 ) Accept / Reject detected units +-- +-- DETECTION_BASE can accept or reject successful detections based on the location of the detected object, +-- if it is located in range or located inside or outside of specific zones. +-- +-- ### 1.5.1 ) Detection acceptance of within range limit +-- +-- A range can be set that will limit a successful detection for a unit. +-- Use the method @{Detection#DETECTION_BASE.SetAcceptRange}() to apply a range in meters till where detected units will be accepted. +-- +-- local SetGroup = SET_GROUP:New():FilterPrefixes( "FAC" ):FilterStart() -- Build a SetGroup of Forward Air Controllers. +-- +-- -- Build a detect object. +-- local Detection = DETECTION_BASE:New( SetGroup ) +-- +-- -- This will accept detected units if the range is below 5000 meters. +-- Detection:SetAcceptRange( 5000 ) +-- +-- -- Start the Detection. +-- Detection:Start() +-- +-- +-- ### 1.5.2 ) Detection acceptance if within zone(s). +-- +-- Specific ZONE_BASE object(s) can be given as a parameter, which will only accept a detection if the unit is within the specified ZONE_BASE object(s). +-- Use the method @{Detection#DETECTION_BASE.SetAcceptZones}() will accept detected units if they are within the specified zones. +-- +-- local SetGroup = SET_GROUP:New():FilterPrefixes( "FAC" ):FilterStart() -- Build a SetGroup of Forward Air Controllers. +-- +-- -- Search fo the zones where units are to be accepted. +-- local ZoneAccept1 = ZONE:New( "AcceptZone1" ) +-- local ZoneAccept2 = ZONE:New( "AcceptZone2" ) +-- +-- -- Build a detect object. +-- local Detection = DETECTION_BASE:New( SetGroup ) +-- +-- -- This will accept detected units by Detection when the unit is within ZoneAccept1 OR ZoneAccept2. +-- Detection:SetAcceptZones( { ZoneAccept1, ZoneAccept2 } ) +-- +-- -- Start the Detection. +-- Detection:Start() +-- +-- ### 1.5.3 ) Detection rejectance if within zone(s). +-- +-- Specific ZONE_BASE object(s) can be given as a parameter, which will reject detection if the unit is within the specified ZONE_BASE object(s). +-- Use the method @{Detection#DETECTION_BASE.SetRejectZones}() will reject detected units if they are within the specified zones. +-- An example of how to use the method is shown below. +-- +-- local SetGroup = SET_GROUP:New():FilterPrefixes( "FAC" ):FilterStart() -- Build a SetGroup of Forward Air Controllers. +-- +-- -- Search fo the zones where units are to be rejected. +-- local ZoneReject1 = ZONE:New( "RejectZone1" ) +-- local ZoneReject2 = ZONE:New( "RejectZone2" ) +-- +-- -- Build a detect object. +-- local Detection = DETECTION_BASE:New( SetGroup ) +-- +-- -- This will reject detected units by Detection when the unit is within ZoneReject1 OR ZoneReject2. +-- Detection:SetRejectZones( { ZoneReject1, ZoneReject2 } ) +-- +-- -- Start the Detection. +-- Detection:Start() +-- +-- ## 1.6) DETECTION_BASE is a Finite State Machine +-- +-- Various Events and State Transitions can be tailored using DETECTION_BASE. +-- +-- ### 1.6.1) DETECTION_BASE States +-- +-- * **Detecting**: The detection is running. +-- * **Stopped**: The detection is stopped. +-- +-- ### 1.6.2) DETECTION_BASE Events +-- +-- * **Start**: Start the detection process. +-- * **Detect**: Detect new units. +-- * **Detected**: New units have been detected. +-- * **Stop**: Stop the detection process. -- -- === -- --- 2) @{Detection#DETECTION_AREAS} class, extends @{Detection#DETECTION_BASE} --- =============================================================================== +-- # 2) @{Detection#DETECTION_UNITS} class, extends @{Detection#DETECTION_BASE} +-- +-- The @{Detection#DETECTION_UNITS} class will detect units within the battle zone. +-- It will build a DetectedItems list filled with DetectedItems. Each DetectedItem will contain a field Set, which contains a @{Set#SET_UNIT} containing ONE @{UNIT} object reference. +-- Beware that when the amount of units detected is large, the DetectedItems list will be large also. +-- +-- # 3) @{Detection#DETECTION_TYPES} class, extends @{Detection#DETECTION_BASE} +-- +-- The @{Detection#DETECTION_TYPES} class will detect units within the battle zone. +-- It will build a DetectedItems[] list filled with DetectedItems, grouped by the type of units detected. +-- Each DetectedItem will contain a field Set, which contains a @{Set#SET_UNIT} containing ONE @{UNIT} object reference. +-- Beware that when the amount of different types detected is large, the DetectedItems[] list will be large also. +-- +-- # 4) @{Detection#DETECTION_AREAS} class, extends @{Detection#DETECTION_BASE} +-- -- The @{Detection#DETECTION_AREAS} class will detect units within the battle zone for a list of @{Group}s detecting targets following (a) detection method(s), -- and will build a list (table) of @{Set#SET_UNIT}s containing the @{Unit#UNIT}s detected. -- The class is group the detected units within zones given a DetectedZoneRange parameter. -- A set with multiple detected zones will be created as there are groups of units detected. -- --- 2.1) Retrieve the Detected Unit sets and Detected Zones --- ------------------------------------------------------- --- The DetectedUnitSets methods are implemented in @{Detection#DECTECTION_BASE} and the DetectedZones methods is implemented in @{Detection#DETECTION_AREAS}. +-- ## 4.1) Retrieve the Detected Unit Sets and Detected Zones -- --- Retrieve the DetectedUnitSets with the method @{Detection#DETECTION_BASE.GetDetectedSets}(). A table will be return of @{Set#SET_UNIT}s. --- To understand the amount of sets created, use the method @{Detection#DETECTION_BASE.GetDetectedSetCount}(). --- If you want to obtain a specific set from the DetectedSets, use the method @{Detection#DETECTION_BASE.GetDetectedSet}() with a given index. +-- The methods to manage the DetectedItems[].Set(s) are implemented in @{Detection#DECTECTION_BASE} and +-- the methods to manage the DetectedItems[].Zone(s) is implemented in @{Detection#DETECTION_AREAS}. +-- +-- Retrieve the DetectedItems[].Set with the method @{Detection#DETECTION_BASE.GetDetectedSet}(). A @{Set#SET_UNIT} object will be returned. -- -- Retrieve the formed @{Zone@ZONE_UNIT}s as a result of the grouping the detected units within the DetectionZoneRange, use the method @{Detection#DETECTION_BASE.GetDetectionZones}(). -- To understand the amount of zones created, use the method @{Detection#DETECTION_BASE.GetDetectionZoneCount}(). -- If you want to obtain a specific zone from the DetectedZones, use the method @{Detection#DETECTION_BASE.GetDetectionZone}() with a given index. -- --- 1.4) Flare or Smoke detected units --- ---------------------------------- +-- ## 4.4) Flare or Smoke detected units +-- -- Use the methods @{Detection#DETECTION_AREAS.FlareDetectedUnits}() or @{Detection#DETECTION_AREAS.SmokeDetectedUnits}() to flare or smoke the detected units when a new detection has taken place. -- --- 1.5) Flare or Smoke detected zones --- ---------------------------------- +-- ## 4.5) Flare or Smoke detected zones +-- -- Use the methods @{Detection#DETECTION_AREAS.FlareDetectedZones}() or @{Detection#DETECTION_AREAS.SmokeDetectedZones}() to flare or smoke the detected zones when a new detection has taken place. -- -- === -- -- ### Contributions: -- --- * Mechanist : Concept & Testing +-- * Mechanist : Early concept of DETECTION_AREAS. -- -- ### Authors: -- --- * FlightControl : Design & Programming +-- * FlightControl : Analysis, Design, Programming, Testing -- -- @module Detection +do -- DETECTION_BASE ---- DETECTION_BASE class --- @type DETECTION_BASE --- @field Core.Set#SET_GROUP DetectionSetGroup The @{Set} of GROUPs in the Forward Air Controller role. --- @field Dcs.DCSTypes#Distance DetectionRange The range till which targets are accepted to be detected. --- @field #DETECTION_BASE.DetectedObjects DetectedObjects The list of detected objects. --- @field #table DetectedObjectsIdentified Map of the DetectedObjects identified. --- @field #number DetectionRun --- @extends Core.Base#BASE -DETECTION_BASE = { - ClassName = "DETECTION_BASE", - DetectionSetGroup = nil, - DetectionRange = nil, - DetectedObjects = {}, - DetectionRun = 0, - DetectedObjectsIdentified = {}, -} - ---- @type DETECTION_BASE.DetectedObjects --- @list <#DETECTION_BASE.DetectedObject> - ---- @type DETECTION_BASE.DetectedObject --- @field #string Name --- @field #boolean Visible --- @field #string Type --- @field #number Distance --- @field #boolean Identified - ---- DETECTION constructor. --- @param #DETECTION_BASE self --- @param Core.Set#SET_GROUP DetectionSetGroup The @{Set} of GROUPs in the Forward Air Controller role. --- @param Dcs.DCSTypes#Distance DetectionRange The range till which targets are accepted to be detected. --- @return #DETECTION_BASE self -function DETECTION_BASE:New( DetectionSetGroup, DetectionRange ) - - -- Inherits from BASE - local self = BASE:Inherit( self, BASE:New() ) + --- DETECTION_BASE class + -- @type DETECTION_BASE + -- @field Core.Set#SET_GROUP DetectionSetGroup The @{Set} of GROUPs in the Forward Air Controller role. + -- @field Dcs.DCSTypes#Distance DetectionRange The range till which targets are accepted to be detected. + -- @field #DETECTION_BASE.DetectedObjects DetectedObjects The list of detected objects. + -- @field #table DetectedObjectsIdentified Map of the DetectedObjects identified. + -- @field #number DetectionRun + -- @extends Core.Fsm#FSM + DETECTION_BASE = { + ClassName = "DETECTION_BASE", + DetectionSetGroup = nil, + DetectionRange = nil, + DetectedObjects = {}, + DetectionRun = 0, + DetectedObjectsIdentified = {}, + DetectedItems = {}, + } - self.DetectionSetGroup = DetectionSetGroup - self.DetectionRange = DetectionRange + --- @type DETECTION_BASE.DetectedObjects + -- @list <#DETECTION_BASE.DetectedObject> - self:InitDetectVisual( false ) - self:InitDetectOptical( false ) - self:InitDetectRadar( false ) - self:InitDetectRWR( false ) - self:InitDetectIRST( false ) - self:InitDetectDLINK( false ) + --- @type DETECTION_BASE.DetectedObject + -- @field #string Name + -- @field #boolean Visible + -- @field #string Type + -- @field #number Distance + -- @field #boolean Identified - return self -end - ---- Detect Visual. --- @param #DETECTION_BASE self --- @param #boolean DetectVisual --- @return #DETECTION_BASE self -function DETECTION_BASE:InitDetectVisual( DetectVisual ) - - self.DetectVisual = DetectVisual -end - ---- Detect Optical. --- @param #DETECTION_BASE self --- @param #boolean DetectOptical --- @return #DETECTION_BASE self -function DETECTION_BASE:InitDetectOptical( DetectOptical ) - self:F2() - - self.DetectOptical = DetectOptical -end - ---- Detect Radar. --- @param #DETECTION_BASE self --- @param #boolean DetectRadar --- @return #DETECTION_BASE self -function DETECTION_BASE:InitDetectRadar( DetectRadar ) - self:F2() - - self.DetectRadar = DetectRadar -end - ---- Detect IRST. --- @param #DETECTION_BASE self --- @param #boolean DetectIRST --- @return #DETECTION_BASE self -function DETECTION_BASE:InitDetectIRST( DetectIRST ) - self:F2() - - self.DetectIRST = DetectIRST -end - ---- Detect RWR. --- @param #DETECTION_BASE self --- @param #boolean DetectRWR --- @return #DETECTION_BASE self -function DETECTION_BASE:InitDetectRWR( DetectRWR ) - self:F2() - - self.DetectRWR = DetectRWR -end - ---- Detect DLINK. --- @param #DETECTION_BASE self --- @param #boolean DetectDLINK --- @return #DETECTION_BASE self -function DETECTION_BASE:InitDetectDLINK( DetectDLINK ) - self:F2() - - self.DetectDLINK = DetectDLINK -end - ---- Determines if a detected object has already been identified during detection processing. --- @param #DETECTION_BASE self --- @param #DETECTION_BASE.DetectedObject DetectedObject --- @return #boolean true if already identified. -function DETECTION_BASE:IsDetectedObjectIdentified( DetectedObject ) - self:F3( DetectedObject.Name ) - - local DetectedObjectName = DetectedObject.Name - local DetectedObjectIdentified = self.DetectedObjectsIdentified[DetectedObjectName] == true - self:T3( DetectedObjectIdentified ) - return DetectedObjectIdentified -end - ---- Identifies a detected object during detection processing. --- @param #DETECTION_BASE self --- @param #DETECTION_BASE.DetectedObject DetectedObject -function DETECTION_BASE:IdentifyDetectedObject( DetectedObject ) - self:F( DetectedObject.Name ) - - local DetectedObjectName = DetectedObject.Name - self.DetectedObjectsIdentified[DetectedObjectName] = true -end - ---- UnIdentify a detected object during detection processing. --- @param #DETECTION_BASE self --- @param #DETECTION_BASE.DetectedObject DetectedObject -function DETECTION_BASE:UnIdentifyDetectedObject( DetectedObject ) - - local DetectedObjectName = DetectedObject.Name - self.DetectedObjectsIdentified[DetectedObjectName] = false -end - ---- UnIdentify all detected objects during detection processing. --- @param #DETECTION_BASE self -function DETECTION_BASE:UnIdentifyAllDetectedObjects() - - self.DetectedObjectsIdentified = {} -- Table will be garbage collected. -end - ---- Gets a detected object with a given name. --- @param #DETECTION_BASE self --- @param #string ObjectName --- @return #DETECTION_BASE.DetectedObject -function DETECTION_BASE:GetDetectedObject( ObjectName ) - self:F3( ObjectName ) + --- @type DETECTION_BASE.DetectedItems + -- @list <#DETECTION_BASE.DetectedItem> - if ObjectName then - local DetectedObject = self.DetectedObjects[ObjectName] + --- @type DETECTION_BASE.DetectedItem + -- @field Core.Set#SET_UNIT Set + + + --- DETECTION constructor. + -- @param #DETECTION_BASE self + -- @param Core.Set#SET_GROUP DetectionSetGroup The @{Set} of GROUPs in the Forward Air Controller role. + -- @return #DETECTION_BASE self + function DETECTION_BASE:New( DetectionSetGroup ) + + -- Inherits from BASE + local self = BASE:Inherit( self, FSM:New() ) -- #DETECTION_BASE + + self.DetectionSetGroup = DetectionSetGroup + + self.DetectionInterval = 30 + + self:InitDetectVisual( true ) + self:InitDetectOptical( false ) + self:InitDetectRadar( false ) + self:InitDetectRWR( false ) + self:InitDetectIRST( false ) + self:InitDetectDLINK( false ) + + -- Create FSM transitions. + + self:SetStartState( "Stopped" ) + + self:AddTransition( "Stopped", "Start", "Detecting") + + --- OnLeave Transition Handler for State Stopped. + -- @function [parent=#DETECTION_BASE] OnLeaveStopped + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter Transition Handler for State Stopped. + -- @function [parent=#DETECTION_BASE] OnEnterStopped + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- OnBefore Transition Handler for Event Start. + -- @function [parent=#DETECTION_BASE] OnBeforeStart + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter Transition Handler for Event Start. + -- @function [parent=#DETECTION_BASE] OnAfterStart + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Synchronous Event Trigger for Event Start. + -- @function [parent=#DETECTION_BASE] Start + -- @param #DETECTION_BASE self + + --- Asynchronous Event Trigger for Event Start. + -- @function [parent=#DETECTION_BASE] __Start + -- @param #DETECTION_BASE self + -- @param #number Delay The delay in seconds. + + --- OnLeave Transition Handler for State Detecting. + -- @function [parent=#DETECTION_BASE] OnLeaveDetecting + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter Transition Handler for State Detecting. + -- @function [parent=#DETECTION_BASE] OnEnterDetecting + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + self:AddTransition( "Detecting", "Detect", "Detecting" ) + self:AddTransition( "Detecting", "DetectionGroup", "Detecting" ) + + --- OnBefore Transition Handler for Event Detect. + -- @function [parent=#DETECTION_BASE] OnBeforeDetect + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter Transition Handler for Event Detect. + -- @function [parent=#DETECTION_BASE] OnAfterDetect + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Synchronous Event Trigger for Event Detect. + -- @function [parent=#DETECTION_BASE] Detect + -- @param #DETECTION_BASE self + + --- Asynchronous Event Trigger for Event Detect. + -- @function [parent=#DETECTION_BASE] __Detect + -- @param #DETECTION_BASE self + -- @param #number Delay The delay in seconds. + + + self:AddTransition( "Detecting", "Detected", "Detecting" ) + + --- OnBefore Transition Handler for Event Detected. + -- @function [parent=#DETECTION_BASE] OnBeforeDetected + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter Transition Handler for Event Detected. + -- @function [parent=#DETECTION_BASE] OnAfterDetected + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Synchronous Event Trigger for Event Detected. + -- @function [parent=#DETECTION_BASE] Detected + -- @param #DETECTION_BASE self + + --- Asynchronous Event Trigger for Event Detected. + -- @function [parent=#DETECTION_BASE] __Detected + -- @param #DETECTION_BASE self + -- @param #number Delay The delay in seconds. + + + self:AddTransition( "*", "Stop", "Stopped" ) + + --- OnBefore Transition Handler for Event Stop. + -- @function [parent=#DETECTION_BASE] OnBeforeStop + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnAfter Transition Handler for Event Stop. + -- @function [parent=#DETECTION_BASE] OnAfterStop + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + --- Synchronous Event Trigger for Event Stop. + -- @function [parent=#DETECTION_BASE] Stop + -- @param #DETECTION_BASE self + + --- Asynchronous Event Trigger for Event Stop. + -- @function [parent=#DETECTION_BASE] __Stop + -- @param #DETECTION_BASE self + -- @param #number Delay The delay in seconds. + + --- OnLeave Transition Handler for State Stopped. + -- @function [parent=#DETECTION_BASE] OnLeaveStopped + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @return #boolean Return false to cancel Transition. + + --- OnEnter Transition Handler for State Stopped. + -- @function [parent=#DETECTION_BASE] OnEnterStopped + -- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + + return self + end + + do -- State Transition Handling + + --- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + function DETECTION_BASE:onafterStart(From,Event,To) + self:__Detect(0.1) + end - -- Only return detected objects that are alive! - local DetectedUnit = UNIT:FindByName( ObjectName ) - if DetectedUnit and DetectedUnit:IsAlive() then - if self:IsDetectedObjectIdentified( DetectedObject ) == false then - return DetectedObject + --- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + function DETECTION_BASE:onafterDetect(From,Event,To) + self:F( {From,Event,To}) + + local DetectDelay = 0.01 + self.DetectionCount = 0 + self.DetectionRun = 0 + self:UnIdentifyAllDetectedObjects() -- Resets the DetectedObjectsIdentified table + + for DetectionGroupID, DetectionGroupData in pairs( self.DetectionSetGroup:GetSet() ) do + self:__DetectionGroup( DetectDelay, DetectionGroupData ) -- Process each detection asynchronously. + self.DetectionCount = self.DetectionCount + 1 end end - end + + --- @param #DETECTION_BASE self + -- @param #string From The From State string. + -- @param #string Event The Event string. + -- @param #string To The To State string. + -- @param Wrapper.Group#GROUP DetectionGroup + function DETECTION_BASE:onafterDetectionGroup( From, Event, To, DetectionGroup ) + self:F( {From,Event,To}) - return nil -end - ---- Get the detected @{Set#SET_BASE}s. --- @param #DETECTION_BASE self --- @return #DETECTION_BASE.DetectedSets DetectedSets -function DETECTION_BASE:GetDetectedSets() - - local DetectionSets = self.DetectedSets - return DetectionSets -end - ---- Get the amount of SETs with detected objects. --- @param #DETECTION_BASE self --- @return #number Count -function DETECTION_BASE:GetDetectedSetCount() - - local DetectionSetCount = #self.DetectedSets - return DetectionSetCount -end - ---- Get a SET of detected objects using a given numeric index. --- @param #DETECTION_BASE self --- @param #number Index --- @return Core.Set#SET_BASE -function DETECTION_BASE:GetDetectedSet( Index ) - - local DetectionSet = self.DetectedSets[Index] - if DetectionSet then - return DetectionSet - end - - return nil -end - ---- Get the detection Groups. --- @param #DETECTION_BASE self --- @return Wrapper.Group#GROUP -function DETECTION_BASE:GetDetectionSetGroup() - - local DetectionSetGroup = self.DetectionSetGroup - return DetectionSetGroup -end - ---- Make a DetectionSet table. This function will be overridden in the derived clsses. --- @param #DETECTION_BASE self --- @return #DETECTION_BASE self -function DETECTION_BASE:CreateDetectionSets() - self:F2() - - self:E( "Error, in DETECTION_BASE class..." ) - -end - - ---- Schedule the DETECTION construction. --- @param #DETECTION_BASE self --- @param #number DelayTime The delay in seconds to wait the reporting. --- @param #number RepeatInterval The repeat interval in seconds for the reporting to happen repeatedly. --- @return #DETECTION_BASE self -function DETECTION_BASE:Schedule( DelayTime, RepeatInterval ) - self:F2() - - self.ScheduleDelayTime = DelayTime - self.ScheduleRepeatInterval = RepeatInterval - - self.DetectionScheduler = SCHEDULER:New( self, self._DetectionScheduler, { self, "Detection" }, DelayTime, RepeatInterval ) - return self -end - - ---- Form @{Set}s of detected @{Unit#UNIT}s in an array of @{Set#SET_BASE}s. --- @param #DETECTION_BASE self -function DETECTION_BASE:_DetectionScheduler( SchedulerName ) - self:F2( { SchedulerName } ) - - self.DetectionRun = self.DetectionRun + 1 - - self:UnIdentifyAllDetectedObjects() -- Resets the DetectedObjectsIdentified table - - for DetectionGroupID, DetectionGroupData in pairs( self.DetectionSetGroup:GetSet() ) do - local DetectionGroup = DetectionGroupData -- Wrapper.Group#GROUP - - if DetectionGroup:IsAlive() then - - local DetectionGroupName = DetectionGroup:GetName() + self:__Detect( self.DetectionInterval ) - local DetectionDetectedTargets = DetectionGroup:GetDetectedTargets( - self.DetectVisual, - self.DetectOptical, - self.DetectRadar, - self.DetectIRST, - self.DetectRWR, - self.DetectDLINK - ) + self.DetectionRun = self.DetectionRun + 1 - for DetectionDetectedTargetID, DetectionDetectedTarget in pairs( DetectionDetectedTargets ) do - local DetectionObject = DetectionDetectedTarget.object -- Dcs.DCSWrapper.Object#Object - self:T2( DetectionObject ) + self:UnIdentifyAllDetectedObjects() -- Resets the DetectedObjectsIdentified table + + local HasDetectedObjects = false + + if DetectionGroup:IsAlive() then + + local DetectionGroupName = DetectionGroup:GetName() - if DetectionObject and DetectionObject:isExist() and DetectionObject.id_ < 50000000 then - - local DetectionDetectedObjectName = DetectionObject:getName() - - local DetectionDetectedObjectPositionVec3 = DetectionObject:getPoint() - local DetectionGroupVec3 = DetectionGroup:GetVec3() - - local Distance = ( ( DetectionDetectedObjectPositionVec3.x - DetectionGroupVec3.x )^2 + - ( DetectionDetectedObjectPositionVec3.y - DetectionGroupVec3.y )^2 + - ( DetectionDetectedObjectPositionVec3.z - DetectionGroupVec3.z )^2 - ) ^ 0.5 / 1000 - - self:T2( { DetectionGroupName, DetectionDetectedObjectName, Distance } ) - - if Distance <= self.DetectionRange then - - if not self.DetectedObjects[DetectionDetectedObjectName] then - self.DetectedObjects[DetectionDetectedObjectName] = {} - end - self.DetectedObjects[DetectionDetectedObjectName].Name = DetectionDetectedObjectName - self.DetectedObjects[DetectionDetectedObjectName].Visible = DetectionDetectedTarget.visible - self.DetectedObjects[DetectionDetectedObjectName].Type = DetectionDetectedTarget.type - self.DetectedObjects[DetectionDetectedObjectName].Distance = DetectionDetectedTarget.distance - else - -- if beyond the DetectionRange then nullify... - if self.DetectedObjects[DetectionDetectedObjectName] then - self.DetectedObjects[DetectionDetectedObjectName] = nil - end - end - end - end - - self:T2( self.DetectedObjects ) - - -- okay, now we have a list of detected object names ... - -- Sort the table based on distance ... - table.sort( self.DetectedObjects, function( a, b ) return a.Distance < b.Distance end ) - end - end - - if self.DetectedObjects then - self:CreateDetectionSets() - end - - return true -end - - - ---- DETECTION_AREAS class --- @type DETECTION_AREAS --- @field Dcs.DCSTypes#Distance DetectionZoneRange The range till which targets are grouped upon the first detected target. --- @field #DETECTION_AREAS.DetectedAreas DetectedAreas A list of areas containing the set of @{Unit}s, @{Zone}s, the center @{Unit} within the zone, and ID of each area that was detected within a DetectionZoneRange. --- @extends Functional.Detection#DETECTION_BASE -DETECTION_AREAS = { - ClassName = "DETECTION_AREAS", - DetectedAreas = { n = 0 }, - DetectionZoneRange = nil, -} - ---- @type DETECTION_AREAS.DetectedAreas --- @list <#DETECTION_AREAS.DetectedArea> - ---- @type DETECTION_AREAS.DetectedArea --- @field Core.Set#SET_UNIT Set -- The Set of Units in the detected area. --- @field Core.Zone#ZONE_UNIT Zone -- The Zone of the detected area. --- @field #boolean Changed Documents if the detected area has changes. --- @field #table Changes A list of the changes reported on the detected area. (It is up to the user of the detected area to consume those changes). --- @field #number AreaID -- The identifier of the detected area. --- @field #boolean FriendliesNearBy Indicates if there are friendlies within the detected area. --- @field Wrapper.Unit#UNIT NearestFAC The nearest FAC near the Area. - - ---- DETECTION_AREAS constructor. --- @param Functional.Detection#DETECTION_AREAS self --- @param Core.Set#SET_GROUP DetectionSetGroup The @{Set} of GROUPs in the Forward Air Controller role. --- @param Dcs.DCSTypes#Distance DetectionRange The range till which targets are accepted to be detected. --- @param Dcs.DCSTypes#Distance DetectionZoneRange The range till which targets are grouped upon the first detected target. --- @return Functional.Detection#DETECTION_AREAS self -function DETECTION_AREAS:New( DetectionSetGroup, DetectionRange, DetectionZoneRange ) - - -- Inherits from DETECTION_BASE - local self = BASE:Inherit( self, DETECTION_BASE:New( DetectionSetGroup, DetectionRange ) ) - - self.DetectionZoneRange = DetectionZoneRange - - self._SmokeDetectedUnits = false - self._FlareDetectedUnits = false - self._SmokeDetectedZones = false - self._FlareDetectedZones = false - - self:Schedule( 10, 10 ) - - return self -end - ---- Add a detected @{#DETECTION_AREAS.DetectedArea}. --- @param Core.Set#SET_UNIT Set -- The Set of Units in the detected area. --- @param Core.Zone#ZONE_UNIT Zone -- The Zone of the detected area. --- @return #DETECTION_AREAS.DetectedArea DetectedArea -function DETECTION_AREAS:AddDetectedArea( Set, Zone ) - local DetectedAreas = self:GetDetectedAreas() - DetectedAreas.n = self:GetDetectedAreaCount() + 1 - DetectedAreas[DetectedAreas.n] = {} - local DetectedArea = DetectedAreas[DetectedAreas.n] - DetectedArea.Set = Set - DetectedArea.Zone = Zone - DetectedArea.Removed = false - DetectedArea.AreaID = DetectedAreas.n - - return DetectedArea -end - ---- Remove a detected @{#DETECTION_AREAS.DetectedArea} with a given Index. --- @param #DETECTION_AREAS self --- @param #number Index The Index of the detection are to be removed. --- @return #nil -function DETECTION_AREAS:RemoveDetectedArea( Index ) - local DetectedAreas = self:GetDetectedAreas() - local DetectedAreaCount = self:GetDetectedAreaCount() - local DetectedArea = DetectedAreas[Index] - local DetectedAreaSet = DetectedArea.Set - DetectedArea[Index] = nil - return nil -end - - ---- Get the detected @{#DETECTION_AREAS.DetectedAreas}. --- @param #DETECTION_AREAS self --- @return #DETECTION_AREAS.DetectedAreas DetectedAreas -function DETECTION_AREAS:GetDetectedAreas() - - local DetectedAreas = self.DetectedAreas - return DetectedAreas -end - ---- Get the amount of @{#DETECTION_AREAS.DetectedAreas}. --- @param #DETECTION_AREAS self --- @return #number DetectedAreaCount -function DETECTION_AREAS:GetDetectedAreaCount() - - local DetectedAreaCount = self.DetectedAreas.n - return DetectedAreaCount -end - ---- Get the @{Set#SET_UNIT} of a detecttion area using a given numeric index. --- @param #DETECTION_AREAS self --- @param #number Index --- @return Core.Set#SET_UNIT DetectedSet -function DETECTION_AREAS:GetDetectedSet( Index ) - - local DetectedSetUnit = self.DetectedAreas[Index].Set - if DetectedSetUnit then - return DetectedSetUnit - end - - return nil -end - ---- Get the @{Zone#ZONE_UNIT} of a detection area using a given numeric index. --- @param #DETECTION_AREAS self --- @param #number Index --- @return Core.Zone#ZONE_UNIT DetectedZone -function DETECTION_AREAS:GetDetectedZone( Index ) - - local DetectedZone = self.DetectedAreas[Index].Zone - if DetectedZone then - return DetectedZone - end - - return nil -end - ---- Background worker function to determine if there are friendlies nearby ... --- @param #DETECTION_AREAS self --- @param Wrapper.Unit#UNIT ReportUnit -function DETECTION_AREAS:ReportFriendliesNearBy( ReportGroupData ) - self:F2() - - local DetectedArea = ReportGroupData.DetectedArea -- Functional.Detection#DETECTION_AREAS.DetectedArea - local DetectedSet = ReportGroupData.DetectedArea.Set - local DetectedZone = ReportGroupData.DetectedArea.Zone - local DetectedZoneUnit = DetectedZone.ZoneUNIT - - DetectedArea.FriendliesNearBy = false - - local SphereSearch = { - id = world.VolumeType.SPHERE, - params = { - point = DetectedZoneUnit:GetVec3(), - radius = 6000, - } + local DetectionGroupObjects = {} + + local DetectedTargets = DetectionGroup:GetDetectedTargets( + self.DetectVisual, + self.DetectOptical, + self.DetectRadar, + self.DetectIRST, + self.DetectRWR, + self.DetectDLINK + ) + + for DetectionObjectID, Detection in pairs( DetectedTargets ) do + local DetectedObject = Detection.object -- Dcs.DCSWrapper.Object#Object + self:T2( DetectedObject ) + + if DetectedObject and DetectedObject:isExist() and DetectedObject.id_ < 50000000 then - } - - --- @param Dcs.DCSWrapper.Unit#Unit FoundDCSUnit - -- @param Wrapper.Group#GROUP ReportGroup - -- @param Set#SET_GROUP ReportSetGroup - local FindNearByFriendlies = function( FoundDCSUnit, ReportGroupData ) - - local DetectedArea = ReportGroupData.DetectedArea -- Functional.Detection#DETECTION_AREAS.DetectedArea - local DetectedSet = ReportGroupData.DetectedArea.Set - local DetectedZone = ReportGroupData.DetectedArea.Zone - local DetectedZoneUnit = DetectedZone.ZoneUNIT -- Wrapper.Unit#UNIT - local ReportSetGroup = ReportGroupData.ReportSetGroup - - local EnemyCoalition = DetectedZoneUnit:GetCoalition() - - local FoundUnitCoalition = FoundDCSUnit:getCoalition() - local FoundUnitName = FoundDCSUnit:getName() - local FoundUnitGroupName = FoundDCSUnit:getGroup():getName() - local EnemyUnitName = DetectedZoneUnit:GetName() - local FoundUnitInReportSetGroup = ReportSetGroup:FindGroup( FoundUnitGroupName ) ~= nil - - self:T3( { "Friendlies search:", FoundUnitName, FoundUnitCoalition, EnemyUnitName, EnemyCoalition, FoundUnitInReportSetGroup } ) - - if FoundUnitCoalition ~= EnemyCoalition and FoundUnitInReportSetGroup == false then - DetectedArea.FriendliesNearBy = true - return false - end - - return true - end - - world.searchObjects( Object.Category.UNIT, SphereSearch, FindNearByFriendlies, ReportGroupData ) - -end - - - ---- Returns if there are friendlies nearby the FAC units ... --- @param #DETECTION_AREAS self --- @return #boolean trhe if there are friendlies nearby -function DETECTION_AREAS:IsFriendliesNearBy( DetectedArea ) - - self:T3( DetectedArea.FriendliesNearBy ) - return DetectedArea.FriendliesNearBy or false -end - ---- Calculate the maxium A2G threat level of the DetectedArea. --- @param #DETECTION_AREAS self --- @param #DETECTION_AREAS.DetectedArea DetectedArea -function DETECTION_AREAS:CalculateThreatLevelA2G( DetectedArea ) - - local MaxThreatLevelA2G = 0 - for UnitName, UnitData in pairs( DetectedArea.Set:GetSet() ) do - local ThreatUnit = UnitData -- Wrapper.Unit#UNIT - local ThreatLevelA2G = ThreatUnit:GetThreatLevel() - if ThreatLevelA2G > MaxThreatLevelA2G then - MaxThreatLevelA2G = ThreatLevelA2G - end - end - - self:T3( MaxThreatLevelA2G ) - DetectedArea.MaxThreatLevelA2G = MaxThreatLevelA2G - -end - ---- Find the nearest FAC of the DetectedArea. --- @param #DETECTION_AREAS self --- @param #DETECTION_AREAS.DetectedArea DetectedArea --- @return Wrapper.Unit#UNIT The nearest FAC unit -function DETECTION_AREAS:NearestFAC( DetectedArea ) - - local NearestFAC = nil - local MinDistance = 1000000000 -- Units are not further than 1000000 km away from an area :-) - - for FACGroupName, FACGroupData in pairs( self.DetectionSetGroup:GetSet() ) do - for FACUnit, FACUnitData in pairs( FACGroupData:GetUnits() ) do - local FACUnit = FACUnitData -- Wrapper.Unit#UNIT - if FACUnit:IsActive() then - local Vec3 = FACUnit:GetVec3() - local PointVec3 = POINT_VEC3:NewFromVec3( Vec3 ) - local Distance = PointVec3:Get2DDistance(POINT_VEC3:NewFromVec3( FACUnit:GetVec3() ) ) - if Distance < MinDistance then - MinDistance = Distance - NearestFAC = FACUnit - end - end - end - end - - DetectedArea.NearestFAC = NearestFAC - -end - ---- Returns the A2G threat level of the units in the DetectedArea --- @param #DETECTION_AREAS self --- @param #DETECTION_AREAS.DetectedArea DetectedArea --- @return #number a scale from 0 to 10. -function DETECTION_AREAS:GetTreatLevelA2G( DetectedArea ) - - self:T3( DetectedArea.MaxThreatLevelA2G ) - return DetectedArea.MaxThreatLevelA2G -end - - - ---- Smoke the detected units --- @param #DETECTION_AREAS self --- @return #DETECTION_AREAS self -function DETECTION_AREAS:SmokeDetectedUnits() - self:F2() - - self._SmokeDetectedUnits = true - return self -end - ---- Flare the detected units --- @param #DETECTION_AREAS self --- @return #DETECTION_AREAS self -function DETECTION_AREAS:FlareDetectedUnits() - self:F2() - - self._FlareDetectedUnits = true - return self -end - ---- Smoke the detected zones --- @param #DETECTION_AREAS self --- @return #DETECTION_AREAS self -function DETECTION_AREAS:SmokeDetectedZones() - self:F2() - - self._SmokeDetectedZones = true - return self -end - ---- Flare the detected zones --- @param #DETECTION_AREAS self --- @return #DETECTION_AREAS self -function DETECTION_AREAS:FlareDetectedZones() - self:F2() - - self._FlareDetectedZones = true - return self -end - ---- Add a change to the detected zone. --- @param #DETECTION_AREAS self --- @param #DETECTION_AREAS.DetectedArea DetectedArea --- @param #string ChangeCode --- @return #DETECTION_AREAS self -function DETECTION_AREAS:AddChangeArea( DetectedArea, ChangeCode, AreaUnitType ) - - DetectedArea.Changed = true - local AreaID = DetectedArea.AreaID - - DetectedArea.Changes = DetectedArea.Changes or {} - DetectedArea.Changes[ChangeCode] = DetectedArea.Changes[ChangeCode] or {} - DetectedArea.Changes[ChangeCode].AreaID = AreaID - DetectedArea.Changes[ChangeCode].AreaUnitType = AreaUnitType - - self:T( { "Change on Detection Area:", DetectedArea.AreaID, ChangeCode, AreaUnitType } ) - - return self -end - - ---- Add a change to the detected zone. --- @param #DETECTION_AREAS self --- @param #DETECTION_AREAS.DetectedArea DetectedArea --- @param #string ChangeCode --- @param #string ChangeUnitType --- @return #DETECTION_AREAS self -function DETECTION_AREAS:AddChangeUnit( DetectedArea, ChangeCode, ChangeUnitType ) - - DetectedArea.Changed = true - local AreaID = DetectedArea.AreaID - - DetectedArea.Changes = DetectedArea.Changes or {} - DetectedArea.Changes[ChangeCode] = DetectedArea.Changes[ChangeCode] or {} - DetectedArea.Changes[ChangeCode][ChangeUnitType] = DetectedArea.Changes[ChangeCode][ChangeUnitType] or 0 - DetectedArea.Changes[ChangeCode][ChangeUnitType] = DetectedArea.Changes[ChangeCode][ChangeUnitType] + 1 - DetectedArea.Changes[ChangeCode].AreaID = AreaID - - self:T( { "Change on Detection Area:", DetectedArea.AreaID, ChangeCode, ChangeUnitType } ) - - return self -end - ---- Make text documenting the changes of the detected zone. --- @param #DETECTION_AREAS self --- @param #DETECTION_AREAS.DetectedArea DetectedArea --- @return #string The Changes text -function DETECTION_AREAS:GetChangeText( DetectedArea ) - self:F( DetectedArea ) - - local MT = {} - - for ChangeCode, ChangeData in pairs( DetectedArea.Changes ) do - - if ChangeCode == "AA" then - MT[#MT+1] = "Detected new area " .. ChangeData.AreaID .. ". The center target is a " .. ChangeData.AreaUnitType .. "." - end - - if ChangeCode == "RAU" then - MT[#MT+1] = "Changed area " .. ChangeData.AreaID .. ". Removed the center target." - end - - if ChangeCode == "AAU" then - MT[#MT+1] = "Changed area " .. ChangeData.AreaID .. ". The new center target is a " .. ChangeData.AreaUnitType "." - end - - if ChangeCode == "RA" then - MT[#MT+1] = "Removed old area " .. ChangeData.AreaID .. ". No more targets in this area." - end - - if ChangeCode == "AU" then - local MTUT = {} - for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "AreaID" then - MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType - end - end - MT[#MT+1] = "Detected for area " .. ChangeData.AreaID .. " new target(s) " .. table.concat( MTUT, ", " ) .. "." - end - - if ChangeCode == "RU" then - local MTUT = {} - for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "AreaID" then - MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType - end - end - MT[#MT+1] = "Removed for area " .. ChangeData.AreaID .. " invisible or destroyed target(s) " .. table.concat( MTUT, ", " ) .. "." - end - - end - - return table.concat( MT, "\n" ) - -end - - ---- Accepts changes from the detected zone. --- @param #DETECTION_AREAS self --- @param #DETECTION_AREAS.DetectedArea DetectedArea --- @return #DETECTION_AREAS self -function DETECTION_AREAS:AcceptChanges( DetectedArea ) - - DetectedArea.Changed = false - DetectedArea.Changes = {} - - return self -end - - ---- Make a DetectionSet table. This function will be overridden in the derived clsses. --- @param #DETECTION_AREAS self --- @return #DETECTION_AREAS self -function DETECTION_AREAS:CreateDetectionSets() - self:F2() - - -- First go through all detected sets, and check if there are new detected units, match all existing detected units and identify undetected units. - -- Regroup when needed, split groups when needed. - for DetectedAreaID, DetectedAreaData in ipairs( self.DetectedAreas ) do - - local DetectedArea = DetectedAreaData -- #DETECTION_AREAS.DetectedArea - if DetectedArea then - - local DetectedSet = DetectedArea.Set - - local AreaExists = false -- This flag will determine of the detected area is still existing. + local DetectionAccepted = true - -- First test if the center unit is detected in the detection area. - self:T3( DetectedArea.Zone.ZoneUNIT.UnitName ) - local DetectedZoneObject = self:GetDetectedObject( DetectedArea.Zone.ZoneUNIT.UnitName ) - self:T3( { "Detecting Zone Object", DetectedArea.AreaID, DetectedArea.Zone, DetectedZoneObject } ) - - if DetectedZoneObject then - - --self:IdentifyDetectedObject( DetectedZoneObject ) - AreaExists = true - - - - else - -- The center object of the detected area has not been detected. Find an other unit of the set to become the center of the area. - -- First remove the center unit from the set. - DetectedSet:RemoveUnitsByName( DetectedArea.Zone.ZoneUNIT.UnitName ) - - self:AddChangeArea( DetectedArea, 'RAU', "Dummy" ) - - -- Then search for a new center area unit within the set. Note that the new area unit candidate must be within the area range. - for DetectedUnitName, DetectedUnitData in pairs( DetectedSet:GetSet() ) do - - local DetectedUnit = DetectedUnitData -- Wrapper.Unit#UNIT - local DetectedObject = self:GetDetectedObject( DetectedUnit.UnitName ) - - -- The DetectedObject can be nil when the DetectedUnit is not alive anymore or it is not in the DetectedObjects map. - -- If the DetectedUnit was already identified, DetectedObject will be nil. - if DetectedObject then - self:IdentifyDetectedObject( DetectedObject ) - AreaExists = true - - -- Assign the Unit as the new center unit of the detected area. - DetectedArea.Zone = ZONE_UNIT:New( DetectedUnit:GetName(), DetectedUnit, self.DetectionZoneRange ) - - self:AddChangeArea( DetectedArea, "AAU", DetectedArea.Zone.ZoneUNIT:GetTypeName() ) - - -- We don't need to add the DetectedObject to the area set, because it is already there ... - break - end - end - end - - -- Now we've determined the center unit of the area, now we can iterate the units in the detected area. - -- Note that the position of the area may have moved due to the center unit repositioning. - -- If no center unit was identified, then the detected area does not exist anymore and should be deleted, as there are no valid units that can be the center unit. - if AreaExists then - - -- ok, we found the center unit of the area, now iterate through the detected area set and see which units are still within the center unit zone ... - -- Those units within the zone are flagged as Identified. - -- If a unit was not found in the set, remove it from the set. This may be added later to other existing or new sets. - for DetectedUnitName, DetectedUnitData in pairs( DetectedSet:GetSet() ) do - - local DetectedUnit = DetectedUnitData -- Wrapper.Unit#UNIT - local DetectedObject = nil - if DetectedUnit:IsAlive() then - --self:E(DetectedUnit:GetName()) - DetectedObject = self:GetDetectedObject( DetectedUnit:GetName() ) - end - if DetectedObject then - - -- Check if the DetectedUnit is within the DetectedArea.Zone - if DetectedUnit:IsInZone( DetectedArea.Zone ) then - - -- Yes, the DetectedUnit is within the DetectedArea.Zone, no changes, DetectedUnit can be kept within the Set. - self:IdentifyDetectedObject( DetectedObject ) - - else - -- No, the DetectedUnit is not within the DetectedArea.Zone, remove DetectedUnit from the Set. - DetectedSet:Remove( DetectedUnitName ) - self:AddChangeUnit( DetectedArea, "RU", DetectedUnit:GetTypeName() ) + local DetectedObjectName = DetectedObject:getName() + + local DetectedObjectVec3 = DetectedObject:getPoint() + local DetectedObjectVec2 = { x = DetectedObjectVec3.x, y = DetectedObjectVec3.z } + local DetectionGroupVec3 = DetectionGroup:GetVec3() + local DetectionGroupVec2 = { x = DetectionGroupVec3.x, y = DetectionGroupVec3.z } + + local Distance = ( ( DetectedObjectVec3.x - DetectionGroupVec3.x )^2 + + ( DetectedObjectVec3.y - DetectionGroupVec3.y )^2 + + ( DetectedObjectVec3.z - DetectionGroupVec3.z )^2 + ) ^ 0.5 / 1000 + + self:T2( { DetectionGroupName, DetectedObjectName, Distance } ) + + -- Calculate Acceptance + + if self.AcceptRange and Distance > self.AcceptRange then + DetectionAccepted = false + end + + if self.AcceptZones then + for AcceptZoneID, AcceptZone in pairs( self.AcceptZones ) do + local AcceptZone = AcceptZone -- Core.Zone#ZONE_BASE + if AcceptZone:IsPointVec2InZone( DetectedObjectVec2 ) == false then + DetectionAccepted = false + end + end end - - else - -- There was no DetectedObject, remove DetectedUnit from the Set. - self:AddChangeUnit( DetectedArea, "RU", "destroyed target" ) - DetectedSet:Remove( DetectedUnitName ) - -- The DetectedObject has been identified, because it does not exist ... - -- self:IdentifyDetectedObject( DetectedObject ) + if self.RejectZones then + for RejectZoneID, RejectZone in pairs( self.RejectZones ) do + local RejectZone = RejectZone -- Core.Zone#ZONE_BASE + if RejectZone:IsPointVec2InZone( DetectedObjectVec2 ) == true then + DetectionAccepted = false + end + end + end + + -- Calculate additional probabilities + + if not self.DetectedObjects[DetectedObjectName] and Detection.visible and self.DistanceProbability then + local DistanceFactor = Distance / 4 + local DistanceProbabilityReversed = ( 1 - self.DistanceProbability ) * DistanceFactor + local DistanceProbability = 1 - DistanceProbabilityReversed + DistanceProbability = DistanceProbability * 30 / 300 + local Probability = math.random() -- Selects a number between 0 and 1 + self:T( { Probability, DistanceProbability } ) + if Probability > DistanceProbability then + DetectionAccepted = false + end + end + + if not self.DetectedObjects[DetectedObjectName] and Detection.visible and self.AlphaAngleProbability then + local NormalVec2 = { x = DetectedObjectVec2.x - DetectionGroupVec2.x, y = DetectedObjectVec2.y - DetectionGroupVec2.y } + local AlphaAngle = math.atan2( NormalVec2.y, NormalVec2.x ) + local Sinus = math.sin( AlphaAngle ) + local AlphaAngleProbabilityReversed = ( 1 - self.AlphaAngleProbability ) * ( 1 - Sinus ) + local AlphaAngleProbability = 1 - AlphaAngleProbabilityReversed + + AlphaAngleProbability = AlphaAngleProbability * 30 / 300 + + local Probability = math.random() -- Selects a number between 0 and 1 + self:T( { Probability, AlphaAngleProbability } ) + if Probability > AlphaAngleProbability then + DetectionAccepted = false + end + + end + + if not self.DetectedObjects[DetectedObjectName] and Detection.visible and self.ZoneProbability then + + for ZoneDataID, ZoneData in pairs( self.ZoneProbability ) do + self:E({ZoneData}) + local ZoneObject = ZoneData[1] -- Core.Zone#ZONE_BASE + local ZoneProbability = ZoneData[2] -- #number + ZoneProbability = ZoneProbability * 30 / 300 + + if ZoneObject:IsPointVec2InZone( DetectedObjectVec2 ) == true then + local Probability = math.random() -- Selects a number between 0 and 1 + self:T( { Probability, ZoneProbability } ) + if Probability > ZoneProbability then + DetectionAccepted = false + break + end + end + end + end + + if DetectionAccepted then + + if not self.DetectedObjects[DetectedObjectName] then + self.DetectedObjects[DetectedObjectName] = {} + end + self.DetectedObjects[DetectedObjectName].Name = DetectedObjectName + self.DetectedObjects[DetectedObjectName].Visible = Detection.visible + self.DetectedObjects[DetectedObjectName].Type = Detection.type + self.DetectedObjects[DetectedObjectName].Distance = Distance + + DetectionGroupObjects[DetectedObjectName] = DetectedObject + else + -- if beyond the DetectionRange then nullify... + if self.DetectedObjects[DetectedObjectName] then + self.DetectedObjects[DetectedObjectName] = nil + end + end end + + self:T2( self.DetectedObjects ) end - else - self:RemoveDetectedArea( DetectedAreaID ) - self:AddChangeArea( DetectedArea, "RA" ) + + if HasDetectedObjects then + self:__Detected( 0.1, DetectionGroupObjects ) + end + end + + if self.DetectionRun == self.DetectionCount then + self:CreateDetectionSets() + end + end + + end - -- We iterated through the existing detection areas and: - -- - We checked which units are still detected in each detection area. Those units were flagged as Identified. - -- - We recentered the detection area to new center units where it was needed. - -- - -- Now we need to loop through the unidentified detected units and see where they belong: - -- - They can be added to a new detection area and become the new center unit. - -- - They can be added to a new detection area. - for DetectedUnitName, DetectedObjectData in pairs( self.DetectedObjects ) do + do -- Initialization methods + + --- Detect Visual. + -- @param #DETECTION_BASE self + -- @param #boolean DetectVisual + -- @return #DETECTION_BASE self + function DETECTION_BASE:InitDetectVisual( DetectVisual ) - local DetectedObject = self:GetDetectedObject( DetectedUnitName ) + self.DetectVisual = DetectVisual + end - if DetectedObject then + --- Detect Optical. + -- @param #DETECTION_BASE self + -- @param #boolean DetectOptical + -- @return #DETECTION_BASE self + function DETECTION_BASE:InitDetectOptical( DetectOptical ) + self:F2() + + self.DetectOptical = DetectOptical + end + + --- Detect Radar. + -- @param #DETECTION_BASE self + -- @param #boolean DetectRadar + -- @return #DETECTION_BASE self + function DETECTION_BASE:InitDetectRadar( DetectRadar ) + self:F2() + + self.DetectRadar = DetectRadar + end + + --- Detect IRST. + -- @param #DETECTION_BASE self + -- @param #boolean DetectIRST + -- @return #DETECTION_BASE self + function DETECTION_BASE:InitDetectIRST( DetectIRST ) + self:F2() + + self.DetectIRST = DetectIRST + end + + --- Detect RWR. + -- @param #DETECTION_BASE self + -- @param #boolean DetectRWR + -- @return #DETECTION_BASE self + function DETECTION_BASE:InitDetectRWR( DetectRWR ) + self:F2() + + self.DetectRWR = DetectRWR + end + + --- Detect DLINK. + -- @param #DETECTION_BASE self + -- @param #boolean DetectDLINK + -- @return #DETECTION_BASE self + function DETECTION_BASE:InitDetectDLINK( DetectDLINK ) + self:F2() + + self.DetectDLINK = DetectDLINK + end + + end - -- We found an unidentified unit outside of any existing detection area. + do + + --- Set the detection interval time in seconds. + -- @param #DETECTION_BASE self + -- @param #number DetectionInterval Interval in seconds. + -- @return #DETECTION_BASE self + function DETECTION_BASE:SetDetectionInterval( DetectionInterval ) + self:F2() + + self.DetectionInterval = DetectionInterval + + return self + end + + end + + do -- Accept / Reject detected units + + --- Accept detections if within a range in meters. + -- @param #DETECTION_BASE self + -- @param #number AcceptRange Accept a detection if the unit is within the AcceptRange in meters. + -- @return #DETECTION_BASE self + function DETECTION_BASE:SetAcceptRange( AcceptRange ) + self:F2() + + self.AcceptRange = AcceptRange + + return self + end + + --- Accept detections if within the specified zone(s). + -- @param #DETECTION_BASE self + -- @param AcceptZones Can be a list or ZONE_BASE objects, or a single ZONE_BASE object. + -- @return #DETECTION_BASE self + function DETECTION_BASE:SetAcceptZones( AcceptZones ) + self:F2() + + if type( AcceptZones ) == "table" then + self.AcceptZones = AcceptZones + else + self.AcceptZones = { AcceptZones } + end + + return self + end + + --- Reject detections if within the specified zone(s). + -- @param #DETECTION_BASE self + -- @param RejectZones Can be a list or ZONE_BASE objects, or a single ZONE_BASE object. + -- @return #DETECTION_BASE self + function DETECTION_BASE:SetRejectZones( RejectZones ) + self:F2() + + if type( RejectZones ) == "table" then + self.RejectZones = RejectZones + else + self.RejectZones = { RejectZones } + end + + return self + end + + end + + do -- Probability methods + + --- Upon a **visual** detection, the further away a detected object is, the less likely it is to be detected properly. + -- Also, the speed of accurate detection plays a role. + -- A distance probability factor between 0 and 1 can be given, that will model a linear extrapolated probability over 10 km distance. + -- For example, if a probability factor of 0.6 (60%) is given, the extrapolated probabilities over 15 kilometers would like like: + -- 1 km: 96%, 2 km: 92%, 3 km: 88%, 4 km: 84%, 5 km: 80%, 6 km: 76%, 7 km: 72%, 8 km: 68%, 9 km: 64%, 10 km: 60%, 11 km: 56%, 12 km: 52%, 13 km: 48%, 14 km: 44%, 15 km: 40%. + -- @param #DETECTION_BASE self + -- @param DistanceProbability The probability factor. + -- @return #DETECTION_BASE self + function DETECTION_BASE:SetDistanceProbability( DistanceProbability ) + self:F2() + + self.DistanceProbability = DistanceProbability + + return self + end + + + --- Upon a **visual** detection, the higher the unit is during the detecting process, the more likely the detected unit is to be detected properly. + -- A detection at a 90% alpha angle is the most optimal, a detection at 10% is less and a detection at 0% is less likely to be correct. + -- + -- A probability factor between 0 and 1 can be given, that will model a progressive extrapolated probability if the target would be detected at a 0° angle. + -- + -- For example, if a alpha angle probability factor of 0.7 is given, the extrapolated probabilities of the different angles would look like: + -- 0°: 70%, 10°: 75,21%, 20°: 80,26%, 30°: 85%, 40°: 89,28%, 50°: 92,98%, 60°: 95,98%, 70°: 98,19%, 80°: 99,54%, 90°: 100% + -- @param #DETECTION_BASE self + -- @param AlphaAngleProbability The probability factor. + -- @return #DETECTION_BASE self + function DETECTION_BASE:SetAlphaAngleProbability( AlphaAngleProbability ) + self:F2() + + self.AlphaAngleProbability = AlphaAngleProbability + + return self + end + + --- Upon a **visual** detection, the more a detected unit is within a cloudy zone, the less likely the detected unit is to be detected successfully. + -- The Cloudy Zones work with the ZONE_BASE derived classes. The mission designer can define within the mission + -- zones that reflect cloudy areas where detected units may not be so easily visually detected. + -- @param #DETECTION_BASE self + -- @param ZoneArray Aray of a The ZONE_BASE object and a ZoneProbability pair.. + -- @return #DETECTION_BASE self + function DETECTION_BASE:SetZoneProbability( ZoneArray ) + self:F2() + + self.ZoneProbability = ZoneArray + + return self + end + + + end + + --- Determines if a detected object has already been identified during detection processing. + -- @param #DETECTION_BASE self + -- @param #DETECTION_BASE.DetectedObject DetectedObject + -- @return #boolean true if already identified. + function DETECTION_BASE:IsDetectedObjectIdentified( DetectedObject ) + self:F3( DetectedObject.Name ) + + local DetectedObjectName = DetectedObject.Name + local DetectedObjectIdentified = self.DetectedObjectsIdentified[DetectedObjectName] == true + self:T3( DetectedObjectIdentified ) + return DetectedObjectIdentified + end + + --- Identifies a detected object during detection processing. + -- @param #DETECTION_BASE self + -- @param #DETECTION_BASE.DetectedObject DetectedObject + function DETECTION_BASE:IdentifyDetectedObject( DetectedObject ) + self:F( DetectedObject.Name ) + + local DetectedObjectName = DetectedObject.Name + self.DetectedObjectsIdentified[DetectedObjectName] = true + end + + --- UnIdentify a detected object during detection processing. + -- @param #DETECTION_BASE self + -- @param #DETECTION_BASE.DetectedObject DetectedObject + function DETECTION_BASE:UnIdentifyDetectedObject( DetectedObject ) + + local DetectedObjectName = DetectedObject.Name + self.DetectedObjectsIdentified[DetectedObjectName] = false + end + + --- UnIdentify all detected objects during detection processing. + -- @param #DETECTION_BASE self + function DETECTION_BASE:UnIdentifyAllDetectedObjects() + + self.DetectedObjectsIdentified = {} -- Table will be garbage collected. + end + + --- Gets a detected object with a given name. + -- @param #DETECTION_BASE self + -- @param #string ObjectName + -- @return #DETECTION_BASE.DetectedObject + function DETECTION_BASE:GetDetectedObject( ObjectName ) + self:F3( ObjectName ) + + if ObjectName then + local DetectedObject = self.DetectedObjects[ObjectName] + + -- Only return detected objects that are alive! + local DetectedUnit = UNIT:FindByName( ObjectName ) + if DetectedUnit and DetectedUnit:IsAlive() then + if self:IsDetectedObjectIdentified( DetectedObject ) == false then + return DetectedObject + end + end + end + + return nil + end + + + --- Adds a new DetectedItem to the DetectedItems list. + -- The DetectedItem is a table and contains a SET_UNIT in the field Set. + -- @param #DETECTION_BASE self + -- @return #DETECTION_BASE.DetectedItem + function DETECTION_BASE:AddDetectedItem() + + local DetectedItem = {} + DetectedItem.Set = SET_UNIT:New() + + table.insert( self.DetectedItems, DetectedItem ) + + return DetectedItem + end + + --- Removes an existing DetectedItem from the DetectedItems list. + -- The DetectedItem is a table and contains a SET_UNIT in the field Set. + -- @param #DETECTION_BASE self + -- @param #number DetectedItemIndex The index or position in the DetectedItems list where the item needs to be removed. + function DETECTION_BASE:RemoveDetectedItem( DetectedItemIndex ) + + table.remove( self.DetectedItems, DetectedItemIndex ) + end + + + --- Get the detected @{Set#SET_BASE}s. + -- @param #DETECTION_BASE self + -- @return #DETECTION_BASE.DetectedItems + function DETECTION_BASE:GetDetectedItems() + + return self.DetectedItems + end + + --- Get the amount of SETs with detected objects. + -- @param #DETECTION_BASE self + -- @return #number Count + function DETECTION_BASE:GetDetectedItemsCount() + + local DetectedCount = #self.DetectedItems + return DetectedCount + end + + --- Get a detected item using a given numeric index. + -- @param #DETECTION_BASE self + -- @param #number Index + -- @return DETECTION_BASE.DetectedItem + function DETECTION_BASE:GetDetectedItem( Index ) + + local DetectedItem = self.DetectedItems[Index] + if DetectedItem then + return DetectedItem + end + + return nil + end + + --- Get the @{Set#SET_UNIT} of a detecttion area using a given numeric index. + -- @param #DETECTION_BASE self + -- @param #number Index + -- @return Core.Set#SET_UNIT DetectedSet + function DETECTION_BASE:GetDetectedSet( Index ) + + local DetectedItem = self:GetDetectedItem( Index ) + local DetectedSetUnit = DetectedItem.Set + if DetectedSetUnit then + return DetectedSetUnit + end + + return nil + end + + + --- Report summary of a detected item using a given numeric index. + -- @param #DETECTION_BASE self + -- @param Index + -- @return #string + function DETECTION_BASE:DetectedItemReportSummary( Index ) + self:F( Index ) + return nil + end + + --- Report detailed of a detectedion result. + -- @param #DETECTION_BASE self + -- @return #string + function DETECTION_BASE:DetectedReportDetailed() + self:F() + return nil + end + + --- Get the detection Groups. + -- @param #DETECTION_BASE self + -- @return Wrapper.Group#GROUP + function DETECTION_BASE:GetDetectionSetGroup() + + local DetectionSetGroup = self.DetectionSetGroup + return DetectionSetGroup + end + + --- Make a DetectionSet table. This function will be overridden in the derived clsses. + -- @param #DETECTION_BASE self + -- @return #DETECTION_BASE self + function DETECTION_BASE:CreateDetectionSets() + self:F2() + + self:E( "Error, in DETECTION_BASE class..." ) + + end + + + --- Schedule the DETECTION construction. + -- @param #DETECTION_BASE self + -- @param #number DelayTime The delay in seconds to wait the reporting. + -- @param #number RepeatInterval The repeat interval in seconds for the reporting to happen repeatedly. + -- @return #DETECTION_BASE self + function DETECTION_BASE:Schedule( DelayTime, RepeatInterval ) + self:F2() + + self.ScheduleDelayTime = DelayTime + self.ScheduleRepeatInterval = RepeatInterval + + self.DetectionScheduler = SCHEDULER:New( self, self._DetectionScheduler, { self, "Detection" }, DelayTime, RepeatInterval ) + return self + end + +end + +do -- DETECTION_UNITS + + --- DETECTION_UNITS class + -- @type DETECTION_UNITS + -- @field Dcs.DCSTypes#Distance DetectionRange The range till which targets are detected. + -- @extends #DETECTION_BASE + DETECTION_UNITS = { + ClassName = "DETECTION_UNITS", + DetectionRange = nil, + } + + --- DETECTION_UNITS constructor. + -- @param Functional.Detection#DETECTION_UNITS self + -- @param Core.Set#SET_GROUP DetectionSetGroup The @{Set} of GROUPs in the Forward Air Controller role. + -- @return Functional.Detection#DETECTION_UNITS self + function DETECTION_UNITS:New( DetectionSetGroup ) + + -- Inherits from DETECTION_BASE + local self = BASE:Inherit( self, DETECTION_BASE:New( DetectionSetGroup ) ) -- #DETECTION_UNITS + + self._SmokeDetectedUnits = false + self._FlareDetectedUnits = false + self._SmokeDetectedZones = false + self._FlareDetectedZones = false + + return self + end + + --- Create the DetectedItems list from the DetectedObjects table. + -- For each DetectedItem, a one field array is created containing the Unit detected. + -- @param #DETECTION_UNITS self + -- @return #DETECTION_UNITS self + function DETECTION_UNITS:CreateDetectionSets() + self:F2( #self.DetectedObjects ) + + self.DetectedItems = {} + + for DetectedUnitName, DetectedObjectData in pairs( self.DetectedObjects ) do + + self:E( { "Detected Unit #", DetectedUnitName } ) + local DetectedUnit = UNIT:FindByName( DetectedUnitName ) -- Wrapper.Unit#UNIT - local AddedToDetectionArea = false - - for DetectedAreaID, DetectedAreaData in ipairs( self.DetectedAreas ) do - - local DetectedArea = DetectedAreaData -- #DETECTION_AREAS.DetectedArea - if DetectedArea then - self:T( "Detection Area #" .. DetectedArea.AreaID ) - local DetectedSet = DetectedArea.Set - if not self:IsDetectedObjectIdentified( DetectedObject ) and DetectedUnit:IsInZone( DetectedArea.Zone ) then - self:IdentifyDetectedObject( DetectedObject ) - DetectedSet:AddUnit( DetectedUnit ) - AddedToDetectionArea = true - self:AddChangeUnit( DetectedArea, "AU", DetectedUnit:GetTypeName() ) - end - end - end - - if AddedToDetectionArea == false then + if DetectedUnit then - -- New detection area - local DetectedArea = self:AddDetectedArea( - SET_UNIT:New(), - ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) - ) - --self:E( DetectedArea.Zone.ZoneUNIT.UnitName ) - DetectedArea.Set:AddUnit( DetectedUnit ) - self:AddChangeArea( DetectedArea, "AA", DetectedUnit:GetTypeName() ) - end + local DetectedItem = self:AddDetectedItem() + DetectedItem.Type = DetectedObjectData.Type + DetectedItem.Name = DetectedObjectData.Name + DetectedItem.Visible = DetectedObjectData.Visible + DetectedItem.Distance = DetectedObjectData.Distance + DetectedItem.Set:AddUnit( DetectedUnit ) + end end end - -- Now all the tests should have been build, now make some smoke and flares... - -- We also report here the friendlies within the detected areas. + --- Report summary of a DetectedItem using a given numeric index. + -- @param #DETECTION_UNITS self + -- @param Index + -- @return #string + function DETECTION_UNITS:DetectedItemReportSummary( Index ) + self:F( Index ) - for DetectedAreaID, DetectedAreaData in ipairs( self.DetectedAreas ) do - - local DetectedArea = DetectedAreaData -- #DETECTION_AREAS.DetectedArea - local DetectedSet = DetectedArea.Set - local DetectedZone = DetectedArea.Zone - - self:ReportFriendliesNearBy( { DetectedArea = DetectedArea, ReportSetGroup = self.DetectionSetGroup } ) -- Fill the Friendlies table - self:CalculateThreatLevelA2G( DetectedArea ) -- Calculate A2G threat level - self:NearestFAC( DetectedArea ) - - if DETECTION_AREAS._SmokeDetectedUnits or self._SmokeDetectedUnits then - DetectedZone.ZoneUNIT:SmokeRed() - end - DetectedSet:ForEachUnit( - --- @param Wrapper.Unit#UNIT DetectedUnit - function( DetectedUnit ) - if DetectedUnit:IsAlive() then - self:T( "Detected Set #" .. DetectedArea.AreaID .. ":" .. DetectedUnit:GetName() ) - if DETECTION_AREAS._FlareDetectedUnits or self._FlareDetectedUnits then - DetectedUnit:FlareGreen() - end - if DETECTION_AREAS._SmokeDetectedUnits or self._SmokeDetectedUnits then - DetectedUnit:SmokeGreen() - end + local DetectedItem = self:GetDetectedItem( Index ) + local DetectedSet = self:GetDetectedSet( Index ) + + self:T( DetectedSet ) + if DetectedSet then + local ReportSummary = "" + local UnitDistanceText = "" + local UnitCategoryText = "" + + local DetectedItemUnit = DetectedSet:GetFirst() -- Wrapper.Unit#UNIT + + self:E( DetectedItemUnit ) + + if DetectedItemUnit then + self:E(DetectedItemUnit) + + local UnitCategoryName = DetectedItemUnit:GetCategoryName() + local UnitCategoryType = DetectedItemUnit:GetTypeName() + + if DetectedItem.Type then + UnitCategoryText = UnitCategoryName .. " (" .. UnitCategoryType .. ") at " + else + UnitCategoryText = "Unknown target at " end + + if DetectedItem.Visible == false then + UnitDistanceText = string.format( "%.2f", DetectedItem.Distance ) .. " estimated km" + else + UnitDistanceText = string.format( "%.2f", DetectedItem.Distance ) .. " km, visual contact" + end + + ReportSummary = string.format( + "%s%s", + UnitCategoryText, + UnitDistanceText + ) end - ) - if DETECTION_AREAS._FlareDetectedZones or self._FlareDetectedZones then - DetectedZone:FlareZone( SMOKECOLOR.White, 30, math.random( 0,90 ) ) + + self:T( ReportSummary ) + + return ReportSummary end - if DETECTION_AREAS._SmokeDetectedZones or self._SmokeDetectedZones then - DetectedZone:SmokeZone( SMOKECOLOR.White, 30 ) + end + + --- Report detailed of a detection result. + -- @param #DETECTION_UNITS self + -- @return #string + function DETECTION_UNITS:DetectedReportDetailed() + self:F() + + local Report = REPORT:New( "Detected units:" ) + for DetectedItemID, DetectedItem in ipairs( self.DetectedItems ) do + local DetectedItem = DetectedItem -- #DETECTION_BASE.DetectedItem + local ReportSummary = self:DetectedItemReportSummary( DetectedItemID ) + Report:Add( ReportSummary ) end + + local ReportText = Report:Text() + + return ReportText + end + +end + +do -- DETECTION_TYPES + + --- DETECTION_TYPES class + -- @type DETECTION_TYPES + -- @extends #DETECTION_BASE + DETECTION_TYPES = { + ClassName = "DETECTION_TYPES", + DetectionRange = nil, + } + + --- DETECTION_TYPES constructor. + -- @param Functional.Detection#DETECTION_TYPES self + -- @param Core.Set#SET_GROUP DetectionSetGroup The @{Set} of GROUPs in the Recce role. + -- @return Functional.Detection#DETECTION_TYPES self + function DETECTION_TYPES:New( DetectionSetGroup ) + + -- Inherits from DETECTION_BASE + local self = BASE:Inherit( self, DETECTION_BASE:New( DetectionSetGroup ) ) -- #DETECTION_TYPES + + self._SmokeDetectedUnits = false + self._FlareDetectedUnits = false + self._SmokeDetectedZones = false + self._FlareDetectedZones = false + + return self + end + + --- Adds a new DetectedItem to the DetectedItems list. + -- The DetectedItem is a table and contains a SET_UNIT in the field Set. + -- @param #DETECTION_TYPES self + -- @param #string TypeName + -- @return #DETECTION_TYPES.DetectedItem + function DETECTION_TYPES:AddDetectedItem( TypeName ) + + local DetectedItem = {} + DetectedItem.Set = SET_UNIT:New() + + self.DetectedItems[TypeName] = DetectedItem + + return DetectedItem + end + + --- Removes an existing DetectedItem from the DetectedItems list. + -- The DetectedItem is a table and contains a SET_UNIT in the field Set. + -- @param #DETECTION_TYPES self + -- @param #string TypeName + function DETECTION_TYPES:RemoveDetectedItem( TypeName ) + + self.DetectedItems[TypeName] = nil + end + + --- Get the amount of SETs with detected objects. + -- @param #DETECTION_TYPES self + -- @return #number Count + function DETECTION_TYPES:GetDetectedItemsCount() + + local DetectedCount = 0 + return DetectedCount + end + + --- Get a detected item using a given numeric index. + -- @param #DETECTION_TYPES self + -- @param #string TypeName + -- @return DETECTION_TYPES.DetectedItem + function DETECTION_TYPES:GetDetectedItem( TypeName ) + + local DetectedItem = self.DetectedItems[TypeName] + if DetectedItem then + return DetectedItem + end + + return nil + end + + --- Get the @{Set#SET_UNIT} of a detecttion area using a given numeric index. + -- @param #DETECTION_TYPES self + -- @param #string TypeName + -- @return Core.Set#SET_UNIT DetectedSet + function DETECTION_TYPES:GetDetectedSet( TypeName ) + + local DetectedItem = self:GetDetectedItem( TypeName ) + local DetectedSetUnit = DetectedItem.Set + if DetectedSetUnit then + return DetectedSetUnit + end + + return nil + end + + --- Create the DetectedItems list from the DetectedObjects table. + -- For each DetectedItem, a one field array is created containing the Unit detected. + -- @param #DETECTION_TYPES self + -- @return #DETECTION_TYPES self + function DETECTION_TYPES:CreateDetectionSets() + self:F2( #self.DetectedObjects ) + + self.DetectedItems = {} + + for DetectedUnitName, DetectedObjectData in pairs( self.DetectedObjects ) do + + self:E( { "Detected Unit #", DetectedUnitName } ) + + local DetectedUnit = UNIT:FindByName( DetectedUnitName ) -- Wrapper.Unit#UNIT + + if DetectedUnit then + + local DetectedTypeName = DetectedUnit:GetTypeName() + local DetectedItem = self:GetDetectedItem( DetectedTypeName ) + if not DetectedItem then + DetectedItem = self:AddDetectedItem( DetectedTypeName ) + DetectedItem.Type = DetectedUnit:GetTypeName() + end + + DetectedItem.Set:AddUnit( DetectedUnit ) + end + end + end + + --- Report summary of a DetectedItem using a given numeric index. + -- @param #DETECTION_TYPES self + -- @param Index + -- @return #string + function DETECTION_TYPES:DetectedItemReportSummary( DetectedTypeName ) + self:F( DetectedTypeName ) + + local DetectedItem = self:GetDetectedItem( DetectedTypeName ) + local DetectedSet = self:GetDetectedSet( DetectedTypeName ) + + self:T( DetectedItem ) + if DetectedItem then + + local ThreatLevelA2G = DetectedSet:CalculateThreatLevelA2G() + + local ReportSummary = string.format( + "Type #%s - Threat Level [%s] (%2d)", + DetectedItem.Type, + string.rep( "■", ThreatLevelA2G ), + ThreatLevelA2G + ) + self:T( ReportSummary ) + + return ReportSummary + end + end + + --- Report detailed of a detection result. + -- @param #DETECTION_TYPES self + -- @return #string + function DETECTION_TYPES:DetectedReportDetailed() + self:F() + + local Report = REPORT:New( "Detected types:" ) + for DetectedItemTypeName, DetectedItem in pairs( self.DetectedItems ) do + local DetectedItem = DetectedItem -- #DETECTION_BASE.DetectedItem + local ReportSummary = self:DetectedItemReportSummary( DetectedItemTypeName ) + Report:Add( ReportSummary ) + end + + local ReportText = Report:Text() + + return ReportText end end +do -- DETECTION_AREAS + + --- DETECTION_AREAS class + -- @type DETECTION_AREAS + -- @field Dcs.DCSTypes#Distance DetectionZoneRange The range till which targets are grouped upon the first detected target. + -- @field #DETECTION_AREAS.DetectedItems DetectedItems A list of areas containing the set of @{Unit}s, @{Zone}s, the center @{Unit} within the zone, and ID of each area that was detected within a DetectionZoneRange. + -- @extends #DETECTION_BASE + DETECTION_AREAS = { + ClassName = "DETECTION_AREAS", + DetectionZoneRange = nil, + } + + --- @type DETECTION_AREAS.DetectedItems + -- @list <#DETECTION_AREAS.DetectedItem> + + --- @type DETECTION_AREAS.DetectedItem + -- @field Core.Set#SET_UNIT Set -- The Set of Units in the detected area. + -- @field Core.Zone#ZONE_UNIT Zone -- The Zone of the detected area. + -- @field #boolean Changed Documents if the detected area has changes. + -- @field #table Changes A list of the changes reported on the detected area. (It is up to the user of the detected area to consume those changes). + -- @field #number AreaID -- The identifier of the detected area. + -- @field #boolean FriendliesNearBy Indicates if there are friendlies within the detected area. + -- @field Wrapper.Unit#UNIT NearestFAC The nearest FAC near the Area. + + + --- DETECTION_AREAS constructor. + -- @param Functional.Detection#DETECTION_AREAS self + -- @param Core.Set#SET_GROUP DetectionSetGroup The @{Set} of GROUPs in the Forward Air Controller role. + -- @param Dcs.DCSTypes#Distance DetectionZoneRange The range till which targets are grouped upon the first detected target. + -- @return Functional.Detection#DETECTION_AREAS self + function DETECTION_AREAS:New( DetectionSetGroup, DetectionZoneRange ) + + -- Inherits from DETECTION_BASE + local self = BASE:Inherit( self, DETECTION_BASE:New( DetectionSetGroup ) ) + + self.DetectionZoneRange = DetectionZoneRange + + self._SmokeDetectedUnits = false + self._FlareDetectedUnits = false + self._SmokeDetectedZones = false + self._FlareDetectedZones = false + + return self + end + + --- Add a detected @{#DETECTION_AREAS.DetectedItem}. + -- @param Core.Set#SET_UNIT Set -- The Set of Units in the detected area. + -- @param Core.Zone#ZONE_UNIT Zone -- The Zone of the detected area. + -- @return #DETECTION_AREAS.DetectedItem DetectedItem + function DETECTION_AREAS:AddDetectedItem( Set, Zone ) + self:F( { Set, Zone } ) + -- local Detected = self:GetDetectedItems() + + local DetectedItem = {} + DetectedItem.Set = Set + DetectedItem.Zone = Zone + DetectedItem.Removed = false + DetectedItem.AreaID = #self.DetectedItems+1 + + self:E( { #self.DetectedItems, DetectedItem } ) + + table.insert( self.DetectedItems, DetectedItem ) + + return DetectedItem + + end + + --- Remove a detected @{#DETECTION_AREAS.DetectedItem} with a given Index. + -- @param #DETECTION_AREAS self + -- @param #number Index The DetectedItemIndex of the DetectedItems list are to be removed. + -- @return #nil + function DETECTION_AREAS:RemoveDetectedItem( DetectedItemIndex ) + local DetectedItems = self:GetDetectedItems() + local DetectedCount = self:GetDetectedItemsCount() + local DetectedArea = self:GetDetectedItem( Index ) + DetectedArea[Index] = nil + return nil + end + + --- Report summary of a detected item using a given numeric index. + -- @param #DETECTION_AREAS self + -- @param Index + -- @return #string + function DETECTION_AREAS:DetectedItemReportSummary( Index ) + self:F( Index ) + + local DetectedItem = self:GetDetectedItem( Index ) + if DetectedItem then + local DetectedSet = self:GetDetectedSet( Index ) + local ThreatLevelA2G = self:GetTreatLevelA2G( DetectedItem ) + local ReportSummaryItem + + local DetectedZone = self:GetDetectedZone( Index ) + local DetectedItemPointVec3 = DetectedZone:GetPointVec3() + local DetectedAreaPointLL = DetectedItemPointVec3:ToStringLL( 3, true ) + local ReportSummary = string.format( + "Area #%d - %s - Threat Level [%s] (%2d)", + Index, + DetectedAreaPointLL, + string.rep( "■", ThreatLevelA2G ), + ThreatLevelA2G + ) + + return ReportSummary + end + + return nil + end + + --- Get the @{Zone#ZONE_UNIT} of a detection area using a given numeric index. + -- @param #DETECTION_AREAS self + -- @param #number Index + -- @return Core.Zone#ZONE_UNIT DetectedZone + function DETECTION_AREAS:GetDetectedZone( Index ) + + local DetectedZone = self.DetectedItems[Index].Zone + if DetectedZone then + return DetectedZone + end + + return nil + end + + --- Background worker function to determine if there are friendlies nearby ... + -- @param #DETECTION_AREAS self + -- @param Wrapper.Unit#UNIT ReportUnit + function DETECTION_AREAS:ReportFriendliesNearBy( ReportGroupData ) + self:F2() + + local DetectedArea = ReportGroupData.DetectedArea -- Functional.Detection#DETECTION_AREAS.DetectedArea + local DetectedSet = ReportGroupData.DetectedArea.Set + local DetectedZone = ReportGroupData.DetectedArea.Zone + local DetectedZoneUnit = DetectedZone.ZoneUNIT + + DetectedArea.FriendliesNearBy = false + + local SphereSearch = { + id = world.VolumeType.SPHERE, + params = { + point = DetectedZoneUnit:GetVec3(), + radius = 6000, + } + + } + + --- @param Dcs.DCSWrapper.Unit#Unit FoundDCSUnit + -- @param Wrapper.Group#GROUP ReportGroup + -- @param Set#SET_GROUP ReportSetGroup + local FindNearByFriendlies = function( FoundDCSUnit, ReportGroupData ) + + local DetectedArea = ReportGroupData.DetectedArea -- Functional.Detection#DETECTION_AREAS.DetectedArea + local DetectedSet = ReportGroupData.DetectedArea.Set + local DetectedZone = ReportGroupData.DetectedArea.Zone + local DetectedZoneUnit = DetectedZone.ZoneUNIT -- Wrapper.Unit#UNIT + local ReportSetGroup = ReportGroupData.ReportSetGroup + + local EnemyCoalition = DetectedZoneUnit:GetCoalition() + + local FoundUnitCoalition = FoundDCSUnit:getCoalition() + local FoundUnitName = FoundDCSUnit:getName() + local FoundUnitGroupName = FoundDCSUnit:getGroup():getName() + local EnemyUnitName = DetectedZoneUnit:GetName() + local FoundUnitInReportSetGroup = ReportSetGroup:FindGroup( FoundUnitGroupName ) ~= nil + + self:T3( { "Friendlies search:", FoundUnitName, FoundUnitCoalition, EnemyUnitName, EnemyCoalition, FoundUnitInReportSetGroup } ) + + if FoundUnitCoalition ~= EnemyCoalition and FoundUnitInReportSetGroup == false then + DetectedArea.FriendliesNearBy = true + return false + end + + return true + end + + world.searchObjects( Object.Category.UNIT, SphereSearch, FindNearByFriendlies, ReportGroupData ) + + end + + --- Returns if there are friendlies nearby the FAC units ... + -- @param #DETECTION_AREAS self + -- @return #boolean trhe if there are friendlies nearby + function DETECTION_AREAS:IsFriendliesNearBy( DetectedArea ) + + self:T3( DetectedArea.FriendliesNearBy ) + return DetectedArea.FriendliesNearBy or false + end + + --- Calculate the maxium A2G threat level of the DetectedArea. + -- @param #DETECTION_AREAS self + -- @param #DETECTION_AREAS.DetectedArea DetectedArea + function DETECTION_AREAS:CalculateThreatLevelA2G( DetectedArea ) + + local MaxThreatLevelA2G = 0 + for UnitName, UnitData in pairs( DetectedArea.Set:GetSet() ) do + local ThreatUnit = UnitData -- Wrapper.Unit#UNIT + local ThreatLevelA2G = ThreatUnit:GetThreatLevel() + if ThreatLevelA2G > MaxThreatLevelA2G then + MaxThreatLevelA2G = ThreatLevelA2G + end + end + + self:T3( MaxThreatLevelA2G ) + DetectedArea.MaxThreatLevelA2G = MaxThreatLevelA2G + + end + + --- Find the nearest FAC of the DetectedArea. + -- @param #DETECTION_AREAS self + -- @param #DETECTION_AREAS.DetectedArea DetectedArea + -- @return Wrapper.Unit#UNIT The nearest FAC unit + function DETECTION_AREAS:NearestFAC( DetectedArea ) + + local NearestFAC = nil + local MinDistance = 1000000000 -- Units are not further than 1000000 km away from an area :-) + + for FACGroupName, FACGroupData in pairs( self.DetectionSetGroup:GetSet() ) do + for FACUnit, FACUnitData in pairs( FACGroupData:GetUnits() ) do + local FACUnit = FACUnitData -- Wrapper.Unit#UNIT + if FACUnit:IsActive() then + local Vec3 = FACUnit:GetVec3() + local PointVec3 = POINT_VEC3:NewFromVec3( Vec3 ) + local Distance = PointVec3:Get2DDistance(POINT_VEC3:NewFromVec3( FACUnit:GetVec3() ) ) + if Distance < MinDistance then + MinDistance = Distance + NearestFAC = FACUnit + end + end + end + end + + DetectedArea.NearestFAC = NearestFAC + + end + + --- Returns the A2G threat level of the units in the DetectedArea + -- @param #DETECTION_AREAS self + -- @param #DETECTION_AREAS.DetectedArea DetectedArea + -- @return #number a scale from 0 to 10. + function DETECTION_AREAS:GetTreatLevelA2G( DetectedArea ) + + self:T3( DetectedArea.MaxThreatLevelA2G ) + return DetectedArea.MaxThreatLevelA2G + end + + + + --- Smoke the detected units + -- @param #DETECTION_AREAS self + -- @return #DETECTION_AREAS self + function DETECTION_AREAS:SmokeDetectedUnits() + self:F2() + + self._SmokeDetectedUnits = true + return self + end + + --- Flare the detected units + -- @param #DETECTION_AREAS self + -- @return #DETECTION_AREAS self + function DETECTION_AREAS:FlareDetectedUnits() + self:F2() + + self._FlareDetectedUnits = true + return self + end + + --- Smoke the detected zones + -- @param #DETECTION_AREAS self + -- @return #DETECTION_AREAS self + function DETECTION_AREAS:SmokeDetectedZones() + self:F2() + + self._SmokeDetectedZones = true + return self + end + + --- Flare the detected zones + -- @param #DETECTION_AREAS self + -- @return #DETECTION_AREAS self + function DETECTION_AREAS:FlareDetectedZones() + self:F2() + + self._FlareDetectedZones = true + return self + end + + --- Add a change to the detected zone. + -- @param #DETECTION_AREAS self + -- @param #DETECTION_AREAS.DetectedArea DetectedArea + -- @param #string ChangeCode + -- @return #DETECTION_AREAS self + function DETECTION_AREAS:AddChangeArea( DetectedArea, ChangeCode, AreaUnitType ) + + DetectedArea.Changed = true + local AreaID = DetectedArea.AreaID + + DetectedArea.Changes = DetectedArea.Changes or {} + DetectedArea.Changes[ChangeCode] = DetectedArea.Changes[ChangeCode] or {} + DetectedArea.Changes[ChangeCode].AreaID = AreaID + DetectedArea.Changes[ChangeCode].AreaUnitType = AreaUnitType + + self:T( { "Change on Detection Area:", DetectedArea.AreaID, ChangeCode, AreaUnitType } ) + + return self + end + + + --- Add a change to the detected zone. + -- @param #DETECTION_AREAS self + -- @param #DETECTION_AREAS.DetectedArea DetectedArea + -- @param #string ChangeCode + -- @param #string ChangeUnitType + -- @return #DETECTION_AREAS self + function DETECTION_AREAS:AddChangeUnit( DetectedArea, ChangeCode, ChangeUnitType ) + + DetectedArea.Changed = true + local AreaID = DetectedArea.AreaID + + DetectedArea.Changes = DetectedArea.Changes or {} + DetectedArea.Changes[ChangeCode] = DetectedArea.Changes[ChangeCode] or {} + DetectedArea.Changes[ChangeCode][ChangeUnitType] = DetectedArea.Changes[ChangeCode][ChangeUnitType] or 0 + DetectedArea.Changes[ChangeCode][ChangeUnitType] = DetectedArea.Changes[ChangeCode][ChangeUnitType] + 1 + DetectedArea.Changes[ChangeCode].AreaID = AreaID + + self:T( { "Change on Detection Area:", DetectedArea.AreaID, ChangeCode, ChangeUnitType } ) + + return self + end + + --- Make text documenting the changes of the detected zone. + -- @param #DETECTION_AREAS self + -- @param #DETECTION_AREAS.DetectedArea DetectedArea + -- @return #string The Changes text + function DETECTION_AREAS:GetChangeText( DetectedArea ) + self:F( DetectedArea ) + + local MT = {} + + for ChangeCode, ChangeData in pairs( DetectedArea.Changes ) do + + if ChangeCode == "AA" then + MT[#MT+1] = "Detected new area " .. ChangeData.AreaID .. ". The center target is a " .. ChangeData.AreaUnitType .. "." + end + + if ChangeCode == "RAU" then + MT[#MT+1] = "Changed area " .. ChangeData.AreaID .. ". Removed the center target." + end + + if ChangeCode == "AAU" then + MT[#MT+1] = "Changed area " .. ChangeData.AreaID .. ". The new center target is a " .. ChangeData.AreaUnitType "." + end + + if ChangeCode == "RA" then + MT[#MT+1] = "Removed old area " .. ChangeData.AreaID .. ". No more targets in this area." + end + + if ChangeCode == "AU" then + local MTUT = {} + for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do + if ChangeUnitType ~= "AreaID" then + MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType + end + end + MT[#MT+1] = "Detected for area " .. ChangeData.AreaID .. " new target(s) " .. table.concat( MTUT, ", " ) .. "." + end + + if ChangeCode == "RU" then + local MTUT = {} + for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do + if ChangeUnitType ~= "AreaID" then + MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType + end + end + MT[#MT+1] = "Removed for area " .. ChangeData.AreaID .. " invisible or destroyed target(s) " .. table.concat( MTUT, ", " ) .. "." + end + + end + + return table.concat( MT, "\n" ) + + end + + + --- Accepts changes from the detected zone. + -- @param #DETECTION_AREAS self + -- @param #DETECTION_AREAS.DetectedArea DetectedArea + -- @return #DETECTION_AREAS self + function DETECTION_AREAS:AcceptChanges( DetectedArea ) + + DetectedArea.Changed = false + DetectedArea.Changes = {} + + return self + end + + + --- Make a DetectionSet table. This function will be overridden in the derived clsses. + -- @param #DETECTION_AREAS self + -- @return #DETECTION_AREAS self + function DETECTION_AREAS:CreateDetectionSets() + self:F2() + + -- First go through all detected sets, and check if there are new detected units, match all existing detected units and identify undetected units. + -- Regroup when needed, split groups when needed. + for DetectedAreaID, DetectedAreaData in ipairs( self.DetectedItems ) do + + local DetectedArea = DetectedAreaData -- #DETECTION_AREAS.DetectedArea + if DetectedArea then + + local DetectedSet = DetectedArea.Set + + local AreaExists = false -- This flag will determine of the detected area is still existing. + + -- First test if the center unit is detected in the detection area. + self:T3( DetectedArea.Zone.ZoneUNIT.UnitName ) + local DetectedZoneObject = self:GetDetectedObject( DetectedArea.Zone.ZoneUNIT.UnitName ) + self:T3( { "Detecting Zone Object", DetectedArea.AreaID, DetectedArea.Zone, DetectedZoneObject } ) + + if DetectedZoneObject then + + --self:IdentifyDetectedObject( DetectedZoneObject ) + AreaExists = true + + + + else + -- The center object of the detected area has not been detected. Find an other unit of the set to become the center of the area. + -- First remove the center unit from the set. + DetectedSet:RemoveUnitsByName( DetectedArea.Zone.ZoneUNIT.UnitName ) + + self:AddChangeArea( DetectedArea, 'RAU', "Dummy" ) + + -- Then search for a new center area unit within the set. Note that the new area unit candidate must be within the area range. + for DetectedUnitName, DetectedUnitData in pairs( DetectedSet:GetSet() ) do + + local DetectedUnit = DetectedUnitData -- Wrapper.Unit#UNIT + local DetectedObject = self:GetDetectedObject( DetectedUnit.UnitName ) + + -- The DetectedObject can be nil when the DetectedUnit is not alive anymore or it is not in the DetectedObjects map. + -- If the DetectedUnit was already identified, DetectedObject will be nil. + if DetectedObject then + self:IdentifyDetectedObject( DetectedObject ) + AreaExists = true + + -- Assign the Unit as the new center unit of the detected area. + DetectedArea.Zone = ZONE_UNIT:New( DetectedUnit:GetName(), DetectedUnit, self.DetectionZoneRange ) + + self:AddChangeArea( DetectedArea, "AAU", DetectedArea.Zone.ZoneUNIT:GetTypeName() ) + + -- We don't need to add the DetectedObject to the area set, because it is already there ... + break + end + end + end + + -- Now we've determined the center unit of the area, now we can iterate the units in the detected area. + -- Note that the position of the area may have moved due to the center unit repositioning. + -- If no center unit was identified, then the detected area does not exist anymore and should be deleted, as there are no valid units that can be the center unit. + if AreaExists then + + -- ok, we found the center unit of the area, now iterate through the detected area set and see which units are still within the center unit zone ... + -- Those units within the zone are flagged as Identified. + -- If a unit was not found in the set, remove it from the set. This may be added later to other existing or new sets. + for DetectedUnitName, DetectedUnitData in pairs( DetectedSet:GetSet() ) do + + local DetectedUnit = DetectedUnitData -- Wrapper.Unit#UNIT + local DetectedObject = nil + if DetectedUnit:IsAlive() then + --self:E(DetectedUnit:GetName()) + DetectedObject = self:GetDetectedObject( DetectedUnit:GetName() ) + end + if DetectedObject then + + -- Check if the DetectedUnit is within the DetectedArea.Zone + if DetectedUnit:IsInZone( DetectedArea.Zone ) then + + -- Yes, the DetectedUnit is within the DetectedArea.Zone, no changes, DetectedUnit can be kept within the Set. + self:IdentifyDetectedObject( DetectedObject ) + + else + -- No, the DetectedUnit is not within the DetectedArea.Zone, remove DetectedUnit from the Set. + DetectedSet:Remove( DetectedUnitName ) + self:AddChangeUnit( DetectedArea, "RU", DetectedUnit:GetTypeName() ) + end + + else + -- There was no DetectedObject, remove DetectedUnit from the Set. + self:AddChangeUnit( DetectedArea, "RU", "destroyed target" ) + DetectedSet:Remove( DetectedUnitName ) + + -- The DetectedObject has been identified, because it does not exist ... + -- self:IdentifyDetectedObject( DetectedObject ) + end + end + else + self:RemoveDetectedArea( DetectedAreaID ) + self:AddChangeArea( DetectedArea, "RA" ) + end + end + end + + -- We iterated through the existing detection areas and: + -- - We checked which units are still detected in each detection area. Those units were flagged as Identified. + -- - We recentered the detection area to new center units where it was needed. + -- + -- Now we need to loop through the unidentified detected units and see where they belong: + -- - They can be added to a new detection area and become the new center unit. + -- - They can be added to a new detection area. + for DetectedUnitName, DetectedObjectData in pairs( self.DetectedObjects ) do + + local DetectedObject = self:GetDetectedObject( DetectedUnitName ) + + if DetectedObject then + + -- We found an unidentified unit outside of any existing detection area. + local DetectedUnit = UNIT:FindByName( DetectedUnitName ) -- Wrapper.Unit#UNIT + + local AddedToDetectionArea = false + + for DetectedAreaID, DetectedAreaData in ipairs( self.DetectedItems ) do + + local DetectedArea = DetectedAreaData -- #DETECTION_AREAS.DetectedArea + if DetectedArea then + self:T( "Detection Area #" .. DetectedArea.AreaID ) + local DetectedSet = DetectedArea.Set + if not self:IsDetectedObjectIdentified( DetectedObject ) and DetectedUnit:IsInZone( DetectedArea.Zone ) then + self:IdentifyDetectedObject( DetectedObject ) + DetectedSet:AddUnit( DetectedUnit ) + AddedToDetectionArea = true + self:AddChangeUnit( DetectedArea, "AU", DetectedUnit:GetTypeName() ) + end + end + end + + if AddedToDetectionArea == false then + + -- New detection area + local DetectedArea = self:AddDetectedItem( + SET_UNIT:New(), + ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange ) + ) + --self:E( DetectedArea.Zone.ZoneUNIT.UnitName ) + DetectedArea.Set:AddUnit( DetectedUnit ) + self:AddChangeArea( DetectedArea, "AA", DetectedUnit:GetTypeName() ) + end + end + end + + -- Now all the tests should have been build, now make some smoke and flares... + -- We also report here the friendlies within the detected areas. + + for DetectedAreaID, DetectedAreaData in ipairs( self.DetectedItems ) do + + local DetectedArea = DetectedAreaData -- #DETECTION_AREAS.DetectedArea + local DetectedSet = DetectedArea.Set + local DetectedZone = DetectedArea.Zone + + self:ReportFriendliesNearBy( { DetectedArea = DetectedArea, ReportSetGroup = self.DetectionSetGroup } ) -- Fill the Friendlies table + self:CalculateThreatLevelA2G( DetectedArea ) -- Calculate A2G threat level + self:NearestFAC( DetectedArea ) + + if DETECTION_AREAS._SmokeDetectedUnits or self._SmokeDetectedUnits then + DetectedZone.ZoneUNIT:SmokeRed() + end + DetectedSet:ForEachUnit( + --- @param Wrapper.Unit#UNIT DetectedUnit + function( DetectedUnit ) + if DetectedUnit:IsAlive() then + self:T( "Detected Set #" .. DetectedArea.AreaID .. ":" .. DetectedUnit:GetName() ) + if DETECTION_AREAS._FlareDetectedUnits or self._FlareDetectedUnits then + DetectedUnit:FlareGreen() + end + if DETECTION_AREAS._SmokeDetectedUnits or self._SmokeDetectedUnits then + DetectedUnit:SmokeGreen() + end + end + end + ) + if DETECTION_AREAS._FlareDetectedZones or self._FlareDetectedZones then + DetectedZone:FlareZone( SMOKECOLOR.White, 30, math.random( 0,90 ) ) + end + if DETECTION_AREAS._SmokeDetectedZones or self._SmokeDetectedZones then + DetectedZone:SmokeZone( SMOKECOLOR.White, 30 ) + end + end + + end + +end diff --git a/Moose Development/Moose/Functional/Escort.lua b/Moose Development/Moose/Functional/Escort.lua index 2c1b504e5..20fde20a3 100644 --- a/Moose Development/Moose/Functional/Escort.lua +++ b/Moose Development/Moose/Functional/Escort.lua @@ -84,7 +84,7 @@ -- -- ESCORT initialization methods. -- ============================== --- The following menus are created within the RADIO MENU of an active unit hosted by a player: +-- The following menus are created within the RADIO MENU (F10) of an active unit hosted by a player: -- -- * @{#ESCORT.MenuFollowAt}: Creates a menu to make the escort follow the client. -- * @{#ESCORT.MenuHoldAtEscortPosition}: Creates a menu to hold the escort at its current position. @@ -128,6 +128,7 @@ -- @Field Dcs.DCSTypes#AI.Option.Air.val.ROE OptionROE Which ROE is set to the EscortGroup. -- @field Dcs.DCSTypes#AI.Option.Air.val.REACTION_ON_THREAT OptionReactionOnThreat Which REACTION_ON_THREAT is set to the EscortGroup. -- @field Core.Menu#MENU_CLIENT EscortMenuResumeMission +-- @field Functional.Detection#DETECTION_BASE Detection ESCORT = { ClassName = "ESCORT", EscortName = nil, -- The Escort Name @@ -176,14 +177,22 @@ ESCORT = { -- -- Now use these 2 objects to construct the new EscortPlanes object. -- EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the mission. You are escorted by a plane with code name 'Desert', which can be instructed through the F10 radio menu." ) function ESCORT:New( EscortClient, EscortGroup, EscortName, EscortBriefing ) - local self = BASE:Inherit( self, BASE:New() ) + + local self = BASE:Inherit( self, BASE:New() ) -- #ESCORT self:F( { EscortClient, EscortGroup, EscortName } ) self.EscortClient = EscortClient -- Wrapper.Client#CLIENT self.EscortGroup = EscortGroup -- Wrapper.Group#GROUP self.EscortName = EscortName self.EscortBriefing = EscortBriefing - + + self.EscortSetGroup = SET_GROUP:New() + self.EscortSetGroup:AddObject( self.EscortGroup ) + self.EscortSetGroup:Flush() + self.Detection = DETECTION_UNITS:New( self.EscortSetGroup, 15000 ) + + self.EscortGroup.Detection = self.Detection + -- Set EscortGroup known at EscortClient. if not self.EscortClient._EscortGroups then self.EscortClient._EscortGroups = {} @@ -193,7 +202,7 @@ function ESCORT:New( EscortClient, EscortGroup, EscortName, EscortBriefing ) self.EscortClient._EscortGroups[EscortGroup:GetName()] = {} self.EscortClient._EscortGroups[EscortGroup:GetName()].EscortGroup = self.EscortGroup self.EscortClient._EscortGroups[EscortGroup:GetName()].EscortName = self.EscortName - self.EscortClient._EscortGroups[EscortGroup:GetName()].Targets = {} + self.EscortClient._EscortGroups[EscortGroup:GetName()].Detection = self.EscortGroup.Detection end self.EscortMenu = MENU_CLIENT:New( self.EscortClient, self.EscortName ) @@ -218,14 +227,29 @@ function ESCORT:New( EscortClient, EscortGroup, EscortName, EscortBriefing ) self.FollowDistance = 100 self.CT1 = 0 self.GT1 = 0 + self.FollowScheduler, self.FollowSchedule = SCHEDULER:New( self, self._FollowScheduler, {}, 1, .5, .01 ) self.FollowScheduler:Stop( self.FollowSchedule ) self.EscortMode = ESCORT.MODE.MISSION - + + return self end +--- Set a Detection method for the EscortClient to be reported upon. +-- Detection methods are based on the derived classes from DETECTION_BASE. +-- @param #ESCORT self +-- @param Function.Detection#DETECTION_BASE Detection +function ESCORT:SetDetection( Detection ) + + self.Detection = Detection + self.EscortGroup.Detection = self.Detection + self.EscortClient._EscortGroups[self.EscortGroup:GetName()].Detection = self.EscortGroup.Detection + + +end + --- This function is for test, it will put on the frequency of the FollowScheduler a red smoke at the direction vector calculated for the escort to fly to. -- This allows to visualize where the escort is flying to. -- @param #ESCORT self @@ -283,7 +307,7 @@ function ESCORT:MenuFollowAt( Distance ) self.EscortMenuJoinUpAndFollow = {} end - self.EscortMenuJoinUpAndFollow[#self.EscortMenuJoinUpAndFollow+1] = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Follow at " .. Distance, self.EscortMenuReportNavigation, ESCORT._JoinUpAndFollow, { ParamSelf = self, ParamDistance = Distance } ) + self.EscortMenuJoinUpAndFollow[#self.EscortMenuJoinUpAndFollow+1] = MENU_CLIENT_COMMAND:New( self.EscortClient, "Join-Up and Follow at " .. Distance, self.EscortMenuReportNavigation, ESCORT._JoinUpAndFollow, self, Distance ) self.EscortMode = ESCORT.MODE.FOLLOW end @@ -341,11 +365,10 @@ function ESCORT:MenuHoldAtEscortPosition( Height, Seconds, MenuTextFormat ) MenuText, self.EscortMenuHold, ESCORT._HoldPosition, - { ParamSelf = self, - ParamOrbitGroup = self.EscortGroup, - ParamHeight = Height, - ParamSeconds = Seconds - } + self, + self.EscortGroup, + Height, + Seconds ) end @@ -462,9 +485,8 @@ function ESCORT:MenuScanForTargets( Height, Seconds, MenuTextFormat ) MenuText, self.EscortMenuScan, ESCORT._ScanTargets, - { ParamSelf = self, - ParamScanDuration = 30 - } + self, + 30 ) end @@ -494,11 +516,11 @@ function ESCORT:MenuFlare( MenuTextFormat ) end if not self.EscortMenuFlare then - self.EscortMenuFlare = MENU_CLIENT:New( self.EscortClient, MenuText, self.EscortMenuReportNavigation, ESCORT._Flare, { ParamSelf = self } ) - self.EscortMenuFlareGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = FLARECOLOR.Green, ParamMessage = "Released a green flare!" } ) - self.EscortMenuFlareRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = FLARECOLOR.Red, ParamMessage = "Released a red flare!" } ) - self.EscortMenuFlareWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = FLARECOLOR.White, ParamMessage = "Released a white flare!" } ) - self.EscortMenuFlareYellow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release yellow flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = FLARECOLOR.Yellow, ParamMessage = "Released a yellow flare!" } ) + self.EscortMenuFlare = MENU_CLIENT:New( self.EscortClient, MenuText, self.EscortMenuReportNavigation, ESCORT._Flare, self ) + self.EscortMenuFlareGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green flare", self.EscortMenuFlare, ESCORT._Flare, self, FLARECOLOR.Green, "Released a green flare!" ) + self.EscortMenuFlareRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red flare", self.EscortMenuFlare, ESCORT._Flare, self, FLARECOLOR.Red, "Released a red flare!" ) + self.EscortMenuFlareWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white flare", self.EscortMenuFlare, ESCORT._Flare, self, FLARECOLOR.White, "Released a white flare!" ) + self.EscortMenuFlareYellow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release yellow flare", self.EscortMenuFlare, ESCORT._Flare, self, FLARECOLOR.Yellow, "Released a yellow flare!" ) end return self @@ -527,12 +549,12 @@ function ESCORT:MenuSmoke( MenuTextFormat ) end if not self.EscortMenuSmoke then - self.EscortMenuSmoke = MENU_CLIENT:New( self.EscortClient, "Smoke", self.EscortMenuReportNavigation, ESCORT._Smoke, { ParamSelf = self } ) - self.EscortMenuSmokeGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Green, ParamMessage = "Releasing green smoke!" } ) - self.EscortMenuSmokeRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Red, ParamMessage = "Releasing red smoke!" } ) - self.EscortMenuSmokeWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.White, ParamMessage = "Releasing white smoke!" } ) - self.EscortMenuSmokeOrange = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release orange smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Orange, ParamMessage = "Releasing orange smoke!" } ) - self.EscortMenuSmokeBlue = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release blue smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Blue, ParamMessage = "Releasing blue smoke!" } ) + self.EscortMenuSmoke = MENU_CLIENT:New( self.EscortClient, "Smoke", self.EscortMenuReportNavigation, ESCORT._Smoke, self ) + self.EscortMenuSmokeGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green smoke", self.EscortMenuSmoke, ESCORT._Smoke, self, SMOKECOLOR.Green, "Releasing green smoke!" ) + self.EscortMenuSmokeRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red smoke", self.EscortMenuSmoke, ESCORT._Smoke, self, SMOKECOLOR.Red, "Releasing red smoke!" ) + self.EscortMenuSmokeWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white smoke", self.EscortMenuSmoke, ESCORT._Smoke, self, SMOKECOLOR.White, "Releasing white smoke!" ) + self.EscortMenuSmokeOrange = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release orange smoke", self.EscortMenuSmoke, ESCORT._Smoke, self, SMOKECOLOR.Orange, "Releasing orange smoke!" ) + self.EscortMenuSmokeBlue = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release blue smoke", self.EscortMenuSmoke, ESCORT._Smoke, self, SMOKECOLOR.Blue, "Releasing blue smoke!" ) end end @@ -557,9 +579,9 @@ function ESCORT:MenuReportTargets( Seconds ) end -- Report Targets - self.EscortMenuReportNearbyTargetsNow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets now!", self.EscortMenuReportNearbyTargets, ESCORT._ReportNearbyTargetsNow, { ParamSelf = self } ) - self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets on", self.EscortMenuReportNearbyTargets, ESCORT._SwitchReportNearbyTargets, { ParamSelf = self, ParamReportTargets = true } ) - self.EscortMenuReportNearbyTargetsOff = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets off", self.EscortMenuReportNearbyTargets, ESCORT._SwitchReportNearbyTargets, { ParamSelf = self, ParamReportTargets = false, } ) + self.EscortMenuReportNearbyTargetsNow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets now!", self.EscortMenuReportNearbyTargets, ESCORT._ReportNearbyTargetsNow, self ) + self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets on", self.EscortMenuReportNearbyTargets, ESCORT._SwitchReportNearbyTargets, self, true ) + self.EscortMenuReportNearbyTargetsOff = MENU_CLIENT_COMMAND:New( self.EscortClient, "Report targets off", self.EscortMenuReportNearbyTargets, ESCORT._SwitchReportNearbyTargets, self, false ) -- Attack Targets self.EscortMenuAttackNearbyTargets = MENU_CLIENT:New( self.EscortClient, "Attack targets", self.EscortMenu ) @@ -596,16 +618,16 @@ function ESCORT:MenuROE( MenuTextFormat ) -- Rules of Engagement self.EscortMenuROE = MENU_CLIENT:New( self.EscortClient, "ROE", self.EscortMenu ) if self.EscortGroup:OptionROEHoldFirePossible() then - self.EscortMenuROEHoldFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Hold Fire", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROEHoldFire(), ParamMessage = "Holding weapons!" } ) + self.EscortMenuROEHoldFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Hold Fire", self.EscortMenuROE, ESCORT._ROE, self, self.EscortGroup:OptionROEHoldFire(), "Holding weapons!" ) end if self.EscortGroup:OptionROEReturnFirePossible() then - self.EscortMenuROEReturnFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Return Fire", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROEReturnFire(), ParamMessage = "Returning fire!" } ) + self.EscortMenuROEReturnFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Return Fire", self.EscortMenuROE, ESCORT._ROE, self, self.EscortGroup:OptionROEReturnFire(), "Returning fire!" ) end if self.EscortGroup:OptionROEOpenFirePossible() then - self.EscortMenuROEOpenFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Open Fire", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROEOpenFire(), ParamMessage = "Opening fire on designated targets!!" } ) + self.EscortMenuROEOpenFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Open Fire", self.EscortMenuROE, ESCORT._ROE, self, self.EscortGroup:OptionROEOpenFire(), "Opening fire on designated targets!!" ) end if self.EscortGroup:OptionROEWeaponFreePossible() then - self.EscortMenuROEWeaponFree = MENU_CLIENT_COMMAND:New( self.EscortClient, "Weapon Free", self.EscortMenuROE, ESCORT._ROE, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROEWeaponFree(), ParamMessage = "Opening fire on targets of opportunity!" } ) + self.EscortMenuROEWeaponFree = MENU_CLIENT_COMMAND:New( self.EscortClient, "Weapon Free", self.EscortMenuROE, ESCORT._ROE, self, self.EscortGroup:OptionROEWeaponFree(), "Opening fire on targets of opportunity!" ) end end @@ -625,16 +647,16 @@ function ESCORT:MenuEvasion( MenuTextFormat ) -- Reaction to Threats self.EscortMenuEvasion = MENU_CLIENT:New( self.EscortClient, "Evasion", self.EscortMenu ) if self.EscortGroup:OptionROTNoReactionPossible() then - self.EscortMenuEvasionNoReaction = MENU_CLIENT_COMMAND:New( self.EscortClient, "Fight until death", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROTNoReaction(), ParamMessage = "Fighting until death!" } ) + self.EscortMenuEvasionNoReaction = MENU_CLIENT_COMMAND:New( self.EscortClient, "Fight until death", self.EscortMenuEvasion, ESCORT._ROT, self, self.EscortGroup:OptionROTNoReaction(), "Fighting until death!" ) end if self.EscortGroup:OptionROTPassiveDefensePossible() then - self.EscortMenuEvasionPassiveDefense = MENU_CLIENT_COMMAND:New( self.EscortClient, "Use flares, chaff and jammers", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROTPassiveDefense(), ParamMessage = "Defending using jammers, chaff and flares!" } ) + self.EscortMenuEvasionPassiveDefense = MENU_CLIENT_COMMAND:New( self.EscortClient, "Use flares, chaff and jammers", self.EscortMenuEvasion, ESCORT._ROT, self, self.EscortGroup:OptionROTPassiveDefense(), "Defending using jammers, chaff and flares!" ) end if self.EscortGroup:OptionROTEvadeFirePossible() then - self.EscortMenuEvasionEvadeFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Evade enemy fire", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROTEvadeFire(), ParamMessage = "Evading on enemy fire!" } ) + self.EscortMenuEvasionEvadeFire = MENU_CLIENT_COMMAND:New( self.EscortClient, "Evade enemy fire", self.EscortMenuEvasion, ESCORT._ROT, self, self.EscortGroup:OptionROTEvadeFire(), "Evading on enemy fire!" ) end if self.EscortGroup:OptionROTVerticalPossible() then - self.EscortMenuOptionEvasionVertical = MENU_CLIENT_COMMAND:New( self.EscortClient, "Go below radar and evade fire", self.EscortMenuEvasion, ESCORT._ROT, { ParamSelf = self, ParamFunction = self.EscortGroup:OptionROTVertical(), ParamMessage = "Evading on enemy fire with vertical manoeuvres!" } ) + self.EscortMenuOptionEvasionVertical = MENU_CLIENT_COMMAND:New( self.EscortClient, "Go below radar and evade fire", self.EscortMenuEvasion, ESCORT._ROT, self, self.EscortGroup:OptionROTVertical(), "Evading on enemy fire with vertical manoeuvres!" ) end end end @@ -659,16 +681,12 @@ end --- @param #MENUPARAM MenuParam -function ESCORT._HoldPosition( MenuParam ) +function ESCORT:_HoldPosition( OrbitGroup, OrbitHeight, OrbitSeconds ) - local self = MenuParam.ParamSelf local EscortGroup = self.EscortGroup local EscortClient = self.EscortClient - local OrbitGroup = MenuParam.ParamOrbitGroup -- Wrapper.Group#GROUP local OrbitUnit = OrbitGroup:GetUnit(1) -- Wrapper.Unit#UNIT - local OrbitHeight = MenuParam.ParamHeight - local OrbitSeconds = MenuParam.ParamSeconds -- Not implemented yet self.FollowScheduler:Stop( self.FollowSchedule ) @@ -703,13 +721,12 @@ function ESCORT._HoldPosition( MenuParam ) end --- @param #MENUPARAM MenuParam -function ESCORT._JoinUpAndFollow( MenuParam ) +function ESCORT:_JoinUpAndFollow( Distance ) - local self = MenuParam.ParamSelf local EscortGroup = self.EscortGroup local EscortClient = self.EscortClient - self.Distance = MenuParam.ParamDistance + self.Distance = Distance self:JoinUpAndFollow( EscortGroup, EscortClient, self.Distance ) end @@ -737,38 +754,29 @@ function ESCORT:JoinUpAndFollow( EscortGroup, EscortClient, Distance ) end --- @param #MENUPARAM MenuParam -function ESCORT._Flare( MenuParam ) +function ESCORT:_Flare( Color, Message ) - local self = MenuParam.ParamSelf local EscortGroup = self.EscortGroup local EscortClient = self.EscortClient - local Color = MenuParam.ParamColor - local Message = MenuParam.ParamMessage - EscortGroup:GetUnit(1):Flare( Color ) EscortGroup:MessageToClient( Message, 10, EscortClient ) end --- @param #MENUPARAM MenuParam -function ESCORT._Smoke( MenuParam ) +function ESCORT:_Smoke( Color, Message ) - local self = MenuParam.ParamSelf local EscortGroup = self.EscortGroup local EscortClient = self.EscortClient - local Color = MenuParam.ParamColor - local Message = MenuParam.ParamMessage - EscortGroup:GetUnit(1):Smoke( Color ) EscortGroup:MessageToClient( Message, 10, EscortClient ) end --- @param #MENUPARAM MenuParam -function ESCORT._ReportNearbyTargetsNow( MenuParam ) +function ESCORT:_ReportNearbyTargetsNow() - local self = MenuParam.ParamSelf local EscortGroup = self.EscortGroup local EscortClient = self.EscortClient @@ -776,13 +784,12 @@ function ESCORT._ReportNearbyTargetsNow( MenuParam ) end -function ESCORT._SwitchReportNearbyTargets( MenuParam ) +function ESCORT:_SwitchReportNearbyTargets( ReportTargets ) - local self = MenuParam.ParamSelf local EscortGroup = self.EscortGroup local EscortClient = self.EscortClient - self.ReportTargets = MenuParam.ParamReportTargets + self.ReportTargets = ReportTargets if self.ReportTargets then if not self.ReportTargetsScheduler then @@ -795,34 +802,25 @@ function ESCORT._SwitchReportNearbyTargets( MenuParam ) end --- @param #MENUPARAM MenuParam -function ESCORT._ScanTargets( MenuParam ) +function ESCORT:_ScanTargets( ScanDuration ) - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup + local EscortGroup = self.EscortGroup -- Wrapper.Group#GROUP local EscortClient = self.EscortClient - local ScanDuration = MenuParam.ParamScanDuration - self.FollowScheduler:Stop( self.FollowSchedule ) if EscortGroup:IsHelicopter() then - SCHEDULER:New( EscortGroup, EscortGroup.PushTask, - { EscortGroup:TaskControlled( - EscortGroup:TaskOrbitCircle( 200, 20 ), - EscortGroup:TaskCondition( nil, nil, nil, nil, ScanDuration, nil ) - ) - }, - 1 - ) + EscortGroup:PushTask( + EscortGroup:TaskControlled( + EscortGroup:TaskOrbitCircle( 200, 20 ), + EscortGroup:TaskCondition( nil, nil, nil, nil, ScanDuration, nil ) + ), 1 ) elseif EscortGroup:IsAirPlane() then - SCHEDULER:New( EscortGroup, EscortGroup.PushTask, - { EscortGroup:TaskControlled( - EscortGroup:TaskOrbitCircle( 1000, 500 ), - EscortGroup:TaskCondition( nil, nil, nil, nil, ScanDuration, nil ) - ) - }, - 1 - ) + EscortGroup:PushTask( + EscortGroup:TaskControlled( + EscortGroup:TaskOrbitCircle( 1000, 500 ), + EscortGroup:TaskCondition( nil, nil, nil, nil, ScanDuration, nil ) + ), 1 ) end EscortGroup:MessageToClient( "Scanning targets for " .. ScanDuration .. " seconds.", ScanDuration, EscortClient ) @@ -845,123 +843,156 @@ function _Resume( EscortGroup ) end ---- @param #MENUPARAM MenuParam -function ESCORT._AttackTarget( MenuParam ) +--- @param #ESCORT self +-- @param #number DetectedItemID +function ESCORT:_AttackTarget( DetectedItemID ) - local self = MenuParam.ParamSelf - local EscortGroup = self.EscortGroup + local EscortGroup = self.EscortGroup -- Wrapper.Group#GROUP + self:E( EscortGroup ) local EscortClient = self.EscortClient - local AttackUnit = MenuParam.ParamUnit -- Wrapper.Unit#UNIT self.FollowScheduler:Stop( self.FollowSchedule ) - self:T( AttackUnit ) - if EscortGroup:IsAir() then EscortGroup:OptionROEOpenFire() EscortGroup:OptionROTPassiveDefense() EscortGroup:SetState( EscortGroup, "Escort", self ) - SCHEDULER:New( EscortGroup, - EscortGroup.PushTask, - { EscortGroup:TaskCombo( - { EscortGroup:TaskAttackUnit( AttackUnit ), - EscortGroup:TaskFunction( 1, 2, "_Resume", { "''" } ) - } - ) - }, 10 + + local DetectedSet = self.Detection:GetDetectedSet( DetectedItemID ) + + local Tasks = {} + + DetectedSet:ForEachUnit( + --- @param Wrapper.Unit#UNIT DetectedUnit + function( DetectedUnit, Tasks ) + if DetectedUnit:IsAlive() then + Tasks[#Tasks+1] = EscortGroup:TaskAttackUnit( DetectedUnit ) + end + end, Tasks + ) + + Tasks[#Tasks+1] = EscortGroup:TaskFunction( 1, 2, "_Resume", { "''" } ) + + EscortGroup:SetTask( + EscortGroup:TaskCombo( + Tasks + ), 1 ) + else - SCHEDULER:New( EscortGroup, - EscortGroup.PushTask, - { EscortGroup:TaskCombo( - { EscortGroup:TaskFireAtPoint( AttackUnit:GetVec2(), 50 ) - } - ) - }, 10 + + local DetectedSet = self.Detection:GetDetectedSet( DetectedItemID ) + + local Tasks = {} + + DetectedSet:ForEachUnit( + --- @param Wrapper.Unit#UNIT DetectedUnit + function( DetectedUnit, Tasks ) + if DetectedUnit:IsAlive() then + Tasks[#Tasks+1] = EscortGroup:TaskFireAtPoint( DetectedUnit:GetVec2(), 50 ) + end + end, Tasks + ) + + EscortGroup:SetTask( + EscortGroup:TaskCombo( + Tasks + ), 1 ) + end EscortGroup:MessageToClient( "Engaging Designated Unit!", 10, EscortClient ) end ---- @param #MENUPARAM MenuParam -function ESCORT._AssistTarget( MenuParam ) +--- +-- @param #number DetectedItemID +function ESCORT:_AssistTarget( EscortGroupAttack, DetectedItemID ) - local self = MenuParam.ParamSelf local EscortGroup = self.EscortGroup local EscortClient = self.EscortClient - local EscortGroupAttack = MenuParam.ParamEscortGroup - local AttackUnit = MenuParam.ParamUnit -- Wrapper.Unit#UNIT self.FollowScheduler:Stop( self.FollowSchedule ) - self:T( AttackUnit ) - if EscortGroupAttack:IsAir() then EscortGroupAttack:OptionROEOpenFire() EscortGroupAttack:OptionROTVertical() - SCHDULER:New( EscortGroupAttack, - EscortGroupAttack.PushTask, - { EscortGroupAttack:TaskCombo( - { EscortGroupAttack:TaskAttackUnit( AttackUnit ), - EscortGroupAttack:TaskOrbitCircle( 500, 350 ) - } - ) - }, 10 + + local DetectedSet = self.Detection:GetDetectedSet( DetectedItemID ) + + local Tasks = {} + + DetectedSet:ForEachUnit( + --- @param Wrapper.Unit#UNIT DetectedUnit + function( DetectedUnit, Tasks ) + if DetectedUnit:IsAlive() then + Tasks[#Tasks+1] = EscortGroupAttack:TaskAttackUnit( DetectedUnit ) + end + end, Tasks + ) + + Tasks[#Tasks+1] = EscortGroupAttack:TaskOrbitCircle( 500, 350 ) + + EscortGroupAttack:SetTask( + EscortGroupAttack:TaskCombo( + Tasks + ), 1 ) + else - SCHEDULER:New( EscortGroupAttack, - EscortGroupAttack.PushTask, - { EscortGroupAttack:TaskCombo( - { EscortGroupAttack:TaskFireAtPoint( AttackUnit:GetVec2(), 50 ) - } - ) - }, 10 + local DetectedSet = self.Detection:GetDetectedSet( DetectedItemID ) + + local Tasks = {} + + DetectedSet:ForEachUnit( + --- @param Wrapper.Unit#UNIT DetectedUnit + function( DetectedUnit, Tasks ) + if DetectedUnit:IsAlive() then + Tasks[#Tasks+1] = EscortGroupAttack:TaskFireAtPoint( DetectedUnit:GetVec2(), 50 ) + end + end, Tasks + ) + + EscortGroupAttack:SetTask( + EscortGroupAttack:TaskCombo( + Tasks + ), 1 ) + end + EscortGroupAttack:MessageToClient( "Assisting with the destroying the enemy unit!", 10, EscortClient ) end --- @param #MENUPARAM MenuParam -function ESCORT._ROE( MenuParam ) +function ESCORT:_ROE( EscortROEFunction, EscortROEMessage ) - local self = MenuParam.ParamSelf local EscortGroup = self.EscortGroup local EscortClient = self.EscortClient - local EscortROEFunction = MenuParam.ParamFunction - local EscortROEMessage = MenuParam.ParamMessage - pcall( function() EscortROEFunction() end ) EscortGroup:MessageToClient( EscortROEMessage, 10, EscortClient ) end --- @param #MENUPARAM MenuParam -function ESCORT._ROT( MenuParam ) +function ESCORT:_ROT( EscortROTFunction, EscortROTMessage ) - local self = MenuParam.ParamSelf local EscortGroup = self.EscortGroup local EscortClient = self.EscortClient - local EscortROTFunction = MenuParam.ParamFunction - local EscortROTMessage = MenuParam.ParamMessage - pcall( function() EscortROTFunction() end ) EscortGroup:MessageToClient( EscortROTMessage, 10, EscortClient ) end --- @param #MENUPARAM MenuParam -function ESCORT._ResumeMission( MenuParam ) +function ESCORT:_ResumeMission( WayPoint ) - local self = MenuParam.ParamSelf local EscortGroup = self.EscortGroup local EscortClient = self.EscortClient - local WayPoint = MenuParam.ParamWayPoint - self.FollowScheduler:Stop( self.FollowSchedule ) local WayPoints = EscortGroup:GetTaskRoute() @@ -1106,176 +1137,244 @@ function ESCORT:_ReportTargetsScheduler() self:F( self.EscortGroup:GetName() ) if self.EscortGroup:IsAlive() and self.EscortClient:IsAlive() then - local EscortGroupName = self.EscortGroup:GetName() - local EscortTargets = self.EscortGroup:GetDetectedTargets() - local ClientEscortTargets = self.EscortClient._EscortGroups[EscortGroupName].Targets + if true then - local EscortTargetMessages = "" - for EscortTargetID, EscortTarget in pairs( EscortTargets ) do - local EscortObject = EscortTarget.object - self:T( EscortObject ) - if EscortObject and EscortObject:isExist() and EscortObject.id_ < 50000000 then + local EscortGroupName = self.EscortGroup:GetName() + + self.EscortMenuAttackNearbyTargets:RemoveSubMenus() - local EscortTargetUnit = UNIT:Find( EscortObject ) - local EscortTargetUnitName = EscortTargetUnit:GetName() - - - - -- local EscortTargetIsDetected, - -- EscortTargetIsVisible, - -- EscortTargetLastTime, - -- EscortTargetKnowType, - -- EscortTargetKnowDistance, - -- EscortTargetLastPos, - -- EscortTargetLastVelocity - -- = self.EscortGroup:IsTargetDetected( EscortObject ) - -- - -- self:T( { EscortTargetIsDetected, - -- EscortTargetIsVisible, - -- EscortTargetLastTime, - -- EscortTargetKnowType, - -- EscortTargetKnowDistance, - -- EscortTargetLastPos, - -- EscortTargetLastVelocity } ) - - - local EscortTargetUnitVec3 = EscortTargetUnit:GetVec3() - local EscortVec3 = self.EscortGroup:GetVec3() - local Distance = ( ( EscortTargetUnitVec3.x - EscortVec3.x )^2 + - ( EscortTargetUnitVec3.y - EscortVec3.y )^2 + - ( EscortTargetUnitVec3.z - EscortVec3.z )^2 - ) ^ 0.5 / 1000 - - self:T( { self.EscortGroup:GetName(), EscortTargetUnit:GetName(), Distance, EscortTarget } ) - - if Distance <= 15 then - - if not ClientEscortTargets[EscortTargetUnitName] then - ClientEscortTargets[EscortTargetUnitName] = {} - end - ClientEscortTargets[EscortTargetUnitName].AttackUnit = EscortTargetUnit - ClientEscortTargets[EscortTargetUnitName].visible = EscortTarget.visible - ClientEscortTargets[EscortTargetUnitName].type = EscortTarget.type - ClientEscortTargets[EscortTargetUnitName].distance = EscortTarget.distance - else - if ClientEscortTargets[EscortTargetUnitName] then - ClientEscortTargets[EscortTargetUnitName] = nil - end - end + if self.EscortMenuTargetAssistance then + self.EscortMenuTargetAssistance:RemoveSubMenus() end - end - self:T( { "Sorting Targets Table:", ClientEscortTargets } ) - table.sort( ClientEscortTargets, function( a, b ) return a.Distance < b.Distance end ) - self:T( { "Sorted Targets Table:", ClientEscortTargets } ) + local DetectedItems = self.Detection:GetDetectedItems() + self:E( DetectedItems ) - -- Remove the sub menus of the Attack menu of the Escort for the EscortGroup. - self.EscortMenuAttackNearbyTargets:RemoveSubMenus() + local DetectedTargets = false + + local DetectedMsgs = {} + + for ClientEscortGroupName, EscortGroupData in pairs( self.EscortClient._EscortGroups ) do - if self.EscortMenuTargetAssistance then - self.EscortMenuTargetAssistance:RemoveSubMenus() - end + local ClientEscortTargets = EscortGroupData.Detection - --for MenuIndex = 1, #self.EscortMenuAttackTargets do - -- self:T( { "Remove Menu:", self.EscortMenuAttackTargets[MenuIndex] } ) - -- self.EscortMenuAttackTargets[MenuIndex] = self.EscortMenuAttackTargets[MenuIndex]:Remove() - --end + for DetectedItemID, DetectedItem in ipairs( DetectedItems ) do + self:E( { DetectedItemID, DetectedItem } ) + -- Remove the sub menus of the Attack menu of the Escort for the EscortGroup. + + local DetectedItemReportSummary = self.Detection:DetectedItemReportSummary( DetectedItemID ) - - if ClientEscortTargets then - for ClientEscortTargetUnitName, ClientEscortTargetData in pairs( ClientEscortTargets ) do - - for ClientEscortGroupName, EscortGroupData in pairs( self.EscortClient._EscortGroups ) do - - if ClientEscortTargetData and ClientEscortTargetData.AttackUnit:IsAlive() then - - local EscortTargetMessage = "" - local EscortTargetCategoryName = ClientEscortTargetData.AttackUnit:GetCategoryName() - local EscortTargetCategoryType = ClientEscortTargetData.AttackUnit:GetTypeName() - if ClientEscortTargetData.type then - EscortTargetMessage = EscortTargetMessage .. EscortTargetCategoryName .. " (" .. EscortTargetCategoryType .. ") at " - else - EscortTargetMessage = EscortTargetMessage .. "Unknown target at " - end - - local EscortTargetUnitVec3 = ClientEscortTargetData.AttackUnit:GetVec3() - local EscortVec3 = self.EscortGroup:GetVec3() - local Distance = ( ( EscortTargetUnitVec3.x - EscortVec3.x )^2 + - ( EscortTargetUnitVec3.y - EscortVec3.y )^2 + - ( EscortTargetUnitVec3.z - EscortVec3.z )^2 - ) ^ 0.5 / 1000 - - self:T( { self.EscortGroup:GetName(), ClientEscortTargetData.AttackUnit:GetName(), Distance, ClientEscortTargetData.AttackUnit } ) - if ClientEscortTargetData.visible == false then - EscortTargetMessage = EscortTargetMessage .. string.format( "%.2f", Distance ) .. " estimated km" - else - EscortTargetMessage = EscortTargetMessage .. string.format( "%.2f", Distance ) .. " km" - end - - if ClientEscortTargetData.visible then - EscortTargetMessage = EscortTargetMessage .. ", visual" - end - - if ClientEscortGroupName == EscortGroupName then - - MENU_CLIENT_COMMAND:New( self.EscortClient, - EscortTargetMessage, - self.EscortMenuAttackNearbyTargets, - ESCORT._AttackTarget, - { ParamSelf = self, - ParamUnit = ClientEscortTargetData.AttackUnit - } - ) - EscortTargetMessages = EscortTargetMessages .. "\n - " .. EscortTargetMessage - else - if self.EscortMenuTargetAssistance then - local MenuTargetAssistance = MENU_CLIENT:New( self.EscortClient, EscortGroupData.EscortName, self.EscortMenuTargetAssistance ) - MENU_CLIENT_COMMAND:New( self.EscortClient, - EscortTargetMessage, - MenuTargetAssistance, - ESCORT._AssistTarget, - { ParamSelf = self, - ParamEscortGroup = EscortGroupData.EscortGroup, - ParamUnit = ClientEscortTargetData.AttackUnit - } - ) - end - end + if ClientEscortGroupName == EscortGroupName then + + DetectedMsgs[#DetectedMsgs+1] = DetectedItemReportSummary + + MENU_CLIENT_COMMAND:New( self.EscortClient, + DetectedItemReportSummary, + self.EscortMenuAttackNearbyTargets, + ESCORT._AttackTarget, + self, + DetectedItemID + ) else - ClientEscortTargetData = nil + if self.EscortMenuTargetAssistance then + + self:T( DetectedItemReportSummary ) + local MenuTargetAssistance = MENU_CLIENT:New( self.EscortClient, EscortGroupData.EscortName, self.EscortMenuTargetAssistance ) + MENU_CLIENT_COMMAND:New( self.EscortClient, + DetectedItemReportSummary, + MenuTargetAssistance, + ESCORT._AssistTarget, + self, + EscortGroupData.EscortGroup, + DetectedItemID + ) + end end + + DetectedTargets = true + end end - - if EscortTargetMessages ~= "" and self.ReportTargets == true then - self.EscortGroup:MessageToClient( "Detected targets within 15 km range:" .. EscortTargetMessages:gsub("\n$",""), 20, self.EscortClient ) + self:E( DetectedMsgs ) + if DetectedTargets then + self.EscortGroup:MessageToClient( "Detected targets:\n" .. table.concat( DetectedMsgs, "\n" ), 20, self.EscortClient ) else - self.EscortGroup:MessageToClient( "No targets detected!", 20, self.EscortClient ) + self.EscortGroup:MessageToClient( "No targets detected.", 10, self.EscortClient ) end + + return true + else +-- local EscortGroupName = self.EscortGroup:GetName() +-- local EscortTargets = self.EscortGroup:GetDetectedTargets() +-- +-- local ClientEscortTargets = self.EscortClient._EscortGroups[EscortGroupName].Targets +-- +-- local EscortTargetMessages = "" +-- for EscortTargetID, EscortTarget in pairs( EscortTargets ) do +-- local EscortObject = EscortTarget.object +-- self:T( EscortObject ) +-- if EscortObject and EscortObject:isExist() and EscortObject.id_ < 50000000 then +-- +-- local EscortTargetUnit = UNIT:Find( EscortObject ) +-- local EscortTargetUnitName = EscortTargetUnit:GetName() +-- +-- +-- +-- -- local EscortTargetIsDetected, +-- -- EscortTargetIsVisible, +-- -- EscortTargetLastTime, +-- -- EscortTargetKnowType, +-- -- EscortTargetKnowDistance, +-- -- EscortTargetLastPos, +-- -- EscortTargetLastVelocity +-- -- = self.EscortGroup:IsTargetDetected( EscortObject ) +-- -- +-- -- self:T( { EscortTargetIsDetected, +-- -- EscortTargetIsVisible, +-- -- EscortTargetLastTime, +-- -- EscortTargetKnowType, +-- -- EscortTargetKnowDistance, +-- -- EscortTargetLastPos, +-- -- EscortTargetLastVelocity } ) +-- +-- +-- local EscortTargetUnitVec3 = EscortTargetUnit:GetVec3() +-- local EscortVec3 = self.EscortGroup:GetVec3() +-- local Distance = ( ( EscortTargetUnitVec3.x - EscortVec3.x )^2 + +-- ( EscortTargetUnitVec3.y - EscortVec3.y )^2 + +-- ( EscortTargetUnitVec3.z - EscortVec3.z )^2 +-- ) ^ 0.5 / 1000 +-- +-- self:T( { self.EscortGroup:GetName(), EscortTargetUnit:GetName(), Distance, EscortTarget } ) +-- +-- if Distance <= 15 then +-- +-- if not ClientEscortTargets[EscortTargetUnitName] then +-- ClientEscortTargets[EscortTargetUnitName] = {} +-- end +-- ClientEscortTargets[EscortTargetUnitName].AttackUnit = EscortTargetUnit +-- ClientEscortTargets[EscortTargetUnitName].visible = EscortTarget.visible +-- ClientEscortTargets[EscortTargetUnitName].type = EscortTarget.type +-- ClientEscortTargets[EscortTargetUnitName].distance = EscortTarget.distance +-- else +-- if ClientEscortTargets[EscortTargetUnitName] then +-- ClientEscortTargets[EscortTargetUnitName] = nil +-- end +-- end +-- end +-- end +-- +-- self:T( { "Sorting Targets Table:", ClientEscortTargets } ) +-- table.sort( ClientEscortTargets, function( a, b ) return a.Distance < b.Distance end ) +-- self:T( { "Sorted Targets Table:", ClientEscortTargets } ) +-- +-- -- Remove the sub menus of the Attack menu of the Escort for the EscortGroup. +-- self.EscortMenuAttackNearbyTargets:RemoveSubMenus() +-- +-- if self.EscortMenuTargetAssistance then +-- self.EscortMenuTargetAssistance:RemoveSubMenus() +-- end +-- +-- --for MenuIndex = 1, #self.EscortMenuAttackTargets do +-- -- self:T( { "Remove Menu:", self.EscortMenuAttackTargets[MenuIndex] } ) +-- -- self.EscortMenuAttackTargets[MenuIndex] = self.EscortMenuAttackTargets[MenuIndex]:Remove() +-- --end +-- +-- +-- if ClientEscortTargets then +-- for ClientEscortTargetUnitName, ClientEscortTargetData in pairs( ClientEscortTargets ) do +-- +-- for ClientEscortGroupName, EscortGroupData in pairs( self.EscortClient._EscortGroups ) do +-- +-- if ClientEscortTargetData and ClientEscortTargetData.AttackUnit:IsAlive() then +-- +-- local EscortTargetMessage = "" +-- local EscortTargetCategoryName = ClientEscortTargetData.AttackUnit:GetCategoryName() +-- local EscortTargetCategoryType = ClientEscortTargetData.AttackUnit:GetTypeName() +-- if ClientEscortTargetData.type then +-- EscortTargetMessage = EscortTargetMessage .. EscortTargetCategoryName .. " (" .. EscortTargetCategoryType .. ") at " +-- else +-- EscortTargetMessage = EscortTargetMessage .. "Unknown target at " +-- end +-- +-- local EscortTargetUnitVec3 = ClientEscortTargetData.AttackUnit:GetVec3() +-- local EscortVec3 = self.EscortGroup:GetVec3() +-- local Distance = ( ( EscortTargetUnitVec3.x - EscortVec3.x )^2 + +-- ( EscortTargetUnitVec3.y - EscortVec3.y )^2 + +-- ( EscortTargetUnitVec3.z - EscortVec3.z )^2 +-- ) ^ 0.5 / 1000 +-- +-- self:T( { self.EscortGroup:GetName(), ClientEscortTargetData.AttackUnit:GetName(), Distance, ClientEscortTargetData.AttackUnit } ) +-- if ClientEscortTargetData.visible == false then +-- EscortTargetMessage = EscortTargetMessage .. string.format( "%.2f", Distance ) .. " estimated km" +-- else +-- EscortTargetMessage = EscortTargetMessage .. string.format( "%.2f", Distance ) .. " km" +-- end +-- +-- if ClientEscortTargetData.visible then +-- EscortTargetMessage = EscortTargetMessage .. ", visual" +-- end +-- +-- if ClientEscortGroupName == EscortGroupName then +-- +-- MENU_CLIENT_COMMAND:New( self.EscortClient, +-- EscortTargetMessage, +-- self.EscortMenuAttackNearbyTargets, +-- ESCORT._AttackTarget, +-- { ParamSelf = self, +-- ParamUnit = ClientEscortTargetData.AttackUnit +-- } +-- ) +-- EscortTargetMessages = EscortTargetMessages .. "\n - " .. EscortTargetMessage +-- else +-- if self.EscortMenuTargetAssistance then +-- local MenuTargetAssistance = MENU_CLIENT:New( self.EscortClient, EscortGroupData.EscortName, self.EscortMenuTargetAssistance ) +-- MENU_CLIENT_COMMAND:New( self.EscortClient, +-- EscortTargetMessage, +-- MenuTargetAssistance, +-- ESCORT._AssistTarget, +-- self, +-- EscortGroupData.EscortGroup, +-- ClientEscortTargetData.AttackUnit +-- ) +-- end +-- end +-- else +-- ClientEscortTargetData = nil +-- end +-- end +-- end +-- +-- if EscortTargetMessages ~= "" and self.ReportTargets == true then +-- self.EscortGroup:MessageToClient( "Detected targets within 15 km range:" .. EscortTargetMessages:gsub("\n$",""), 20, self.EscortClient ) +-- else +-- self.EscortGroup:MessageToClient( "No targets detected!", 20, self.EscortClient ) +-- end +-- end +-- +-- if self.EscortMenuResumeMission then +-- self.EscortMenuResumeMission:RemoveSubMenus() +-- +-- -- if self.EscortMenuResumeWayPoints then +-- -- for MenuIndex = 1, #self.EscortMenuResumeWayPoints do +-- -- self:T( { "Remove Menu:", self.EscortMenuResumeWayPoints[MenuIndex] } ) +-- -- self.EscortMenuResumeWayPoints[MenuIndex] = self.EscortMenuResumeWayPoints[MenuIndex]:Remove() +-- -- end +-- -- end +-- +-- local TaskPoints = self:RegisterRoute() +-- for WayPointID, WayPoint in pairs( TaskPoints ) do +-- local EscortVec3 = self.EscortGroup:GetVec3() +-- local Distance = ( ( WayPoint.x - EscortVec3.x )^2 + +-- ( WayPoint.y - EscortVec3.z )^2 +-- ) ^ 0.5 / 1000 +-- MENU_CLIENT_COMMAND:New( self.EscortClient, "Waypoint " .. WayPointID .. " at " .. string.format( "%.2f", Distance ).. "km", self.EscortMenuResumeMission, ESCORT._ResumeMission, { ParamSelf = self, ParamWayPoint = WayPointID } ) +-- end +-- end +-- +-- return true end - - if self.EscortMenuResumeMission then - self.EscortMenuResumeMission:RemoveSubMenus() - - -- if self.EscortMenuResumeWayPoints then - -- for MenuIndex = 1, #self.EscortMenuResumeWayPoints do - -- self:T( { "Remove Menu:", self.EscortMenuResumeWayPoints[MenuIndex] } ) - -- self.EscortMenuResumeWayPoints[MenuIndex] = self.EscortMenuResumeWayPoints[MenuIndex]:Remove() - -- end - -- end - - local TaskPoints = self:RegisterRoute() - for WayPointID, WayPoint in pairs( TaskPoints ) do - local EscortVec3 = self.EscortGroup:GetVec3() - local Distance = ( ( WayPoint.x - EscortVec3.x )^2 + - ( WayPoint.y - EscortVec3.z )^2 - ) ^ 0.5 / 1000 - MENU_CLIENT_COMMAND:New( self.EscortClient, "Waypoint " .. WayPointID .. " at " .. string.format( "%.2f", Distance ).. "km", self.EscortMenuResumeMission, ESCORT._ResumeMission, { ParamSelf = self, ParamWayPoint = WayPointID } ) - end - end - - return true end return false diff --git a/Moose Development/Moose/Tasking/CommandCenter.lua b/Moose Development/Moose/Tasking/CommandCenter.lua index 967aa84b1..155ebd1f0 100644 --- a/Moose Development/Moose/Tasking/CommandCenter.lua +++ b/Moose Development/Moose/Tasking/CommandCenter.lua @@ -224,6 +224,14 @@ function COMMANDCENTER:HasGroup( MissionGroup ) return Has end +--- Send a CC message to the coalition of the CC. +-- @param #COMMANDCENTER self +function COMMANDCENTER:MessageToAll( Message ) + + self:GetPositionable():MessageToAll( Message, 20, self:GetName() ) + +end + --- Send a CC message to a GROUP. -- @param #COMMANDCENTER self -- @param #string Message @@ -247,6 +255,7 @@ function COMMANDCENTER:MessageToCoalition( Message ) end + --- Report the status of all MISSIONs to a GROUP. -- Each Mission is listed, with an indication how many Tasks are still to be completed. -- @param #COMMANDCENTER self diff --git a/Moose Development/Moose/Tasking/DetectionManager.lua b/Moose Development/Moose/Tasking/DetectionManager.lua index b7bcc07b5..2feebb43b 100644 --- a/Moose Development/Moose/Tasking/DetectionManager.lua +++ b/Moose Development/Moose/Tasking/DetectionManager.lua @@ -404,21 +404,21 @@ do -- DETECTION_DISPATCHER local Mission = self.Mission --- First we need to the detected targets. - for DetectedAreaID, DetectedAreaData in ipairs( Detection:GetDetectedAreas() ) do + for DetectedItemID, DetectedItem in pairs( Detection:GetDetectedItems() ) do - local DetectedArea = DetectedAreaData -- Functional.Detection#DETECTION_AREAS.DetectedArea - local DetectedSet = DetectedArea.Set - local DetectedZone = DetectedArea.Zone - self:E( { "Targets in DetectedArea", DetectedArea.AreaID, DetectedSet:Count(), tostring( DetectedArea ) } ) + local DetectedItem = DetectedItem -- Functional.Detection#DETECTION_BASE.DetectedItem + local DetectedSet = DetectedItem.Set -- Functional.Detection#DETECTION_BASE.DetectedSet + local DetectedZone = DetectedItem.Zone + self:E( { "Targets in DetectedArea", DetectedItem.AreaID, DetectedSet:Count(), tostring( DetectedItem ) } ) DetectedSet:Flush() - local AreaID = DetectedArea.AreaID + local AreaID = DetectedItem.AreaID -- Evaluate SEAD Tasking local SEADTask = Mission:GetTask( "SEAD." .. AreaID ) - SEADTask = self:EvaluateRemoveTask( Mission, SEADTask, DetectedArea ) + SEADTask = self:EvaluateRemoveTask( Mission, SEADTask, DetectedItem ) if not SEADTask then - local TargetSetUnit = self:EvaluateSEAD( DetectedArea ) -- Returns a SetUnit if there are targets to be SEADed... + local TargetSetUnit = self:EvaluateSEAD( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed... if TargetSetUnit then SEADTask = Mission:AddTask( TASK_SEAD:New( Mission, self.SetGroup, "SEAD." .. AreaID, TargetSetUnit , DetectedZone ) ) end @@ -431,11 +431,11 @@ do -- DETECTION_DISPATCHER -- Evaluate CAS Tasking local CASTask = Mission:GetTask( "CAS." .. AreaID ) - CASTask = self:EvaluateRemoveTask( Mission, CASTask, DetectedArea ) + CASTask = self:EvaluateRemoveTask( Mission, CASTask, DetectedItem ) if not CASTask then - local TargetSetUnit = self:EvaluateCAS( DetectedArea ) -- Returns a SetUnit if there are targets to be SEADed... + local TargetSetUnit = self:EvaluateCAS( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed... if TargetSetUnit then - CASTask = Mission:AddTask( TASK_A2G:New( Mission, self.SetGroup, "CAS." .. AreaID, "CAS", TargetSetUnit , DetectedZone, DetectedArea.NearestFAC ) ) + CASTask = Mission:AddTask( TASK_A2G:New( Mission, self.SetGroup, "CAS." .. AreaID, "CAS", TargetSetUnit , DetectedZone, DetectedItem.NearestFAC ) ) end end if CASTask and CASTask:IsStatePlanned() then @@ -445,11 +445,11 @@ do -- DETECTION_DISPATCHER -- Evaluate BAI Tasking local BAITask = Mission:GetTask( "BAI." .. AreaID ) - BAITask = self:EvaluateRemoveTask( Mission, BAITask, DetectedArea ) + BAITask = self:EvaluateRemoveTask( Mission, BAITask, DetectedItem ) if not BAITask then - local TargetSetUnit = self:EvaluateBAI( DetectedArea, self.CommandCenter:GetCoalition() ) -- Returns a SetUnit if there are targets to be SEADed... + local TargetSetUnit = self:EvaluateBAI( DetectedItem, self.CommandCenter:GetCoalition() ) -- Returns a SetUnit if there are targets to be SEADed... if TargetSetUnit then - BAITask = Mission:AddTask( TASK_A2G:New( Mission, self.SetGroup, "BAI." .. AreaID, "BAI", TargetSetUnit , DetectedZone, DetectedArea.NearestFAC ) ) + BAITask = Mission:AddTask( TASK_A2G:New( Mission, self.SetGroup, "BAI." .. AreaID, "BAI", TargetSetUnit , DetectedZone, DetectedItem.NearestFAC ) ) end end if BAITask and BAITask:IsStatePlanned() then @@ -459,20 +459,20 @@ do -- DETECTION_DISPATCHER if #TaskMsg > 0 then - local ThreatLevel = Detection:GetTreatLevelA2G( DetectedArea ) + local ThreatLevel = Detection:GetTreatLevelA2G( DetectedItem ) local DetectedAreaVec3 = DetectedZone:GetVec3() local DetectedAreaPointVec3 = POINT_VEC3:New( DetectedAreaVec3.x, DetectedAreaVec3.y, DetectedAreaVec3.z ) local DetectedAreaPointLL = DetectedAreaPointVec3:ToStringLL( 3, true ) AreaMsg[#AreaMsg+1] = string.format( " - Area #%d - %s - Threat Level [%s] (%2d)", - DetectedAreaID, + DetectedItemID, DetectedAreaPointLL, string.rep( "■", ThreatLevel ), ThreatLevel ) -- Loop through the changes ... - local ChangeText = Detection:GetChangeText( DetectedArea ) + local ChangeText = Detection:GetChangeText( DetectedItem ) if ChangeText ~= "" then ChangeMsg[#ChangeMsg+1] = string.gsub( string.gsub( ChangeText, "\n", "%1 - " ), "^.", " - %1" ) @@ -480,7 +480,7 @@ do -- DETECTION_DISPATCHER end -- OK, so the tasking has been done, now delete the changes reported for the area. - Detection:AcceptChanges( DetectedArea ) + Detection:AcceptChanges( DetectedItem ) end diff --git a/Moose Development/Moose/Wrapper/Controllable.lua b/Moose Development/Moose/Wrapper/Controllable.lua index 536c9dfa1..84c97e611 100644 --- a/Moose Development/Moose/Wrapper/Controllable.lua +++ b/Moose Development/Moose/Wrapper/Controllable.lua @@ -543,10 +543,10 @@ function CONTROLLABLE:TaskAttackUnit( AttackUnit, GroupAttack, WeaponExpend, Att directionEnabled = Direction and true or false, direction = Direction, altitudeEnabled = Altitude and true or false, - altitude = Altitude, + altitude = Altitude or 30, attackQtyLimit = AttackQty and true or false, attackQty = AttackQty, - controllableAttack = ControllableAttack, + weaponType = 1073741822, }, } diff --git a/Moose Development/Moose/Wrapper/Group.lua b/Moose Development/Moose/Wrapper/Group.lua index 5fcd0cdb2..11d5110d5 100644 --- a/Moose Development/Moose/Wrapper/Group.lua +++ b/Moose Development/Moose/Wrapper/Group.lua @@ -110,7 +110,7 @@ GROUP = { -- @param Dcs.DCSWrapper.Group#Group GroupName The DCS Group name -- @return #GROUP self function GROUP:Register( GroupName ) - local self = BASE:Inherit( self, CONTROLLABLE:New( GroupName ) ) + self = BASE:Inherit( self, CONTROLLABLE:New( GroupName ) ) self:F2( GroupName ) self.GroupName = GroupName diff --git a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua index 2d3723848..01fdbbdcf 100644 --- a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua +++ b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20170208_2216' ) +env.info( 'Moose Generation Timestamp: 20170213_1411' ) local base = _G diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index 2d3723848..01fdbbdcf 100644 --- a/Moose Mission Setup/Moose.lua +++ b/Moose Mission Setup/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20170208_2216' ) +env.info( 'Moose Generation Timestamp: 20170213_1411' ) local base = _G diff --git a/Moose Presentations/DETECTION.pptx b/Moose Presentations/DETECTION.pptx new file mode 100644 index 000000000..05368748d Binary files /dev/null and b/Moose Presentations/DETECTION.pptx differ diff --git a/Moose Test Missions/DET - Detection/DET-001 - Detection Areas/DET-001 - Detection Areas.miz b/Moose Test Missions/DET - Detection/DET-001 - Detection Areas/DET-001 - Detection Areas.miz index 289da64bd..af99efdf6 100644 Binary files a/Moose Test Missions/DET - Detection/DET-001 - Detection Areas/DET-001 - Detection Areas.miz and b/Moose Test Missions/DET - Detection/DET-001 - Detection Areas/DET-001 - Detection Areas.miz differ diff --git a/Moose Test Missions/DET - Detection/DET-100 - Detection Probability Distance/DET-100 - Detection Probability Distance.lua b/Moose Test Missions/DET - Detection/DET-100 - Detection Probability Distance/DET-100 - Detection Probability Distance.lua new file mode 100644 index 000000000..96c9d8def --- /dev/null +++ b/Moose Test Missions/DET - Detection/DET-100 - Detection Probability Distance/DET-100 - Detection Probability Distance.lua @@ -0,0 +1,56 @@ +--- +-- Name: DET-100 - Detection Probability Distance +-- Author: FlightControl +-- Date Created: 04 Feb 2017 +-- +-- # Situation: +-- +-- Demonstrates the DistanceProbability factor during the detection of units. +-- +-- Two JTAC are detecting 4 units, which are 10 km away. +-- The first JTAC has no DistanceProbability set. +-- The second JTAC has a DistanceProbability set. +-- +-- # Test cases: +-- +-- 1. Observe the reporting of both the first and second JTAC. The second should report slower the detection than the first. +-- 2. Eventually all units should be detected by both JTAC. + +local RecceSetGroup1 = SET_GROUP:New():FilterPrefixes( "Recce 1" ):FilterStart() +local RecceSetGroup2 = SET_GROUP:New():FilterPrefixes( "Recce 2" ):FilterStart() + +local HQ = GROUP:FindByName( "HQ" ) + +local CC = COMMANDCENTER:New( HQ, "HQ" ) + +local RecceDetection1 = DETECTION_UNITS:New( RecceSetGroup1 ) + +local RecceDetection2 = DETECTION_UNITS:New( RecceSetGroup2 ) +RecceDetection2:SetDistanceProbability( 0.2 ) -- Set a 20% probability that a vehicle can be detected at 4km distance. + +RecceDetection1:Start() +RecceDetection2:Start() + +--- OnAfter Transition Handler for Event Detect. +-- @param Functional.Detection#DETECTION_UNITS self +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function RecceDetection1:OnAfterDetect(From,Event,To) + + local DetectionReport = RecceDetection1:DetectedReportDetailed() + + HQ:MessageToAll( DetectionReport, 15, "Detection 1 - No distance Probability" ) +end + +--- OnAfter Transition Handler for Event Detect. +-- @param Functional.Detection#DETECTION_UNITS self +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function RecceDetection2:OnAfterDetect(From,Event,To) + + local DetectionReport = RecceDetection2:DetectedReportDetailed() + + HQ:MessageToAll( DetectionReport, 15, "Detection 2 - Distance Probability" ) +end \ No newline at end of file diff --git a/Moose Test Missions/DET - Detection/DET-100 - Detection Probability Distance/DET-100 - Detection Probability Distance.miz b/Moose Test Missions/DET - Detection/DET-100 - Detection Probability Distance/DET-100 - Detection Probability Distance.miz new file mode 100644 index 000000000..1ebe1919e Binary files /dev/null and b/Moose Test Missions/DET - Detection/DET-100 - Detection Probability Distance/DET-100 - Detection Probability Distance.miz differ diff --git a/Moose Test Missions/DET - Detection/DET-101 - Detection Reporting/DET-101 - Detection Reporting.miz b/Moose Test Missions/DET - Detection/DET-101 - Detection Reporting/DET-101 - Detection Reporting.miz index 69668804b..018f32851 100644 Binary files a/Moose Test Missions/DET - Detection/DET-101 - Detection Reporting/DET-101 - Detection Reporting.miz and b/Moose Test Missions/DET - Detection/DET-101 - Detection Reporting/DET-101 - Detection Reporting.miz differ diff --git a/Moose Test Missions/DET - Detection/DET-120 - Detection Probability Zones/DET-100 - Detection Probability Distance.miz b/Moose Test Missions/DET - Detection/DET-120 - Detection Probability Zones/DET-100 - Detection Probability Distance.miz new file mode 100644 index 000000000..c35289908 Binary files /dev/null and b/Moose Test Missions/DET - Detection/DET-120 - Detection Probability Zones/DET-100 - Detection Probability Distance.miz differ diff --git a/Moose Test Missions/DET - Detection/DET-120 - Detection Probability Zones/DET-120 - Detection Probability Zones.lua b/Moose Test Missions/DET - Detection/DET-120 - Detection Probability Zones/DET-120 - Detection Probability Zones.lua new file mode 100644 index 000000000..8238880f8 --- /dev/null +++ b/Moose Test Missions/DET - Detection/DET-120 - Detection Probability Zones/DET-120 - Detection Probability Zones.lua @@ -0,0 +1,62 @@ +--- +-- Name: DET-120 - Detection Probability Zones +-- Author: FlightControl +-- Date Created: 04 Feb 2017 +-- +-- # Situation: +-- +-- Demonstrates the DistanceProbability factor during the detection of units. +-- +-- Two JTAC are detecting 4 units, which are 10 km away. +-- The first JTAC has no DistanceProbability set. +-- The second JTAC has a DistanceProbability set. +-- +-- # Test cases: +-- +-- 1. Observe the reporting of both the first and second JTAC. The second should report slower the detection than the first. +-- 2. Eventually all units should be detected by both JTAC. + +local RecceSetGroup1 = SET_GROUP:New():FilterPrefixes( "Recce 1" ):FilterStart() +local RecceSetGroup2 = SET_GROUP:New():FilterPrefixes( "Recce 2" ):FilterStart() + +local HQ = GROUP:FindByName( "HQ" ) + +local CC = COMMANDCENTER:New( HQ, "HQ" ) + +local RecceDetection1 = DETECTION_UNITS:New( RecceSetGroup1 ) + +local RecceDetection2 = DETECTION_UNITS:New( RecceSetGroup2 ) + +local ForestZone = ZONE_POLYGON:New( "ForestZone", GROUP:FindByName( "ForestZone" ) ) + +RecceDetection2:SetZoneProbability( { { ForestZone, 0.1 } } ) -- Set a 10% probability that a vehicle can be detected within the forest. + + +RecceDetection1:Start() +RecceDetection2:Start() + +--- OnAfter Transition Handler for Event Detect. +-- @param Functional.Detection#DETECTION_UNITS self +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function RecceDetection1:OnAfterDetect(From,Event,To) + + local DetectionReport = self:DetectedReportDetailed() + + HQ:MessageToAll( DetectionReport, 15, "Detection 1 - No Zone Probability" ) +end + +--- OnAfter Transition Handler for Event Detect. +-- @param Functional.Detection#DETECTION_UNITS self +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function RecceDetection2:OnAfterDetect(From,Event,To) + + local DetectionReport = self:DetectedReportDetailed() + + HQ:MessageToAll( DetectionReport, 15, "Detection 2 - Forest Zone Probability" ) +end + +garbagecollect() diff --git a/Moose Test Missions/DET - Detection/DET-120 - Detection Probability Zones/DET-120 - Detection Probability Zones.miz b/Moose Test Missions/DET - Detection/DET-120 - Detection Probability Zones/DET-120 - Detection Probability Zones.miz new file mode 100644 index 000000000..ac3a05964 Binary files /dev/null and b/Moose Test Missions/DET - Detection/DET-120 - Detection Probability Zones/DET-120 - Detection Probability Zones.miz differ diff --git a/Moose Test Missions/DET - Detection/DET-200 - Detection UNITS/DET-200 - Detection UNITS.lua b/Moose Test Missions/DET - Detection/DET-200 - Detection UNITS/DET-200 - Detection UNITS.lua new file mode 100644 index 000000000..874c7166e --- /dev/null +++ b/Moose Test Missions/DET - Detection/DET-200 - Detection UNITS/DET-200 - Detection UNITS.lua @@ -0,0 +1,40 @@ +--- +-- Name: DET-200 - Detection UNITS +-- Author: FlightControl +-- Date Created: 13 Feb 2017 +-- +-- # Situation: +-- +-- Demonstrates the detection of units. +-- +-- A Set of Recce are detecting a large group of units, which are 5 km away. +-- Select one of the blue Recce, and press F7. Watch the reporting of the detection evolve. +-- The enemy is approaching. +-- +-- # Test cases: +-- +-- 1. Observe the detection reporting of both the Recce. +-- 2. Eventually all units should be detected by both Recce. + +local RecceSetGroup = SET_GROUP:New():FilterPrefixes( "Recce" ):FilterStart() + +local HQ = GROUP:FindByName( "HQ" ) + +local CC = COMMANDCENTER:New( HQ, "HQ" ) + +local RecceDetection = DETECTION_UNITS:New( RecceSetGroup ) + +RecceDetection:Start() + +--- OnAfter Transition Handler for Event Detect. +-- @param Functional.Detection#DETECTION_UNITS self +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function RecceDetection:OnAfterDetect(From,Event,To) + + local DetectionReport = RecceDetection:DetectedReportDetailed() + + CC:MessageToAll( DetectionReport, 15, "" ) +end + diff --git a/Moose Test Missions/DET - Detection/DET-200 - Detection UNITS/DET-200 - Detection UNITS.miz b/Moose Test Missions/DET - Detection/DET-200 - Detection UNITS/DET-200 - Detection UNITS.miz new file mode 100644 index 000000000..a908f8aba Binary files /dev/null and b/Moose Test Missions/DET - Detection/DET-200 - Detection UNITS/DET-200 - Detection UNITS.miz differ diff --git a/Moose Test Missions/DET - Detection/DET-210 - Detection TYPES/DET-210 - Detection TYPES.lua b/Moose Test Missions/DET - Detection/DET-210 - Detection TYPES/DET-210 - Detection TYPES.lua new file mode 100644 index 000000000..4196009ef --- /dev/null +++ b/Moose Test Missions/DET - Detection/DET-210 - Detection TYPES/DET-210 - Detection TYPES.lua @@ -0,0 +1,42 @@ +--- +-- Name: DET-210 - Detection TYPES +-- Author: FlightControl +-- Date Created: 13 Feb 2017 +-- +-- # Situation: +-- +-- Demonstrates the detection of units. +-- +-- A Set of Recce are detecting a large group of units, which are 5 km away. +-- Select one of the blue Recce, and press F7. Watch the reporting of the detection evolve. +-- The enemy is approaching. +-- +-- The blue Recce will report the detected units grouped per vehicle type! +-- +-- # Test cases: +-- +-- 1. Observe the detection reporting of both the Recce. +-- 2. Eventually all units should be detected by both Recce. + +local RecceSetGroup = SET_GROUP:New():FilterPrefixes( "Recce" ):FilterStart() + +local HQ = GROUP:FindByName( "HQ" ) + +local CC = COMMANDCENTER:New( HQ, "HQ" ) + +local RecceDetection = DETECTION_TYPES:New( RecceSetGroup ) + +RecceDetection:Start() + +--- OnAfter Transition Handler for Event Detect. +-- @param Functional.Detection#DETECTION_UNITS self +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function RecceDetection:OnAfterDetect(From,Event,To) + + local DetectionReport = RecceDetection:DetectedReportDetailed() + + CC:MessageToAll( DetectionReport, 15, "" ) +end + diff --git a/Moose Test Missions/DET - Detection/DET-210 - Detection TYPES/DET-210 - Detection TYPES.miz b/Moose Test Missions/DET - Detection/DET-210 - Detection TYPES/DET-210 - Detection TYPES.miz new file mode 100644 index 000000000..9707b34c1 Binary files /dev/null and b/Moose Test Missions/DET - Detection/DET-210 - Detection TYPES/DET-210 - Detection TYPES.miz differ diff --git a/Moose Test Missions/DET - Detection/DET-250 - Detection AREAS/DET-250 - Detection AREAS.lua b/Moose Test Missions/DET - Detection/DET-250 - Detection AREAS/DET-250 - Detection AREAS.lua new file mode 100644 index 000000000..96c9d8def --- /dev/null +++ b/Moose Test Missions/DET - Detection/DET-250 - Detection AREAS/DET-250 - Detection AREAS.lua @@ -0,0 +1,56 @@ +--- +-- Name: DET-100 - Detection Probability Distance +-- Author: FlightControl +-- Date Created: 04 Feb 2017 +-- +-- # Situation: +-- +-- Demonstrates the DistanceProbability factor during the detection of units. +-- +-- Two JTAC are detecting 4 units, which are 10 km away. +-- The first JTAC has no DistanceProbability set. +-- The second JTAC has a DistanceProbability set. +-- +-- # Test cases: +-- +-- 1. Observe the reporting of both the first and second JTAC. The second should report slower the detection than the first. +-- 2. Eventually all units should be detected by both JTAC. + +local RecceSetGroup1 = SET_GROUP:New():FilterPrefixes( "Recce 1" ):FilterStart() +local RecceSetGroup2 = SET_GROUP:New():FilterPrefixes( "Recce 2" ):FilterStart() + +local HQ = GROUP:FindByName( "HQ" ) + +local CC = COMMANDCENTER:New( HQ, "HQ" ) + +local RecceDetection1 = DETECTION_UNITS:New( RecceSetGroup1 ) + +local RecceDetection2 = DETECTION_UNITS:New( RecceSetGroup2 ) +RecceDetection2:SetDistanceProbability( 0.2 ) -- Set a 20% probability that a vehicle can be detected at 4km distance. + +RecceDetection1:Start() +RecceDetection2:Start() + +--- OnAfter Transition Handler for Event Detect. +-- @param Functional.Detection#DETECTION_UNITS self +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function RecceDetection1:OnAfterDetect(From,Event,To) + + local DetectionReport = RecceDetection1:DetectedReportDetailed() + + HQ:MessageToAll( DetectionReport, 15, "Detection 1 - No distance Probability" ) +end + +--- OnAfter Transition Handler for Event Detect. +-- @param Functional.Detection#DETECTION_UNITS self +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function RecceDetection2:OnAfterDetect(From,Event,To) + + local DetectionReport = RecceDetection2:DetectedReportDetailed() + + HQ:MessageToAll( DetectionReport, 15, "Detection 2 - Distance Probability" ) +end \ No newline at end of file diff --git a/Moose Test Missions/DET - Detection/DET-250 - Detection AREAS/DET-250 - Detection AREAS.miz b/Moose Test Missions/DET - Detection/DET-250 - Detection AREAS/DET-250 - Detection AREAS.miz new file mode 100644 index 000000000..89e6f36d3 Binary files /dev/null and b/Moose Test Missions/DET - Detection/DET-250 - Detection AREAS/DET-250 - Detection AREAS.miz differ diff --git a/Moose Test Missions/DET - Detection/DET-500 - Handle Detected Event - Govern Artillery Demo/DET-500 - Handle Detected Event - Govern Artillery Demo.lua b/Moose Test Missions/DET - Detection/DET-500 - Handle Detected Event - Govern Artillery Demo/DET-500 - Handle Detected Event - Govern Artillery Demo.lua new file mode 100644 index 000000000..1be50e533 --- /dev/null +++ b/Moose Test Missions/DET - Detection/DET-500 - Handle Detected Event - Govern Artillery Demo/DET-500 - Handle Detected Event - Govern Artillery Demo.lua @@ -0,0 +1,61 @@ +--- +-- Name: DET-500 - Handle Detected Event - Govern Artillery Demo +-- Author: FlightControl +-- Date Created: 13 Feb 2017 +-- +-- # Situation: +-- +-- Demonstrates the detection of units. +-- +-- A Set of Recces are detecting a large group of units, which are 5 km away. +-- Once the Recces detect the enemy, the artilley units are controlled and will fire a missile to the target. +-- +-- # Test cases: +-- +-- 1. Observe the detected reporting of the recces. +-- 2. When one Recce group detects a target, it will select an artillery unit and fire a missile. +-- 3. This will run until all Recces have eliminated the targets. + +local RecceSetGroup = SET_GROUP:New():FilterCoalitions( "blue" ):FilterPrefixes( "Recce" ):FilterStart() +local ArtillerySetGroup = SET_GROUP:New():FilterCoalitions( "blue" ):FilterPrefixes( "Artillery" ):FilterStart() + +local HQ = GROUP:FindByName( "HQ" ) + +local CC = COMMANDCENTER:New( HQ, "HQ" ) + +local RecceDetection = DETECTION_UNITS:New( RecceSetGroup ) +RecceDetection:SetDetectionInterval( 5 ) + +RecceDetection:Start() + +--- OnAfter Transition Handler for Event Detect. +-- @param Functional.Detection#DETECTION_UNITS self +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +function RecceDetection:OnAfterDetect(From,Event,To) + + local DetectionReport = RecceDetection:DetectedReportDetailed() + + CC:MessageToAll( DetectionReport, 15, "" ) +end + + +--- OnAfter Transition Handler for Event Detect. +-- @param Functional.Detection#DETECTION_UNITS self +-- @param #string From The From State string. +-- @param #string Event The Event string. +-- @param #string To The To State string. +-- @param Wrapper.Unit#UNIT DetectedUnits +function RecceDetection:OnAfterDetected( From, Event, To, DetectedUnits ) + + local ArtilleryArray = ArtillerySetGroup:GetSet() + local ArtilleryArrayCount = ArtillerySetGroup:Count() + + for DetectedUnitID, DetectedUnit in pairs( DetectedUnits ) do + local DetectedUnit = DetectedUnit -- Wrapper.Unit#UNIT + local Artillery = ArtilleryArray[ math.random( 1, ArtilleryArrayCount ) ] -- Wrapper.Group#GROUP + local Task = Artillery:TaskFireAtPoint( DetectedUnit:GetVec2(), 500, 2 ) -- Fire 2 rockets to the target point. + Artillery:SetTask( Task, 0.5 ) + end +end \ No newline at end of file diff --git a/Moose Test Missions/DET - Detection/DET-500 - Handle Detected Event - Govern Artillery Demo/DET-500 - Handle Detected Event - Govern Artillery Demo.miz b/Moose Test Missions/DET - Detection/DET-500 - Handle Detected Event - Govern Artillery Demo/DET-500 - Handle Detected Event - Govern Artillery Demo.miz new file mode 100644 index 000000000..a0620ae32 Binary files /dev/null and b/Moose Test Missions/DET - Detection/DET-500 - Handle Detected Event - Govern Artillery Demo/DET-500 - Handle Detected Event - Govern Artillery Demo.miz differ diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters.lua index c97bcb69e..021126136 100644 --- a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters.lua +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters.lua @@ -20,6 +20,8 @@ do :MenuResumeMission() :MenuROE() :MenuAssistedAttack() + + EscortHeli1:SetDetection( EscortHeliDetection ) local EscortGroupArtillery = SpawnEscortArtillery:ReSpawn(1) local EscortArtillery = ESCORT @@ -59,6 +61,9 @@ do SpawnEscortGround = SPAWN:New( "Escort Ground" ) SpawnEscortShip = SPAWN:New( "Escort Ship" ) SpawnEscortArtillery = SPAWN:New( "Ground Attack Assistance" ) + + EscortHeliSetGroup = SET_GROUP:New():FilterPrefixes("Escort Helicopter"):FilterStart() + EscortHeliDetection = DETECTION_AREAS:New( EscortHeliSetGroup, 20000, 1500 ) EscortClientHeli = CLIENT:FindByName( "Lead Helicopter", "Fly around and observe the behaviour of the escort helicopter" ):Alive( EventAliveHelicopter ) EscortClientPlane = CLIENT:FindByName( "Lead Plane", "Fly around and observe the behaviour of the escort airplane. Select Navigate->Joun-Up and airplane should follow you. Change speed and directions." ) diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters.miz b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters.miz index 0b9bee142..72ed1cceb 100644 Binary files a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters.miz and b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters.miz differ diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/ABRIS/Database/NAVIGATION.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/ABRIS/Database/NAVIGATION.lua new file mode 100644 index 000000000..7dc52d505 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/ABRIS/Database/NAVIGATION.lua @@ -0,0 +1,3262 @@ +navigation= +{ + ["date"]= + { + ["year"]=2011, + ["day"]=1, + ["month"]=6, + }, + ["expiration_date"]= + { + ["year"]=2011, + ["day"]=1, + ["month"]=6, + }, + ["region"]="", + ["waypoints"]= + { + ["{6D3E18FB-DC01-4dd7-8833-350C49D72638}"]= + { + ["band"]=115800000, + ["type"]=2, + ["name"]="Krasnodar-Pashkovsky", + ["callsign"]="KRD", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.163886994859, + ["latitude"]=45.020832065207, + ["course"]=0, + ["height"]=34.408920288086, + }, + }, + ["{EA7995CF-7D08-4b1a-9361-1F3A073A852F}"]= + { + ["band"]=381000, + ["type"]=2, + ["name"]="Agoy", + ["callsign"]="AG", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.034444546264, + ["latitude"]=44.133333334822, + ["course"]=0, + ["height"]=213.66403198242, + }, + ["sub_type"]=8, + }, + ["{451468DB-A355-4580-AECB-E76AB9099B0B}"]= + { + ["band"]=1065000, + ["type"]=2, + ["name"]="KHerson-CHernobaevka", + ["callsign"]="HS", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=32.499999899356, + ["latitude"]=46.666666721389, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["Sukhumi-Babushara"]= + { + ["type"]=1, + ["name"]="Sukhumi-Babushara", + ["callsign"]="", + ["runway_length"]=1418, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=41.124569220701, + ["latitude"]=42.861288092232, + ["course"]=-1.1085398153117, + ["height"]=11.972095489502, + }, + ["sub_type"]=5, + }, + ["{AE406B8D-660B-4dd5-AD60-022026390323}"]= + { + ["band"]=682000, + ["type"]=2, + ["name"]="Maykop", + ["callsign"]="MA", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.14694442455, + ["latitude"]=44.623055556984, + ["course"]=0, + ["height"]=244.64227294922, + }, + ["sub_type"]=8, + }, + ["{16AB7446-613D-4317-B30D-292751D7FFCD}"]= + { + ["band"]=920000, + ["type"]=2, + ["name"]="Primorsko-Akhtarsk", + ["callsign"]="GW", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.233333335034, + ["latitude"]=46.050000027573, + ["course"]=0, + ["height"]=0, + }, + ["sub_type"]=8, + }, + ["{3B4BC574-82CB-4126-8675-78AB30E2AFDE}"]= + { + ["band"]=507000, + ["type"]=2, + ["name"]="Bolshevik", + ["callsign"]="ND", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.233333214237, + ["latitude"]=45.766666641333, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{37036ACB-BE77-4989-B621-CC04A3A2B8DA}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Maykop-KHanskaya", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.060506400589, + ["latitude"]=44.699959035543, + ["course"]=-2.4609196186066, + ["height"]=185.35874938965, + }, + ["sub_type"]=112, + }, + ["{7BC7638D-90C7-4d39-96F8-87F8DF0C7025}"]= + { + ["band"]=215000, + ["type"]=2, + ["name"]="Anapa-Vityazevo", + ["callsign"]="P", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.372305715442, + ["latitude"]=45.022565731494, + ["course"]=-2.4172778129578, + ["height"]=47.840591430664, + }, + ["sub_type"]=4104, + }, + ["{D408D5E5-E5D1-4907-B812-1E7477F4E3E5}"]= + { + ["band"]=283000, + ["type"]=2, + ["name"]="Mineralnye Vody", + ["callsign"]="M", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.046192426651, + ["latitude"]=44.243793576174, + ["course"]=2.0123660564423, + ["height"]=316.21087646484, + }, + ["sub_type"]=4104, + }, + ["{1ADA83B8-9925-4a16-950B-9AD1AB1BDD7F}"]= + { + ["band"]=907000, + ["type"]=2, + ["name"]="Sarmakovo", + ["callsign"]="SR", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.116666752873, + ["latitude"]=43.749999966496, + ["course"]=0, + ["height"]=1111.2216796875, + }, + ["sub_type"]=8, + }, + ["{75A75E4E-C026-4dcc-B866-F1B5188B72C8}"]= + { + ["band"]=1065000, + ["type"]=2, + ["name"]="Mozdok", + ["callsign"]="R", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.637370992226, + ["latitude"]=43.791323755707, + ["course"]=-1.6970900297165, + ["height"]=158.74685668945, + }, + ["sub_type"]=4104, + }, + ["{D38BD4F7-DEC1-4722-912F-F34891C60A16}"]= + { + ["band"]=443000, + ["type"]=2, + ["name"]="Anapa-Vityazevo", + ["callsign"]="AP", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.396339533105, + ["latitude"]=45.039844694135, + ["course"]=-2.4172778129578, + ["height"]=24.43581199646, + }, + ["sub_type"]=4104, + }, + ["Maykop-Khanskaya"]= + { + ["type"]=1, + ["name"]="Maykop-KHanskaya", + ["callsign"]="", + ["runway_length"]=1200, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=40.035194185914, + ["latitude"]=44.681241298267, + ["course"]=-2.4609196073963, + ["height"]=180, + }, + ["sub_type"]=6, + }, + ["{C43F7CF2-3825-4d89-88B0-AA34DB0CAFD2}"]= + { + ["band"]=493000, + ["type"]=2, + ["name"]="Krasnodar-Pashkovsky", + ["callsign"]="KR", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.133186071592, + ["latitude"]=45.006849978673, + ["course"]=0.82039576768875, + ["height"]=31.459716796875, + }, + ["sub_type"]=4104, + }, + ["{A02321C0-3F1C-4275-879F-0D4FAB5E4602}"]= + { + ["band"]=114300000, + ["type"]=2, + ["name"]="Gelendzhik", + ["callsign"]="GNV", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.012222445868, + ["latitude"]=44.572498319582, + ["course"]=0, + ["height"]=25, + }, + }, + ["{B8918D50-540F-4ce9-8F67-D6EE903B5EEA}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Krymsk", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.94918121689, + ["latitude"]=44.933067755635, + ["course"]=0.68975001573563, + ["height"]=70.84228515625, + }, + ["sub_type"]=112, + }, + ["{00AA1CD4-19CC-406b-96A4-3B82C69B33FD}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Tbilisi-Lochini", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.977461919109, + ["latitude"]=41.650589722257, + ["course"]=-0.90759545564651, + ["height"]=474.58218383789, + }, + ["sub_type"]=112, + }, + ["{A5288D8F-35D5-46d7-BC47-27E08A40453A}"]= + { + ["band"]=307000, + ["type"]=2, + ["name"]="Lazarevskoe", + ["callsign"]="LA", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.337500040245, + ["latitude"]=43.917222231361, + ["course"]=0, + ["height"]=68.265350341797, + }, + ["sub_type"]=8, + }, + ["{79434585-6190-4c2b-8565-EA6C06EED62C}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Krasnodar-Pashkovsky", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.242923047897, + ["latitude"]=45.068978349367, + ["course"]=-2.3211970329285, + ["height"]=39.660533905029, + }, + ["sub_type"]=112, + }, + ["{01575042-1FD8-48ba-819E-5B83E203ADC4}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Krasnodar-TZentralny", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.972554727067, + ["latitude"]=45.086445138456, + ["course"]=-1.6230975389481, + ["height"]=29.684894561768, + }, + ["sub_type"]=112, + }, + ["{00B4A3C9-AB85-4547-A302-15B56CB2FDDD}"]= + { + ["band"]=342000, + ["type"]=2, + ["name"]="TZnori", + ["callsign"]="TO", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=46.015555585484, + ["latitude"]=41.630555462492, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["Vaziani"]= + { + ["type"]=1, + ["name"]="Vaziani", + ["callsign"]="", + ["runway_length"]=841, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=45.027206848999, + ["latitude"]=41.629055409302, + ["course"]=2.3646639161617, + ["height"]=459.74453735352, + }, + ["sub_type"]=6, + }, + ["{2DF525C9-0BDB-4a59-94C6-0C673D2C5865}"]= + { + ["band"]=117100000, + ["type"]=2, + ["name"]="Mineralnye Vody", + ["callsign"]="MNV", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.054165210771, + ["latitude"]=44.239444709307, + ["course"]=0, + ["height"]=320, + }, + }, + ["{7904FBDC-946A-44a1-AE06-F42CD84EF8A4}"]= + { + ["band"]=515000, + ["type"]=2, + ["name"]="Rostov-na-Donu tzentr", + ["callsign"]="NV", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.633333392466, + ["latitude"]=47.283333305814, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{E359DB92-2210-4bc2-BF28-2D4896AA1A9A}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Krymsk", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.972489530998, + ["latitude"]=44.950801972146, + ["course"]=0.68975001573563, + ["height"]=27.12328338623, + }, + ["sub_type"]=112, + }, + ["{D83E4F74-98AA-4e95-83C3-6D3886C0063C}"]= + { + ["band"]=117350000, + ["type"]=2, + ["name"]="Krymsk", + ["callsign"]="KW", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.992110405136, + ["latitude"]=44.967297189351, + ["course"]=0.68975001573563, + ["height"]=20, + }, + ["sub_type"]=32, + }, + ["Kutaisi"]= + { + ["type"]=1, + ["name"]="Kutaisi", + ["callsign"]="", + ["runway_length"]=850, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=42.481231059907, + ["latitude"]=42.177608840793, + ["course"]=1.2915590466874, + ["height"]=45, + }, + ["sub_type"]=5, + }, + ["{C602648E-3C89-4987-8334-881C1EBAC52F}"]= + { + ["band"]=845000, + ["type"]=2, + ["name"]="Kutaisi", + ["callsign"]="KN", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=42.625000275301, + ["latitude"]=42.268333186963, + ["course"]=0, + ["height"]=126.21682739258, + }, + ["sub_type"]=8, + }, + ["{838F92D0-0223-4375-8579-D56902421993}"]= + { + ["band"]=583000, + ["type"]=2, + ["name"]="Mineralnye Vody", + ["callsign"]="MD", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.017842556108, + ["latitude"]=44.256694325491, + ["course"]=2.0123660564423, + ["height"]=318.89764404297, + }, + ["sub_type"]=4104, + }, + ["{E420F52C-8772-4356-8043-96A6DD63304A}"]= + { + ["band"]=528000, + ["type"]=2, + ["name"]="Tikhoretzk", + ["callsign"]="UH", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.083333455866, + ["latitude"]=45.833333333627, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{3CF9B849-8E92-4033-BFC2-7C59671ECEC2}"]= + { + ["band"]=720000, + ["type"]=2, + ["name"]="Taganrog-YUzhny", + ["callsign"]="UF", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.85000014935, + ["latitude"]=47.199999973589, + ["course"]=0, + ["height"]=0, + }, + ["sub_type"]=8, + }, + ["{E974F4EA-E315-4098-A130-9B59879C696A}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Krasnodar-TZentralny", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.873723610789, + ["latitude"]=45.087918485615, + ["course"]=1.5184950828552, + ["height"]=20.947057723999, + }, + ["sub_type"]=112, + }, + ["{40489709-027A-4325-9425-DC17BACBC1B5}"]= + { + ["band"]=443000, + ["type"]=2, + ["name"]="Anapa-Vityazevo", + ["callsign"]="AN", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.299402775931, + ["latitude"]=44.970054188162, + ["course"]=0.72431498765945, + ["height"]=20.469882965088, + }, + ["sub_type"]=4104, + }, + ["{000A169C-D1FD-4058-8FB0-C51BAA217602}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Krymsk", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.040778144691, + ["latitude"]=45.002664878554, + ["course"]=-2.451842546463, + ["height"]=10.494524002075, + }, + ["sub_type"]=112, + }, + ["{080038D8-492C-4b87-9ECC-DC6D50A7CD21}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Maykop-KHanskaya", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.00989844675, + ["latitude"]=44.66251686896, + ["course"]=0.68067294359207, + ["height"]=180.70574951172, + }, + ["sub_type"]=112, + }, + ["Mozdok"]= + { + ["type"]=1, + ["name"]="Mozdok", + ["callsign"]="", + ["runway_length"]=1365, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=44.599679347932, + ["latitude"]=43.791734916438, + ["course"]=1.4445026599326, + ["height"]=155.00003051758, + }, + ["sub_type"]=6, + }, + ["Gelendzhik"]= + { + ["type"]=1, + ["name"]="Gelendzhik", + ["callsign"]="", + ["runway_length"]=499, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=38.011402844087, + ["latitude"]=44.572738119785, + ["course"]=0.69812567198489, + ["height"]=25, + }, + ["sub_type"]=5, + }, + ["{AE534DA8-FFF9-49df-973E-973499E462E7}"]= + { + ["band"]=591000, + ["type"]=2, + ["name"]="Maykop-KHanskaya", + ["callsign"]="D", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.00989844675, + ["latitude"]=44.66251686896, + ["course"]=0.68067294359207, + ["height"]=180.70574951172, + }, + ["sub_type"]=4104, + }, + ["Mineralnye Vody"]= + { + ["type"]=1, + ["name"]="Mineralnye Vody", + ["callsign"]="", + ["runway_length"]=1632, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=43.081167856217, + ["latitude"]=44.22786123394, + ["course"]=-1.1292264568822, + ["height"]=320, + }, + ["sub_type"]=5, + }, + ["{165039F5-F4DC-4edd-8C37-A5EF2FDD7CF2}"]= + { + ["band"]=515000, + ["type"]=2, + ["name"]="Tiraspol", + ["callsign"]="TH", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=29.600000011301, + ["latitude"]=46.866666639115, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{93747CB7-628A-4ba2-96D7-CD70A3089998}"]= + { + ["band"]=329000, + ["type"]=2, + ["name"]="Nikolaev-Kulbakovo", + ["callsign"]="LC", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=32.100000047281, + ["latitude"]=46.933333325333, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{6479B3BB-1018-49a1-A78A-2250E643028D}"]= + { + ["band"]=740000, + ["type"]=2, + ["name"]="Armavir - TZentr", + ["callsign"]="WM", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.116666880031, + ["latitude"]=44.966666653241, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{6146843A-2910-43e8-80AA-41A1935DCEB8}"]= + { + ["band"]=870000, + ["type"]=2, + ["name"]="Kobuleti", + ["callsign"]="KT", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.80304745528, + ["latitude"]=41.918633401388, + ["course"]=1.2217304706573, + ["height"]=10.535722732544, + }, + ["sub_type"]=4104, + }, + ["{0860C87D-F9D3-4b68-BB0A-B04BD7B584EE}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Krymsk", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.017427440086, + ["latitude"]=44.984946612747, + ["course"]=-2.451842546463, + ["height"]=16.346725463867, + }, + ["sub_type"]=112, + }, + ["Nalchik"]= + { + ["type"]=1, + ["name"]="Nalchik", + ["callsign"]="", + ["runway_length"]=751, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=43.636542729743, + ["latitude"]=43.514033270925, + ["course"]=0.96877320409637, + ["height"]=430, + }, + ["sub_type"]=5, + }, + ["{5A070E13-71C5-40af-B241-B101BA438AD4}"]= + { + ["band"]=866000, + ["type"]=2, + ["name"]="Sultanskoe", + ["callsign"]="SN", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=42.666666702721, + ["latitude"]=44.591666661132, + ["course"]=0, + ["height"]=260.27188110352, + }, + ["sub_type"]=8, + }, + ["{1B420597-B662-4c7a-B207-36417737871C}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Mineralnye Vody", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.046192426651, + ["latitude"]=44.243793576174, + ["course"]=2.0123660564423, + ["height"]=316.21087646484, + }, + ["sub_type"]=112, + }, + ["{24A6AD99-F338-464d-914C-7E2191D86CC1}"]= + { + ["band"]=1064000, + ["type"]=2, + ["name"]="Mozdok", + ["callsign"]="D", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.561984548905, + ["latitude"]=43.792133293965, + ["course"]=1.4445027112961, + ["height"]=152.32843017578, + }, + ["sub_type"]=4104, + }, + ["{12BC910C-C8B0-45d5-882A-B448A470391D}"]= + { + ["band"]=215000, + ["type"]=2, + ["name"]="Anapa-Vityazevo", + ["callsign"]="N", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.323392564705, + ["latitude"]=44.987350312609, + ["course"]=0.72431498765945, + ["height"]=35.370002746582, + }, + ["sub_type"]=4104, + }, + ["{5DD6E99D-BF2E-4c74-8347-2D99E117DD7F}"]= + { + ["band"]=380000, + ["type"]=2, + ["name"]="Voznesensk", + ["callsign"]="MN", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=31.266666711966, + ["latitude"]=47.516666658291, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{7F547727-1F60-4397-87F2-A5DD1C4C0C96}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Nalchik", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.692770117382, + ["latitude"]=43.534973922883, + ["course"]=-2.1728196144104, + ["height"]=376.85397338867, + }, + ["sub_type"]=112, + }, + ["{42047254-94F7-4667-884F-DA7DC240A298}"]= + { + ["band"]=311000, + ["type"]=2, + ["name"]="Elista", + ["callsign"]="SA", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.333333476884, + ["latitude"]=46.373333331268, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{9193E804-CC12-4d34-A2E6-BA8158E77CF4}"]= + { + ["band"]=337000, + ["type"]=2, + ["name"]="Zenzeli", + ["callsign"]="UP", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=47.066666630167, + ["latitude"]=45.933333270641, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{918C5A7C-36AC-4a04-97C7-B9727CD0CF0E}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Sukhumi-Babushara", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.156747561444, + ["latitude"]=42.846470447617, + ["course"]=-1.1085398197174, + ["height"]=18.967178344727, + }, + ["sub_type"]=112, + }, + ["{E164557E-F439-4b6d-8CD7-AEA59D3C7EB8}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Anapa-Vityazevo", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.396339533105, + ["latitude"]=45.039844694135, + ["course"]=-2.4172778129578, + ["height"]=24.43581199646, + }, + ["sub_type"]=112, + }, + ["{5BF47F48-091D-44dc-980E-64C6AB62FE5B}"]= + { + ["band"]=352000, + ["type"]=2, + ["name"]="Prikaspysky", + ["callsign"]="PK", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=47.208333343616, + ["latitude"]=46.224999985984, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{17F6D663-7FDE-44c2-8A81-B5D997610269}"]= + { + ["band"]=830000, + ["type"]=2, + ["name"]="Krymsk", + ["callsign"]="O", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.972489530998, + ["latitude"]=44.950801972146, + ["course"]=0.68975001573563, + ["height"]=27.12328338623, + }, + ["sub_type"]=4104, + }, + ["{E58FB2D2-9573-4a98-B2B1-63B6F374787D}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Mineralnye Vody", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.144428100003, + ["latitude"]=44.198998202113, + ["course"]=-1.1292264461517, + ["height"]=303.2926940918, + }, + ["sub_type"]=112, + }, + ["{C8F5F433-463C-488c-A9E5-32A4CD5E3C6C}"]= + { + ["band"]=977000000, + ["type"]=2, + ["name"]="Batumi", + ["callsign"]="BTM", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.600418698334, + ["latitude"]=41.610899175899, + ["course"]=0, + ["height"]=9.9645166397095, + }, + ["sub_type"]=4, + }, + ["{F79CFDB7-02CA-4b94-8BCB-685D09BD6E57}"]= + { + ["band"]=602000, + ["type"]=2, + ["name"]="Kuznetzovka", + ["callsign"]="KC", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.966666702314, + ["latitude"]=47.400000050324, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{A39B6CCC-2BB4-4e35-B384-F3DA5483B5D2}"]= + { + ["band"]=353000, + ["type"]=2, + ["name"]="Ali", + ["callsign"]="BT", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.644722125523, + ["latitude"]=42.096111078745, + ["course"]=0, + ["height"]=720, + }, + ["sub_type"]=8, + }, + ["{D4D9D6BB-0D39-4916-8817-CCE1CCB07E58}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Tbilisi-Lochini", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.909702215984, + ["latitude"]=41.703205066957, + ["course"]=2.2339971065521, + ["height"]=566.43151855469, + }, + ["sub_type"]=112, + }, + ["{541D404A-D701-41a6-AD4F-79A3EC956EDD}"]= + { + ["band"]=641000, + ["type"]=2, + ["name"]="Vesely", + ["callsign"]="WS", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.716666661574, + ["latitude"]=47.116666655808, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{F8BD2A4D-FB6F-4678-AF85-6C2EE7FB3F5B}"]= + { + ["band"]=300500, + ["type"]=2, + ["name"]="Akhilleonsky", + ["callsign"]="AN", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=36.853055551249, + ["latitude"]=45.440000007044, + ["course"]=0, + ["height"]=77.428512573242, + }, + ["sub_type"]=8, + }, + ["{5CFFEBC9-D3B9-4e7c-B0BF-455E68EEAC26}"]= + { + ["band"]=396000, + ["type"]=2, + ["name"]="Sochoy", + ["callsign"]="SH", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.350000287381, + ["latitude"]=47.100000003956, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{C6A3D589-C529-4944-86C7-F99B2817B08A}"]= + { + ["band"]=830000, + ["type"]=2, + ["name"]="Krymsk", + ["callsign"]="K", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.017427440086, + ["latitude"]=44.984946612747, + ["course"]=-2.451842546463, + ["height"]=16.346725463867, + }, + ["sub_type"]=4104, + }, + ["{F771C182-D706-493c-A878-D4A296FDB897}"]= + { + ["band"]=435000, + ["type"]=2, + ["name"]="Egrikskaya", + ["callsign"]="QG", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.666666615451, + ["latitude"]=46.883333402189, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{D2A3D3A9-5250-42d6-9D8C-D92D6B9ABB86}"]= + { + ["band"]=348000, + ["type"]=2, + ["name"]="Odessa - TZentralny", + ["callsign"]="OD", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=30.661111289097, + ["latitude"]=46.306388883259, + ["course"]=0, + ["height"]=0, + }, + ["sub_type"]=8, + }, + ["{627C3B78-4A8A-4013-9B0F-3BB58FD76356}"]= + { + ["band"]=923000, + ["type"]=2, + ["name"]="Tbilisi-Lochini", + ["callsign"]="W", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.931974291323, + ["latitude"]=41.685923549921, + ["course"]=2.2339971065521, + ["height"]=518.65625, + }, + ["sub_type"]=4104, + }, + ["{28AD4D52-29A2-4cf6-9AF7-BFDEBFC29194}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Gudauta", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.578915959804, + ["latitude"]=43.099088468953, + ["course"]=-0.50608837604523, + ["height"]=21, + }, + ["sub_type"]=112, + }, + ["{45D91C15-75E1-411d-9E56-B8418BF69D20}"]= + { + ["band"]=1175000, + ["type"]=2, + ["name"]="Bagaevsky", + ["callsign"]="BA", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.366666740007, + ["latitude"]=47.316666743178, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{8CEAEA62-A738-4dea-9A02-1025DE47813E}"]= + { + ["band"]=1025000, + ["type"]=2, + ["name"]="Krasny", + ["callsign"]="KS", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.349999897763, + ["latitude"]=47.19999997768, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{C21DB5FB-78BF-440d-9645-D31513B98BAF}"]= + { + ["band"]=992000000, + ["type"]=2, + ["name"]="Senaki-Kolkhi", + ["callsign"]="TSK", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=42.04702008109, + ["latitude"]=42.242086543242, + ["course"]=0, + ["height"]=13.082180023193, + }, + ["sub_type"]=4, + }, + ["{09C449BB-9725-4bdd-B6E8-68BE9A7639BF}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Senaki-Kolkhi", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=42.018370629355, + ["latitude"]=42.245052975629, + ["course"]=1.6528304815292, + ["height"]=23.467279434204, + }, + ["sub_type"]=112, + }, + ["{30B5CBDE-6BD6-4592-9609-60A3D813A0B6}"]= + { + ["band"]=1210000, + ["type"]=2, + ["name"]="Peredovaya", + ["callsign"]="PR", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.466666760671, + ["latitude"]=44.116666648632, + ["course"]=0, + ["height"]=632.06207275391, + }, + ["sub_type"]=8, + }, + ["{1EC4E87A-A3AE-4817-8B27-90657B9AD267}"]= + { + ["band"]=320000, + ["type"]=2, + ["name"]="Rostov-na-donu Vostochny", + ["callsign"]="RN", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.769999944682, + ["latitude"]=47.225000044919, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{CAA378D7-D3A3-4f3a-9049-1572540279AB}"]= + { + ["band"]=730000, + ["type"]=2, + ["name"]="Stavropol-SHpakovskoe", + ["callsign"]="KT", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=42.181666600404, + ["latitude"]=45.121666657445, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{D988C10B-A2ED-41f2-B9BB-6F67813416F2}"]= + { + ["band"]=214000, + ["type"]=2, + ["name"]="Kropotkin", + ["callsign"]="KP", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.566666483437, + ["latitude"]=45.450000023144, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{23F1A703-1D37-4be7-988A-B36AB86834F9}"]= + { + ["band"]=324000, + ["type"]=2, + ["name"]="Ladozhskaya", + ["callsign"]="RF", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.916666860444, + ["latitude"]=45.283333318466, + ["course"]=0, + ["height"]=80.809173583984, + }, + ["sub_type"]=8, + }, + ["{F84B9F47-2400-433d-BC6F-63A9E8C73765}"]= + { + ["band"]=662000, + ["type"]=2, + ["name"]="Smolenskaya", + ["callsign"]="SM", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.796388878985, + ["latitude"]=44.787499998116, + ["course"]=0, + ["height"]=78.472930908203, + }, + ["sub_type"]=8, + }, + ["{654A7048-AE8C-4932-A060-E351F4A047A9}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Beslan", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.572220563029, + ["latitude"]=43.210694410745, + ["course"]=1.6318835020065, + ["height"]=543.05224609375, + }, + ["sub_type"]=112, + }, + ["{140E2DC1-6A9B-49a9-8C9B-9100458ACCDF}"]= + { + ["band"]=312000, + ["type"]=2, + ["name"]="Ryazanskaya", + ["callsign"]="XT", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.566666698538, + ["latitude"]=44.96666666409, + ["course"]=0, + ["height"]=40.001003265381, + }, + ["sub_type"]=8, + }, + ["{76038C66-8A7F-45df-93BB-4FC7DBE221B3}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Sochi-Adler", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.911168781419, + ["latitude"]=43.43519586845, + ["course"]=1.0821976661682, + ["height"]=4.3798685073853, + }, + ["sub_type"]=112, + }, + ["{3F715664-543F-4521-97AE-70DDE04904D1}"]= + { + ["band"]=240000, + ["type"]=2, + ["name"]="Krasnodar-Pashkovsky", + ["callsign"]="L", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.216192032071, + ["latitude"]=45.053867564375, + ["course"]=-2.3211970329285, + ["height"]=38.959575653076, + }, + ["sub_type"]=4104, + }, + ["{192BA661-61AB-4353-936D-ABF3A5F504E4}"]= + { + ["band"]=1182000, + ["type"]=2, + ["name"]="Teplorechensky", + ["callsign"]="TP", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.533333031236, + ["latitude"]=44.155000024262, + ["course"]=0, + ["height"]=263.61557006836, + }, + ["sub_type"]=8, + }, + ["{8CED2827-A2B9-4eac-9302-CB5F0FEE14C4}"]= + { + ["band"]=1005000000, + ["type"]=2, + ["name"]="Kutaisi", + ["callsign"]="KTS", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=42.479213330824, + ["latitude"]=42.178443019783, + ["course"]=0, + ["height"]=45, + }, + ["sub_type"]=4, + }, + ["{70065F51-9EBE-4a8a-8667-047BD1B789B9}"]= + { + ["band"]=995000, + ["type"]=2, + ["name"]="Sukhumi-Babushara", + ["callsign"]="A", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.156747561444, + ["latitude"]=42.846470447617, + ["course"]=-1.1085398197174, + ["height"]=18.967178344727, + }, + ["sub_type"]=4104, + }, + ["{F3578977-50C9-45de-A9A3-21491A314857}"]= + { + ["band"]=384000, + ["type"]=2, + ["name"]="Alushta", + ["callsign"]="AL", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=34.398333334698, + ["latitude"]=44.675000017156, + ["course"]=0, + ["height"]=-2.8605400075321e-006, + }, + ["sub_type"]=8, + }, + ["{A14E485A-E9E6-4ecf-BDC8-7834DAAC7E83}"]= + { + ["band"]=493000, + ["type"]=2, + ["name"]="Krasnodar-Pashkovsky", + ["callsign"]="LD", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.242923047897, + ["latitude"]=45.068978349367, + ["course"]=-2.3211970329285, + ["height"]=39.660533905029, + }, + ["sub_type"]=4104, + }, + ["{CF2EA740-F402-4000-837C-D16CBB7274E4}"]= + { + ["band"]=625000, + ["type"]=2, + ["name"]="Krasnodar-TZentralny", + ["callsign"]="MB", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.873723610789, + ["latitude"]=45.087918485615, + ["course"]=1.5184950828552, + ["height"]=20.947057723999, + }, + ["sub_type"]=4104, + }, + ["Krasnodar-Pashkovsky"]= + { + ["type"]=1, + ["name"]="Krasnodar-Pashkovsky", + ["callsign"]="", + ["runway_length"]=1146, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=39.18802521083, + ["latitude"]=45.037929060373, + ["course"]=0.8203957479386, + ["height"]=34, + }, + ["sub_type"]=5, + }, + ["{5652EE65-0F0A-4cdc-83CF-ED292F942469}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Krasnodar-Pashkovsky", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.216192032071, + ["latitude"]=45.053867564375, + ["course"]=-2.3211970329285, + ["height"]=38.959575653076, + }, + ["sub_type"]=112, + }, + ["{FA95D7EE-453B-49bc-A693-E254CF3F04FB}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Anapa-Vityazevo", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.323392564705, + ["latitude"]=44.987350312609, + ["course"]=0.72431498765945, + ["height"]=35.370002746582, + }, + ["sub_type"]=112, + }, + ["{F4507C36-4CD0-415c-92C2-715CBFBA4D35}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Krasnodar-Pashkovsky", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.159873850437, + ["latitude"]=45.02198271643, + ["course"]=0.82039576768875, + ["height"]=34.374855041504, + }, + ["sub_type"]=112, + }, + ["Novorossiysk"]= + { + ["type"]=1, + ["name"]="Novorossysk", + ["callsign"]="", + ["runway_length"]=499, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=37.778238633922, + ["latitude"]=44.668068985973, + ["course"]=0.73304063019746, + ["height"]=40, + }, + ["sub_type"]=6, + }, + ["{EE57F7DA-163A-4b5c-A64B-FB0ED146243D}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Tbilisi-Lochini", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.999697078343, + ["latitude"]=41.633299706948, + ["course"]=-0.90759545564651, + ["height"]=459.41839599609, + }, + ["sub_type"]=112, + }, + ["{314E0FD7-2696-4a5c-82B4-2011ADF8B2A0}"]= + { + ["band"]=462000, + ["type"]=2, + ["name"]="Gori", + ["callsign"]="OZ", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.132221940757, + ["latitude"]=42.016666555471, + ["course"]=0, + ["height"]=604.78430175781, + }, + ["sub_type"]=8, + }, + ["{4F81A9F3-CC8A-42c1-944A-E7F7D569E73B}"]= + { + ["band"]=283000, + ["type"]=2, + ["name"]="Mineralnye Vody", + ["callsign"]="N", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.116124501349, + ["latitude"]=44.211919658446, + ["course"]=-1.1292264461517, + ["height"]=320, + }, + ["sub_type"]=4104, + }, + ["{720C9A85-7BE6-427e-A35F-356397226419}"]= + { + ["band"]=240000, + ["type"]=2, + ["name"]="Krasnodar-Pashkovsky", + ["callsign"]="K", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.159873850437, + ["latitude"]=45.02198271643, + ["course"]=0.82039576768875, + ["height"]=34.374855041504, + }, + ["sub_type"]=4104, + }, + ["{A3CD46FC-1C4B-4caf-9665-76EB09596E97}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Krasnodar-Pashkovsky", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.133186071592, + ["latitude"]=45.006849978673, + ["course"]=0.82039576768875, + ["height"]=31.459716796875, + }, + ["sub_type"]=112, + }, + ["{5EEEA845-728A-4617-B73D-AB7B95C0BF14}"]= + { + ["band"]=770000, + ["type"]=2, + ["name"]="Mariupol", + ["callsign"]="MA", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.449999910781, + ["latitude"]=47.083333342844, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{9C4955CF-8F2E-4447-8ADA-D34BAD346FA1}"]= + { + ["band"]=342000, + ["type"]=2, + ["name"]="Berdyansk", + ["callsign"]="BD", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=36.766666662967, + ["latitude"]=46.816666632055, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{F825D676-6710-4ab0-ACDD-D4CCE63018EA}"]= + { + ["band"]=470000, + ["type"]=2, + ["name"]="Taganrog-TZentr", + ["callsign"]="TN", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.833333449616, + ["latitude"]=47.250000040204, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{1C17D867-0AC8-48cd-BE17-769F10A3F5A9}"]= + { + ["band"]=745000, + ["type"]=2, + ["name"]="Astrakhan", + ["callsign"]="AD", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=47.88333319274, + ["latitude"]=46.349999974477, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{6A4D7CD3-15A6-45de-A551-C9CE55BC23F5}"]= + { + ["band"]=303000, + ["type"]=2, + ["name"]="Krasnodar-TZentralny", + ["callsign"]="O", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.972554727067, + ["latitude"]=45.086445138456, + ["course"]=-1.6230975389481, + ["height"]=29.684894561768, + }, + ["sub_type"]=4104, + }, + ["{8AE7C2EE-7B4E-4e28-B01A-BB9212B906B4}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Nalchik", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.663293698368, + ["latitude"]=43.524002039126, + ["course"]=-2.1728196144104, + ["height"]=430, + }, + ["sub_type"]=112, + }, + ["{78C892D0-62A0-41f4-B216-04D6590D370B}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Krasnodar-TZentralny", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.006761833256, + ["latitude"]=45.0859151671, + ["course"]=-1.6230975389481, + ["height"]=26.556413650513, + }, + ["sub_type"]=112, + }, + ["{F0D00BE3-D414-4504-BFA8-57456343F983}"]= + { + ["band"]=750000, + ["type"]=2, + ["name"]="Limanskoe", + ["callsign"]="KE", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=30.00000011322, + ["latitude"]=46.666666667637, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{F6384C59-B29A-493f-9BC5-AF5333DB076B}"]= + { + ["band"]=625000, + ["type"]=2, + ["name"]="Krasnodar-TZentralny", + ["callsign"]="Oyo", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.006761833256, + ["latitude"]=45.0859151671, + ["course"]=-1.6230975389481, + ["height"]=26.556413650513, + }, + ["sub_type"]=4104, + }, + ["{FC180E41-CAE0-4bcc-A657-E1DFE3C861BF}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Krasnodar-TZentralny", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.907935555841, + ["latitude"]=45.087418185601, + ["course"]=1.5184950828552, + ["height"]=30, + }, + ["sub_type"]=112, + }, + ["{44689E55-C104-4400-8896-69F4C81290C5}"]= + { + ["band"]=156000, + ["type"]=2, + ["name"]="Senaki-Kolkhi", + ["callsign"]="TI", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.986436464281, + ["latitude"]=42.249570732027, + ["course"]=1.6528304815292, + ["height"]=21.472751617432, + }, + ["sub_type"]=4104, + }, + ["{4352EE5E-8A18-4807-BE5F-FEE655FCC959}"]= + { + ["band"]=430000, + ["type"]=2, + ["name"]="Batumi", + ["callsign"]="LU", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.606666808765, + ["latitude"]=41.613887679663, + ["course"]=0, + ["height"]=9.984808921814, + }, + ["sub_type"]=4104, + }, + ["{603826C0-DA1C-4b20-9DEF-C75B680D6F7C}"]= + { + ["band"]=303000, + ["type"]=2, + ["name"]="Krasnodar-TZentralny", + ["callsign"]="M", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.907935555841, + ["latitude"]=45.087418185601, + ["course"]=1.5184950828552, + ["height"]=30, + }, + ["sub_type"]=4104, + }, + ["{C382D774-5121-4c23-86E6-7116164FE603}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Kobuleti", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.83442330282, + ["latitude"]=41.924511693408, + ["course"]=1.2217304706573, + ["height"]=18.219362258911, + }, + ["sub_type"]=112, + }, + ["{0431F814-C3D7-45a4-AF13-A67A43CCAAAC}"]= + { + ["band"]=116350000, + ["type"]=2, + ["name"]="Krasnodar-TZentralny", + ["callsign"]="MB", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.928128326203, + ["latitude"]=45.084424147438, + ["course"]=1.5184950828552, + ["height"]=30, + }, + ["sub_type"]=32, + }, + ["{F9C00BBF-3CDC-4d8b-AB37-0273E9315F75}"]= + { + ["band"]=950000, + ["type"]=2, + ["name"]="Komissarovo", + ["callsign"]="KM", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=35.016666687172, + ["latitude"]=46.266666673198, + ["course"]=0, + ["height"]=0, + }, + ["sub_type"]=8, + }, + ["{039B4712-1F13-48e1-A67F-F8CB815216BF}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Tbilisi-Lochini", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.931974291323, + ["latitude"]=41.685923549921, + ["course"]=2.2339971065521, + ["height"]=518.65625, + }, + ["sub_type"]=112, + }, + ["{3672E620-C61C-4318-B474-69B4CE6034C5}"]= + { + ["band"]=862000, + ["type"]=2, + ["name"]="Sukhoy", + ["callsign"]="SH", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.350000287381, + ["latitude"]=47.100000003956, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{E9E09B4F-A4F7-402b-AB07-2F3501C5003E}"]= + { + ["band"]=309500, + ["type"]=2, + ["name"]="Vorontzovsky front - Odessa", + ["callsign"]="WR", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=30.723888999574, + ["latitude"]=46.496111141931, + ["course"]=0, + ["height"]=0, + }, + ["sub_type"]=8, + }, + ["{9D7CEAEB-8E52-4775-B825-CA62E0EEB43F}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Kutaisi", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=42.419028299913, + ["latitude"]=42.169763922025, + ["course"]=1.2915591001511, + ["height"]=34.913619995117, + }, + ["sub_type"]=112, + }, + ["{322D5B49-F59D-4d7f-9655-1DAA7AF94344}"]= + { + ["band"]=420000, + ["type"]=2, + ["name"]="Dzhubga", + ["callsign"]="RQ", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.701389026511, + ["latitude"]=44.320555530626, + ["course"]=0, + ["height"]=63.587341308594, + }, + ["sub_type"]=8, + }, + ["{498DF95B-CAA4-4642-BCD6-2ED7AC366214}"]= + { + ["band"]=408000, + ["type"]=2, + ["name"]="Krymsk", + ["callsign"]="KW", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.040778144691, + ["latitude"]=45.002664878554, + ["course"]=-2.451842546463, + ["height"]=10.494524002075, + }, + ["sub_type"]=4104, + }, + ["{6E655001-7D12-400e-A4F5-DF3B48005E06}"]= + { + ["band"]=690000, + ["type"]=2, + ["name"]="Dmitrovka", + ["callsign"]="DM", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=35.058611107534, + ["latitude"]=45.489444431369, + ["course"]=0, + ["height"]=31.682126998901, + }, + ["sub_type"]=8, + }, + ["{839D524E-BB23-4a7c-87B6-436BBDFABCC8}"]= + { + ["band"]=408000, + ["type"]=2, + ["name"]="Krymsk", + ["callsign"]="yuO", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.94918121689, + ["latitude"]=44.933067755635, + ["course"]=0.68975001573563, + ["height"]=70.84228515625, + }, + ["sub_type"]=4104, + }, + ["{099B1B66-552F-44e7-817A-9E395150DBA0}"]= + { + ["band"]=1050000, + ["type"]=2, + ["name"]="Kerch", + ["callsign"]="KS", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=36.400000028215, + ["latitude"]=45.366666665613, + ["course"]=0, + ["height"]=36.203407287598, + }, + ["sub_type"]=8, + }, + ["{7B6744C4-3945-4a19-AD08-8ED6A1E8BCDD}"]= + { + ["band"]=485000, + ["type"]=2, + ["name"]="Kakhovka", + ["callsign"]="KH", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=33.496666642802, + ["latitude"]=46.808333264695, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{0B6C84AE-2A8C-4623-8103-B85C66F9F627}"]= + { + ["band"]=440000, + ["type"]=2, + ["name"]="Artziz", + ["callsign"]="BT", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=29.383333152565, + ["latitude"]=45.950000001714, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["Batumi"]= + { + ["type"]=1, + ["name"]="Batumi", + ["callsign"]="", + ["runway_length"]=822, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=41.600567780743, + ["latitude"]=41.609371050613, + ["course"]=2.1918691046878, + ["height"]=9.9645166397095, + }, + ["sub_type"]=5, + }, + ["{DB73D633-0760-4765-88D9-2125C3B61A28}"]= + { + ["band"]=395000, + ["type"]=2, + ["name"]="Gudauta", + ["callsign"]="ZC", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.578915959804, + ["latitude"]=43.099088468953, + ["course"]=-0.50608837604523, + ["height"]=21, + }, + ["sub_type"]=4104, + }, + ["{6DBC6B40-38E2-457d-BC84-50521AC3D072}"]= + { + ["band"]=350000, + ["type"]=2, + ["name"]="Nalchik", + ["callsign"]="N", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.663293698368, + ["latitude"]=43.524002039126, + ["course"]=-2.1728196144104, + ["height"]=430, + }, + ["sub_type"]=4104, + }, + ["Sochi-Adler"]= + { + ["type"]=1, + ["name"]="Sochi-Adler", + ["callsign"]="", + ["runway_length"]=1151, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=39.941488914396, + ["latitude"]=43.444479177936, + ["course"]=-2.059394842015, + ["height"]=30, + }, + ["sub_type"]=5, + }, + ["{6BFE6F5C-4121-4646-ABEA-A31E72381C88}"]= + { + ["band"]=1000000, + ["type"]=2, + ["name"]="Gelendzhik", + ["callsign"]="GN", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=38.015277672561, + ["latitude"]=44.564445491859, + ["course"]=0, + ["height"]=0, + }, + ["sub_type"]=4104, + }, + ["{791B532E-7081-43fd-9F90-4484BCEC2CE5}"]= + { + ["band"]=670000, + ["type"]=2, + ["name"]="Lyubimovka", + ["callsign"]="LB", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=34.898333338244, + ["latitude"]=45.625000014443, + ["course"]=0, + ["height"]=50.001346588135, + }, + ["sub_type"]=8, + }, + ["{F908523F-DF9E-4f63-9423-913582798F99}"]= + { + ["band"]=435000, + ["type"]=2, + ["name"]="Tbilisi-Lochini", + ["callsign"]="N", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.977461919109, + ["latitude"]=41.650589722257, + ["course"]=-0.90759545564651, + ["height"]=474.58218383789, + }, + ["sub_type"]=4104, + }, + ["{9286A133-DEE7-4006-9B75-B6279CCDF74F}"]= + { + ["band"]=525000, + ["type"]=2, + ["name"]="Mozdok", + ["callsign"]="DO", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.528781245533, + ["latitude"]=43.792473730478, + ["course"]=1.4445027112961, + ["height"]=153.11080932617, + }, + ["sub_type"]=4104, + }, + ["{7D1F43A3-D30B-40d3-A3B1-4D7D546B8E53}"]= + { + ["band"]=288000, + ["type"]=2, + ["name"]="Maykop-KHanskaya", + ["callsign"]="DG", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.986362565764, + ["latitude"]=44.645077755977, + ["course"]=0.68067294359207, + ["height"]=177.95664978027, + }, + ["sub_type"]=4104, + }, + ["{FB1CF904-A634-44ca-9AB7-DE7357600758}"]= + { + ["band"]=1030000, + ["type"]=2, + ["name"]="Mikolaivka", + ["callsign"]="NK", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=31.973055617388, + ["latitude"]=47.087500015661, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["Anapa-Vityazevo"]= + { + ["type"]=1, + ["name"]="Anapa-Vityazevo", + ["callsign"]="", + ["runway_length"]=1050, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=37.34784162046, + ["latitude"]=45.004960953476, + ["course"]=0.72431498648244, + ["height"]=45, + }, + ["sub_type"]=5, + }, + ["{FA899F12-3708-4520-BD03-AC5B5FDAABFE}"]= + { + ["band"]=300500, + ["type"]=2, + ["name"]="KHenichesky", + ["callsign"]="GE", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=34.816111103122, + ["latitude"]=46.182500024812, + ["course"]=0, + ["height"]=0, + }, + ["sub_type"]=8, + }, + ["{C5931F6D-6525-41e3-8F22-9994690BED2E}"]= + { + ["band"]=389000, + ["type"]=2, + ["name"]="SHiryaevo", + ["callsign"]="SH", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=30.280000014199, + ["latitude"]=47.403333287882, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["Gudauta"]= + { + ["type"]=1, + ["name"]="Gudauta", + ["callsign"]="", + ["runway_length"]=850, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=40.569781849787, + ["latitude"]=43.11425961416, + ["course"]=-0.50608837006882, + ["height"]=21, + }, + ["sub_type"]=6, + }, + ["{9D2D723F-CD98-46a3-AA95-444DD810AE6C}"]= + { + ["band"]=718000, + ["type"]=2, + ["name"]="Nalchik", + ["callsign"]="NL", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.692770117382, + ["latitude"]=43.534973922883, + ["course"]=-2.1728196144104, + ["height"]=376.85397338867, + }, + ["sub_type"]=4104, + }, + ["{6D4B161C-F96D-4e66-BB97-E25774343A67}"]= + { + ["band"]=129000, + ["type"]=2, + ["name"]="Senaki-Kolkhi", + ["callsign"]="I", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=42.018370629355, + ["latitude"]=42.245052975629, + ["course"]=1.6528304815292, + ["height"]=23.467279434204, + }, + ["sub_type"]=4104, + }, + ["{EE522F8B-8046-4d7a-A3C2-C166B81CBA14}"]= + { + ["band"]=680000, + ["type"]=2, + ["name"]="Skadovsk", + ["callsign"]="SK", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=32.916666617971, + ["latitude"]=46.13333333967, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{3B9069B3-92F0-474c-9629-35F940A7D6CB}"]= + { + ["band"]=1175000, + ["type"]=2, + ["name"]="Dobrushino", + ["callsign"]="DO", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=33.361666685089, + ["latitude"]=45.378055556009, + ["course"]=0, + ["height"]=50.001235961914, + }, + ["sub_type"]=8, + }, + ["{3CF293EE-56CF-464c-9695-E85D44690077}"]= + { + ["band"]=905000, + ["type"]=2, + ["name"]="Parutyne", + ["callsign"]="PA", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=31.905000082189, + ["latitude"]=46.695000058446, + ["course"]=0, + ["height"]=0, + }, + ["sub_type"]=8, + }, + ["{879CF29F-5127-4638-ABEA-408B83CE1520}"]= + { + ["band"]=625000, + ["type"]=2, + ["name"]="Buyalyk", + ["callsign"]="DW", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=30.699999929771, + ["latitude"]=46.899999972094, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{E2AA221C-41BD-4ba0-94D4-7A25521A4A02}"]= + { + ["band"]=845000, + ["type"]=2, + ["name"]="Kutaisi", + ["callsign"]="KN", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=42.419028299913, + ["latitude"]=42.169763922025, + ["course"]=1.2915591001511, + ["height"]=34.913619995117, + }, + ["sub_type"]=4104, + }, + ["{7418FEDC-377B-40ba-BC1D-48D15E804B89}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Mozdok", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.637370992226, + ["latitude"]=43.791323755707, + ["course"]=-1.6970900297165, + ["height"]=158.74685668945, + }, + ["sub_type"]=112, + }, + ["{F82C7B3B-58AB-4f37-A7A9-D8CA6CD7F845}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Beslan", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.539993803635, + ["latitude"]=43.215477513059, + ["course"]=1.6318835020065, + ["height"]=543.41900634766, + }, + ["sub_type"]=112, + }, + ["{3AAD8E39-71D3-4952-BC6A-6FAA66100740}"]= + { + ["band"]=117650000, + ["type"]=2, + ["name"]="Maykop-KHanskaya", + ["callsign"]="DG", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.04064281205, + ["latitude"]=44.683721927129, + ["course"]=-2.4609196186066, + ["height"]=180, + }, + ["sub_type"]=32, + }, + ["{B379E11C-7F88-4389-89FB-6F53E7388747}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Anapa-Vityazevo", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.299402775931, + ["latitude"]=44.970054188162, + ["course"]=0.72431498765945, + ["height"]=20.469882965088, + }, + ["sub_type"]=112, + }, + ["{14A2F917-A2D6-483e-9E49-77E90E074B3A}"]= + { + ["band"]=455000, + ["type"]=2, + ["name"]="Kizlyar", + ["callsign"]="KZ", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=46.71666661869, + ["latitude"]=43.83333334862, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{91DCC6FD-AE23-4f03-BB94-228873913F50}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Senaki-Kolkhi", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.986436464281, + ["latitude"]=42.249570732027, + ["course"]=1.6528304815292, + ["height"]=21.472751617432, + }, + ["sub_type"]=112, + }, + ["{B4DD584A-3268-4ed8-A6BC-0F16BB1FFFC1}"]= + { + ["band"]=309500, + ["type"]=2, + ["name"]="Tendorovsky", + ["callsign"]="TD", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=31.522777764021, + ["latitude"]=46.318611082896, + ["course"]=0, + ["height"]=0, + }, + ["sub_type"]=8, + }, + ["{D2BF3722-93DC-4e25-BD1F-97B99641315A}"]= + { + ["band"]=580000, + ["type"]=2, + ["name"]="Kacha", + ["callsign"]="KC", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=33.566666669312, + ["latitude"]=44.749999997154, + ["course"]=0, + ["height"]=44.705688476563, + }, + ["sub_type"]=8, + }, + ["{B08554A5-CFF1-444b-86B9-F2D4A36AC450}"]= + { + ["band"]=525000, + ["type"]=2, + ["name"]="Gali", + ["callsign"]="DA", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.783333639785, + ["latitude"]=42.600000022704, + ["course"]=0, + ["height"]=153.07803344727, + }, + ["sub_type"]=8, + }, + ["{C4DA1D59-0135-4810-9FF1-98A3D0FD368C}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Mozdok", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.670566359666, + ["latitude"]=43.790951233713, + ["course"]=-1.6970900297165, + ["height"]=154.5718536377, + }, + ["sub_type"]=112, + }, + ["{3C275B48-0ED2-45ca-9290-A8DD9936A121}"]= + { + ["band"]=1050000, + ["type"]=2, + ["name"]="Beslan", + ["callsign"]="CH", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.539993803635, + ["latitude"]=43.215477513059, + ["course"]=1.6318835020065, + ["height"]=543.41900634766, + }, + ["sub_type"]=4104, + }, + ["{818BCBB4-141F-4eb1-9199-593346420D68}"]= + { + ["band"]=761000, + ["type"]=2, + ["name"]="Sochi-Adler", + ["callsign"]="SO", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.911168781419, + ["latitude"]=43.43519586845, + ["course"]=1.0821976661682, + ["height"]=4.3798685073853, + }, + ["sub_type"]=4104, + }, + ["Krymsk"]= + { + ["type"]=1, + ["name"]="Krymsk", + ["callsign"]="", + ["runway_length"]=900, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=37.994951766799, + ["latitude"]=44.967876819866, + ["course"]=-2.4518425368978, + ["height"]=20, + }, + ["sub_type"]=6, + }, + ["{2F6A39A0-1F26-406d-BCE6-48274102904D}"]= + { + ["band"]=288000, + ["type"]=2, + ["name"]="Maykop-KHanskaya", + ["callsign"]="RK", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.084087240926, + ["latitude"]=44.717379887168, + ["course"]=-2.4609196186066, + ["height"]=216.91372680664, + }, + ["sub_type"]=4104, + }, + ["{657FD001-F740-41b7-A9D1-DC8EE6AF85B4}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Maykop-KHanskaya", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.084087240926, + ["latitude"]=44.717379887168, + ["course"]=-2.4609196186066, + ["height"]=216.91372680664, + }, + ["sub_type"]=112, + }, + ["{641A95FC-D90C-4313-9A4B-783DEB01D5E5}"]= + { + ["band"]=995000, + ["type"]=2, + ["name"]="Kislovodsk", + ["callsign"]="KW", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=42.650000029649, + ["latitude"]=43.941666665735, + ["course"]=0, + ["height"]=800.17553710938, + }, + ["sub_type"]=8, + }, + ["{86B21180-D7E9-47c3-8012-74C6092DDF4E}"]= + { + ["band"]=300500, + ["type"]=2, + ["name"]="Ilichevsk", + ["callsign"]="IO", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=35.419722196701, + ["latitude"]=45.014444444519, + ["course"]=0, + ["height"]=1.8064863979816e-005, + }, + ["sub_type"]=8, + }, + ["{7D1BE209-B33E-4e6f-88DE-FA4D55E9AFE9}"]= + { + ["band"]=735000, + ["type"]=2, + ["name"]="Kalaus", + ["callsign"]="BJ", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=45.216666759111, + ["latitude"]=43.466666663757, + ["course"]=0, + ["height"]=343.54925537109, + }, + ["sub_type"]=8, + }, + ["{65B77E50-8B99-48a8-A355-3A6844C86A2A}"]= + { + ["band"]=830000, + ["type"]=2, + ["name"]="Gronzy - Vostochny", + ["callsign"]="WK", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=45.700000076209, + ["latitude"]=43.383333345666, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["Kobuleti"]= + { + ["type"]=1, + ["name"]="Kobuleti", + ["callsign"]="", + ["runway_length"]=799, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=41.863479703668, + ["latitude"]=41.929946253786, + ["course"]=1.2217305208975, + ["height"]=18, + }, + ["sub_type"]=5, + }, + ["Soganlug"]= + { + ["type"]=1, + ["name"]="Soganlug", + ["callsign"]="", + ["runway_length"]=835, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=44.938407241324, + ["latitude"]=41.649498903439, + ["course"]=2.3086751290292, + ["height"]=458.72555541992, + }, + ["sub_type"]=5, + }, + ["{93E74802-597F-4d4f-B0E0-7A5A43A79EA9}"]= + { + ["band"]=525000, + ["type"]=2, + ["name"]="Mozdok", + ["callsign"]="RM", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.670566359666, + ["latitude"]=43.790951233713, + ["course"]=-1.6970900297165, + ["height"]=154.5718536377, + }, + ["sub_type"]=4104, + }, + ["{B8A2BBE0-959D-4856-AFEB-AC092A6C76E4}"]= + { + ["band"]=705000, + ["type"]=2, + ["name"]="Manychsky", + ["callsign"]="MN", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.366666550758, + ["latitude"]=47.049999993999, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{2F54CFDB-24E0-4d59-B9E4-0D0A9923194D}"]= + { + ["band"]=591000, + ["type"]=2, + ["name"]="Maykop-KHanskaya", + ["callsign"]="R", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.060506400589, + ["latitude"]=44.699959035543, + ["course"]=-2.4609196186066, + ["height"]=185.35874938965, + }, + ["sub_type"]=4104, + }, + ["{2CF16904-80B3-4bdd-9659-E949BA3F4E78}"]= + { + ["band"]=330000, + ["type"]=2, + ["name"]="Ust-Labinsk", + ["callsign"]="NZ", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.654166830374, + ["latitude"]=45.226666650569, + ["course"]=0, + ["height"]=80.053146362305, + }, + ["sub_type"]=8, + }, + ["{AC45C2C1-6D32-4e03-B52D-3051A01D7B1D}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Sukhumi-Babushara", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.184595069577, + ["latitude"]=42.833634213401, + ["course"]=-1.1085398197174, + ["height"]=23.724117279053, + }, + ["sub_type"]=112, + }, + ["Krasnodar-Center"]= + { + ["type"]=1, + ["name"]="Krasnodar-TZentralny", + ["callsign"]="", + ["runway_length"]=850, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=38.940245888497, + ["latitude"]=45.086936242812, + ["course"]=-1.6230975387504, + ["height"]=30, + }, + ["sub_type"]=6, + }, + ["{B2B0EA6D-30FA-4254-9F85-FE00D13A981A}"]= + { + ["band"]=395000, + ["type"]=2, + ["name"]="Krasnolesye", + ["callsign"]="LE", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=34.250000000095, + ["latitude"]=44.83333333867, + ["course"]=0, + ["height"]=419.28756713867, + }, + ["sub_type"]=8, + }, + ["{CB0B82C9-16F5-4299-A646-47747AD20253}"]= + { + ["band"]=983000000, + ["type"]=2, + ["name"]="Vaziani", + ["callsign"]="VAS", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=45.027339550197, + ["latitude"]=41.6307070249, + ["course"]=0, + ["height"]=456.05590820313, + }, + ["sub_type"]=4, + }, + ["{52F5B421-C5AE-4e31-BB82-82655FC79F80}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Mozdok", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.528781245533, + ["latitude"]=43.792473730478, + ["course"]=1.4445027112961, + ["height"]=153.11080932617, + }, + ["sub_type"]=112, + }, + ["{D0AE8C50-F6B3-4f8f-93EA-C64344183CCB}"]= + { + ["band"]=250000, + ["type"]=2, + ["name"]="Beslan", + ["callsign"]="C", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.572220563029, + ["latitude"]=43.210694410745, + ["course"]=1.6318835020065, + ["height"]=543.05224609375, + }, + ["sub_type"]=4104, + }, + ["{9D270DB1-9A0D-4704-8B9A-D00843BA6AF8}"]= + { + ["band"]=342000, + ["type"]=2, + ["name"]="Tbilisi-Lochini", + ["callsign"]="WP", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.909702215984, + ["latitude"]=41.703205066957, + ["course"]=2.2339971065521, + ["height"]=566.43151855469, + }, + ["sub_type"]=4104, + }, + ["{72467CBD-F38A-4a44-B6A3-E8A8C6D2560F}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Maykop-KHanskaya", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=39.986362565764, + ["latitude"]=44.645077755977, + ["course"]=0.68067294359207, + ["height"]=177.95664978027, + }, + ["sub_type"]=112, + }, + ["Tbilisi-Lochini"]= + { + ["type"]=1, + ["name"]="Tbilisi-Lochini", + ["callsign"]="", + ["runway_length"]=1059, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=44.954725173474, + ["latitude"]=41.668258016603, + ["course"]=-0.90759545507394, + ["height"]=464.50350952148, + }, + ["sub_type"]=5, + }, + ["{7B562F00-3CCA-4d91-BE5A-E2D1E97E4877}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Mineralnye Vody", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.116124501349, + ["latitude"]=44.211919658446, + ["course"]=-1.1292264461517, + ["height"]=320, + }, + ["sub_type"]=112, + }, + ["{AFD16F93-F82A-467d-8F46-DD6E953264EA}"]= + { + ["band"]=113700000, + ["type"]=2, + ["name"]="Tbilisi-Lochini", + ["callsign"]="TBS", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.946945391997, + ["latitude"]=41.670555186786, + ["course"]=0, + ["height"]=469.86624145508, + }, + }, + ["{2541CFCF-AE47-4eb8-A2D5-49785B244912}"]= + { + ["band"]=740000, + ["type"]=2, + ["name"]="Melitopol", + ["callsign"]="NE", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=35.299999969228, + ["latitude"]=46.866666696345, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{FC2C1E65-B8E8-40f7-8D00-CBF1800D3D7B}"]= + { + ["band"]=211000, + ["type"]=2, + ["name"]="Tbilisi-Lochini", + ["callsign"]="NA", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.999697078343, + ["latitude"]=41.633299706948, + ["course"]=-0.90759545564651, + ["height"]=459.41839599609, + }, + ["sub_type"]=4104, + }, + ["{4E2A763F-5528-4d03-9D2A-3396F93CA516}"]= + { + ["band"]=117600000, + ["type"]=2, + ["name"]="Mineralnye Vody", + ["callsign"]="MW", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.070295945672, + ["latitude"]=44.228586168404, + ["course"]=2.0123660564423, + ["height"]=320, + }, + ["sub_type"]=32, + }, + ["{867AB331-3908-47b5-B977-4A88BCB0E41C}"]= + { + ["band"]=520000, + ["type"]=2, + ["name"]="Mukhrani", + ["callsign"]="DF", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.565555194134, + ["latitude"]=41.916666643449, + ["course"]=0, + ["height"]=515.787109375, + }, + ["sub_type"]=8, + }, + ["{AC8FD1BA-08A3-4a73-B13E-4F7D7077607D}"]= + { + ["band"]=489000, + ["type"]=2, + ["name"]="Sukhumi-Babushara", + ["callsign"]="AV", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.184595069577, + ["latitude"]=42.833634213401, + ["course"]=-1.1085398197174, + ["height"]=23.724117279053, + }, + ["sub_type"]=4104, + }, + ["{05A67A03-1287-4f18-8477-52DD0CF8FF73}"]= + { + ["band"]=435000, + ["type"]=2, + ["name"]="Egorlykskaya", + ["callsign"]="ER", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=40.666666758319, + ["latitude"]=46.583333276832, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{D9016381-E3DD-4348-8D43-D12C681A7EF9}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Mineralnye Vody", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.017842556108, + ["latitude"]=44.256694325491, + ["course"]=2.0123660564423, + ["height"]=318.89764404297, + }, + ["sub_type"]=112, + }, + ["{2C860AD8-14CC-466d-B530-B07FB0B06EBA}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Mozdok", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=44.561984548905, + ["latitude"]=43.792133293965, + ["course"]=1.4445027112961, + ["height"]=152.32843017578, + }, + ["sub_type"]=112, + }, + ["{BD9C7F8E-B6EF-4df6-AE6A-FA6F07F279B7}"]= + { + ["band"]=722000, + ["type"]=2, + ["name"]="Biryuchya Kosa", + ["callsign"]="YO", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=47.600000064833, + ["latitude"]=45.716666602437, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["{8ABE5D65-1EED-464f-B5FF-164FC525CEB6}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Anapa-Vityazevo", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=37.372305715442, + ["latitude"]=45.022565731494, + ["course"]=-2.4172778129578, + ["height"]=47.840591430664, + }, + ["sub_type"]=112, + }, + ["{5750696B-22FB-4b75-BA00-9D9F8D6C66C0}"]= + { + ["band"]=583000, + ["type"]=2, + ["name"]="Mineralnye Vody", + ["callsign"]="NR", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=43.144428100003, + ["latitude"]=44.198998202113, + ["course"]=-1.1292264461517, + ["height"]=303.2926940918, + }, + ["sub_type"]=4104, + }, + ["{4EA94532-05FD-4be9-9DCF-AB6E62614B07}"]= + { + ["band"]=490000, + ["type"]=2, + ["name"]="Kobuleti", + ["callsign"]="T", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.83442330282, + ["latitude"]=41.924511693408, + ["course"]=1.2217304706573, + ["height"]=18.219362258911, + }, + ["sub_type"]=4104, + }, + ["{9FB9FADD-714D-4040-9358-7D8B97F7F5B1}"]= + { + ["band"]=75000000, + ["type"]=2, + ["name"]="Kobuleti", + ["callsign"]="", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.80304745528, + ["latitude"]=41.918633401388, + ["course"]=1.2217304706573, + ["height"]=10.535722732544, + }, + ["sub_type"]=112, + }, + ["{3C9AD127-83CE-41c6-9D07-3478B16BBCB4}"]= + { + ["band"]=113600000, + ["type"]=2, + ["name"]="Kutaisi", + ["callsign"]="KTS", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=42.456112245443, + ["latitude"]=42.173610536789, + ["course"]=0, + ["height"]=45, + }, + }, + ["{71F34A61-6419-48d1-BF78-02F8D97395CA}"]= + { + ["band"]=1154000000, + ["type"]=2, + ["name"]="Kobuleti", + ["callsign"]="KBL", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=41.861969842226, + ["latitude"]=41.930769894946, + ["course"]=0, + ["height"]=18, + }, + ["sub_type"]=4, + }, + ["Beslan"]= + { + ["type"]=1, + ["name"]="Beslan", + ["callsign"]="", + ["runway_length"]=1110, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=44.605763506287, + ["latitude"]=43.205705800612, + ["course"]=1.6318834439122, + ["height"]=540.13690185547, + }, + ["sub_type"]=5, + }, + ["{FAD02FC6-6BDC-48c3-B380-CDEF4481EE6D}"]= + { + ["band"]=822000, + ["type"]=2, + ["name"]="Makhachkala", + ["callsign"]="TA", + ["class"]="ABRIS_Waypoint_Beacon", + ["position"]= + { + ["longitude"]=47.520000672166, + ["latitude"]=42.974999903165, + ["course"]=0, + ["height"]=0.00014901164104231, + }, + ["sub_type"]=8, + }, + ["Senaki-Kolkhi"]= + { + ["type"]=1, + ["name"]="Senaki-Kolkhi", + ["callsign"]="", + ["runway_length"]=778, + ["class"]="ABRIS_Waypoint_Airdrome", + ["position"]= + { + ["longitude"]=42.047685627404, + ["latitude"]=42.240897304126, + ["course"]=1.6528304225881, + ["height"]=10.602717399597, + }, + ["sub_type"]=6, + }, + }, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/ABRIS/Database/ROUTES.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/ABRIS/Database/ROUTES.lua new file mode 100644 index 000000000..1ca8329db --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/ABRIS/Database/ROUTES.lua @@ -0,0 +1,3 @@ +routes= +{ +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/CDU/SETTINGS.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/CDU/SETTINGS.lua new file mode 100644 index 000000000..58f651969 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/CDU/SETTINGS.lua @@ -0,0 +1,1050 @@ +settings= +{ + ["attrib_steer_mode"]=0, + ["dtsas_owc"]=100, + ["time_time"]=0, + ["coords_format"]=0, + ["offset_head"]=353.57025876956, + ["offset_number"]=0, + ["time_lcl_adjust"]=0, + ["anchor_hud"]=0, + ["data_pump"]=0, + ["flight_plans"]= + { + }, + ["time_dtot_adjust"]=0, + ["wind_profile"]= + { + [1]= + { + }, + [2]= + { + }, + [3]= + { + }, + [4]= + { + }, + [5]= + { + }, + [6]= + { + }, + [0]= + { + }, + }, + ["time_month"]=0, + ["offset_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=39.499307347152, + ["pos_digraph"]="EJ", + ["pos_lat"]=43.765624691236, + ["pos_easting"]=40188, + ["pos_present"]=1, + ["pos_northing"]=45962, + ["pos_ell"]=67, + }, + ["magnetic_variation"]=0, + ["initial_number"]=0, + ["attrib_vnav_mode"]=0, + ["offset_dist"]=3.4519799859127e-011, + ["dtsas_cr"]=1, + ["convergence_factor"]=1, + ["attrib_vangle"]=0, + ["wind_mode"]=3, + ["attrib_scs_mode"]=0, + ["dtsas_func"]=1, + ["magnetic_variation_src"]=0, + ["attrib_vangle_src"]=1, + ["anchor_number"]=2049, + ["steer_number"]=1, + ["attrib_scale_mode"]=0, + ["from_number"]=0, + ["waypoints"]= + { + [1]= + { + ["wpt_cr"]=1, + ["wpt_elev_present"]=1, + ["wpt_num"]=1, + ["wpt_dtot_present"]=1, + ["div_present"]=0, + ["wpt_id"]="MSN000", + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=233.78442382813, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=38.589452306558, + ["pos_digraph"]="DK", + ["pos_lat"]=44.400753353498, + ["pos_easting"]=67307, + ["pos_present"]=1, + ["pos_northing"]=16466, + ["pos_ell"]=67, + }, + ["wpt_dtot"]=43738.598090877, + ["wpt_type"]=20, + }, + [58]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=58, + ["div_rwy_length"]=10147.830078125, + ["div_psi_rwy"]=5, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=-1, + ["div_name"]="KRASNODAR-PA", + ["div_twr_vhf"]=128000184, + ["div_ils_frq1"]=-1, + ["div_app_vhf"]=128000184, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=34, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=39.18802521083, + ["pos_digraph"]="EK", + ["pos_lat"]=45.037929060373, + ["pos_easting"]=14809, + ["pos_present"]=1, + ["pos_northing"]=87180, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="KRASNODAR-PA", + }, + [59]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=59, + ["div_rwy_length"]=11931.131835938, + ["div_psi_rwy"]=30, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=-1, + ["div_name"]="SUKHUMI-BABU", + ["div_twr_vhf"]=129000008, + ["div_ils_frq1"]=-1, + ["div_app_vhf"]=129000008, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=9.3106803894043, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=41.124569220701, + ["pos_digraph"]="FH", + ["pos_lat"]=42.861288092232, + ["pos_easting"]=73562, + ["pos_present"]=1, + ["pos_northing"]=47600, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="SUKHUMI-BABU", + }, + [60]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=60, + ["div_rwy_length"]=8202.3583984375, + ["div_psi_rwy"]=33, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=-1, + ["div_name"]="GUDAUTA", + ["div_twr_vhf"]=130000112, + ["div_ils_frq1"]=-1, + ["div_app_vhf"]=130000112, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=21, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=40.569781849787, + ["pos_digraph"]="FH", + ["pos_lat"]=43.11425961416, + ["pos_easting"]=27714, + ["pos_present"]=1, + ["pos_northing"]=74698, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="GUDAUTA", + }, + [61]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=61, + ["div_rwy_length"]=8020.5126953125, + ["div_psi_rwy"]=13, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=0, + ["div_name"]="BATUMI", + ["div_twr_vhf"]=131000224, + ["div_ils_frq1"]=110300000, + ["div_app_vhf"]=131000224, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=16, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=9.9645166397095, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=41.600567780743, + ["pos_digraph"]="GG", + ["pos_lat"]=41.609371050613, + ["pos_easting"]=16693, + ["pos_present"]=1, + ["pos_northing"]=9672, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=1, + ["wpt_id"]="BATUMI", + }, + [62]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=62, + ["div_rwy_length"]=7736.1962890625, + ["div_psi_rwy"]=9, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=0, + ["div_name"]="SENAKI-KOLKH", + ["div_twr_vhf"]=132000168, + ["div_ils_frq1"]=108900000, + ["div_app_vhf"]=132000168, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=31, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=12.963787078857, + ["wpt_pos"]= + { + ["pos_zone"]="38T", + ["pos_long"]=42.047685627404, + ["pos_digraph"]="KM", + ["pos_lat"]=42.240897304126, + ["pos_easting"]=56410, + ["pos_present"]=1, + ["pos_northing"]=80743, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=1, + ["wpt_id"]="SENAKI-KOLKH", + }, + [63]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=63, + ["div_rwy_length"]=7873.97265625, + ["div_psi_rwy"]=7, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=0, + ["div_name"]="KOBULETI", + ["div_twr_vhf"]=133000216, + ["div_ils_frq1"]=111500000, + ["div_app_vhf"]=133000216, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=67, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=18, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=41.863479703668, + ["pos_digraph"]="GG", + ["pos_lat"]=41.929946253786, + ["pos_easting"]=37417, + ["pos_present"]=1, + ["pos_northing"]=45963, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=1, + ["wpt_id"]="KOBULETI", + }, + [64]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=64, + ["div_rwy_length"]=8202.1767578125, + ["div_psi_rwy"]=8, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=0, + ["div_name"]="KUTAISI", + ["div_twr_vhf"]=134000096, + ["div_ils_frq1"]=109750000, + ["div_app_vhf"]=134000096, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=44, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=45, + ["wpt_pos"]= + { + ["pos_zone"]="38T", + ["pos_long"]=42.481231059907, + ["pos_digraph"]="KM", + ["pos_lat"]=42.177608840793, + ["pos_easting"]=91975, + ["pos_present"]=1, + ["pos_northing"]=72566, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=1, + ["wpt_id"]="KUTAISI", + }, + [66]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=66, + ["div_rwy_length"]=7554.0795898438, + ["div_psi_rwy"]=24, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=0, + ["div_name"]="NALCHIK", + ["div_twr_vhf"]=136000144, + ["div_ils_frq1"]=110500000, + ["div_app_vhf"]=136000144, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=430, + ["wpt_pos"]= + { + ["pos_zone"]="38T", + ["pos_long"]=43.636542729743, + ["pos_digraph"]="LP", + ["pos_lat"]=43.514033270925, + ["pos_easting"]=89797, + ["pos_present"]=1, + ["pos_northing"]=18802, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="NALCHIK", + }, + [68]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=68, + ["div_rwy_length"]=9576.8642578125, + ["div_psi_rwy"]=31, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=110300000, + ["div_name"]="TBILISI-LOCH", + ["div_twr_vhf"]=138000160, + ["div_ils_frq1"]=108900000, + ["div_app_vhf"]=138000160, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=25, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=469.75924682617, + ["wpt_pos"]= + { + ["pos_zone"]="38T", + ["pos_long"]=44.954725173474, + ["pos_digraph"]="MM", + ["pos_lat"]=41.668258016603, + ["pos_easting"]=96231, + ["pos_present"]=1, + ["pos_northing"]=12944, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=1, + ["wpt_id"]="TBILISI-LOCH", + }, + [70]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=70, + ["div_rwy_length"]=8149.0126953125, + ["div_psi_rwy"]=14, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=-1, + ["div_name"]="VAZIANI", + ["div_twr_vhf"]=140000144, + ["div_ils_frq1"]=108750000, + ["div_app_vhf"]=140000144, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=22, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=454.94619750977, + ["wpt_pos"]= + { + ["pos_zone"]="38T", + ["pos_long"]=45.027206848999, + ["pos_digraph"]="NM", + ["pos_lat"]=41.629055409302, + ["pos_easting"]=2266, + ["pos_present"]=1, + ["pos_northing"]=8591, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=1, + ["wpt_id"]="VAZIANI", + }, + [2049]= + { + ["wpt_cr"]=1, + ["wpt_elev_present"]=1, + ["wpt_num"]=2049, + ["wpt_dtot_present"]=0, + ["div_present"]=0, + ["wpt_id"]="BULLSEYE", + ["wpt_attributes"]= + { + ["attr_steer"]=1, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=1, + ["attr_vangle"]=0, + }, + ["wpt_elev"]=-9.0208265712501e-020, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=41.678934289736, + ["pos_digraph"]="GG", + ["pos_lat"]=42.186548742601, + ["pos_easting"]=21221, + ["pos_present"]=1, + ["pos_northing"]=73962, + ["pos_ell"]=67, + }, + ["wpt_dtot"]=0, + ["wpt_type"]=20, + }, + [71]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=71, + ["div_rwy_length"]=9914.326171875, + ["div_psi_rwy"]=10, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=0, + ["div_name"]="BESLAN", + ["div_twr_vhf"]=141000464, + ["div_ils_frq1"]=110500000, + ["div_app_vhf"]=141000464, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=540, + ["wpt_pos"]= + { + ["pos_zone"]="38T", + ["pos_long"]=44.605763506287, + ["pos_digraph"]="MN", + ["pos_lat"]=43.205705800612, + ["pos_easting"]=67973, + ["pos_present"]=1, + ["pos_northing"]=83733, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="BESLAN", + }, + [69]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=69, + ["div_rwy_length"]=8108.8256835938, + ["div_psi_rwy"]=13, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=-1, + ["div_name"]="SOGANLUG", + ["div_twr_vhf"]=139000112, + ["div_ils_frq1"]=-1, + ["div_app_vhf"]=139000112, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=449.13595581055, + ["wpt_pos"]= + { + ["pos_zone"]="38T", + ["pos_long"]=44.938407241324, + ["pos_digraph"]="MM", + ["pos_lat"]=41.649498903439, + ["pos_easting"]=94871, + ["pos_present"]=1, + ["pos_northing"]=10862, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="SOGANLUG", + }, + [65]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=65, + ["div_rwy_length"]=13338.318359375, + ["div_psi_rwy"]=30, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=111700000, + ["div_name"]="MINERALNYE V", + ["div_twr_vhf"]=135000480, + ["div_ils_frq1"]=109300000, + ["div_app_vhf"]=135000480, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=320, + ["wpt_pos"]= + { + ["pos_zone"]="38T", + ["pos_long"]=43.081167856217, + ["pos_digraph"]="LP", + ["pos_lat"]=44.22786123394, + ["pos_easting"]=46748, + ["pos_present"]=1, + ["pos_northing"]=98971, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="MINERALNYE V", + }, + [67]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=67, + ["div_rwy_length"]=11584.641601563, + ["div_psi_rwy"]=8, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=-1, + ["div_name"]="MOZDOK", + ["div_twr_vhf"]=137000064, + ["div_ils_frq1"]=-1, + ["div_app_vhf"]=137000064, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=154.94445800781, + ["wpt_pos"]= + { + ["pos_zone"]="38T", + ["pos_long"]=44.599679347932, + ["pos_digraph"]="MP", + ["pos_lat"]=43.791734916438, + ["pos_easting"]=67792, + ["pos_present"]=1, + ["pos_northing"]=48819, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="MOZDOK", + }, + [51]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=51, + ["div_rwy_length"]=9514.4560546875, + ["div_psi_rwy"]=4, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=-1, + ["div_name"]="ANAPA-VITYAZ", + ["div_twr_vhf"]=121000432, + ["div_ils_frq1"]=-1, + ["div_app_vhf"]=121000432, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=45, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=37.34784162046, + ["pos_digraph"]="CK", + ["pos_lat"]=45.004960953476, + ["pos_easting"]=69795, + ["pos_present"]=1, + ["pos_northing"]=84828, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="ANAPA-VITYAZ", + }, + [52]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=52, + ["div_rwy_length"]=8202.345703125, + ["div_psi_rwy"]=27, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=-1, + ["div_name"]="KRASNODAR-CE", + ["div_twr_vhf"]=122000264, + ["div_ils_frq1"]=-1, + ["div_app_vhf"]=122000264, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=30, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=38.940245888497, + ["pos_digraph"]="DK", + ["pos_lat"]=45.086936242812, + ["pos_easting"]=95297, + ["pos_present"]=1, + ["pos_northing"]=92609, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="KRASNODAR-CE", + }, + [53]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=53, + ["div_rwy_length"]=5905.5063476563, + ["div_psi_rwy"]=4, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=-1, + ["div_name"]="NOVOROSSIYSK", + ["div_twr_vhf"]=123000096, + ["div_ils_frq1"]=-1, + ["div_app_vhf"]=123000096, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=40, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=37.778238633922, + ["pos_digraph"]="DK", + ["pos_lat"]=44.668068985973, + ["pos_easting"]=3152, + ["pos_present"]=1, + ["pos_northing"]=46803, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="NOVOROSSIYSK", + }, + [54]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=54, + ["div_rwy_length"]=8532.7841796875, + ["div_psi_rwy"]=22, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=-1, + ["div_name"]="KRYMSK", + ["div_twr_vhf"]=124000472, + ["div_ils_frq1"]=-1, + ["div_app_vhf"]=124000472, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=20, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=37.994951766799, + ["pos_digraph"]="DK", + ["pos_lat"]=44.967876819866, + ["pos_easting"]=20742, + ["pos_present"]=1, + ["pos_northing"]=79872, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="KRYMSK", + }, + [55]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=55, + ["div_rwy_length"]=10498.690429688, + ["div_psi_rwy"]=22, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=-1, + ["div_name"]="MAYKOP-KHANS", + ["div_twr_vhf"]=125000336, + ["div_ils_frq1"]=-1, + ["div_app_vhf"]=125000336, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=180, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=40.035194185914, + ["pos_digraph"]="EK", + ["pos_lat"]=44.681241298267, + ["pos_easting"]=82040, + ["pos_present"]=1, + ["pos_northing"]=48061, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="MAYKOP-KHANS", + }, + [56]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=56, + ["div_rwy_length"]=5905.4619140625, + ["div_psi_rwy"]=4, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=-1, + ["div_name"]="GELENDZHIK", + ["div_twr_vhf"]=126000096, + ["div_ils_frq1"]=-1, + ["div_app_vhf"]=126000096, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=25, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=38.011402844087, + ["pos_digraph"]="DK", + ["pos_lat"]=44.572738119785, + ["pos_easting"]=21506, + ["pos_present"]=1, + ["pos_northing"]=35963, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="GELENDZHIK", + }, + [57]= + { + ["wpt_cr"]=0, + ["wpt_elev_present"]=1, + ["wpt_num"]=57, + ["div_rwy_length"]=10181.661132813, + ["div_psi_rwy"]=6, + ["wpt_dtot"]=0, + ["div_present"]=1, + ["div_ils_frq2"]=0, + ["div_name"]="SOCHI-ADLER", + ["div_twr_vhf"]=127000072, + ["div_ils_frq1"]=111100000, + ["div_app_vhf"]=127000072, + ["div_twr_uhf"]=0, + ["div_app_uhf"]=0, + ["wpt_dtot_present"]=0, + ["div_tcn_channel"]=0, + ["wpt_type"]=4, + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=30, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=39.941488914396, + ["pos_digraph"]="EJ", + ["pos_lat"]=43.444479177936, + ["pos_easting"]=76183, + ["pos_present"]=1, + ["pos_northing"]=10605, + ["pos_ell"]=67, + }, + ["div_is_tcn"]=0, + ["wpt_id"]="SOCHI-ADLER", + }, + [0]= + { + ["wpt_cr"]=1, + ["wpt_elev_present"]=1, + ["wpt_num"]=0, + ["wpt_dtot_present"]=0, + ["div_present"]=0, + ["wpt_id"]="INIT POSIT", + ["wpt_attributes"]= + { + ["attr_steer"]=0, + ["attr_angle3d"]=0, + ["attr_scale"]=0, + ["attr_vnav"]=0, + ["attr_vangle"]=1, + }, + ["wpt_elev"]=15, + ["wpt_pos"]= + { + ["pos_zone"]="37T", + ["pos_long"]=39.499307347152, + ["pos_digraph"]="EJ", + ["pos_lat"]=43.765624691236, + ["pos_easting"]=40188, + ["pos_present"]=1, + ["pos_northing"]=45962, + ["pos_ell"]=67, + }, + ["wpt_dtot"]=43738.598090877, + ["wpt_type"]=20, + }, + }, + ["gps_key_duration"]=180, + ["time_day"]=0, + ["gps_key_antispoof"]=0, + ["time_year"]=2000, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Config/View/Server.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Config/View/Server.lua new file mode 100644 index 000000000..c7db44162 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Config/View/Server.lua @@ -0,0 +1,210 @@ +-- View scripts +-- Copyright (C) 2004, Eagle Dynamics. +DisableCombatViews = false -- F5 & Ctrl-F5 +ExternalObjectsLockDistance = 10000.0 +ShowTargetInfo = false +CameraTerrainRestriction = true +hAngleRearDefault = 180 +vAngleRearDefault = -8.0 +vAngleRearMin = -90 -- -8.0 +vAngleRearMax = 90.0 + +dbg_shell = "weapons.shells.PKT_7_62_T" -- 23mm shell +dbg_shell = "weapons.nurs.WGr21" +-- dbg_shell = "weapons.shells.2A64_152" -- 152mm shell +dbg_shell_v0 = -1 -- Muzzle speed m/s (-1 - speed from shall database) +dbg_shell_fire_rate = 60 +--reformatted per-unit data to be mod system friendly +--this file is no longer should be edited for adding new flyable aircraft , DCS automatically check core database (i.e. where you define your aircraft in aircraft table just define ViewSettings and SnapViews tables) + +function default_fighter_player(t) + local res = { + CameraViewAngleLimits = {20.000000,140.000000}, + CameraAngleRestriction = {false ,90.000000,0.500000}, + EyePoint = {0.05 ,0.000000 ,0.000000}, + limits_6DOF = {x = {-0.050000,0.4500000},y ={-0.300000,0.100000},z = {-0.220000,0.220000},roll = 90.000000}, + Allow360rotation = false, + CameraAngleLimits = {200,-80.000000,110.000000}, + ShoulderSize = 0.2, -- move body when azimuth value more then 90 degrees + } + if t then + for i,o in pairs(t) do + res[i] = o + end + end + return res +end + +function fulcrum() + return { + Cockpit = { + default_fighter_player({CockpitLocalPoint = {4.71,1.28,0.000000}}) + }, + Chase = { + LocalPoint = {1.220000,3.750000,0.000000}, + AnglesDefault = {180.000000,-8.000000}, + }, -- Chase + Arcade = { + LocalPoint = {-15.080000,6.350000,0.000000}, + AnglesDefault = {0.000000,-8.000000}, + }, -- Arcade + } +end + +ViewSettings = {} +ViewSettings["A-10A"] = { + Cockpit = { + [1] = default_fighter_player({CockpitLocalPoint = {4.300000,1.282000,0.000000}, + EyePoint = {0.000000,0.000000,0.000000}, + limits_6DOF = {x = {-0.050000,0.600000}, + y = {-0.300000,0.100000}, + z = {-0.250000,0.250000}, + roll = 90.000000}}), + }, -- Cockpit + Chase = { + LocalPoint = {0.600000,3.682000,0.000000}, + AnglesDefault = {180.000000,-8.000000}, + }, -- Chase + Arcade = { + LocalPoint = {-27.000000,12.000000,0.000000}, + AnglesDefault = {0.000000,-12.000000}, + }, -- Arcade +} +ViewSettings["A-10C"] = { + Cockpit = { + [1] = default_fighter_player({CockpitLocalPoint = {4.300000,1.282000,0.000000}, + EyePoint = {0.000000,0.000000,0.000000}, + limits_6DOF = {x = {-0.050000,0.600000}, + y = {-0.300000,0.100000}, + z = {-0.250000,0.250000}, + roll = 90.000000}}), + }, -- Cockpit + Chase = { + LocalPoint = {0.600000,3.682000,0.000000}, + AnglesDefault = {180.000000,-8.000000}, + }, -- Chase + Arcade = { + LocalPoint = {-27.000000,12.000000,0.000000}, + AnglesDefault = {0.000000,-12.000000}, + }, -- Arcade +} +ViewSettings["F-15C"] = { + Cockpit = { + [1] = default_fighter_player({CockpitLocalPoint = {6.210000,1.204000,0.000000}})-- player slot 1 + }, -- Cockpit + Chase = { + LocalPoint = {2.510000,3.604000,0.000000}, + AnglesDefault = {180.000000,-8.000000}, + }, -- Chase + Arcade = { + LocalPoint = {-13.790000,6.204000,0.000000}, + AnglesDefault = {0.000000,-8.000000}, + }, -- Arcade +} +ViewSettings["Ka-50"] = { + Cockpit = { + [1] = {-- player slot 1 + CockpitLocalPoint = {3.188000,0.390000,0.000000}, + CameraViewAngleLimits = {20.000000,120.000000}, + CameraAngleRestriction = {false,60.000000,0.400000}, + CameraAngleLimits = {140.000000,-65.000000,90.000000}, + EyePoint = {0.090000,0.000000,0.000000}, + limits_6DOF = {x = {-0.020000,0.350000},y ={-0.150000,0.165000},z = {-0.170000,0.170000},roll = 90.000000}, + }, + }, -- Cockpit + Chase = { + LocalPoint = {-0.512000,2.790000,0.000000}, + AnglesDefault = {180.000000,-8.000000}, + }, -- Chase + Arcade = { + LocalPoint = {-16.812000,5.390000,0.000000}, + AnglesDefault = {0.000000,-8.000000}, + }, -- Arcade +} +ViewSettings["MiG-29A"] = fulcrum() +ViewSettings["MiG-29G"] = fulcrum() +ViewSettings["MiG-29S"] = fulcrum() + +ViewSettings["P-51D"] = { + Cockpit = { + [1] = {-- player slot 1 + CockpitLocalPoint = {-1.500000,0.618000,0.000000}, + CameraViewAngleLimits = {20.000000,120.000000}, + CameraAngleRestriction = {false,90.000000,0.500000}, + CameraAngleLimits = {200,-80.000000,90.000000}, + EyePoint = {0.025000,0.100000,0.000000}, + ShoulderSize = 0.15, + Allow360rotation = false, + limits_6DOF = {x = {-0.050000,0.450000},y ={-0.200000,0.200000},z = {-0.220000,0.220000},roll = 90.000000}, + }, + }, -- Cockpit + Chase = { + LocalPoint = {0.200000,-0.652000,-0.650000}, + AnglesDefault = {0.000000,0.000000}, + }, -- Chase + Arcade = { + LocalPoint = {-21.500000,5.618000,0.000000}, + AnglesDefault = {0.000000,-8.000000}, + }, -- Arcade +} +ViewSettings["Su-25"] = { + Cockpit = { + [1] = default_fighter_player({CockpitLocalPoint = {3.352000,0.506000,0.000000}}),-- player slot 1 + }, -- Cockpit + Chase = { + LocalPoint = {-0.348000,2.906000,0.000000}, + AnglesDefault = {180.000000,-8.000000}, + }, -- Chase + Arcade = { + LocalPoint = {-16.648001,5.506000,0.000000}, + AnglesDefault = {0.000000,-8.000000}, + }, -- Arcade +} +ViewSettings["Su-25T"] = { + Cockpit = { + [1] = default_fighter_player({CockpitLocalPoint = {3.406000,0.466000,0.000000}}),-- player slot 1 + }, -- Cockpit + Chase = { + LocalPoint = {-0.294000,2.866000,0.000000}, + AnglesDefault = {180.000000,-8.000000}, + }, -- Chase + Arcade = { + LocalPoint = {-16.594000,5.466000,0.000000}, + AnglesDefault = {0.000000,-8.000000}, + }, -- Arcade +} +ViewSettings["Su-25TM"] = { + Cockpit = { + [1] = {-- player slot 1 + CockpitLocalPoint = {4.000000,1.000000,0.000000}, + CameraViewAngleLimits = {20.000000,140.000000}, + CameraAngleRestriction = {true,90.000000,0.400000}, + CameraAngleLimits = {160.000000,-70.000000,90.000000}, + EyePoint = {0.000000,0.000000,0.000000}, + limits_6DOF = {x = {-0.200000,0.200000},y ={-0.200000,0.200000},z = {-0.200000,0.200000},roll = 60.000000}, + }, + }, -- Cockpit + Chase = { + LocalPoint = {4.000000,2.000000,0.000000}, + AnglesDefault = {180.000000,-8.000000}, + }, -- Chase + Arcade = { + LocalPoint = {4.000000,2.000000,0.000000}, + AnglesDefault = {180.000000,-8.000000}, + }, -- Arcade +} +ViewSettings["Su-27"] = { + Cockpit = { + [1] = default_fighter_player({CockpitLocalPoint = {7.959000,1.419000,0.000000}})-- player slot 1 + }, -- Cockpit + Chase = { + LocalPoint = {4.259000,3.819000,0.000000}, + AnglesDefault = {180.000000,-8.000000}, + }, -- Chase + Arcade = { + LocalPoint = {-12.041000,6.419000,0.000000}, + AnglesDefault = {0.000000,-8.000000}, + }, -- Arcade +} + +ViewSettings["Su-33"] = ViewSettings["Su-27"] diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Config/View/SnapViewsDefault.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Config/View/SnapViewsDefault.lua new file mode 100644 index 000000000..754522d55 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Config/View/SnapViewsDefault.lua @@ -0,0 +1,1698 @@ +--reformatted per-unit data to be mod system friendly +--this file is no longer should be edited for adding new flyable aircraft , DCS automatically check core database for this data(i.e. where you define your aircraft in aircraft table just define ViewSettings and SnapViews tables) +-- result of ingame editing is saved to Saved Games//DCS/Config/View/SnapViews.lua +SnapViews = {} +SnapViews["A-10A"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 65.000000,--FOV + hAngle = 0.000000, + vAngle = -26.000000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 49.626770,--FOV + hAngle = 0.000000, + vAngle = -90.631294, + x_trans = 0.180499, + y_trans = -0.137064, + z_trans = -0.250000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 30.395041,--FOV + hAngle = 0.000000, + vAngle = -94.329208, + x_trans = 0.372718, + y_trans = -0.054055, + z_trans = 0.250000, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 55.238567,--FOV + hAngle = 0.000000, + vAngle = -90.631294, + x_trans = 0.158523, + y_trans = -0.137064, + z_trans = 0.250000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 35.000000,--FOV + hAngle = 0.000000, + vAngle = -10.651850, + x_trans = 0.327622, + y_trans = -0.278207, + z_trans = -0.244799, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 34.340549,--FOV + hAngle = 0.000000, + vAngle = -9.500000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 35.000000,--FOV + hAngle = 0.000000, + vAngle = -10.651850, + x_trans = 0.327622, + y_trans = -0.278207, + z_trans = 0.244799, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 68.628296,--FOV + hAngle = 68.292320, + vAngle = -11.477349, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 68.628296,--FOV + hAngle = 0.000000, + vAngle = 30.227919, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 68.628296,--FOV + hAngle = -67.172974, + vAngle = -11.477349, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 70.000000,--FOV + hAngle = 20.000000, + vAngle = 8.000000, + x_trans = 0.360000, + y_trans = -0.041337, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 70.000000,--FOV + hAngle = -20.000000, + vAngle = 8.000000, + x_trans = 0.360000, + y_trans = -0.041337, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 75.000000,--FOV + hAngle = 0.000000, + vAngle = -23.000000, + x_trans = 0.360000, + y_trans = -0.041337, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} +SnapViews["A-10C"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 65.000000,--FOV + hAngle = 0.000000, + vAngle = -26.000000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 49.626770,--FOV + hAngle = 0.000000, + vAngle = -90.631294, + x_trans = 0.180499, + y_trans = -0.137064, + z_trans = -0.250000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 30.395041,--FOV + hAngle = 0.000000, + vAngle = -94.329208, + x_trans = 0.372718, + y_trans = -0.054055, + z_trans = 0.250000, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 55.238567,--FOV + hAngle = 0.000000, + vAngle = -90.631294, + x_trans = 0.158523, + y_trans = -0.137064, + z_trans = 0.250000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 35.000000,--FOV + hAngle = 0.000000, + vAngle = -10.651850, + x_trans = 0.327622, + y_trans = -0.278207, + z_trans = -0.244799, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 34.340549,--FOV + hAngle = 0.000000, + vAngle = -9.500000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 35.000000,--FOV + hAngle = 0.000000, + vAngle = -10.651850, + x_trans = 0.327622, + y_trans = -0.278207, + z_trans = 0.244799, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 68.628296,--FOV + hAngle = 68.292320, + vAngle = -11.477349, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 68.628296,--FOV + hAngle = 0.000000, + vAngle = 30.227919, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 68.628296,--FOV + hAngle = -67.172974, + vAngle = -11.477349, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 70.000000,--FOV + hAngle = 20.000000, + vAngle = 8.000000, + x_trans = 0.360000, + y_trans = -0.041337, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 70.000000,--FOV + hAngle = -20.000000, + vAngle = 8.000000, + x_trans = 0.360000, + y_trans = -0.041337, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 75.000000,--FOV + hAngle = 0.000000, + vAngle = -23.000000, + x_trans = 0.360000, + y_trans = -0.041337, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} +SnapViews["F-15C"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 70.611748,--FOV + hAngle = -1.240272, + vAngle = -33.850250, + x_trans = 0.264295, + y_trans = -0.064373, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 32.704346,--FOV + hAngle = 25.696522, + vAngle = -34.778103, + x_trans = 0.264295, + y_trans = -0.064373, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 32.704346,--FOV + hAngle = 0.000000, + vAngle = -47.845268, + x_trans = 0.264295, + y_trans = -0.064373, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 36.106045,--FOV + hAngle = -28.878576, + vAngle = -36.780628, + x_trans = 0.264295, + y_trans = -0.064373, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 88.727844,--FOV + hAngle = 128.508865, + vAngle = 13.131046, + x_trans = 0.264295, + y_trans = -0.064373, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 41.928593,--FOV + hAngle = 0.000000, + vAngle = -4.630446, + x_trans = 0.264295, + y_trans = -0.064373, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 88.727844,--FOV + hAngle = -128.508865, + vAngle = 13.131046, + x_trans = 0.264295, + y_trans = -0.064373, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 88.727844,--FOV + hAngle = 81.648369, + vAngle = -9.500000, + x_trans = 0.264295, + y_trans = -0.064373, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 88.727844,--FOV + hAngle = 0.000000, + vAngle = 34.180634, + x_trans = 0.264295, + y_trans = -0.064373, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 88.727844,--FOV + hAngle = -80.997551, + vAngle = -9.500000, + x_trans = 0.264295, + y_trans = -0.064373, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 56.032040,--FOV + hAngle = 14.803060, + vAngle = 3.332499, + x_trans = 0.264295, + y_trans = -0.064373, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 56.032040,--FOV + hAngle = -14.414484, + vAngle = 3.332499, + x_trans = 0.264295, + y_trans = -0.064373, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 88.727844,--FOV + hAngle = 0.000000, + vAngle = -9.678451, + x_trans = 0.264295, + y_trans = -0.064373, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} +SnapViews["Ka-50"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 67.452896,--FOV + hAngle = 0.000000, + vAngle = -40.067383, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 37.846794,--FOV + hAngle = 51.644135, + vAngle = -51.870411, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 36.178646,--FOV + hAngle = -1.912186, + vAngle = -34.446247, + x_trans = 0.000000, + y_trans = -0.025421, + z_trans = 0.073226, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 73.605141,--FOV + hAngle = -90.361992, + vAngle = -44.103138, + x_trans = 0.169696, + y_trans = -0.073508, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 91.348198,--FOV + hAngle = 109.752129, + vAngle = 1.484382, + x_trans = 0.190306, + y_trans = 0.044778, + z_trans = -0.150335, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 42.512844,--FOV + hAngle = 0.000000, + vAngle = -4.478010, + x_trans = 0.154018, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 91.348198,--FOV + hAngle = -108.852020, + vAngle = 0.085984, + x_trans = 0.190306, + y_trans = 0.044778, + z_trans = 0.139404, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 89.777542,--FOV + hAngle = 16.411518, + vAngle = -27.209915, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = -0.218292, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 88.727844,--FOV + hAngle = 0.000000, + vAngle = 34.042202, + x_trans = 0.142145, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 59.208893,--FOV + hAngle = -32.128311, + vAngle = -5.720805, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 56.032040,--FOV + hAngle = 14.803060, + vAngle = 3.332499, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 56.032040,--FOV + hAngle = -14.414484, + vAngle = 3.332499, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 89.777542,--FOV + hAngle = 0.000000, + vAngle = -15.592758, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} +SnapViews["MiG-29A"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 76.124840,--FOV + hAngle = -2.623254, + vAngle = -26.566959, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 34.911949,--FOV + hAngle = 24.601770, + vAngle = -32.350807, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 26.184198,--FOV + hAngle = 12.026249, + vAngle = -40.075508, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 39.454399,--FOV + hAngle = -26.664328, + vAngle = -32.355324, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 81.240005,--FOV + hAngle = 131.503998, + vAngle = 10.804660, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 44.201855,--FOV + hAngle = 0.000000, + vAngle = -2.378299, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 81.240005,--FOV + hAngle = -131.503998, + vAngle = 10.804660, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 81.240005,--FOV + hAngle = 76.013145, + vAngle = 2.248441, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 81.240005,--FOV + hAngle = 0.000000, + vAngle = 36.304676, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 81.240005,--FOV + hAngle = -74.774559, + vAngle = 2.248441, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 68.250000,--FOV + hAngle = 13.070938, + vAngle = 7.522498, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 68.250000,--FOV + hAngle = -13.070938, + vAngle = 7.522498, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 81.240005,--FOV + hAngle = 0.000000, + vAngle = -9.500000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} +SnapViews["MiG-29G"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 76.124840,--FOV + hAngle = -2.623254, + vAngle = -26.566959, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 34.911949,--FOV + hAngle = 24.601770, + vAngle = -32.350807, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 26.184198,--FOV + hAngle = 12.026249, + vAngle = -40.075508, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 39.454399,--FOV + hAngle = -26.664328, + vAngle = -32.355324, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 81.240005,--FOV + hAngle = 131.503998, + vAngle = 10.804660, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 44.201855,--FOV + hAngle = 0.000000, + vAngle = -2.378299, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 81.240005,--FOV + hAngle = -131.503998, + vAngle = 10.804660, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 81.240005,--FOV + hAngle = 76.013145, + vAngle = 2.248441, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 81.240005,--FOV + hAngle = 0.000000, + vAngle = 36.304676, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 81.240005,--FOV + hAngle = -74.774559, + vAngle = 2.248441, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 68.250000,--FOV + hAngle = 13.070938, + vAngle = 7.522498, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 68.250000,--FOV + hAngle = -13.070938, + vAngle = 7.522498, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 81.240005,--FOV + hAngle = 0.000000, + vAngle = -9.500000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} +SnapViews["MiG-29K"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 65.000000,--FOV + hAngle = 0.000000, + vAngle = -26.000000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 30.000000,--FOV + hAngle = 20.000000, + vAngle = -43.000000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 30.000000,--FOV + hAngle = 0.000000, + vAngle = -43.000000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 30.000000,--FOV + hAngle = -20.000000, + vAngle = -43.000000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 30.000000,--FOV + hAngle = 20.000000, + vAngle = -23.000000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 30.000000,--FOV + hAngle = 0.000000, + vAngle = -23.000000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 30.000000,--FOV + hAngle = -20.000000, + vAngle = -23.000000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 30.000000,--FOV + hAngle = 20.000000, + vAngle = 2.000000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 30.000000,--FOV + hAngle = 0.000000, + vAngle = 2.000000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 30.000000,--FOV + hAngle = -20.000000, + vAngle = 2.000000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 68.250000,--FOV + hAngle = 13.070938, + vAngle = 7.522498, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 68.250000,--FOV + hAngle = -13.070938, + vAngle = 7.522498, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 60.000000,--FOV + hAngle = 0.000000, + vAngle = -9.500000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} +SnapViews["MiG-29S"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 76.124840,--FOV + hAngle = -2.623254, + vAngle = -26.566959, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 34.911949,--FOV + hAngle = 24.601770, + vAngle = -32.350807, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 26.184198,--FOV + hAngle = 12.026249, + vAngle = -40.075508, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 39.454399,--FOV + hAngle = -26.664328, + vAngle = -32.355324, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 81.240005,--FOV + hAngle = 131.503998, + vAngle = 10.804660, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 44.201855,--FOV + hAngle = 0.000000, + vAngle = -2.378299, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 81.240005,--FOV + hAngle = -131.503998, + vAngle = 10.804660, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 81.240005,--FOV + hAngle = 76.013145, + vAngle = 2.248441, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 81.240005,--FOV + hAngle = 0.000000, + vAngle = 36.304676, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 81.240005,--FOV + hAngle = -74.774559, + vAngle = 2.248441, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 68.250000,--FOV + hAngle = 13.070938, + vAngle = 7.522498, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 68.250000,--FOV + hAngle = -13.070938, + vAngle = 7.522498, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 81.240005,--FOV + hAngle = 0.000000, + vAngle = -9.500000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} +SnapViews["P-51D"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 80.000000,--FOV + hAngle = 0.000000, + vAngle = -45.000000, + x_trans = 0.120000, + y_trans = 0.059000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 80.000000,--FOV + hAngle = 45.000000, + vAngle = -45.000000, + x_trans = 0.120000, + y_trans = 0.059000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 80.000000,--FOV + hAngle = 0.000000, + vAngle = -75.000000, + x_trans = 0.120000, + y_trans = 0.059000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 80.000000,--FOV + hAngle = -45.000000, + vAngle = -45.000000, + x_trans = 0.120000, + y_trans = 0.059000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 91.040001,--FOV + hAngle = 157.332764, + vAngle = -28.359503, + x_trans = 0.063872, + y_trans = 0.082888, + z_trans = -0.116148, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 50.000000,--FOV + hAngle = 0.000000, + vAngle = -8.722581, + x_trans = 0.212078, + y_trans = 0.057813, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 80.000000,--FOV + hAngle = -143.000000, + vAngle = 0.000000, + x_trans = 0.350000, + y_trans = 0.059000, + z_trans = 0.100000, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 80.000000,--FOV + hAngle = 45.000000, + vAngle = -5.000000, + x_trans = 0.120000, + y_trans = 0.059000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 80.000000,--FOV + hAngle = 0.000000, + vAngle = 10.000000, + x_trans = 0.120000, + y_trans = 0.059000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 80.000000,--FOV + hAngle = -45.000000, + vAngle = -5.000000, + x_trans = 0.120000, + y_trans = 0.059000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 80.000000,--FOV + hAngle = 0.000000, + vAngle = 10.000000, + x_trans = 0.120000, + y_trans = 0.059000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 80.000000,--FOV + hAngle = -20.000000, + vAngle = 8.000000, + x_trans = 0.120000, + y_trans = 0.059000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 80.000000,--FOV + hAngle = 0.000000, + vAngle = -9.500000, + x_trans = 0.120000, + y_trans = 0.059000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} +SnapViews["Su-25"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 68.767799,--FOV + hAngle = 1.929517, + vAngle = -30.846605, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 29.223452,--FOV + hAngle = 37.489525, + vAngle = -38.883888, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 40.635601,--FOV + hAngle = -0.438357, + vAngle = -33.138290, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 24.797405,--FOV + hAngle = -34.382549, + vAngle = -34.808853, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 69.302101,--FOV + hAngle = 89.405373, + vAngle = 1.213156, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 29.761202,--FOV + hAngle = 0.000000, + vAngle = -6.880077, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 69.302101,--FOV + hAngle = -89.691940, + vAngle = 4.554290, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 69.302101,--FOV + hAngle = 52.113377, + vAngle = -3.970644, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 72.856201,--FOV + hAngle = 0.000000, + vAngle = 30.866713, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 69.302101,--FOV + hAngle = -50.664936, + vAngle = -3.970644, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 47.680202,--FOV + hAngle = 43.054649, + vAngle = -7.799250, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 47.680202,--FOV + hAngle = -41.743240, + vAngle = -7.799250, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 69.302101,--FOV + hAngle = 0.000000, + vAngle = -15.137112, + x_trans = 0.050000, + y_trans = 0.010000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} +SnapViews["Su-25T"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 80.663399,--FOV + hAngle = 0.000000, + vAngle = -30.619938, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 39.764698,--FOV + hAngle = 28.661316, + vAngle = -41.406044, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 38.090847,--FOV + hAngle = -24.622110, + vAngle = -45.153934, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 36.062012,--FOV + hAngle = -20.779360, + vAngle = -23.755520, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 80.663399,--FOV + hAngle = 99.816956, + vAngle = 8.032285, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 58.718098,--FOV + hAngle = 0.000000, + vAngle = -5.000803, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 80.663399,--FOV + hAngle = -99.999687, + vAngle = 8.032285, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 80.663399,--FOV + hAngle = 58.382488, + vAngle = -6.648195, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 94.037704,--FOV + hAngle = 0.000000, + vAngle = 41.421227, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 80.663399,--FOV + hAngle = -57.531212, + vAngle = -6.648195, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 60.203396,--FOV + hAngle = 55.124939, + vAngle = -8.400513, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 60.203396,--FOV + hAngle = -52.633553, + vAngle = -8.400513, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 90.000000,--FOV + hAngle = 0.000000, + vAngle = -18.382137, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} +SnapViews["Su-25TM"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 80.663399,--FOV + hAngle = 0.000000, + vAngle = -30.619938, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 39.764698,--FOV + hAngle = 28.661316, + vAngle = -41.406044, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 38.090847,--FOV + hAngle = -24.622110, + vAngle = -45.153934, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 33.645596,--FOV + hAngle = -36.653450, + vAngle = -23.703861, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 80.663399,--FOV + hAngle = 99.816956, + vAngle = 8.032285, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 58.718098,--FOV + hAngle = 0.000000, + vAngle = -5.000803, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 80.663399,--FOV + hAngle = -99.999687, + vAngle = 8.032285, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 80.663399,--FOV + hAngle = 58.382488, + vAngle = -6.648195, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 94.037704,--FOV + hAngle = 0.000000, + vAngle = 41.421227, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 80.663399,--FOV + hAngle = -57.531212, + vAngle = -6.648195, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 60.203396,--FOV + hAngle = 55.124939, + vAngle = -8.400513, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 60.203396,--FOV + hAngle = -52.633553, + vAngle = -8.400513, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 90.000000,--FOV + hAngle = 0.000000, + vAngle = -18.382137, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} +SnapViews["Su-27"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 71.824692,--FOV + hAngle = 0.000000, + vAngle = -32.458889, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 33.361835,--FOV + hAngle = 41.045925, + vAngle = -40.805656, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 30.427544,--FOV + hAngle = 0.000000, + vAngle = -41.808968, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 34.392349,--FOV + hAngle = -32.597401, + vAngle = -35.293747, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 87.468338,--FOV + hAngle = 129.012665, + vAngle = 14.547977, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 43.977936,--FOV + hAngle = 0.000000, + vAngle = -4.951577, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 87.468338,--FOV + hAngle = -129.012665, + vAngle = 14.491872, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 87.468338,--FOV + hAngle = 82.862923, + vAngle = -9.500000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 87.468338,--FOV + hAngle = 0.000000, + vAngle = 38.979362, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 87.468338,--FOV + hAngle = -82.461266, + vAngle = -12.843998, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 68.786629,--FOV + hAngle = 15.618313, + vAngle = 7.522498, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 69.165199,--FOV + hAngle = -15.683434, + vAngle = 8.549150, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 87.468338,--FOV + hAngle = 0.000000, + vAngle = -9.500000, + x_trans = 0.113927, + y_trans = -0.004946, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} +SnapViews["Su-33"] = { +[1] = {-- player slot 1 + [1] = { + viewAngle = 71.824692,--FOV + hAngle = 0.000000, + vAngle = -32.458889, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [2] = { + viewAngle = 33.361835,--FOV + hAngle = 41.045925, + vAngle = -40.805656, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [3] = { + viewAngle = 30.427544,--FOV + hAngle = 0.000000, + vAngle = -41.808968, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [4] = { + viewAngle = 34.392349,--FOV + hAngle = -32.597401, + vAngle = -35.293747, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [5] = { + viewAngle = 87.468338,--FOV + hAngle = 129.012665, + vAngle = 14.547977, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [6] = { + viewAngle = 43.977936,--FOV + hAngle = 0.000000, + vAngle = -4.951577, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [7] = { + viewAngle = 87.468338,--FOV + hAngle = -129.012665, + vAngle = 14.491872, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [8] = { + viewAngle = 87.468338,--FOV + hAngle = 82.862923, + vAngle = -9.500000, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [9] = { + viewAngle = 87.468338,--FOV + hAngle = 0.000000, + vAngle = 38.979362, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [10] = { + viewAngle = 87.468338,--FOV + hAngle = -82.461266, + vAngle = -12.843998, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [11] = {--look at left mirror + viewAngle = 68.786629,--FOV + hAngle = 15.618313, + vAngle = 7.522498, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [12] = {--look at right mirror + viewAngle = 69.165199,--FOV + hAngle = -15.683434, + vAngle = 8.549150, + x_trans = 0.000000, + y_trans = 0.000000, + z_trans = 0.000000, + rollAngle = 0.000000, + }, + [13] = {--default view + viewAngle = 87.468338,--FOV + hAngle = 0.000000, + vAngle = -9.500000, + x_trans = 0.113927, + y_trans = -0.004946, + z_trans = 0.000000, + rollAngle = 0.000000, + }, +}, +} \ No newline at end of file diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Config/View/View.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Config/View/View.lua new file mode 100644 index 000000000..9baf3b7df --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Config/View/View.lua @@ -0,0 +1,128 @@ +-- View scripts +-- Copyright (C) 2004, Eagle Dynamics. + +CockpitMouse = true --false +CockpitMouseSpeedSlow = 1.0 +CockpitMouseSpeedNormal = 10.0 +CockpitMouseSpeedFast = 20.0 +CockpitKeyboardAccelerationSlow = 5.0 +CockpitKeyboardAccelerationNormal = 30.0 +CockpitKeyboardAccelerationFast = 80.0 +CockpitKeyboardZoomAcceleration = 300.0 +DisableSnapViewsSaving = false +UseDefaultSnapViews = true +CockpitPanStepHor = 45.0 +CockpitPanStepVert = 30.0 +CockpitNyMove = true + +CockpitHAngleAccelerateTimeMax = 0.15 +CockpitVAngleAccelerateTimeMax = 0.15 +CockpitZoomAccelerateTimeMax = 0.2 + +function NaturalHeadMoving(tang, roll, omz) + local r = roll + if r > 90.0 then + r = 180.0 - r + elseif roll < -90.0 then + r = -180.0 - r + end + local hAngle = -0.25 * r + local vAngle = math.min(math.max(0.0, 0.4 * tang + 45.0 * omz), 90.0) + return hAngle, vAngle +end + +ExternalMouse = true +ExternalMouseSpeedSlow = 1.0 +ExternalMouseSpeedNormal = 5.0 +ExternalMouseSpeedFast = 20.0 +ExternalViewAngleMin = 3.0 +ExternalViewAngleMax = 170.0 +ExternalViewAngleDefault = 60.0 +ExternalKeyboardZoomAcceleration = 30.0 +ExternalKeyboardZoomAccelerateTimeMax = 1.0 +ExplosionExpoTime = 4.0 +ExternalKeyboardAccelerationSlow = 1.0 +ExternalKeyboardAccelerationNormal = 10.0 +ExternalKeyboardAccelerationFast = 30.0 +ExternalHAngleAccelerateTimeMax = 3.0 +ExternalVAngleAccelerateTimeMax = 3.0 +ExternalDistAccelerateTimeMax = 3.0 +ExternalHAngleLocalAccelerateTimeMax = 3.0 +ExternalVAngleLocalAccelerateTimeMax = 3.0 +ExternalAngleNormalDiscreteStep = 15.0/ExternalKeyboardAccelerationNormal -- When 'S' is pressed only +ChaseCameraNyMove = true +FreeCameraAngleIncrement = 3.0 +FreeCameraDistanceIncrement = 200.0 +FreeCameraLeftRightIncrement = 2.0 +FreeCameraAltitudeIncrement = 2.0 +FreeCameraScalarSpeedAcceleration = 0.1 +xMinMap = -300000 +xMaxMap = 500000 +yMinMap = -400000 +yMaxMap = 200000 +dxMap = 150000 +dyMap = 100000 + +head_roll_shaking = true +head_roll_shaking_max = 30.0 +head_roll_shaking_compensation_gain = 0.3 + +-- CameraJiggle() and CameraFloat() functions make camera position +-- dependent on FPS so be careful in using the Shift-J command with tracks, please. +-- uncomment to use custom jiggle functions +--[[ +function CameraJiggle(t,rnd1,rnd2,rnd3) + local rotX, rotY, rotZ + rotX = 0.05 * rnd1 * math.sin(37.0 * (t - 0.0)) + rotY = 0.05 * rnd2 * math.sin(41.0 * (t - 1.0)) + rotZ = 0.05 * rnd3 * math.sin(53.0 * (t - 2.0)) + return rotX, rotY, rotZ +end + +function CameraFloat(t) + local dX, dY, dZ + dX = 0.61 * math.sin(0.7 * t) + 0.047 * math.sin(1.6 * t); + dY = 0.43 * math.sin(0.6 * t) + 0.067 * math.sin(1.7 * t); + dZ = 0.53 * math.sin(1.0 * t) + 0.083 * math.sin(1.9 * t); + return dX, dY, dZ +end +--]] +--Debug keys + +DEBUG_TEXT = 1 +DEBUG_GEOMETRY = 2 + +debug_keys = { + [DEBUG_TEXT] = 1, + [DEBUG_GEOMETRY] = 1 +} + +function onDebugCommand(command) + if command == 10000 then + if debug_keys[DEBUG_TEXT] ~= 0 or debug_keys[DEBUG_GEOMETRY] ~= 0 then + debug_keys[DEBUG_GEOMETRY] = 0 + debug_keys[DEBUG_TEXT] = 0 + else + debug_keys[DEBUG_GEOMETRY] = 1 + debug_keys[DEBUG_TEXT] = 1 + end + elseif command == 10001 then + if debug_keys[DEBUG_TEXT] ~= 0 then + debug_keys[DEBUG_TEXT] = 0 + else + debug_keys[DEBUG_TEXT] = 1 + end + elseif command == 10002 then + if debug_keys[DEBUG_GEOMETRY] ~= 0 then + debug_keys[DEBUG_GEOMETRY] = 0 + else + debug_keys[DEBUG_GEOMETRY] = 1 + end + end +end + +-- gain values for TrackIR , to unify responce on diffrent types of aircraft +TrackIR_gain_x = -0.6 +TrackIR_gain_y = 0.3 +TrackIR_gain_z = -0.25 +TrackIR_gain_roll = -90 \ No newline at end of file diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/DSMS/SETTINGS.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/DSMS/SETTINGS.lua new file mode 100644 index 000000000..c3a7de1ad --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/DSMS/SETTINGS.lua @@ -0,0 +1,6623 @@ +settings= +{ + ["MaverickData"]= + { + ["MavTime"]= + { + ["M"]=0, + ["H"]=0, + ["S"]=0, + }, + ["MavPO"]=0, + ["AutoEOBearing"]=0, + ["AutoEORange"]=0, + ["MavWPT"]=0, + }, + ["ProfileParametrsByWpn"]= + { + [1]= + { + ["type"]= + { + ["level3"]=101, + ["level1"]=4, + ["level4"]=0, + ["level2"]=4, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + }, + }, + [2]= + { + ["type"]= + { + ["level3"]=9, + ["level1"]=4, + ["level4"]=31, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=7, + [3]=3, + [4]=9, + [5]=12, + [0]=1, + }, + [5]= + { + [0]=3, + }, + [6]= + { + [1]=1, + [2]=3, + [3]=5, + [4]=7, + [5]=11, + [6]=8, + [7]=10, + [8]=9, + [0]=0, + }, + [4]= + { + [1]=5, + [2]=11, + [3]=8, + [4]=7, + [5]=1, + [6]=9, + [7]=3, + [8]=10, + [9]=12, + [0]=0, + }, + [8]= + { + [0]=11, + }, + }, + ["nose_fuzes"]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [5]=7, + [6]=8, + [0]=0, + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=3, + [7]=2, + }, + ["tail_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=3, + [4]=8, + [5]=11, + [0]=1, + }, + [5]= + { + [0]=3, + }, + [6]= + { + [1]=5, + [2]=7, + [3]=3, + [4]=9, + [5]=11, + [0]=1, + }, + [4]= + { + [1]=5, + [2]=10, + [3]=7, + [4]=6, + [5]=1, + [6]=8, + [7]=3, + [8]=9, + [9]=11, + [0]=0, + }, + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [4]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [5]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [6]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [7]= + { + [0]=1, + }, + [8]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [0]= + { + [1]=5, + [2]=1, + [3]=6, + [0]=4, + }, + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=4, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="N-", + }, + [2]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [3]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [4]= + { + ["ParamType"]=5, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="T-", + }, + [5]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [6]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [7]= + { + ["ParamType"]=3, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES TOF:", + }, + [8]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [9]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [3]= + { + ["type"]= + { + ["level3"]=9, + ["level1"]=4, + ["level4"]=33, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=7, + [3]=3, + [4]=9, + [5]=12, + [0]=1, + }, + [5]= + { + [0]=3, + }, + [6]= + { + [1]=1, + [2]=3, + [3]=5, + [4]=7, + [5]=11, + [6]=8, + [7]=10, + [8]=9, + [0]=0, + }, + [4]= + { + [1]=5, + [2]=11, + [3]=8, + [4]=7, + [5]=1, + [6]=9, + [7]=3, + [8]=10, + [9]=12, + [0]=0, + }, + [8]= + { + [0]=11, + }, + }, + ["nose_fuzes"]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [5]=7, + [6]=8, + [0]=0, + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=3, + [7]=2, + }, + ["tail_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=3, + [4]=8, + [5]=11, + [0]=1, + }, + [5]= + { + [0]=3, + }, + [6]= + { + [1]=5, + [2]=7, + [3]=3, + [4]=9, + [5]=11, + [0]=1, + }, + [4]= + { + [1]=5, + [2]=10, + [3]=7, + [4]=6, + [5]=1, + [6]=8, + [7]=3, + [8]=9, + [9]=11, + [0]=0, + }, + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [4]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [5]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [6]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [7]= + { + [0]=1, + }, + [8]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [0]= + { + [1]=5, + [2]=1, + [3]=6, + [0]=4, + }, + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=4, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="N-", + }, + [2]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [3]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [4]= + { + ["ParamType"]=5, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="T-", + }, + [5]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [6]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [7]= + { + ["ParamType"]=3, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES TOF:", + }, + [8]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [9]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [4]= + { + ["type"]= + { + ["level3"]=38, + ["level1"]=4, + ["level4"]=35, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=3, + [7]=2, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [2]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [3]= + { + ["ParamType"]=12, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="HOF:", + }, + [4]= + { + ["ParamType"]=11, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FUNC TIME:", + }, + [5]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [6]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [7]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [8]= + { + ["ParamType"]=10, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FZU39:", + }, + [9]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [10]= + { + ["ParamType"]=3, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES TOF:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [5]= + { + ["type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=36, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=7, + [3]=3, + [4]=9, + [5]=12, + [0]=1, + }, + [4]= + { + [1]=5, + [2]=11, + [3]=8, + [4]=7, + [5]=1, + [6]=9, + [7]=3, + [8]=10, + [9]=12, + [0]=0, + }, + [9]= + { + [1]=2, + [2]=3, + [3]=4, + [4]=5, + [5]=12, + [6]=7, + [7]=9, + [8]=8, + [0]=1, + }, + }, + ["nose_fuzes"]= + { + [1]=4, + [2]=0, + [3]=9, + [0]=1, + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=3, + [7]=2, + [8]=18, + [9]=19, + [10]=20, + }, + ["tail_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=3, + [4]=8, + [5]=11, + [0]=1, + }, + [6]= + { + [1]=5, + [2]=7, + [3]=3, + [4]=9, + [5]=11, + [0]=1, + }, + [4]= + { + [1]=5, + [2]=10, + [3]=7, + [4]=6, + [5]=1, + [6]=8, + [7]=3, + [8]=9, + [9]=11, + [0]=0, + }, + [10]= + { + [1]=2, + [2]=3, + [3]=4, + [4]=5, + [5]=11, + [6]=6, + [7]=8, + [8]=7, + [0]=1, + }, + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=1, + [4]=10, + [0]=0, + }, + [0]= + { + [1]=6, + [2]=1, + [3]=10, + [0]=4, + }, + [4]= + { + [1]=4, + [2]=6, + [3]=1, + [4]=10, + [0]=0, + }, + [9]= + { + [1]=4, + [2]=6, + [3]=1, + [4]=10, + [0]=0, + }, + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=19, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="SOLUTION:", + }, + [2]= + { + ["ParamType"]=4, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="N-", + }, + [3]= + { + ["ParamType"]=20, + ["Format"]="%d SEC", + ["IsUnderline"]=1, + ["StringName"]="LASE TIME:", + }, + [4]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [5]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [6]= + { + ["ParamType"]=3, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES TOF:", + }, + [7]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [8]= + { + ["ParamType"]=25, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LASER CODE:", + }, + [9]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [10]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [11]= + { + ["ParamType"]=5, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="T-", + }, + [12]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [13]= + { + ["ParamType"]=18, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="AUTO LASE:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [6]= + { + ["type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=38, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=7, + [3]=3, + [4]=9, + [5]=12, + [0]=1, + }, + [4]= + { + [1]=5, + [2]=11, + [3]=8, + [4]=7, + [5]=1, + [6]=9, + [7]=3, + [8]=10, + [9]=12, + [0]=0, + }, + [9]= + { + [1]=2, + [2]=3, + [3]=4, + [4]=5, + [5]=12, + [6]=7, + [7]=9, + [8]=8, + [0]=1, + }, + }, + ["nose_fuzes"]= + { + [1]=4, + [2]=0, + [3]=9, + [0]=1, + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=3, + [7]=2, + [8]=18, + [9]=19, + [10]=20, + }, + ["tail_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=3, + [4]=8, + [5]=11, + [0]=1, + }, + [6]= + { + [1]=5, + [2]=7, + [3]=3, + [4]=9, + [5]=11, + [0]=1, + }, + [4]= + { + [1]=5, + [2]=10, + [3]=7, + [4]=6, + [5]=1, + [6]=8, + [7]=3, + [8]=9, + [9]=11, + [0]=0, + }, + [10]= + { + [1]=2, + [2]=3, + [3]=4, + [4]=5, + [5]=11, + [6]=6, + [7]=8, + [8]=7, + [0]=1, + }, + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=1, + [4]=10, + [0]=0, + }, + [0]= + { + [1]=6, + [2]=1, + [3]=10, + [0]=4, + }, + [4]= + { + [1]=4, + [2]=6, + [3]=1, + [4]=10, + [0]=0, + }, + [9]= + { + [1]=4, + [2]=6, + [3]=1, + [4]=10, + [0]=0, + }, + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=19, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="SOLUTION:", + }, + [2]= + { + ["ParamType"]=4, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="N-", + }, + [3]= + { + ["ParamType"]=20, + ["Format"]="%d SEC", + ["IsUnderline"]=1, + ["StringName"]="LASE TIME:", + }, + [4]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [5]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [6]= + { + ["ParamType"]=3, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES TOF:", + }, + [7]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [8]= + { + ["ParamType"]=25, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LASER CODE:", + }, + [9]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [10]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [11]= + { + ["ParamType"]=5, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="T-", + }, + [12]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [13]= + { + ["ParamType"]=18, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="AUTO LASE:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [7]= + { + ["type"]= + { + ["level3"]=8, + ["level1"]=4, + ["level4"]=61, + ["level2"]=4, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + }, + }, + [8]= + { + ["type"]= + { + ["level3"]=49, + ["level1"]=4, + ["level4"]=64, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=14, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=14, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="H OVR TGT:", + }, + [2]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="SUU25 MNT:", + }, + [0]= + { + ["ParamType"]=13, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FF DIST:", + }, + }, + }, + [9]= + { + ["type"]= + { + ["level3"]=9, + ["level1"]=4, + ["level4"]=69, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=3, + [7]=16, + [8]=2, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=15, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="SERIES:", + }, + [2]= + { + ["ParamType"]=16, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="MIN TOF:", + }, + [3]= + { + ["ParamType"]=3, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES TOF:", + }, + [4]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [5]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [6]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [7]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [8]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [10]= + { + ["type"]= + { + ["level3"]=8, + ["level1"]=4, + ["level4"]=70, + ["level2"]=4, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + }, + }, + [11]= + { + ["type"]= + { + ["level3"]=9, + ["level1"]=4, + ["level4"]=70, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=7, + [3]=3, + [4]=9, + [5]=12, + [0]=1, + }, + [5]= + { + [0]=3, + }, + [6]= + { + [1]=1, + [2]=3, + [3]=5, + [4]=7, + [5]=11, + [6]=8, + [7]=10, + [8]=9, + [0]=0, + }, + [4]= + { + [1]=5, + [2]=11, + [3]=8, + [4]=7, + [5]=1, + [6]=9, + [7]=3, + [8]=10, + [9]=12, + [0]=0, + }, + [8]= + { + [1]=4, + [2]=5, + [3]=3, + [4]=6, + [5]=7, + [6]=11, + [0]=2, + }, + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=3, + [7]=2, + }, + ["tail_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=3, + [4]=8, + [5]=11, + [0]=1, + }, + [5]= + { + [0]=3, + }, + [6]= + { + [1]=5, + [2]=7, + [3]=3, + [4]=9, + [5]=11, + [0]=1, + }, + [4]= + { + [1]=5, + [2]=10, + [3]=7, + [4]=6, + [5]=1, + [6]=8, + [7]=3, + [8]=9, + [9]=11, + [0]=0, + }, + }, + ["nose_fuzes_by_config"]= + { + [0]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [5]=7, + [6]=8, + [0]=0, + }, + }, + ["tail_fuze_by_config_fuze"]= + { + [0]= + { + [0]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + }, + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [2]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [3]= + { + ["ParamType"]=4, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="N-", + }, + [4]= + { + ["ParamType"]=3, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES TOF:", + }, + [5]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [6]= + { + ["ParamType"]=15, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="SERIES:", + }, + [7]= + { + ["ParamType"]=5, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="T-", + }, + [8]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [9]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [10]= + { + ["ParamType"]=17, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="CONFIG:", + }, + [11]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [12]= + { + ["type"]= + { + ["level3"]=9, + ["level1"]=4, + ["level4"]=71, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=7, + [3]=3, + [4]=9, + [5]=12, + [0]=1, + }, + [2]= + { + [1]=1, + [2]=0, + [3]=2, + [0]=28, + }, + [3]= + { + [1]=21, + [2]=27, + [3]=19, + [4]=23, + [5]=22, + [6]=15, + [7]=24, + [8]=20, + [9]=16, + [10]=14, + [11]=25, + [12]=17, + [13]=18, + [14]=26, + [0]=13, + }, + [6]= + { + [1]=1, + [2]=3, + [3]=5, + [4]=7, + [5]=11, + [6]=8, + [7]=10, + [8]=9, + [0]=0, + }, + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=3, + [7]=21, + [8]=22, + [9]=2, + }, + ["tail_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=3, + [4]=8, + [5]=11, + [0]=1, + }, + [2]= + { + [1]=1, + [2]=0, + [3]=2, + [0]=27, + }, + [3]= + { + [1]=20, + [2]=26, + [3]=18, + [4]=22, + [5]=21, + [6]=14, + [7]=23, + [8]=19, + [9]=15, + [10]=13, + [11]=24, + [12]=16, + [13]=17, + [14]=25, + [0]=12, + }, + [11]= + { + [1]=35, + [2]=3, + [3]=1, + [4]=2, + [5]=36, + [6]=30, + [7]=37, + [8]=34, + [9]=31, + [10]=29, + [11]=38, + [12]=32, + [13]=33, + [14]=39, + [0]=28, + }, + [6]= + { + [1]=5, + [2]=7, + [3]=3, + [4]=9, + [5]=11, + [0]=1, + }, + [12]= + { + [1]=31, + [2]=29, + [3]=0, + [4]=44, + [5]=30, + [6]=6, + [7]=45, + [8]=43, + [9]=28, + [10]=42, + [11]=32, + [0]=40, + }, + }, + ["nose_fuzes_by_config"]= + { + [2]= + { + [1]=6, + [2]=0, + [3]=7, + [0]=2, + }, + [3]= + { + [1]=6, + [2]=0, + [3]=7, + [0]=1, + }, + [4]= + { + [1]=6, + [2]=0, + [3]=7, + [0]=3, + }, + [5]= + { + [0]=6, + }, + [6]= + { + [0]=6, + }, + }, + ["tail_fuze_by_config_fuze"]= + { + [2]= + { + [2]= + { + [0]=2, + }, + }, + [3]= + { + [3]= + { + [0]=1, + }, + }, + [4]= + { + [4]= + { + [0]=3, + }, + }, + [5]= + { + [5]= + { + [0]=3, + }, + }, + [6]= + { + [6]= + { + [0]=2, + }, + }, + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [2]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [3]= + { + ["ParamType"]=5, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="T-", + }, + [4]= + { + ["ParamType"]=4, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="N-", + }, + [5]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [6]= + { + ["ParamType"]=15, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="SERIES:", + }, + [7]= + { + ["ParamType"]=21, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES HD TOF:", + }, + [8]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [9]= + { + ["ParamType"]=22, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES LD TOF:", + }, + [10]= + { + ["ParamType"]=17, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="CONFIG:", + }, + [11]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [12]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [13]= + { + ["type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=72, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=7, + [3]=3, + [4]=9, + [5]=12, + [0]=1, + }, + [4]= + { + [1]=4, + [2]=7, + [3]=1, + [4]=9, + [5]=12, + [0]=0, + }, + [9]= + { + [1]=2, + [2]=3, + [3]=4, + [4]=5, + [5]=12, + [6]=7, + [7]=9, + [8]=8, + [0]=1, + }, + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=3, + [7]=2, + [8]=18, + [9]=19, + [10]=20, + }, + ["tail_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=3, + [4]=8, + [5]=11, + [0]=1, + }, + [6]= + { + [1]=5, + [2]=7, + [3]=3, + [4]=9, + [5]=11, + [0]=1, + }, + [4]= + { + [1]=4, + [2]=6, + [3]=1, + [4]=8, + [5]=11, + [0]=0, + }, + [10]= + { + [1]=2, + [2]=3, + [3]=4, + [4]=5, + [5]=11, + [6]=6, + [7]=8, + [8]=7, + [0]=1, + }, + }, + ["nose_fuzes_by_config"]= + { + [1]= + { + [1]=4, + [2]=0, + [3]=9, + [0]=1, + }, + }, + ["tail_fuze_by_config_fuze"]= + { + [1]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=1, + [4]=10, + [0]=0, + }, + }, + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=19, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="SOLUTION:", + }, + [2]= + { + ["ParamType"]=4, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="N-", + }, + [3]= + { + ["ParamType"]=20, + ["Format"]="%d SEC", + ["IsUnderline"]=1, + ["StringName"]="LASE TIME:", + }, + [4]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [5]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [6]= + { + ["ParamType"]=3, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES TOF:", + }, + [7]= + { + ["ParamType"]=17, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="CONFIG:", + }, + [8]= + { + ["ParamType"]=25, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LASER CODE:", + }, + [9]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [10]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [11]= + { + ["ParamType"]=5, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="T-", + }, + [12]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [13]= + { + ["ParamType"]=18, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="AUTO LASE:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [14]= + { + ["type"]= + { + ["level3"]=9, + ["level1"]=4, + ["level4"]=73, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=7, + [3]=3, + [4]=9, + [5]=12, + [0]=1, + }, + [5]= + { + [0]=3, + }, + [6]= + { + [1]=1, + [2]=3, + [3]=5, + [4]=7, + [5]=11, + [6]=8, + [7]=10, + [8]=9, + [0]=0, + }, + [4]= + { + [1]=5, + [2]=11, + [3]=8, + [4]=7, + [5]=1, + [6]=9, + [7]=3, + [8]=10, + [9]=12, + [0]=0, + }, + [8]= + { + [1]=4, + [2]=5, + [3]=3, + [4]=6, + [5]=7, + [6]=11, + [0]=2, + }, + }, + ["nose_fuzes"]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [5]=7, + [6]=8, + [0]=0, + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=3, + [7]=2, + }, + ["tail_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=3, + [4]=8, + [5]=11, + [0]=1, + }, + [5]= + { + [0]=3, + }, + [6]= + { + [1]=5, + [2]=7, + [3]=3, + [4]=9, + [5]=11, + [0]=1, + }, + [4]= + { + [1]=5, + [2]=10, + [3]=7, + [4]=6, + [5]=1, + [6]=8, + [7]=3, + [8]=9, + [9]=11, + [0]=0, + }, + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [4]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [5]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [6]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [7]= + { + [0]=1, + }, + [8]= + { + [1]=4, + [2]=5, + [3]=1, + [4]=6, + [0]=0, + }, + [0]= + { + [1]=5, + [2]=1, + [3]=6, + [0]=4, + }, + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=4, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="N-", + }, + [2]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [3]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [4]= + { + ["ParamType"]=5, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="T-", + }, + [5]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [6]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [7]= + { + ["ParamType"]=3, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES TOF:", + }, + [8]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [9]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [15]= + { + ["type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=74, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=7, + [3]=3, + [4]=9, + [5]=12, + [0]=1, + }, + [4]= + { + [1]=5, + [2]=11, + [3]=8, + [4]=7, + [5]=1, + [6]=9, + [7]=3, + [8]=10, + [9]=12, + [0]=0, + }, + [9]= + { + [1]=2, + [2]=3, + [3]=4, + [4]=5, + [5]=12, + [6]=7, + [7]=9, + [8]=8, + [0]=1, + }, + }, + ["nose_fuzes"]= + { + [1]=4, + [2]=0, + [3]=9, + [0]=1, + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=3, + [7]=2, + [8]=18, + [9]=19, + [10]=20, + }, + ["tail_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=3, + [4]=8, + [5]=11, + [0]=1, + }, + [6]= + { + [1]=5, + [2]=7, + [3]=3, + [4]=9, + [5]=11, + [0]=1, + }, + [4]= + { + [1]=5, + [2]=10, + [3]=7, + [4]=6, + [5]=1, + [6]=8, + [7]=3, + [8]=9, + [9]=11, + [0]=0, + }, + [10]= + { + [1]=2, + [2]=3, + [3]=4, + [4]=5, + [5]=11, + [6]=6, + [7]=8, + [8]=7, + [0]=1, + }, + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=1, + [4]=10, + [0]=0, + }, + [0]= + { + [1]=6, + [2]=1, + [3]=10, + [0]=4, + }, + [4]= + { + [1]=4, + [2]=6, + [3]=1, + [4]=10, + [0]=0, + }, + [9]= + { + [1]=4, + [2]=6, + [3]=1, + [4]=10, + [0]=0, + }, + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=19, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="SOLUTION:", + }, + [2]= + { + ["ParamType"]=4, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="N-", + }, + [3]= + { + ["ParamType"]=20, + ["Format"]="%d SEC", + ["IsUnderline"]=1, + ["StringName"]="LASE TIME:", + }, + [4]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [5]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [6]= + { + ["ParamType"]=3, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES TOF:", + }, + [7]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [8]= + { + ["ParamType"]=25, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LASER CODE:", + }, + [9]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [10]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [11]= + { + ["ParamType"]=5, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="T-", + }, + [12]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [13]= + { + ["ParamType"]=18, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="AUTO LASE:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [16]= + { + ["type"]= + { + ["level3"]=9, + ["level1"]=4, + ["level4"]=75, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=7, + [3]=3, + [4]=9, + [5]=12, + [0]=1, + }, + [2]= + { + [1]=1, + [2]=0, + [3]=2, + [0]=28, + }, + [3]= + { + [1]=21, + [2]=27, + [3]=19, + [4]=23, + [5]=22, + [6]=15, + [7]=24, + [8]=20, + [9]=16, + [10]=14, + [11]=25, + [12]=17, + [13]=18, + [14]=26, + [0]=13, + }, + [6]= + { + [1]=1, + [2]=3, + [3]=5, + [4]=7, + [5]=11, + [6]=8, + [7]=10, + [8]=9, + [0]=0, + }, + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=21, + [7]=22, + [8]=2, + }, + ["tail_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=3, + [4]=8, + [5]=11, + [0]=1, + }, + [2]= + { + [1]=1, + [2]=0, + [3]=2, + [0]=27, + }, + [3]= + { + [1]=20, + [2]=26, + [3]=18, + [4]=22, + [5]=21, + [6]=14, + [7]=23, + [8]=19, + [9]=15, + [10]=13, + [11]=24, + [12]=16, + [13]=17, + [14]=25, + [0]=12, + }, + [11]= + { + [1]=35, + [2]=3, + [3]=1, + [4]=2, + [5]=36, + [6]=30, + [7]=37, + [8]=34, + [9]=31, + [10]=29, + [11]=38, + [12]=32, + [13]=33, + [14]=39, + [0]=28, + }, + [6]= + { + [1]=5, + [2]=7, + [3]=3, + [4]=9, + [5]=11, + [0]=1, + }, + [12]= + { + [1]=31, + [2]=29, + [3]=0, + [4]=44, + [5]=30, + [6]=6, + [7]=45, + [8]=43, + [9]=28, + [10]=42, + [11]=32, + [0]=40, + }, + }, + ["nose_fuzes_by_config"]= + { + [2]= + { + [1]=6, + [2]=0, + [3]=7, + [0]=2, + }, + [3]= + { + [1]=6, + [2]=0, + [3]=7, + [0]=1, + }, + [4]= + { + [1]=6, + [2]=0, + [3]=7, + [0]=3, + }, + [5]= + { + [0]=6, + }, + [6]= + { + [0]=6, + }, + }, + ["tail_fuze_by_config_fuze"]= + { + [2]= + { + [2]= + { + [0]=2, + }, + }, + [3]= + { + [3]= + { + [0]=1, + }, + }, + [4]= + { + [4]= + { + [0]=3, + }, + }, + [5]= + { + [5]= + { + [0]=3, + }, + }, + [6]= + { + [6]= + { + [0]=2, + }, + }, + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [2]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [3]= + { + ["ParamType"]=21, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES HD TOF:", + }, + [4]= + { + ["ParamType"]=5, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="T-", + }, + [5]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [6]= + { + ["ParamType"]=17, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="CONFIG:", + }, + [7]= + { + ["ParamType"]=22, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES LD TOF:", + }, + [8]= + { + ["ParamType"]=4, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="N-", + }, + [9]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [10]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [11]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [17]= + { + ["type"]= + { + ["level3"]=49, + ["level1"]=4, + ["level4"]=76, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=14, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=14, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="H OVR TGT:", + }, + [2]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="SUU25 MNT:", + }, + [0]= + { + ["ParamType"]=13, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FF DIST:", + }, + }, + }, + [18]= + { + ["type"]= + { + ["level3"]=8, + ["level1"]=4, + ["level4"]=77, + ["level2"]=4, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + }, + }, + [19]= + { + ["type"]= + { + ["level3"]=38, + ["level1"]=4, + ["level4"]=77, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=3, + [7]=2, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [2]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [3]= + { + ["ParamType"]=12, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="HOF:", + }, + [4]= + { + ["ParamType"]=11, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FUNC TIME:", + }, + [5]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [6]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [7]= + { + ["ParamType"]=26, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="RPM:", + }, + [8]= + { + ["ParamType"]=10, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FZU39:", + }, + [9]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [10]= + { + ["ParamType"]=3, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES TOF:", + }, + [11]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [20]= + { + ["type"]= + { + ["level3"]=38, + ["level1"]=4, + ["level4"]=78, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + [4]=8, + [5]=9, + [6]=3, + [7]=2, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=9, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]=" RACK DEL:", + }, + [2]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [3]= + { + ["ParamType"]=12, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="HOF:", + }, + [4]= + { + ["ParamType"]=11, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FUNC TIME:", + }, + [5]= + { + ["ParamType"]=8, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" EJECT VEL:", + }, + [6]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [7]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [8]= + { + ["ParamType"]=10, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FZU39:", + }, + [9]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [10]= + { + ["ParamType"]=3, + ["Format"]="%.1f", + ["IsUnderline"]=1, + ["StringName"]="DES TOF:", + }, + [0]= + { + ["ParamType"]=2, + ["Format"]="%s", + ["IsUnderline"]=1, + ["StringName"]="ESC MNVR:", + }, + }, + }, + [21]= + { + ["type"]= + { + ["level3"]=49, + ["level1"]=4, + ["level4"]=80, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=14, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=14, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="H OVR TGT:", + }, + [2]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="SUU25 MNT:", + }, + [0]= + { + ["ParamType"]=13, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FF DIST:", + }, + }, + }, + [22]= + { + ["type"]= + { + ["level3"]=49, + ["level1"]=4, + ["level4"]=81, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=14, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=14, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="H OVR TGT:", + }, + [2]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="SUU25 MNT:", + }, + [0]= + { + ["ParamType"]=13, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FF DIST:", + }, + }, + }, + [23]= + { + ["type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=85, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=7, + [3]=3, + [4]=9, + [5]=12, + [0]=1, + }, + [7]= + { + [0]=29, + }, + }, + ["nose_fuzes"]= + { + [1]=7, + [2]=0, + [0]=1, + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=3, + [4]=8, + [5]=11, + [0]=1, + }, + [13]= + { + [1]=30, + [2]=1, + [3]=27, + [4]=2, + [0]=0, + }, + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + [1]= + { + [1]=13, + [0]=1, + }, + [0]= + { + [1]=13, + [0]=1, + }, + [7]= + { + [0]=1, + }, + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=5, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="T-", + }, + [2]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [3]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=4, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="N-", + }, + }, + }, + [24]= + { + ["type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=86, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=7, + [3]=3, + [4]=9, + [5]=12, + [0]=1, + }, + [7]= + { + [0]=29, + }, + }, + ["nose_fuzes"]= + { + [1]=7, + [2]=0, + [0]=1, + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + [1]= + { + [1]=4, + [2]=6, + [3]=3, + [4]=8, + [5]=11, + [0]=1, + }, + [13]= + { + [1]=30, + [2]=1, + [3]=27, + [4]=2, + [0]=0, + }, + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + [1]= + { + [1]=13, + [0]=1, + }, + [0]= + { + [1]=13, + [0]=1, + }, + [7]= + { + [0]=1, + }, + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=5, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="T-", + }, + [2]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + [3]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=4, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="N-", + }, + }, + }, + [25]= + { + ["type"]= + { + ["level3"]=38, + ["level1"]=4, + ["level4"]=87, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=11, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FUNC TIME:", + }, + [2]= + { + ["ParamType"]=12, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="HOF:", + }, + [3]= + { + ["ParamType"]=10, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FZU39:", + }, + [4]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + }, + }, + [26]= + { + ["type"]= + { + ["level3"]=38, + ["level1"]=4, + ["level4"]=88, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=11, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FUNC TIME:", + }, + [2]= + { + ["ParamType"]=12, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="HOF:", + }, + [3]= + { + ["ParamType"]=10, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FZU39:", + }, + [4]= + { + ["ParamType"]=26, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="RPM:", + }, + [5]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + }, + }, + [27]= + { + ["type"]= + { + ["level3"]=38, + ["level1"]=4, + ["level4"]=89, + ["level2"]=5, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=11, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FUNC TIME:", + }, + [2]= + { + ["ParamType"]=12, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="HOF:", + }, + [3]= + { + ["ParamType"]=10, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="FZU39:", + }, + [4]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="BMB MNT:", + }, + }, + }, + [28]= + { + ["type"]= + { + ["level3"]=8, + ["level1"]=4, + ["level4"]=138, + ["level2"]=4, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + }, + }, + [29]= + { + ["type"]= + { + ["level3"]=8, + ["level1"]=4, + ["level4"]=139, + ["level2"]=4, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + }, + }, + [30]= + { + ["type"]= + { + ["level3"]=101, + ["level1"]=4, + ["level4"]=140, + ["level2"]=4, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + }, + }, + [31]= + { + ["type"]= + { + ["level3"]=101, + ["level1"]=4, + ["level4"]=141, + ["level2"]=4, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + }, + }, + [32]= + { + ["type"]= + { + ["level3"]=101, + ["level1"]=4, + ["level4"]=142, + ["level2"]=4, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + }, + }, + [33]= + { + ["type"]= + { + ["level3"]=33, + ["level1"]=4, + ["level4"]=144, + ["level2"]=7, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [2]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [3]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + [4]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [0]= + { + ["ParamType"]=23, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="POD SET:", + }, + }, + }, + [34]= + { + ["type"]= + { + ["level3"]=33, + ["level1"]=4, + ["level4"]=145, + ["level2"]=7, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [2]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [3]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + [4]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [0]= + { + ["ParamType"]=23, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="POD SET:", + }, + }, + }, + [35]= + { + ["type"]= + { + ["level3"]=33, + ["level1"]=4, + ["level4"]=146, + ["level2"]=7, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [2]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [3]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + [4]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [0]= + { + ["ParamType"]=23, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="POD SET:", + }, + }, + }, + [36]= + { + ["type"]= + { + ["level3"]=33, + ["level1"]=4, + ["level4"]=147, + ["level2"]=7, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [2]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [3]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + [4]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [0]= + { + ["ParamType"]=23, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="POD SET:", + }, + }, + }, + [37]= + { + ["type"]= + { + ["level3"]=33, + ["level1"]=4, + ["level4"]=148, + ["level2"]=7, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [2]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [3]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + [4]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [0]= + { + ["ParamType"]=23, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="POD SET:", + }, + }, + }, + [38]= + { + ["type"]= + { + ["level3"]=33, + ["level1"]=4, + ["level4"]=149, + ["level2"]=7, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [2]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [3]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + [4]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [0]= + { + ["ParamType"]=23, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="POD SET:", + }, + }, + }, + [39]= + { + ["type"]= + { + ["level3"]=33, + ["level1"]=4, + ["level4"]=150, + ["level2"]=7, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + [2]=6, + [3]=7, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [2]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [3]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + [4]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [0]= + { + ["ParamType"]=23, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="POD SET:", + }, + }, + }, + [40]= + { + ["type"]= + { + ["level3"]=33, + ["level1"]=4, + ["level4"]=151, + ["level2"]=7, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=6, + [2]=7, + [3]=24, + [4]=14, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=14, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="H OVR TGT:", + }, + [2]= + { + ["ParamType"]=24, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]="DRAG:", + }, + [3]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + [4]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [5]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [0]= + { + ["ParamType"]=23, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="POD SET:", + }, + }, + }, + [41]= + { + ["type"]= + { + ["level3"]=33, + ["level1"]=4, + ["level4"]=152, + ["level2"]=7, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=6, + [2]=7, + [3]=24, + [4]=14, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=14, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="H OVR TGT:", + }, + [2]= + { + ["ParamType"]=24, + ["Format"]="%.2f", + ["IsUnderline"]=1, + ["StringName"]="DRAG:", + }, + [3]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + [4]= + { + ["ParamType"]=6, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ RT:", + }, + [5]= + { + ["ParamType"]=7, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]=" ADJ UP:", + }, + [0]= + { + ["ParamType"]=23, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="POD SET:", + }, + }, + }, + [42]= + { + ["type"]= + { + ["level3"]=101, + ["level1"]=4, + ["level4"]=154, + ["level2"]=4, + }, + ["nose_set_by_fuze"]= + { + }, + ["nose_fuzes"]= + { + }, + ["settings"]= + { + [1]=1, + }, + ["tail_set_by_fuze"]= + { + }, + ["nose_fuzes_by_config"]= + { + }, + ["tail_fuze_by_config_fuze"]= + { + }, + ["tail_fuze_by_fuze"]= + { + }, + ["strings"]= + { + [1]= + { + ["ParamType"]=1, + ["Format"]="%d", + ["IsUnderline"]=1, + ["StringName"]="MIN ALT:", + }, + [0]= + { + ["ParamType"]=0, + ["Format"]="%s", + ["IsUnderline"]=0, + ["StringName"]="LAUNCHER:", + }, + }, + }, + }, + ["stores"]= + { + [1]= + { + ["rocket"]=0, + ["misc"]=0, + ["cbu"]=1, + ["podtypes"]= + { + ["ALQ184"]=1, + ["ALQ131"]=1, + ["LITENING"]=0, + }, + ["cbutypes"]= + { + ["CBU103"]=0, + ["CBU104"]=0, + ["CBU105"]=0, + ["CBU97"]=1, + ["CBU89"]=1, + ["CBU87"]=1, + }, + ["bomb"]=1, + ["gbu"]=1, + ["rack"]=1, + ["gbutypes"]= + { + ["GBU38"]=0, + ["GBU10"]=0, + ["GBU12"]=1, + ["GBU31"]=0, + }, + ["racktypes"]= + { + ["LAU117"]=0, + ["LAU68"]=0, + ["LAU131"]=0, + ["TER"]=0, + ["SUU25"]=0, + ["LAU88"]=0, + ["LAU105"]=1, + }, + ["pod"]=1, + ["missiletypes"]= + { + ["AIM9"]=1, + ["AGM65"]=0, + }, + ["missile"]=1, + ["flare"]=0, + ["bombtypes"]= + { + ["BLU52"]=0, + ["BDU33"]=0, + ["BDU56"]=0, + ["MK82A"]=1, + ["MK84"]=0, + ["BDU50"]=1, + ["MK82"]=1, + }, + }, + [2]= + { + ["rocket"]=1, + ["misctypes"]= + { + ["CTU2A"]=1, + ["TravelPod"]=1, + ["TK600"]=0, + }, + ["cbu"]=1, + ["cbutypes"]= + { + ["CBU103"]=1, + ["CBU104"]=1, + ["CBU105"]=1, + ["CBU97"]=1, + ["CBU89"]=1, + ["CBU87"]=1, + }, + ["bomb"]=1, + ["gbu"]=1, + ["rack"]=1, + ["gbutypes"]= + { + ["GBU38"]=1, + ["GBU10"]=1, + ["GBU12"]=1, + ["GBU31"]=1, + }, + ["racktypes"]= + { + ["LAU117"]=1, + ["LAU68"]=1, + ["LAU131"]=1, + ["TER"]=1, + ["SUU25"]=1, + ["LAU88"]=1, + ["LAU105"]=0, + }, + ["pod"]=0, + ["missiletypes"]= + { + ["AIM9"]=0, + ["AGM65"]=1, + }, + ["missile"]=1, + ["flare"]=1, + ["misc"]=1, + ["bombtypes"]= + { + ["BLU52"]=1, + ["BDU33"]=1, + ["BDU56"]=1, + ["MK82A"]=1, + ["MK84"]=1, + ["BDU50"]=1, + ["MK82"]=1, + }, + }, + [3]= + { + ["rocket"]=0, + ["misctypes"]= + { + ["CTU2A"]=0, + ["TravelPod"]=1, + ["TK600"]=1, + }, + ["cbu"]=1, + ["cbutypes"]= + { + ["CBU103"]=1, + ["CBU104"]=1, + ["CBU105"]=1, + ["CBU97"]=1, + ["CBU89"]=1, + ["CBU87"]=1, + }, + ["bomb"]=1, + ["gbu"]=1, + ["rack"]=1, + ["gbutypes"]= + { + ["GBU38"]=0, + ["GBU10"]=1, + ["GBU12"]=1, + ["GBU31"]=0, + }, + ["racktypes"]= + { + ["LAU117"]=0, + ["LAU68"]=0, + ["LAU131"]=0, + ["TER"]=1, + ["SUU25"]=0, + ["LAU88"]=0, + ["LAU105"]=0, + }, + ["pod"]=0, + ["missile"]=0, + ["flare"]=0, + ["misc"]=1, + ["bombtypes"]= + { + ["BLU52"]=1, + ["BDU33"]=1, + ["BDU56"]=1, + ["MK82A"]=1, + ["MK84"]=1, + ["BDU50"]=1, + ["MK82"]=1, + }, + }, + [4]= + { + ["rocket"]=0, + ["misctypes"]= + { + ["CTU2A"]=0, + ["TravelPod"]=1, + ["TK600"]=0, + }, + ["cbu"]=1, + ["cbutypes"]= + { + ["CBU103"]=1, + ["CBU104"]=1, + ["CBU105"]=1, + ["CBU97"]=1, + ["CBU89"]=1, + ["CBU87"]=1, + }, + ["bomb"]=1, + ["gbu"]=1, + ["rack"]=1, + ["gbutypes"]= + { + ["GBU38"]=1, + ["GBU10"]=1, + ["GBU12"]=1, + ["GBU31"]=1, + }, + ["racktypes"]= + { + ["LAU117"]=0, + ["LAU68"]=0, + ["LAU131"]=0, + ["TER"]=1, + ["SUU25"]=0, + ["LAU88"]=0, + ["LAU105"]=0, + }, + ["pod"]=0, + ["missile"]=0, + ["flare"]=0, + ["misc"]=1, + ["bombtypes"]= + { + ["BLU52"]=1, + ["BDU33"]=1, + ["BDU56"]=1, + ["MK82A"]=1, + ["MK84"]=1, + ["BDU50"]=1, + ["MK82"]=1, + }, + }, + [5]= + { + ["rocket"]=1, + ["misc"]=0, + ["cbu"]=1, + ["podtypes"]= + { + ["ALQ184"]=0, + ["ALQ131"]=0, + ["LITENING"]=1, + }, + ["cbutypes"]= + { + ["CBU103"]=0, + ["CBU104"]=0, + ["CBU105"]=0, + ["CBU97"]=1, + ["CBU89"]=1, + ["CBU87"]=1, + }, + ["bomb"]=1, + ["gbu"]=1, + ["rack"]=1, + ["gbutypes"]= + { + ["GBU38"]=0, + ["GBU10"]=0, + ["GBU12"]=1, + ["GBU31"]=0, + }, + ["racktypes"]= + { + ["LAU117"]=0, + ["LAU68"]=1, + ["LAU131"]=1, + ["TER"]=0, + ["SUU25"]=1, + ["LAU88"]=0, + ["LAU105"]=0, + }, + ["pod"]=1, + ["missile"]=0, + ["flare"]=1, + ["bombtypes"]= + { + ["BLU52"]=1, + ["BDU33"]=0, + ["BDU56"]=0, + ["MK82A"]=1, + ["MK84"]=0, + ["BDU50"]=1, + ["MK82"]=1, + }, + }, + [6]= + { + ["rocket"]=1, + ["misc"]=0, + ["cbu"]=1, + ["podtypes"]= + { + ["ALQ184"]=0, + ["ALQ131"]=0, + ["LITENING"]=1, + }, + ["cbutypes"]= + { + ["CBU103"]=0, + ["CBU104"]=0, + ["CBU105"]=0, + ["CBU97"]=1, + ["CBU89"]=1, + ["CBU87"]=1, + }, + ["bomb"]=1, + ["gbu"]=1, + ["rack"]=1, + ["gbutypes"]= + { + ["GBU38"]=0, + ["GBU10"]=0, + ["GBU12"]=1, + ["GBU31"]=0, + }, + ["racktypes"]= + { + ["LAU117"]=0, + ["LAU68"]=1, + ["LAU131"]=1, + ["TER"]=0, + ["SUU25"]=1, + ["LAU88"]=0, + ["LAU105"]=0, + }, + ["pod"]=1, + ["missile"]=0, + ["flare"]=1, + ["bombtypes"]= + { + ["BLU52"]=1, + ["BDU33"]=0, + ["BDU56"]=0, + ["MK82A"]=1, + ["MK84"]=0, + ["BDU50"]=1, + ["MK82"]=1, + }, + }, + [7]= + { + ["rocket"]=0, + ["misctypes"]= + { + ["CTU2A"]=0, + ["TravelPod"]=1, + ["TK600"]=0, + }, + ["cbu"]=1, + ["cbutypes"]= + { + ["CBU103"]=1, + ["CBU104"]=1, + ["CBU105"]=1, + ["CBU97"]=1, + ["CBU89"]=1, + ["CBU87"]=1, + }, + ["bomb"]=1, + ["gbu"]=1, + ["rack"]=1, + ["gbutypes"]= + { + ["GBU38"]=1, + ["GBU10"]=1, + ["GBU12"]=1, + ["GBU31"]=1, + }, + ["racktypes"]= + { + ["LAU117"]=0, + ["LAU68"]=0, + ["LAU131"]=0, + ["TER"]=1, + ["SUU25"]=0, + ["LAU88"]=0, + ["LAU105"]=0, + }, + ["pod"]=0, + ["missile"]=0, + ["flare"]=0, + ["misc"]=1, + ["bombtypes"]= + { + ["BLU52"]=1, + ["BDU33"]=1, + ["BDU56"]=1, + ["MK82A"]=1, + ["MK84"]=1, + ["BDU50"]=1, + ["MK82"]=1, + }, + }, + [8]= + { + ["rocket"]=1, + ["misctypes"]= + { + ["CTU2A"]=0, + ["TravelPod"]=1, + ["TK600"]=1, + }, + ["cbu"]=1, + ["cbutypes"]= + { + ["CBU103"]=1, + ["CBU104"]=1, + ["CBU105"]=1, + ["CBU97"]=1, + ["CBU89"]=1, + ["CBU87"]=1, + }, + ["bomb"]=1, + ["gbu"]=1, + ["rack"]=1, + ["gbutypes"]= + { + ["GBU38"]=1, + ["GBU10"]=1, + ["GBU12"]=1, + ["GBU31"]=1, + }, + ["racktypes"]= + { + ["LAU117"]=0, + ["LAU68"]=1, + ["LAU131"]=1, + ["TER"]=1, + ["SUU25"]=0, + ["LAU88"]=0, + ["LAU105"]=0, + }, + ["pod"]=0, + ["missile"]=0, + ["flare"]=0, + ["misc"]=1, + ["bombtypes"]= + { + ["BLU52"]=1, + ["BDU33"]=1, + ["BDU56"]=1, + ["MK82A"]=1, + ["MK84"]=1, + ["BDU50"]=1, + ["MK82"]=1, + }, + }, + [9]= + { + ["rocket"]=1, + ["misctypes"]= + { + ["CTU2A"]=0, + ["TravelPod"]=1, + ["TK600"]=1, + }, + ["cbu"]=1, + ["cbutypes"]= + { + ["CBU103"]=1, + ["CBU104"]=1, + ["CBU105"]=1, + ["CBU97"]=1, + ["CBU89"]=1, + ["CBU87"]=1, + }, + ["bomb"]=1, + ["gbu"]=1, + ["rack"]=1, + ["gbutypes"]= + { + ["GBU38"]=1, + ["GBU10"]=1, + ["GBU12"]=1, + ["GBU31"]=1, + }, + ["racktypes"]= + { + ["LAU117"]=0, + ["LAU68"]=1, + ["LAU131"]=1, + ["TER"]=1, + ["SUU25"]=0, + ["LAU88"]=0, + ["LAU105"]=0, + }, + ["pod"]=0, + ["missile"]=0, + ["flare"]=0, + ["misc"]=1, + ["bombtypes"]= + { + ["BLU52"]=1, + ["BDU33"]=1, + ["BDU56"]=1, + ["MK82A"]=1, + ["MK84"]=1, + ["BDU50"]=1, + ["MK82"]=1, + }, + }, + [10]= + { + ["rocket"]=1, + ["misctypes"]= + { + ["CTU2A"]=1, + ["TravelPod"]=1, + ["TK600"]=0, + }, + ["cbu"]=1, + ["cbutypes"]= + { + ["CBU103"]=1, + ["CBU104"]=1, + ["CBU105"]=1, + ["CBU97"]=1, + ["CBU89"]=1, + ["CBU87"]=1, + }, + ["bomb"]=1, + ["gbu"]=1, + ["rack"]=1, + ["gbutypes"]= + { + ["GBU38"]=1, + ["GBU10"]=1, + ["GBU12"]=1, + ["GBU31"]=1, + }, + ["racktypes"]= + { + ["LAU117"]=1, + ["LAU68"]=1, + ["LAU131"]=1, + ["TER"]=1, + ["SUU25"]=1, + ["LAU88"]=1, + ["LAU105"]=0, + }, + ["pod"]=0, + ["missiletypes"]= + { + ["AIM9"]=0, + ["AGM65"]=1, + }, + ["missile"]=1, + ["flare"]=1, + ["misc"]=1, + ["bombtypes"]= + { + ["BLU52"]=1, + ["BDU33"]=1, + ["BDU56"]=1, + ["MK82A"]=1, + ["MK84"]=1, + ["BDU50"]=1, + ["MK82"]=1, + }, + }, + [0]= + { + ["rocket"]=0, + ["misc"]=0, + ["cbu"]=1, + ["podtypes"]= + { + ["ALQ184"]=1, + ["ALQ131"]=1, + ["LITENING"]=0, + }, + ["cbutypes"]= + { + ["CBU103"]=0, + ["CBU104"]=0, + ["CBU105"]=0, + ["CBU97"]=1, + ["CBU89"]=1, + ["CBU87"]=1, + }, + ["bomb"]=1, + ["gbu"]=1, + ["rack"]=1, + ["gbutypes"]= + { + ["GBU38"]=0, + ["GBU10"]=0, + ["GBU12"]=1, + ["GBU31"]=0, + }, + ["racktypes"]= + { + ["LAU117"]=0, + ["LAU68"]=0, + ["LAU131"]=0, + ["TER"]=0, + ["SUU25"]=0, + ["LAU88"]=0, + ["LAU105"]=1, + }, + ["pod"]=1, + ["missiletypes"]= + { + ["AIM9"]=1, + ["AGM65"]=0, + }, + ["missile"]=1, + ["flare"]=0, + ["bombtypes"]= + { + ["BLU52"]=0, + ["BDU33"]=0, + ["BDU56"]=0, + ["MK82A"]=1, + ["MK84"]=0, + ["BDU50"]=1, + ["MK82"]=1, + }, + }, + }, + ["InventoryTraining"]= + { + [1]= + { + ["ff_dist"]=500, + ["WpnName"]="", + ["IsHung"]=0, + ["StationNumber"]=2, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=0, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=0, + ["hof"]=6, + }, + [2]= + { + ["ff_dist"]=500, + ["WpnName"]="GBU-38", + ["IsHung"]=0, + ["StationNumber"]=3, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=1, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=86, + ["level2"]=5, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [3]= + { + ["ff_dist"]=500, + ["WpnName"]="GBU-38", + ["IsHung"]=0, + ["StationNumber"]=4, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=1, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=86, + ["level2"]=5, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [4]= + { + ["ff_dist"]=500, + ["WpnName"]="GBU-31", + ["IsHung"]=0, + ["StationNumber"]=5, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=1, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=85, + ["level2"]=5, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [5]= + { + ["ff_dist"]=500, + ["WpnName"]="", + ["IsHung"]=0, + ["StationNumber"]=6, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=0, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=0, + ["hof"]=6, + }, + [6]= + { + ["ff_dist"]=500, + ["WpnName"]="GBU-31", + ["IsHung"]=0, + ["StationNumber"]=7, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=1, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=85, + ["level2"]=5, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [7]= + { + ["ff_dist"]=500, + ["WpnName"]="GBU-38", + ["IsHung"]=0, + ["StationNumber"]=8, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=1, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=86, + ["level2"]=5, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [8]= + { + ["ff_dist"]=500, + ["WpnName"]="GBU-38", + ["IsHung"]=0, + ["StationNumber"]=9, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=1, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=86, + ["level2"]=5, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [9]= + { + ["ff_dist"]=500, + ["WpnName"]="LITENING", + ["IsHung"]=0, + ["StationNumber"]=10, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=0, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=44, + ["level1"]=4, + ["level4"]=101, + ["level2"]=15, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [10]= + { + ["ff_dist"]=500, + ["WpnName"]="AIM-9", + ["IsHung"]=0, + ["StationNumber"]=11, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=1, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=0, + ["Eject"]=0, + ["LauncherCount"]=2, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=7, + ["level1"]=4, + ["level4"]=22, + ["level2"]=4, + }, + ["LsrCode"]=1688, + ["LauncherName"]="2 105", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=47, + ["level1"]=4, + ["level4"]=40, + ["level2"]=15, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=2, + ["hof"]=6, + }, + [0]= + { + ["ff_dist"]=500, + ["WpnName"]="ALQ184 S", + ["IsHung"]=0, + ["StationNumber"]=1, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=0, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=45, + ["level1"]=4, + ["level4"]=142, + ["level2"]=15, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + }, + ["InventoryReal"]= + { + [1]= + { + ["ff_dist"]=500, + ["WpnName"]="", + ["IsHung"]=0, + ["StationNumber"]=2, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=0, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=0, + ["hof"]=6, + }, + [2]= + { + ["ff_dist"]=500, + ["WpnName"]="GBU-38", + ["IsHung"]=0, + ["StationNumber"]=3, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=1, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=86, + ["level2"]=5, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [3]= + { + ["ff_dist"]=500, + ["WpnName"]="GBU-38", + ["IsHung"]=0, + ["StationNumber"]=4, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=1, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=86, + ["level2"]=5, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [4]= + { + ["ff_dist"]=500, + ["WpnName"]="GBU-31", + ["IsHung"]=0, + ["StationNumber"]=5, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=1, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=85, + ["level2"]=5, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [5]= + { + ["ff_dist"]=500, + ["WpnName"]="", + ["IsHung"]=0, + ["StationNumber"]=6, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=0, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=0, + ["hof"]=6, + }, + [6]= + { + ["ff_dist"]=500, + ["WpnName"]="GBU-31", + ["IsHung"]=0, + ["StationNumber"]=7, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=1, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=85, + ["level2"]=5, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [7]= + { + ["ff_dist"]=500, + ["WpnName"]="GBU-38", + ["IsHung"]=0, + ["StationNumber"]=8, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=1, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=86, + ["level2"]=5, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [8]= + { + ["ff_dist"]=500, + ["WpnName"]="GBU-38", + ["IsHung"]=0, + ["StationNumber"]=9, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=1, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=86, + ["level2"]=5, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [9]= + { + ["ff_dist"]=500, + ["WpnName"]="LITENING", + ["IsHung"]=0, + ["StationNumber"]=10, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=0, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=44, + ["level1"]=4, + ["level4"]=101, + ["level2"]=15, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + [10]= + { + ["ff_dist"]=500, + ["WpnName"]="AIM-9", + ["IsHung"]=0, + ["StationNumber"]=11, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=1, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=0, + ["Eject"]=0, + ["LauncherCount"]=2, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=7, + ["level1"]=4, + ["level4"]=22, + ["level2"]=4, + }, + ["LsrCode"]=1688, + ["LauncherName"]="105", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=47, + ["level1"]=4, + ["level4"]=40, + ["level2"]=15, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=2, + ["hof"]=6, + }, + [0]= + { + ["ff_dist"]=500, + ["WpnName"]="ALQ184 S", + ["IsHung"]=0, + ["StationNumber"]=1, + ["ALQ131Type"]=0, + ["IsInventoryError"]=0, + ["RocketPylon"]=0, + ["IsProfileMissing"]=0, + ["Ignition"]=0, + ["Rpm"]=3, + ["NoseFuzeType"]=0, + ["TailSet"]=0, + ["Eject"]=0, + ["LauncherCount"]=1, + ["TailFuzeType"]=1, + ["Type"]= + { + ["level3"]=45, + ["level1"]=4, + ["level4"]=142, + ["level2"]=15, + }, + ["LsrCode"]=1688, + ["LauncherName"]="PYLON", + ["NoseSet"]=0, + ["PodSet"]=0, + ["RocketMotor"]=0, + ["Launcher"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["ALQ184Type"]=1, + ["FuncTime"]=5, + ["Fzu39"]=0, + ["Config"]=4, + ["IsMaverick"]=0, + ["series"]=4, + ["Count"]=1, + ["hof"]=6, + }, + }, + ["profiles"]= + { + ["WPNS OFF"]= + { + ["HeightOverTarget"]=0, + ["MinAlt"]=0, + ["index"]=0, + ["DesTOF"]=0, + ["Drag"]=0, + ["HUD_RotaryStatus"]=0, + ["ReleaseMode"]=0, + ["ImpAng"]=45, + ["AdjRt"]=0, + ["RackDel"]=0, + ["MinTOF"]=0, + ["PattAz"]=0, + ["AutoLs"]=0, + ["Type"]= + { + ["level3"]=0, + ["level1"]=0, + ["level4"]=0, + ["level2"]=0, + }, + ["IAM_target_id"]="9999", + ["LsTime"]=0, + ["Qty"]=1, + ["ModeCCIP_RP"]=0, + ["Soln"]=0, + ["Feet"]=75, + ["FuzeType"]=0, + ["Config"]=4, + ["EscMnvr"]=0, + ["AdjUp"]=0, + ["DesHD_TOF"]=0, + ["DesLD_TOF"]=0, + ["EjectVel"]=0, + ["ImpAz"]=45, + }, + ["GBU-38"]= + { + ["HeightOverTarget"]=0, + ["MinAlt"]=0, + ["index"]=1, + ["DesTOF"]=0, + ["Drag"]=0, + ["HUD_RotaryStatus"]=0, + ["ReleaseMode"]=0, + ["ImpAng"]=45, + ["AdjRt"]=0, + ["RackDel"]=0, + ["MinTOF"]=0, + ["PattAz"]=0, + ["AutoLs"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=86, + ["level2"]=5, + }, + ["IAM_target_id"]="9999", + ["LsTime"]=0, + ["Qty"]=1, + ["ModeCCIP_RP"]=1, + ["Soln"]=0, + ["Feet"]=75, + ["FuzeType"]=0, + ["Config"]=4, + ["EscMnvr"]=0, + ["AdjUp"]=0, + ["DesHD_TOF"]=0, + ["DesLD_TOF"]=0, + ["EjectVel"]=0, + ["ImpAz"]=45, + }, + ["GBU-31"]= + { + ["HeightOverTarget"]=0, + ["MinAlt"]=0, + ["index"]=2, + ["DesTOF"]=0, + ["Drag"]=0, + ["HUD_RotaryStatus"]=0, + ["ReleaseMode"]=0, + ["ImpAng"]=45, + ["AdjRt"]=0, + ["RackDel"]=0, + ["MinTOF"]=0, + ["PattAz"]=0, + ["AutoLs"]=1, + ["Type"]= + { + ["level3"]=36, + ["level1"]=4, + ["level4"]=85, + ["level2"]=5, + }, + ["IAM_target_id"]="9999", + ["LsTime"]=0, + ["Qty"]=1, + ["ModeCCIP_RP"]=1, + ["Soln"]=0, + ["Feet"]=75, + ["FuzeType"]=0, + ["Config"]=4, + ["EscMnvr"]=0, + ["AdjUp"]=0, + ["DesHD_TOF"]=0, + ["DesLD_TOF"]=0, + ["EjectVel"]=0, + ["ImpAz"]=45, + }, + }, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/IFFCC/SETTINGS.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/IFFCC/SETTINGS.lua new file mode 100644 index 000000000..299c7fb26 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/IFFCC/SETTINGS.lua @@ -0,0 +1,98 @@ +settings= +{ + ["delta_mode"]=0, + ["disp_tapes"]=0, + ["mnt_boresight_up"]=0, + ["30mm_pac1_pos"]=1, + ["mnt_boresight"]=0, + ["rty_wngspn"]=1, + ["var_tgt_elev"]=0, + ["30mm_rnds"]=6029412, + ["disp_vertvel"]=0, + ["30mm_min_alt"]=1.2461187723206e-306, + ["offadj_enabled"]=1, + ["disp_autodata"]=0, + ["disp_rdralt"]=0, + ["aas_threats"]= + { + [1]= + { + ["in_rotary"]=1, + }, + [2]= + { + ["in_rotary"]=1, + }, + [3]= + { + ["in_rotary"]=0, + }, + [4]= + { + ["in_rotary"]=0, + }, + [5]= + { + ["in_rotary"]=0, + }, + [6]= + { + ["in_rotary"]=0, + }, + [7]= + { + ["in_rotary"]=1, + }, + [8]= + { + ["in_rotary"]=1, + }, + [9]= + { + ["in_rotary"]=0, + }, + [10]= + { + ["in_rotary"]=0, + }, + }, + ["ccip_consent_opt"]=0, + ["gcas_plane"]=458980, + ["30mm_ammo_type"]=6488169, + ["rty_tgtspeed"]=10, + ["delta_msl_cal"]=0, + ["delta_gps_msl"]=0, + ["rty_length"]=1, + ["disp_ccip_cross"]=1, + ["wpn_rel_scroll"]=0, + ["gcas_scroll"]=0, + ["gcas_training_opt"]=0, + ["delta_gps_alt"]=0, + ["delta_rdr_alt"]=0, + ["mnt_boresight_rt"]=0, + ["mode_4"]= + { + ["mode_active"]=0, + ["mode_interval"]=0, + ["mode_start"]=0, + }, + ["mode_1"]= + { + ["mode_active"]=0, + ["mode_interval"]=0, + ["mode_start"]=0, + }, + ["bit_flight"]=0, + ["offadj_gun_up"]=0, + ["fxd_tgtspeed"]=10, + ["disp_airspeed"]=0, + ["offadj_bomb_up"]=0, + ["fxd_wngspn"]=1, + ["offadj_bomb_rt"]=0, + ["fxd_length"]=1, + ["disp_metric"]=0, + ["bit_opt"]=0, + ["offadj_gun_rt"]=0, + ["bit_clear"]=0, + ["30mm_ammo_mfg"]=6029427, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/JADRO_1A/SETTINGS.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/JADRO_1A/SETTINGS.lua new file mode 100644 index 000000000..5e34af53b --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/JADRO_1A/SETTINGS.lua @@ -0,0 +1,9 @@ +settings= +{ + ["dials"]= + { + ["mode_dial"]=2, + ["volume"]=0.5, + ["manual_frequency"]=2000000, + }, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/MFCD/settings_left.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/MFCD/settings_left.lua new file mode 100644 index 000000000..a8de00ab6 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/MFCD/settings_left.lua @@ -0,0 +1,54 @@ +settings= +{ + ["osb_buttons"]= + { + [11]= + { + ["target_mode"]= + { + ["level_3"]=0, + ["master"]=3, + ["level_4"]=0, + ["level_2"]=0, + }, + ["label"]="STAT", + ["source_osb"]=6, + }, + [13]= + { + ["target_mode"]= + { + ["level_3"]=0, + ["master"]=5, + ["level_4"]=0, + ["level_2"]=0, + }, + ["label"]="DSMS", + ["source_osb"]=17, + }, + [12]= + { + ["target_mode"]= + { + ["level_3"]=0, + ["master"]=6, + ["level_4"]=0, + ["level_2"]=0, + }, + ["label"]="TGP", + ["source_osb"]=18, + }, + [14]= + { + ["target_mode"]= + { + ["level_3"]=0, + ["master"]=7, + ["level_4"]=0, + ["level_2"]=0, + }, + ["label"]="TAD", + ["source_osb"]=19, + }, + }, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/MFCD/settings_right.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/MFCD/settings_right.lua new file mode 100644 index 000000000..10a232edb --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/MFCD/settings_right.lua @@ -0,0 +1,54 @@ +settings= +{ + ["osb_buttons"]= + { + [11]= + { + ["target_mode"]= + { + ["level_3"]=0, + ["master"]=8, + ["level_4"]=0, + ["level_2"]=0, + }, + ["label"]="MSG", + ["source_osb"]=16, + }, + [13]= + { + ["target_mode"]= + { + ["level_3"]=0, + ["master"]=4, + ["level_4"]=0, + ["level_2"]=0, + }, + ["label"]="MAV", + ["source_osb"]=8, + }, + [12]= + { + ["target_mode"]= + { + ["level_3"]=0, + ["master"]=10, + ["level_4"]=0, + ["level_2"]=0, + }, + ["label"]="CDU", + ["source_osb"]=15, + }, + [14]= + { + ["target_mode"]= + { + ["level_3"]=0, + ["master"]=6, + ["level_4"]=0, + ["level_2"]=0, + }, + ["label"]="TGP", + ["source_osb"]=18, + }, + }, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Mods/aircraft/Ka-50/Cockpit/Scripts/ARK/ARK.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Mods/aircraft/Ka-50/Cockpit/Scripts/ARK/ARK.lua new file mode 100644 index 000000000..ce4fe0651 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Mods/aircraft/Ka-50/Cockpit/Scripts/ARK/ARK.lua @@ -0,0 +1,85 @@ +mode = ADF_ADF +receiver_mode = ADF_RECEIVER_TLF +homer_selection_method = ADF_HOMER_SELECTION_AUTO +channel = 1 +volume = 0.5 + +local theatre = theatre or "none" +if theatre == 'Caucasus' then + + if Airdrome then + -- for T3 + channels = { + [1] = runway_homer_pair(Airdrome[Krasnodar],nil,localizedAirdromeName(terrainAirdromes[Krasnodar])), + [2] = runway_homer_pair(Airdrome[Maykop] ,nil,localizedAirdromeName(terrainAirdromes[Maykop])), + [3] = runway_homer_pair(Airdrome[Krymsk] ,nil,localizedAirdromeName(terrainAirdromes[Krymsk])), + [4] = runway_homer_pair(Airdrome[Anapa] ,nil,localizedAirdromeName(terrainAirdromes[Anapa])), + [5] = runway_homer_pair(Airdrome[Mozdok] ,nil,localizedAirdromeName(terrainAirdromes[Mozdok])), + [6] = runway_homer_pair(Airdrome[Nalchick] ,nil,localizedAirdromeName(terrainAirdromes[Nalchick])), + [7] = runway_homer_pair(Airdrome[MinVody] ,nil,localizedAirdromeName(terrainAirdromes[MinVody])), + [8] = { + [ADF_HOMER_FAR] = NDB(beacons["NDB_KISLOVODSK"]), + [ADF_HOMER_NEAR] = NDB(beacons["NDB_PEREDOVAIA"]) + } + } + else + -- for T4 + local beacons_by_id = {} + + for i,o in pairs(beacons) do + if o.name == '' then + beacons_by_id[o.beaconId] = o + else + beacons_by_id[o.name] = o + end + end + + local caucasus_pair = function (id_1,id_2) + return { + [ADF_HOMER_FAR] = NDB(beacons_by_id[id_1]), + [ADF_HOMER_NEAR] = NDB(beacons_by_id[id_2]) + } + end + + channels = { + caucasus_pair('airfield13_2','airfield13_3'), + caucasus_pair('airfield16_2','airfield16_3'), + caucasus_pair("airfield15_4","airfield15_5"), + caucasus_pair("airfield12_0","airfield12_1"), + caucasus_pair("airfield28_0","airfield28_1"), + caucasus_pair("airfield27_0","airfield27_1"), + caucasus_pair("airfield26_0","airfield26_1"), + caucasus_pair("world_9","world_58"), + } + end + +elseif theatre == 'Nevada' then + + local beacons_by_name = {} + + for i,o in pairs(beacons) do + if o.name == '' then + beacons_by_name[o.beaconId] = o + else + beacons_by_name[o.name] = o + end + end + + local nevada_pair = function (id_1,id_2) return { + [ADF_HOMER_FAR] = NDB(beacons_by_name[id_1]), + [ADF_HOMER_NEAR] = NDB(beacons_by_name[id_2]) + } + end + + channels = { + nevada_pair('IndianSprings','Groom_Lake'), + nevada_pair('LasVegas','Nellis'), + nevada_pair("Milford","GOFFS"), + nevada_pair("Tonopah","Mina"), + nevada_pair("WilsonCreek","CedarCity"), + nevada_pair("BryceCanyon","MormonMesa"), + nevada_pair("Beatty","Bishop"), + nevada_pair("Coaldale","PeachSprings"), + nevada_pair("BoulderCity","Mercury"), + } +end \ No newline at end of file diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/R_828/SETTINGS.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/R_828/SETTINGS.lua new file mode 100644 index 000000000..86d7f9ea5 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/R_828/SETTINGS.lua @@ -0,0 +1,20 @@ +settings= +{ + ["dials"]= + { + ["channel_dial"]=0, + }, + ["presets"]= + { + [1]=21500000, + [2]=25700000, + [3]=27000000, + [4]=28000000, + [5]=30000000, + [6]=32000000, + [7]=40000000, + [8]=50000000, + [9]=55500000, + [10]=59900000, + }, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/R_863/SETTINGS.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/R_863/SETTINGS.lua new file mode 100644 index 000000000..46adfb2f8 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/R_863/SETTINGS.lua @@ -0,0 +1,34 @@ +settings= +{ + ["dials"]= + { + ["modulation"]=1, + ["channel_dial"]=0, + ["volume"]=0.60000002384186, + ["selection_dial"]=0, + ["manual_frequency"]=127500000, + }, + ["presets"]= + { + [1]=127500000, + [2]=135000000, + [3]=136000000, + [4]=127000000, + [5]=125000000, + [6]=121000000, + [7]=141000000, + [8]=128000000, + [9]=126000000, + [10]=133000000, + [11]=130000000, + [12]=129000000, + [13]=123000000, + [14]=131000000, + [15]=134000000, + [16]=132000000, + [17]=138000000, + [18]=122000000, + [19]=124000000, + [20]=137000000, + }, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/SADL/SETTINGS.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/SADL/SETTINGS.lua new file mode 100644 index 000000000..078d96bac --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/SADL/SETTINGS.lua @@ -0,0 +1,6 @@ +settings= +{ + ["own_id"]=1, + ["grp_id"]=1, + ["callsign"]="", +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Scripts/World/GPS_GNSS.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Scripts/World/GPS_GNSS.lua new file mode 100644 index 000000000..2cb4a8e8d --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Scripts/World/GPS_GNSS.lua @@ -0,0 +1,880 @@ +SAT_SYS_GLONASS = 0 +SAT_SYS_GPS = 1 + +almanac = {} +--GPS +almanac[0] = {} +almanac[0]["System"] = SAT_SYS_GPS +almanac[0]["Number"] = 1 +almanac[0]["Orbital"] = "F" +almanac[0]["Eccentricity"] = 6.294000e-003 +almanac[0]["Time_of_Applicability"] = 5.898240e+005 +almanac[0]["Orbital_Inclination"] = 9.885676e-001 +almanac[0]["Rate_of_Right_Ascen"] = -7.862702e-009 +almanac[0]["SQRT_A"] = 5.153700e+003 +almanac[0]["Right_Ascen_at_Week"] = 8.096750e-001 +almanac[0]["Argument_of_Perigee"] = -1.777773e+000 +almanac[0]["Mean_Anom"] = -5.315745e-001 +almanac[0]["week"] = 1390 + +almanac[1] = {} +almanac[1]["System"] = SAT_SYS_GPS +almanac[1]["Number"] = 2 +almanac[1]["Orbital"] = "C" +almanac[1]["Eccentricity"] = 8.794000e-003 +almanac[1]["Time_of_Applicability"] = 5.898240e+005 +almanac[1]["Orbital_Inclination"] = 9.487811e-001 +almanac[1]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[1]["SQRT_A"] = 5.153700e+003 +almanac[1]["Right_Ascen_at_Week"] = -1.329172e+000 +almanac[1]["Argument_of_Perigee"] = 2.138637e+000 +almanac[1]["Mean_Anom"] = 7.311702e-001 +almanac[1]["week"] = 1390 + +almanac[2] = {} +almanac[2]["System"] = SAT_SYS_GPS +almanac[2]["Number"] = 3 +almanac[2]["Orbital"] = "F" +almanac[2]["Eccentricity"] = 8.424000e-003 +almanac[2]["Time_of_Applicability"] = 5.898240e+005 +almanac[2]["Orbital_Inclination"] = 9.262804e-001 +almanac[2]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[2]["SQRT_A"] = 5.153600e+003 +almanac[2]["Right_Ascen_at_Week"] = -2.341514e+000 +almanac[2]["Argument_of_Perigee"] = 6.749357e-001 +almanac[2]["Mean_Anom"] = -2.296153e-001 +almanac[2]["week"] = 1389 + +almanac[3] = {} +almanac[3]["System"] = SAT_SYS_GPS +almanac[3]["Number"] = 4 +almanac[3]["Orbital"] = "D" +almanac[3]["Eccentricity"] = 7.413000e-003 +almanac[3]["Time_of_Applicability"] = 5.898240e+005 +almanac[3]["Orbital_Inclination"] = 9.482889e-001 +almanac[3]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[3]["SQRT_A"] = 5.153600e+003 +almanac[3]["Right_Ascen_at_Week"] = -1.309589e+000 +almanac[3]["Argument_of_Perigee"] = 1.623504e-001 +almanac[3]["Mean_Anom"] = -3.022943e+000 +almanac[3]["week"] = 1390 + +almanac[4] = {} +almanac[4]["System"] = SAT_SYS_GPS +almanac[4]["Number"] = 5 +almanac[4]["Orbital"] = "B" +almanac[4]["Eccentricity"] = 7.432000e-003 +almanac[4]["Time_of_Applicability"] = 5.898240e+005 +almanac[4]["Orbital_Inclination"] = 9.387437e-001 +almanac[4]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[4]["SQRT_A"] = 5.153700e+003 +almanac[4]["Right_Ascen_at_Week"] = 2.779487e+000 +almanac[4]["Argument_of_Perigee"] = 1.099033e+000 +almanac[4]["Mean_Anom"] = 2.970984e+000 +almanac[4]["week"] = 1390 + +almanac[5] = {} +almanac[5]["System"] = SAT_SYS_GPS +almanac[5]["Number"] = 6 +almanac[5]["Orbital"] = "C" +almanac[5]["Eccentricity"] = 6.020000e-003 +almanac[5]["Time_of_Applicability"] = 5.898240e+005 +almanac[5]["Orbital_Inclination"] = 9.337591e-001 +almanac[5]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[5]["SQRT_A"] = 5.153600e+003 +almanac[5]["Right_Ascen_at_Week"] = -2.407627e+000 +almanac[5]["Argument_of_Perigee"] = -1.788263e+000 +almanac[5]["Mean_Anom"] = -2.149877e+000 +almanac[5]["week"] = 1390 + +almanac[6] = {} +almanac[6]["System"] = SAT_SYS_GPS +almanac[6]["Number"] = 7 +almanac[6]["Orbital"] = "C" +almanac[6]["Eccentricity"] = 1.052400e-002 +almanac[6]["Time_of_Applicability"] = 5.898240e+005 +almanac[6]["Orbital_Inclination"] = 9.353229e-001 +almanac[6]["Rate_of_Right_Ascen"] = -8.080868e-009 +almanac[6]["SQRT_A"] = 5.153700e+003 +almanac[6]["Right_Ascen_at_Week"] = -2.433580e+000 +almanac[6]["Argument_of_Perigee"] = -1.767301e+000 +almanac[6]["Mean_Anom"] = -3.141503e+000 +almanac[6]["week"] = 1390 + +almanac[7] = {} +almanac[7]["System"] = SAT_SYS_GPS +almanac[7]["Number"] = 8 +almanac[7]["Orbital"] = "A" +almanac[7]["Eccentricity"] = 9.822000e-003 +almanac[7]["Time_of_Applicability"] = 5.898240e+005 +almanac[7]["Orbital_Inclination"] = 9.741390e-001 +almanac[7]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[7]["SQRT_A"] = 5.153600e+003 +almanac[7]["Right_Ascen_at_Week"] = 1.857849e+000 +almanac[7]["Argument_of_Perigee"] = 2.674034e+000 +almanac[7]["Mean_Anom"] = -2.009745e+000 +almanac[7]["week"] = 1390 + +almanac[8] = {} +almanac[8]["System"] = SAT_SYS_GPS +almanac[8]["Number"] = 9 +almanac[8]["Orbital"] = "A" +almanac[8]["Eccentricity"] = 1.839300e-002 +almanac[8]["Time_of_Applicability"] = 5.898240e+005 +almanac[8]["Orbital_Inclination"] = 9.617541e-001 +almanac[8]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[8]["SQRT_A"] = 5.153600e+003 +almanac[8]["Right_Ascen_at_Week"] = 1.777005e+000 +almanac[8]["Argument_of_Perigee"] = 1.274962e+000 +almanac[8]["Mean_Anom"] = -2.349578e+000 +almanac[8]["week"] = 1390 + +almanac[9] = {} +almanac[9]["System"] = SAT_SYS_GPS +almanac[9]["Number"] = 10 +almanac[9]["Orbital"] = "E" +almanac[9]["Eccentricity"] = 7.061000e-003 +almanac[9]["Time_of_Applicability"] = 5.898240e+005 +almanac[9]["Orbital_Inclination"] = 9.728876e-001 +almanac[9]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[9]["SQRT_A"] = 5.153600e+003 +almanac[9]["Right_Ascen_at_Week"] = -2.563014e-001 +almanac[9]["Argument_of_Perigee"] = 4.377980e-001 +almanac[9]["Mean_Anom"] = 1.210716e+000 +almanac[9]["week"] = 1390 + +almanac[10] = {} +almanac[10]["System"] = SAT_SYS_GPS +almanac[10]["Number"] = 11 +almanac[10]["Orbital"] = "D" +almanac[10]["Eccentricity"] = 5.744000e-003 +almanac[10]["Time_of_Applicability"] = 5.898240e+005 +almanac[10]["Orbital_Inclination"] = 8.959309e-001 +almanac[10]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[10]["SQRT_A"] = 5.153600e+003 +almanac[10]["Right_Ascen_at_Week"] = -1.478816e+000 +almanac[10]["Argument_of_Perigee"] = 3.750011e-001 +almanac[10]["Mean_Anom"] = -1.522048e+000 +almanac[10]["week"] = 1390 + +almanac[11] = {} +almanac[11]["System"] = SAT_SYS_GPS +almanac[11]["Number"] = 13 +almanac[11]["Orbital"] = "F" +almanac[11]["Eccentricity"] = 3.088000e-003 +almanac[11]["Time_of_Applicability"] = 5.898240e+005 +almanac[11]["Orbital_Inclination"] = 9.927564e-001 +almanac[11]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[11]["SQRT_A"] = 5.153700e+003 +almanac[11]["Right_Ascen_at_Week"] = 7.956600e-001 +almanac[11]["Argument_of_Perigee"] = 1.279395e+000 +almanac[11]["Mean_Anom"] = 1.004349e+000 +almanac[11]["week"] = 1390 + +almanac[12] = {} +almanac[12]["System"] = SAT_SYS_GPS +almanac[12]["Number"] = 14 +almanac[12]["Orbital"] = "F" +almanac[12]["Eccentricity"] = 2.591000e-003 +almanac[12]["Time_of_Applicability"] = 5.898240e+005 +almanac[12]["Orbital_Inclination"] = 9.868729e-001 +almanac[12]["Rate_of_Right_Ascen"] = -7.885391e-009 +almanac[12]["SQRT_A"] = 5.153600e+003 +almanac[12]["Right_Ascen_at_Week"] = 7.819592e-001 +almanac[12]["Argument_of_Perigee"] = -2.158621e+000 +almanac[12]["Mean_Anom"] = 5.412611e-001 +almanac[12]["week"] = 1390 + +almanac[13] = {} +almanac[13]["System"] = SAT_SYS_GPS +almanac[13]["Number"] = 15 +almanac[13]["Orbital"] = "D" +almanac[13]["Eccentricity"] = 9.828000e-003 +almanac[13]["Time_of_Applicability"] = 3.194880e+005 +almanac[13]["Orbital_Inclination"] = 9.554204e-001 +almanac[13]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[13]["SQRT_A"] = 5.153600e+003 +almanac[13]["Right_Ascen_at_Week"] = -1.123869e+000 +almanac[13]["Argument_of_Perigee"] = 2.690266e+000 +almanac[13]["Mean_Anom"] = 2.220476e+000 +almanac[13]["week"] = 1389 + +almanac[14] = {} +almanac[14]["System"] = SAT_SYS_GPS +almanac[14]["Number"] = 16 +almanac[14]["Orbital"] = "B" +almanac[14]["Eccentricity"] = 3.494000e-003 +almanac[14]["Time_of_Applicability"] = 5.898240e+005 +almanac[14]["Orbital_Inclination"] = 9.629340e-001 +almanac[14]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[14]["SQRT_A"] = 5.153700e+003 +almanac[14]["Right_Ascen_at_Week"] = 2.873124e+000 +almanac[14]["Argument_of_Perigee"] = -7.819243e-001 +almanac[14]["Mean_Anom"] = 2.623629e+000 +almanac[14]["week"] = 1390 + +almanac[15] = {} +almanac[15]["System"] = SAT_SYS_GPS +almanac[15]["Number"] = 17 +almanac[15]["Orbital"] = "C" +almanac[15]["Eccentricity"] = 2.141000e-003 +almanac[15]["Time_of_Applicability"] = 5.898240e+005 +almanac[15]["Orbital_Inclination"] = 9.601170e-001 +almanac[15]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[15]["SQRT_A"] = 5.153700e+003 +almanac[15]["Right_Ascen_at_Week"] = -2.371499e+000 +almanac[15]["Argument_of_Perigee"] = 3.087694e+000 +almanac[15]["Mean_Anom"] = 1.611217e+000 +almanac[15]["week"] = 1390 + +almanac[16] = {} +almanac[16]["System"] = SAT_SYS_GPS +almanac[16]["Number"] = 18 +almanac[16]["Orbital"] = "E" +almanac[16]["Eccentricity"] = 7.636000e-003 +almanac[16]["Time_of_Applicability"] = 5.898240e+005 +almanac[16]["Orbital_Inclination"] = 9.569597e-001 +almanac[16]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[16]["SQRT_A"] = 5.153700e+003 +almanac[16]["Right_Ascen_at_Week"] = -2.359858e-001 +almanac[16]["Argument_of_Perigee"] = -2.649216e+000 +almanac[16]["Mean_Anom"] = 2.675029e+000 +almanac[16]["week"] = 1390 + +almanac[17] = {} +almanac[17]["System"] = SAT_SYS_GPS +almanac[17]["Number"] = 19 +almanac[17]["Orbital"] = "C" +almanac[17]["Eccentricity"] = 3.602000e-003 +almanac[17]["Time_of_Applicability"] = 5.898240e+005 +almanac[17]["Orbital_Inclination"] = 9.580209e-001 +almanac[17]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[17]["SQRT_A"] = 5.153600e+003 +almanac[17]["Right_Ascen_at_Week"] = -2.312385e+000 +almanac[17]["Argument_of_Perigee"] = -1.161079e+000 +almanac[17]["Mean_Anom"] = 1.310619e+000 +almanac[17]["week"] = 1390 + +almanac[18] = {} +almanac[18]["System"] = SAT_SYS_GPS +almanac[18]["Number"] = 20 +almanac[18]["Orbital"] = "E" +almanac[18]["Eccentricity"] = 2.796000e-003 +almanac[18]["Time_of_Applicability"] = 5.898240e+005 +almanac[18]["Orbital_Inclination"] = 9.564693e-001 +almanac[18]["Rate_of_Right_Ascen"] = -7.908080e-009 +almanac[18]["SQRT_A"] = 5.153600e+003 +almanac[18]["Right_Ascen_at_Week"] = -2.889565e-001 +almanac[18]["Argument_of_Perigee"] = 1.379612e+000 +almanac[18]["Mean_Anom"] = 2.461750e+000 +almanac[18]["week"] = 1390 + +almanac[19] = {} +almanac[19]["System"] = SAT_SYS_GPS +almanac[19]["Number"] = 21 +almanac[19]["Orbital"] = "D" +almanac[19]["Eccentricity"] = 1.162900e-002 +almanac[19]["Time_of_Applicability"] = 5.898240e+005 +almanac[19]["Orbital_Inclination"] = 9.418592e-001 +almanac[19]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[19]["SQRT_A"] = 5.153600e+003 +almanac[19]["Right_Ascen_at_Week"] = -1.289972e+000 +almanac[19]["Argument_of_Perigee"] = -2.923686e+000 +almanac[19]["Mean_Anom"] = -2.349194e+000 +almanac[19]["week"] = 1390 + +almanac[20] = {} +almanac[20]["System"] = SAT_SYS_GPS +almanac[20]["Number"] = 22 +almanac[20]["Orbital"] = "E" +almanac[20]["Eccentricity"] = 4.893000e-003 +almanac[20]["Time_of_Applicability"] = 5.898240e+005 +almanac[20]["Orbital_Inclination"] = 9.545093e-001 +almanac[20]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[20]["SQRT_A"] = 5.153600e+003 +almanac[20]["Right_Ascen_at_Week"] = -2.280969e-001 +almanac[20]["Argument_of_Perigee"] = -1.674502e+000 +almanac[20]["Mean_Anom"] = 1.106852e+000 +almanac[20]["week"] = 1390 + +almanac[21] = {} +almanac[21]["System"] = SAT_SYS_GPS +almanac[21]["Number"] = 23 +almanac[21]["Orbital"] = "F" +almanac[21]["Eccentricity"] = 4.822000e-003 +almanac[21]["Time_of_Applicability"] = 5.898240e+005 +almanac[21]["Orbital_Inclination"] = 9.691247e-001 +almanac[21]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[21]["SQRT_A"] = 5.153700e+003 +almanac[21]["Right_Ascen_at_Week"] = 7.667399e-001 +almanac[21]["Argument_of_Perigee"] = 2.497634e+000 +almanac[21]["Mean_Anom"] = 3.184700e-001 +almanac[21]["week"] = 1390 + +almanac[22] = {} +almanac[22]["System"] = SAT_SYS_GPS +almanac[22]["Number"] = 24 +almanac[22]["Orbital"] = "D" +almanac[22]["Eccentricity"] = 9.277000e-003 +almanac[22]["Time_of_Applicability"] = 5.898240e+005 +almanac[22]["Orbital_Inclination"] = 9.585183e-001 +almanac[22]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[22]["SQRT_A"] = 5.153900e+003 +almanac[22]["Right_Ascen_at_Week"] = -1.274840e+000 +almanac[22]["Argument_of_Perigee"] = -8.815651e-001 +almanac[22]["Mean_Anom"] = -1.695551e+000 +almanac[22]["week"] = 1390 + +almanac[23] = {} +almanac[23]["System"] = SAT_SYS_GPS +almanac[23]["Number"] = 25 +almanac[23]["Orbital"] = "A" +almanac[23]["Eccentricity"] = 1.257400e-002 +almanac[23]["Time_of_Applicability"] = 5.898240e+005 +almanac[23]["Orbital_Inclination"] = 9.551027e-001 +almanac[23]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[23]["SQRT_A"] = 5.153600e+003 +almanac[23]["Right_Ascen_at_Week"] = 1.721853e+000 +almanac[23]["Argument_of_Perigee"] = -1.329870e+000 +almanac[23]["Mean_Anom"] = -1.769623e+000 +almanac[23]["week"] = 1390 + +almanac[24] = {} +almanac[24]["System"] = SAT_SYS_GPS +almanac[24]["Number"] = 26 +almanac[24]["Orbital"] = "F" +almanac[24]["Eccentricity"] = 1.745700e-002 +almanac[24]["Time_of_Applicability"] = 5.898240e+005 +almanac[24]["Orbital_Inclination"] = 9.908749e-001 +almanac[24]["Rate_of_Right_Ascen"] = -7.840012e-009 +almanac[24]["SQRT_A"] = 5.153700e+003 +almanac[24]["Right_Ascen_at_Week"] = 7.961836e-001 +almanac[24]["Argument_of_Perigee"] = 8.161502e-001 +almanac[24]["Mean_Anom"] = -5.841961e-001 +almanac[24]["week"] = 1390 + +almanac[25] = {} +almanac[25]["System"] = SAT_SYS_GPS +almanac[25]["Number"] = 27 +almanac[25]["Orbital"] = "A" +almanac[25]["Eccentricity"] = 1.991000e-002 +almanac[25]["Time_of_Applicability"] = 5.898240e+005 +almanac[25]["Orbital_Inclination"] = 9.596563e-001 +almanac[25]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[25]["SQRT_A"] = 5.153600e+003 +almanac[25]["Right_Ascen_at_Week"] = 1.754124e+000 +almanac[25]["Argument_of_Perigee"] = -1.900854e+000 +almanac[25]["Mean_Anom"] = 3.046487e+000 +almanac[25]["week"] = 1390 + +almanac[26] = {} +almanac[26]["System"] = SAT_SYS_GPS +almanac[26]["Number"] = 28 +almanac[26]["Orbital"] = "B" +almanac[26]["Eccentricity"] = 1.162800e-002 +almanac[26]["Time_of_Applicability"] = 5.898240e+005 +almanac[26]["Orbital_Inclination"] = 9.610106e-001 +almanac[26]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[26]["SQRT_A"] = 5.153600e+003 +almanac[26]["Right_Ascen_at_Week"] = 2.882583e+000 +almanac[26]["Argument_of_Perigee"] = -2.242868e+000 +almanac[26]["Mean_Anom"] = 1.860642e+000 +almanac[26]["week"] = 1390 + +almanac[27] = {} +almanac[27]["System"] = SAT_SYS_GPS +almanac[27]["Number"] = 29 +almanac[27]["Orbital"] = "F" +almanac[27]["Eccentricity"] = 9.462000e-003 +almanac[27]["Time_of_Applicability"] = 1.474560e+005 +almanac[27]["Orbital_Inclination"] = 9.874838e-001 +almanac[27]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[27]["SQRT_A"] = 5.153700e+003 +almanac[27]["Right_Ascen_at_Week"] = 7.647503e-001 +almanac[27]["Argument_of_Perigee"] = -8.614589e-001 +almanac[27]["Mean_Anom"] = -4.488983e-001 +almanac[27]["week"] = 1390 + +almanac[28] = {} +almanac[28]["System"] = SAT_SYS_GPS +almanac[28]["Number"] = 30 +almanac[28]["Orbital"] = "B" +almanac[28]["Eccentricity"] = 9.296000e-003 +almanac[28]["Time_of_Applicability"] = 5.898240e+005 +almanac[28]["Orbital_Inclination"] = 9.452992e-001 +almanac[28]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[28]["SQRT_A"] = 5.153600e+003 +almanac[28]["Right_Ascen_at_Week"] = 2.826698e+000 +almanac[28]["Argument_of_Perigee"] = 1.306413e+000 +almanac[28]["Mean_Anom"] = 2.148725e+000 +almanac[28]["week"] = 1390 + + + + + + +--GLONASS +--1 , 1-8 +almanac[29] = {} +almanac[29]["System"] = SAT_SYS_GLONASS +almanac[29]["Number"] = 1 +almanac[29]["Orbital"] = 1 +almanac[29]["GLONASS_Data"] = {} +almanac[29]["GLONASS_Data"]["NKU_Number"] = 796 +almanac[29]["GLONASS_Data"]["Cosmos_Number"] = 2411 +almanac[29]["Eccentricity"] = 1.184000e-003 +almanac[29]["Time_of_Applicability"] = 0.000000e+000 +almanac[29]["Orbital_Inclination"] = 1.126443e+000 +almanac[29]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[29]["SQRT_A"] = 5.050500e+003 +almanac[29]["Right_Ascen_at_Week"] = 5.979807e+000 +almanac[29]["Argument_of_Perigee"] = 2.622634e+000 +almanac[29]["Mean_Anom"] = -5.519651e+000 +almanac[29]["week"] = 1390 +almanac[29]["Commit_date"] = "06.02.2005" +almanac[29]["Life_dates"] = {} + +almanac[30] = {} +almanac[30]["System"] = SAT_SYS_GLONASS +almanac[30]["Number"] = 2 +almanac[30]["Orbital"] = 1 +almanac[30]["GLONASS_Data"] = {} +almanac[30]["GLONASS_Data"]["NKU_Number"] = 794 +almanac[30]["GLONASS_Data"]["Cosmos_Number"] = 2401 +almanac[30]["Eccentricity"] = 4.486000e-003 +almanac[30]["Time_of_Applicability"] = 0.000000e+000 +almanac[30]["Orbital_Inclination"] = 1.128459e+000 +almanac[30]["Rate_of_Right_Ascen"] = -6.759654e-009 +almanac[30]["SQRT_A"] = 5.050500e+003 +almanac[30]["Right_Ascen_at_Week"] = 5.997871e+000 +almanac[30]["Argument_of_Perigee"] = 1.709531e+000 +almanac[30]["Mean_Anom"] = -5.367633e+000 +almanac[30]["week"] = 1390 +almanac[30]["Commit_date"] = "02.02.2004" +almanac[30]["Life_dates"] = {} + +almanac[31] = {} +almanac[31]["System"] = SAT_SYS_GLONASS +almanac[31]["Number"] = 3 +almanac[31]["Orbital"] = 1 +almanac[31]["GLONASS_Data"] = {} +almanac[31]["GLONASS_Data"]["NKU_Number"] = 789 +almanac[31]["GLONASS_Data"]["Cosmos_Number"] = 2381 +almanac[31]["Eccentricity"] = 2.459000e-003 +almanac[31]["Time_of_Applicability"] = 0.000000e+000 +almanac[31]["Orbital_Inclination"] = 1.122958e+000 +almanac[31]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[31]["SQRT_A"] = 5.050500e+003 +almanac[31]["Right_Ascen_at_Week"] = 5.960713e+000 +almanac[31]["Argument_of_Perigee"] = -2.683407e+000 +almanac[31]["Mean_Anom"] = -1.791788e+000 +almanac[31]["week"] = 1390 +almanac[31]["Commit_date"] = "04.01.2002" +almanac[31]["Life_dates"] = {} + +almanac[32] = {} +almanac[32]["System"] = SAT_SYS_GLONASS +almanac[32]["Number"] = 4 +almanac[32]["Orbital"] = 1 +almanac[32]["GLONASS_Data"] = {} +almanac[32]["GLONASS_Data"]["NKU_Number"] = 795 +almanac[29]["GLONASS_Data"]["Cosmos_Number"] = 2403 +almanac[32]["Eccentricity"] = 4.054000e-003 +almanac[32]["Time_of_Applicability"] = 0.000000e+000 +almanac[32]["Orbital_Inclination"] = 1.128543e+000 +almanac[32]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[32]["SQRT_A"] = 5.050500e+003 +almanac[32]["Right_Ascen_at_Week"] = 5.998081e+000 +almanac[32]["Argument_of_Perigee"] = 1.497160e+000 +almanac[32]["Mean_Anom"] = -4.293681e-001 +almanac[32]["week"] = 1390 +almanac[32]["Commit_date"] = "29.01.2004" +almanac[32]["Life_dates"] = {} + +almanac[33] = {} +almanac[33]["System"] = SAT_SYS_GLONASS +almanac[33]["Number"] = 5 +almanac[33]["Orbital"] = 1 +almanac[33]["GLONASS_Data"] = {} +almanac[33]["GLONASS_Data"]["NKU_Number"] = 711 +almanac[33]["GLONASS_Data"]["Cosmos_Number"] = 2382 +almanac[33]["Eccentricity"] = 7.040000e-004 +almanac[33]["Time_of_Applicability"] = 0.000000e+000 +almanac[33]["Orbital_Inclination"] = 1.122886e+000 +almanac[33]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[33]["SQRT_A"] = 5.050600e+003 +almanac[33]["Right_Ascen_at_Week"] = 5.960713e+000 +almanac[33]["Argument_of_Perigee"] = 2.740933e+000 +almanac[33]["Mean_Anom"] = -2.523604e+000 +almanac[33]["week"] = 1390 +almanac[33]["Commit_date"] = "13.02.2003" +almanac[33]["Life_dates"] = {} + +almanac[34] = {} +almanac[34]["System"] = SAT_SYS_GLONASS +almanac[34]["Number"] = 6 +almanac[34]["Orbital"] = 1 +almanac[34]["GLONASS_Data"] = {} +almanac[34]["GLONASS_Data"]["NKU_Number"] = 701 +almanac[34]["GLONASS_Data"]["Cosmos_Number"] = 2404 +almanac[34]["Eccentricity"] = 4.766000e-003 +almanac[34]["Time_of_Applicability"] = 0.000000e+000 +almanac[34]["Orbital_Inclination"] = 1.128276e+000 +almanac[34]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[34]["SQRT_A"] = 5.050500e+003 +almanac[34]["Right_Ascen_at_Week"] = 5.997906e+000 +almanac[34]["Argument_of_Perigee"] = 1.802417e+000 +almanac[34]["Mean_Anom"] = -2.426512e+000 +almanac[34]["week"] = 1390 +almanac[34]["Commit_date"] = "08.12.2004" +almanac[34]["Life_dates"] = {} + +almanac[35] = {} +almanac[35]["System"] = SAT_SYS_GLONASS +almanac[35]["Number"] = 7 +almanac[35]["Orbital"] = 1 +almanac[35]["GLONASS_Data"] = {} +almanac[35]["GLONASS_Data"]["NKU_Number"] = 712 +almanac[35]["GLONASS_Data"]["Cosmos_Number"] = 2413 +almanac[35]["Eccentricity"] = 7.570000e-004 +almanac[35]["Time_of_Applicability"] = 0.000000e+000 +almanac[35]["Orbital_Inclination"] = 1.126344e+000 +almanac[35]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[35]["SQRT_A"] = 5.050500e+003 +almanac[35]["Right_Ascen_at_Week"] = 5.979388e+000 +almanac[35]["Argument_of_Perigee"] = 2.566068e+000 +almanac[35]["Mean_Anom"] = -3.921228e+000 +almanac[35]["week"] = 1390 +almanac[35]["Commit_date"] = "07.10.2005" +almanac[35]["Life_dates"] = {} + +almanac[36] = {} +almanac[36]["System"] = SAT_SYS_GLONASS +almanac[36]["GLONASS_Data"] = {} +almanac[36]["Number"] = 8 +almanac[36]["Orbital"] = 1 +almanac[36]["GLONASS_Data"] = {} +almanac[36]["GLONASS_Data"]["NKU_Number"] = 797 +almanac[36]["GLONASS_Data"]["Cosmos_Number"] = 2412 +almanac[36]["Eccentricity"] = 4.060000e-004 +almanac[36]["Time_of_Applicability"] = 0.000000e+000 +almanac[36]["Orbital_Inclination"] = 1.126564e+000 +almanac[36]["Rate_of_Right_Ascen"] = -6.785834e-009 +almanac[36]["SQRT_A"] = 5.050600e+003 +almanac[36]["Right_Ascen_at_Week"] = 5.980069e+000 +almanac[36]["Argument_of_Perigee"] = 2.673633e+000 +almanac[36]["Mean_Anom"] = -4.812026e+000 +almanac[36]["week"] = 1390 +almanac[36]["Commit_date"] = "06.02.2005" +almanac[36]["Life_dates"] = {} + +--3 , 17-24 +almanac[37] = {} +almanac[37]["System"] = SAT_SYS_GLONASS +almanac[37]["Number"] = 17 +almanac[37]["Orbital"] = 3 +almanac[37]["GLONASS_Data"] = {} +almanac[37]["GLONASS_Data"]["NKU_Number"] = 787 +almanac[37]["GLONASS_Data"]["Cosmos_Number"] = 2375 +almanac[37]["Eccentricity"] = 5.670000e-004 +almanac[37]["Time_of_Applicability"] = 0.000000e+000 +almanac[37]["Orbital_Inclination"] = 1.126524e+000 +almanac[37]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[37]["SQRT_A"] = 5.050500e+003 +almanac[37]["Right_Ascen_at_Week"] = 3.895554e+000 +almanac[37]["Argument_of_Perigee"] = 6.085085e-001 +almanac[37]["Mean_Anom"] = -2.977407e+000 +almanac[37]["week"] = 1390 +almanac[37]["Commit_date"] = "04.11.2000" +almanac[37]["Life_dates"] = {} + + +almanac[38] = {} +almanac[38]["System"] = SAT_SYS_GLONASS +almanac[38]["Number"] = 18 +almanac[38]["Orbital"] = 3 +almanac[38]["GLONASS_Data"] = {} +almanac[38]["GLONASS_Data"]["NKU_Number"] = 783 +almanac[38]["GLONASS_Data"]["Cosmos_Number"] = 2374 +almanac[38]["Eccentricity"] = 4.520000e-003 +almanac[38]["Time_of_Applicability"] = 0.000000e+000 +almanac[38]["Orbital_Inclination"] = 1.126239e+000 +almanac[38]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[38]["SQRT_A"] = 5.050600e+003 +almanac[38]["Right_Ascen_at_Week"] = 3.894071e+000 +almanac[38]["Argument_of_Perigee"] = -2.509589e+000 +almanac[38]["Mean_Anom"] = -1.020057e+000 +almanac[38]["week"] = 1390 +almanac[38]["Commit_date"] = "05.01.2001" +almanac[38]["Life_dates"] = {} + +almanac[39] = {} +almanac[39]["System"] = SAT_SYS_GLONASS +almanac[39]["Number"] = 19 +almanac[39]["Orbital"] = 3 +almanac[39]["GLONASS_Data"] = {} +almanac[39]["GLONASS_Data"]["NKU_Number"] = 798 +almanac[39]["GLONASS_Data"]["Cosmos_Number"] = 2417 +almanac[39]["Eccentricity"] = 2.023000e-003 +almanac[39]["Time_of_Applicability"] = 0.000000e+000 +almanac[39]["Orbital_Inclination"] = 1.132205e+000 +almanac[39]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[39]["SQRT_A"] = 5.050500e+003 +almanac[39]["Right_Ascen_at_Week"] = 3.884018e+000 +almanac[39]["Argument_of_Perigee"] = 2.718313e+000 +almanac[39]["Mean_Anom"] = -3.933620e-001 +almanac[39]["week"] = 1390 +almanac[39]["Commit_date"] = "22.01.2006" +almanac[39]["Life_dates"] = {} + +almanac[40] = {} +almanac[40]["System"] = SAT_SYS_GLONASS +almanac[40]["Number"] = 20 +almanac[40]["Orbital"] = 3 +almanac[40]["GLONASS_Data"] = {} +almanac[40]["GLONASS_Data"]["NKU_Number"] = 793 +almanac[40]["GLONASS_Data"]["Cosmos_Number"] = 2396 +almanac[40]["Eccentricity"] = 1.822000e-003 +almanac[40]["Time_of_Applicability"] = 0.000000e+000 +almanac[40]["Orbital_Inclination"] = 1.129789e+000 +almanac[40]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[40]["SQRT_A"] = 5.050500e+003 +almanac[40]["Right_Ascen_at_Week"] = 3.896863e+000 +almanac[40]["Argument_of_Perigee"] = 2.723776e+000 +almanac[40]["Mean_Anom"] = -1.193647e+000 +almanac[40]["week"] = 1390 +almanac[40]["Commit_date"] = "31.01.2003" +almanac[40]["Life_dates"] = {} + +almanac[41] = {} +almanac[41]["System"] = SAT_SYS_GLONASS +almanac[41]["Number"] = 21 +almanac[41]["Orbital"] = 3 +almanac[41]["GLONASS_Data"] = {} +almanac[41]["GLONASS_Data"]["NKU_Number"] = 792 +almanac[41]["GLONASS_Data"]["Cosmos_Number"] = 2395 +almanac[41]["Eccentricity"] = 5.290000e-004 +almanac[41]["Time_of_Applicability"] = 0.000000e+000 +almanac[41]["Orbital_Inclination"] = 1.129957e+000 +almanac[41]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[41]["SQRT_A"] = 5.050500e+003 +almanac[41]["Right_Ascen_at_Week"] = 3.897806e+000 +almanac[41]["Argument_of_Perigee"] = -9.519367e-001 +almanac[41]["Mean_Anom"] = -4.578920e+000 +almanac[41]["week"] = 1390 +almanac[41]["Commit_date"] = "31.01.2003" +almanac[41]["Life_dates"] = {} + +almanac[42] = {} +almanac[42]["System"] = SAT_SYS_GLONASS +almanac[42]["Number"] = 22 +almanac[42]["Orbital"] = 3 +almanac[42]["GLONASS_Data"] = {} +almanac[42]["GLONASS_Data"]["NKU_Number"] = 791 +almanac[42]["GLONASS_Data"]["Cosmos_Number"] = 2394 +almanac[42]["Eccentricity"] = 9.200000e-005 +almanac[42]["Time_of_Applicability"] = 0.000000e+000 +almanac[42]["Orbital_Inclination"] = 1.129742e+000 +almanac[42]["Rate_of_Right_Ascen"] = -6.740456e-009 +almanac[42]["SQRT_A"] = 5.050500e+003 +almanac[42]["Right_Ascen_at_Week"] = 3.897404e+000 +almanac[42]["Argument_of_Perigee"] = 2.518211e+000 +almanac[42]["Mean_Anom"] = -2.530167e+000 +almanac[42]["week"] = 1390 +almanac[42]["Commit_date"] = "21.01.2003" +almanac[42]["Life_dates"] = {} + +almanac[43] = {} +almanac[43]["System"] = SAT_SYS_GLONASS +almanac[43]["Number"] = 23 +almanac[43]["Orbital"] = 3 +almanac[43]["GLONASS_Data"] = {} +almanac[43]["GLONASS_Data"]["NKU_Number"] = 714 +almanac[43]["GLONASS_Data"]["Cosmos_Number"] = 2419 +almanac[43]["Eccentricity"] = 8.730000e-004 +almanac[43]["Time_of_Applicability"] = 0.000000e+000 +almanac[43]["Orbital_Inclination"] = 1.132105e+000 +almanac[43]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[43]["SQRT_A"] = 5.050500e+003 +almanac[43]["Right_Ascen_at_Week"] = 3.883808e+000 +almanac[43]["Argument_of_Perigee"] = -3.039139e-001 +almanac[43]["Mean_Anom"] = -5.228304e-001 +almanac[43]["week"] = 1390 +almanac[43]["Commit_date"] = "31.08.2006" +almanac[43]["Life_dates"] = {} + +almanac[44] = {} +almanac[44]["System"] = SAT_SYS_GLONASS +almanac[44]["Number"] = 24 +almanac[44]["Orbital"] = 3 +almanac[44]["GLONASS_Data"] = {} +almanac[44]["GLONASS_Data"]["NKU_Number"] = 713 +almanac[44]["GLONASS_Data"]["Cosmos_Number"] = 2418 +almanac[44]["Eccentricity"] = 2.044000e-003 +almanac[44]["Time_of_Applicability"] = 0.000000e+000 +almanac[44]["Orbital_Inclination"] = 1.132430e+000 +almanac[44]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[44]["SQRT_A"] = 5.050500e+003 +almanac[44]["Right_Ascen_at_Week"] = 3.883983e+000 +almanac[44]["Argument_of_Perigee"] = -3.722784e-001 +almanac[44]["Mean_Anom"] = -1.240457e+000 +almanac[44]["week"] = 1390 +almanac[44]["Commit_date"] = "31.08.2006" +almanac[44]["Life_dates"] = {} + +--2 , 9-16 +almanac[45] = {} +almanac[45]["System"] = SAT_SYS_GLONASS +almanac[45]["Number"] = 9 +almanac[45]["Orbital"] = 2 +almanac[45]["GLONASS_Data"] = {} +almanac[45]["GLONASS_Data"]["NKU_Number"] = "N/A" +almanac[45]["GLONASS_Data"]["Cosmos_Number"] = "N/A" +almanac[45]["Eccentricity"] = 1.184000e-003 +almanac[45]["Time_of_Applicability"] = 0.000000e+000 +almanac[45]["Orbital_Inclination"] = 1.126443e+000 +almanac[45]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[45]["SQRT_A"] = 5.050500e+003 +almanac[45]["Right_Ascen_at_Week"] = 1.79067e+000 +almanac[45]["Argument_of_Perigee"] = 2.88430067 +almanac[45]["Mean_Anom"] = -5.519651e+000 +almanac[45]["week"] = 1390 +almanac[45]["Commit_date"] = "N/A" +almanac[45]["Life_dates"] = {} + +almanac[46] = {} +almanac[46]["System"] = SAT_SYS_GLONASS +almanac[46]["Number"] = 10 +almanac[46]["Orbital"] = 2 +almanac[46]["GLONASS_Data"] = {} +almanac[46]["GLONASS_Data"]["NKU_Number"] = "N/A" +almanac[46]["GLONASS_Data"]["Cosmos_Number"] = "N/A" +almanac[46]["Eccentricity"] = 1.184000e-003 +almanac[46]["Time_of_Applicability"] = 0.000000e+000 +almanac[46]["Orbital_Inclination"] = 1.126443e+000 +almanac[46]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[46]["SQRT_A"] = 5.050500e+003 +almanac[46]["Right_Ascen_at_Week"] = 1.79067e+000 +almanac[46]["Argument_of_Perigee"] = 3.66930067 +almanac[46]["Mean_Anom"] = -5.519651e+000 +almanac[46]["week"] = 1390 +almanac[46]["Commit_date"] = "N/A" +almanac[46]["Life_dates"] = {} + +almanac[47] = {} +almanac[47]["System"] = SAT_SYS_GLONASS +almanac[47]["Number"] = 11 +almanac[47]["Orbital"] = 2 +almanac[47]["GLONASS_Data"] = {} +almanac[47]["GLONASS_Data"]["NKU_Number"] = "N/A" +almanac[47]["GLONASS_Data"]["Cosmos_Number"] = "N/A" +almanac[47]["Eccentricity"] = 1.184000e-003 +almanac[47]["Time_of_Applicability"] = 0.000000e+000 +almanac[47]["Orbital_Inclination"] = 1.126443e+000 +almanac[47]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[47]["SQRT_A"] = 5.050500e+003 +almanac[47]["Right_Ascen_at_Week"] = 1.79067e+000 +almanac[47]["Argument_of_Perigee"] = 4.45430067 +almanac[47]["Mean_Anom"] = -5.519651e+000 +almanac[47]["week"] = 1390 +almanac[47]["Commit_date"] = "N/A" +almanac[47]["Life_dates"] = {} + +almanac[48] = {} +almanac[48]["System"] = SAT_SYS_GLONASS +almanac[48]["Number"] = 12 +almanac[48]["Orbital"] = 2 +almanac[48]["GLONASS_Data"] = {} +almanac[48]["GLONASS_Data"]["NKU_Number"] = "N/A" +almanac[48]["GLONASS_Data"]["Cosmos_Number"] = "N/A" +almanac[48]["Eccentricity"] = 1.184000e-003 +almanac[48]["Time_of_Applicability"] = 0.000000e+000 +almanac[48]["Orbital_Inclination"] = 1.126443e+000 +almanac[48]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[48]["SQRT_A"] = 5.050500e+003 +almanac[48]["Right_Ascen_at_Week"] = 1.79067e+000 +almanac[48]["Argument_of_Perigee"] = 5.23930067 +almanac[48]["Mean_Anom"] = -5.519651e+000 +almanac[48]["week"] = 1390 +almanac[48]["Commit_date"] = "N/A" +almanac[48]["Life_dates"] = {} + +almanac[49] = {} +almanac[49]["System"] = SAT_SYS_GLONASS +almanac[49]["Number"] = 13 +almanac[49]["Orbital"] = 2 +almanac[49]["GLONASS_Data"] = {} +almanac[49]["GLONASS_Data"]["NKU_Number"] = "N/A" +almanac[49]["GLONASS_Data"]["Cosmos_Number"] = "N/A" +almanac[49]["Eccentricity"] = 1.184000e-003 +almanac[49]["Time_of_Applicability"] = 0.000000e+000 +almanac[49]["Orbital_Inclination"] = 1.126443e+000 +almanac[49]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[49]["SQRT_A"] = 5.050500e+003 +almanac[49]["Right_Ascen_at_Week"] = 1.79067e+000 +almanac[49]["Argument_of_Perigee"] = 6.02430067 +almanac[49]["Mean_Anom"] = -5.519651e+000 +almanac[49]["week"] = 1390 +almanac[49]["Commit_date"] = "N/A" +almanac[49]["Life_dates"] = {} + +almanac[50] = {} +almanac[50]["System"] = SAT_SYS_GLONASS +almanac[50]["Number"] = 14 +almanac[50]["Orbital"] = 2 +almanac[50]["GLONASS_Data"] = {} +almanac[50]["GLONASS_Data"]["NKU_Number"] = "N/A" +almanac[50]["GLONASS_Data"]["Cosmos_Number"] = "N/A" +almanac[50]["Eccentricity"] = 1.184000e-003 +almanac[50]["Time_of_Applicability"] = 0.000000e+000 +almanac[50]["Orbital_Inclination"] = 1.126443e+000 +almanac[50]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[50]["SQRT_A"] = 5.050500e+003 +almanac[50]["Right_Ascen_at_Week"] = 1.79067e+000 +almanac[50]["Argument_of_Perigee"] = 0.52930067 +almanac[50]["Mean_Anom"] = -5.519651e+000 +almanac[50]["week"] = 1390 +almanac[50]["Commit_date"] = "N/A" +almanac[50]["Life_dates"] = {} + +almanac[51] = {} +almanac[51]["System"] = SAT_SYS_GLONASS +almanac[51]["Number"] = 15 +almanac[51]["Orbital"] = 2 +almanac[51]["GLONASS_Data"] = {} +almanac[51]["GLONASS_Data"]["NKU_Number"] = "N/A" +almanac[51]["GLONASS_Data"]["Cosmos_Number"] = "N/A" +almanac[51]["Eccentricity"] = 1.184000e-003 +almanac[51]["Time_of_Applicability"] = 0.000000e+000 +almanac[51]["Orbital_Inclination"] = 1.126443e+000 +almanac[51]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[51]["SQRT_A"] = 5.050500e+003 +almanac[51]["Right_Ascen_at_Week"] = 1.79067e+000 +almanac[51]["Argument_of_Perigee"] = 1.31430067 +almanac[51]["Mean_Anom"] = -5.519651e+000 +almanac[51]["week"] = 1390 +almanac[51]["Commit_date"] = "N/A" +almanac[51]["Life_dates"] = {} + +almanac[52] = {} +almanac[52]["System"] = SAT_SYS_GLONASS +almanac[52]["Number"] = 16 +almanac[52]["Orbital"] = 2 +almanac[52]["GLONASS_Data"] = {} +almanac[52]["GLONASS_Data"]["NKU_Number"] = "N/A" +almanac[52]["GLONASS_Data"]["Cosmos_Number"] = "N/A" +almanac[52]["Eccentricity"] = 1.184000e-003 +almanac[52]["Time_of_Applicability"] = 0.000000e+000 +almanac[52]["Orbital_Inclination"] = 1.126443e+000 +almanac[52]["Rate_of_Right_Ascen"] = 0.000000e+000 +almanac[52]["SQRT_A"] = 5.050500e+003 +almanac[52]["Right_Ascen_at_Week"] = 1.79067e+000 +almanac[52]["Argument_of_Perigee"] = 2.09930067 +almanac[52]["Mean_Anom"] = -5.519651e+000 +almanac[52]["week"] = 1390 +almanac[52]["Commit_date"] = "N/A" +almanac[52]["Life_dates"] = {} + +SA_mode = false +AS_mode = false diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Scripts/World/birds.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Scripts/World/birds.lua new file mode 100644 index 000000000..8aee1f700 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/Scripts/World/birds.lua @@ -0,0 +1,27 @@ +birds_avail = true --Birds availability. false - there is no birds +birds_maximum_hrad = 200 --Maximum altitude above ground al sea level bird could be met +birds_maximum_absolute_height = 8000 --Maximum absolute altitude bird could be met +birds_minimum_velocity = 40 --Minimum velocity bird could be met +birds_delta_time = 3.55 +birds_probability = {0.006333333*150, + 0.004166667*150, + 0.001966667*150, + 0.001090909*150, + 0.000741818*150, + 0.0006*150, + 0.000510545*150, + 0.000447273*150, + 0.000389455*150, + 0.000349091*150, + 0.000310909*150, + 0.000282545*150, + 0.000250909*150, + 0.000220364*150, + 0.000196364*150, + 0.000174545*150, + 0.000152727*150, + 0.000128727*150, + 0.000103636*150, + 7.63636E-05*150, + 0*150 +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/TAD/settings.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/TAD/settings.lua new file mode 100644 index 000000000..832e4911a --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/TAD/settings.lua @@ -0,0 +1,104 @@ +settings= +{ + ["tad_profiles"]= + { + [1]= + { + ["range_rings"]=true, + ["spi_display"]=1, + ["tag_info"]=1, + ["frequency_mapping"]=8, + ["bullseye"]=true, + ["ownship_waypoints"]=true, + ["LCN2"]="00", + ["guardChannel1"]=3, + ["LCN1"]="00", + ["ground_key"]="A", + ["name"]="ALL", + ["guardChannel2"]=7, + ["air_key"]="1", + ["flight_plan_lines"]=true, + ["waypoint_labels"]=true, + ["gateway_key"]="1", + }, + [2]= + { + ["range_rings"]=true, + ["spi_display"]=1, + ["tag_info"]=1, + ["frequency_mapping"]=8, + ["bullseye"]=true, + ["ownship_waypoints"]=true, + ["LCN2"]="00", + ["guardChannel1"]=3, + ["LCN1"]="00", + ["ground_key"]="A", + ["name"]="LOFF", + ["guardChannel2"]=7, + ["air_key"]="1", + ["flight_plan_lines"]=false, + ["waypoint_labels"]=true, + ["gateway_key"]="1", + }, + [3]= + { + ["range_rings"]=true, + ["spi_display"]=1, + ["tag_info"]=2, + ["frequency_mapping"]=8, + ["bullseye"]=true, + ["ownship_waypoints"]=true, + ["LCN2"]="00", + ["guardChannel1"]=3, + ["LCN1"]="00", + ["ground_key"]="A", + ["name"]="ACT", + ["guardChannel2"]=7, + ["air_key"]="1", + ["flight_plan_lines"]=true, + ["waypoint_labels"]=true, + ["gateway_key"]="1", + }, + [4]= + { + ["range_rings"]=false, + ["spi_display"]=0, + ["tag_info"]=0, + ["frequency_mapping"]=8, + ["bullseye"]=false, + ["ownship_waypoints"]=false, + ["LCN2"]="00", + ["guardChannel1"]=3, + ["LCN1"]="00", + ["ground_key"]="A", + ["name"]="NONE", + ["guardChannel2"]=7, + ["air_key"]="1", + ["flight_plan_lines"]=false, + ["waypoint_labels"]=false, + ["gateway_key"]="1", + }, + }, + ["default_profile"]= + { + [0]= + { + ["range_rings"]=true, + ["spi_display"]=1, + ["tag_info"]=1, + ["frequency_mapping"]=8, + ["bullseye"]=true, + ["ownship_waypoints"]=true, + ["LCN2"]="00", + ["guardChannel1"]=3, + ["LCN1"]="00", + ["ground_key"]="A", + ["name"]="DFLT", + ["guardChannel2"]=7, + ["air_key"]="1", + ["flight_plan_lines"]=true, + ["waypoint_labels"]=true, + ["gateway_key"]="1", + }, + }, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/TGP/settings.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/TGP/settings.lua new file mode 100644 index 000000000..de46a7083 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/TGP/settings.lua @@ -0,0 +1,9 @@ +settings= +{ + ["TAAFAltitude"]=0, + ["FLIRIntegration"]=1, + ["CalibrationMethod"]=1, + ["GainControl"]=1, + ["LSSCode"]=1688, + ["LCode"]=1688, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/UHF_RADIO/SETTINGS.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/UHF_RADIO/SETTINGS.lua new file mode 100644 index 000000000..aef4bbf2b --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/UHF_RADIO/SETTINGS.lua @@ -0,0 +1,33 @@ +settings= +{ + ["dials"]= + { + ["mode_dial"]=1, + ["manual_frequency"]=251000000, + ["selection_dial"]=0, + ["channel_dial"]=0, + }, + ["presets"]= + { + [1]=251000000, + [2]=235000000, + [3]=245000000, + [4]=255000000, + [5]=265000000, + [6]=275000000, + [7]=285000000, + [8]=295000000, + [9]=305000000, + [10]=315000000, + [11]=325000000, + [12]=335000000, + [13]=345000000, + [14]=355000000, + [15]=365000000, + [16]=375000000, + [17]=385000000, + [18]=395000000, + [19]=396000000, + [20]=397000000, + }, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/VHF_AM_RADIO/SETTINGS.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/VHF_AM_RADIO/SETTINGS.lua new file mode 100644 index 000000000..20f6103bf --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/VHF_AM_RADIO/SETTINGS.lua @@ -0,0 +1,33 @@ +settings= +{ + ["dials"]= + { + ["mode_dial"]=1, + ["manual_frequency"]=124000000, + ["selection_dial"]=2, + ["channel_dial"]=0, + }, + ["presets"]= + { + [1]=121500000, + [2]=121500000, + [3]=121500000, + [4]=121500000, + [5]=121500000, + [6]=121500000, + [7]=121500000, + [8]=121500000, + [9]=121500000, + [10]=121500000, + [11]=121500000, + [12]=121500000, + [13]=121500000, + [14]=121500000, + [15]=121500000, + [16]=121500000, + [17]=121500000, + [18]=121500000, + [19]=121500000, + [20]=121500000, + }, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/VHF_FM_RADIO/SETTINGS.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/VHF_FM_RADIO/SETTINGS.lua new file mode 100644 index 000000000..0eaafdf86 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/VHF_FM_RADIO/SETTINGS.lua @@ -0,0 +1,33 @@ +settings= +{ + ["dials"]= + { + ["mode_dial"]=1, + ["manual_frequency"]=30000000, + ["selection_dial"]=2, + ["channel_dial"]=0, + }, + ["presets"]= + { + [1]=40500000, + [2]=40500000, + [3]=40500000, + [4]=40500000, + [5]=40500000, + [6]=40500000, + [7]=40500000, + [8]=40500000, + [9]=40500000, + [10]=40500000, + [11]=40500000, + [12]=40500000, + [13]=40500000, + [14]=40500000, + [15]=40500000, + [16]=40500000, + [17]=40500000, + [18]=40500000, + [19]=40500000, + [20]=40500000, + }, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/VHF_RADIO/SETTINGS.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/VHF_RADIO/SETTINGS.lua new file mode 100644 index 000000000..df62cf997 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/VHF_RADIO/SETTINGS.lua @@ -0,0 +1,14 @@ +settings= +{ + ["dials"]= + { + ["channel"]=0, + }, + ["presets"]= + { + [1]=124000000, + [2]=124000000, + [3]=131000000, + [4]=139000000, + }, +} diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/l10n/DEFAULT/ESC-001 - Escorting Helicopters.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/l10n/DEFAULT/ESC-001 - Escorting Helicopters.lua new file mode 100644 index 000000000..021126136 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/l10n/DEFAULT/ESC-001 - Escorting Helicopters.lua @@ -0,0 +1,74 @@ + + + + + + + +do + local function EventAliveHelicopter( Client ) + local EscortGroupHeli1 = SpawnEscortHeli:ReSpawn(1) + local EscortHeli1 = ESCORT + :New( Client, EscortGroupHeli1, "Escort Helicopter" ) + :MenuFollowAt( 100 ) + :MenuFollowAt( 200 ) + :MenuHoldAtEscortPosition( 20, 10, "Hold at %d meters for %d seconds" ) + :MenuHoldAtLeaderPosition( 120 ) + :MenuFlare( "Disperse Flares" ) + :MenuSmoke() + :MenuReportTargets( 60, 20 ) + :MenuResumeMission() + :MenuROE() + :MenuAssistedAttack() + + EscortHeli1:SetDetection( EscortHeliDetection ) + + local EscortGroupArtillery = SpawnEscortArtillery:ReSpawn(1) + local EscortArtillery = ESCORT + :New( Client, EscortGroupArtillery, "Escort Artillery" ) + :Menus() + end + + local function EventAlivePlane( Client ) + local EscortGroupPlane2 = SpawnEscortPlane:ReSpawn(1) + local EscortPlane2 = ESCORT + :New( Client, EscortGroupPlane2, "Escort Test Plane" ) + :MenuFollowAt( 100 ) + :MenuFollowAt( 200 ) + :MenuHoldAtEscortPosition( 20, 10, "Hold at %d meters for %d seconds" ) + :MenuHoldAtLeaderPosition( 120 ) + :MenuFlare( "Disperse Flares" ) + :MenuSmoke() + :MenuReportTargets( 60, 20 ) + :MenuResumeMission() + :MenuAssistedAttack() + :MenuROE() + :MenuEvasion() + + local EscortGroupGround2 = SpawnEscortGround:ReSpawn(1) + local EscortGround2 = ESCORT + :New( Client, EscortGroupGround2, "Test Ground" ) + :Menus() + + local EscortGroupShip2 = SpawnEscortShip:ReSpawn(1) + local EscortShip2 = ESCORT + :New( Client, EscortGroupShip2, "Test Ship" ) + :Menus() + end + + SpawnEscortHeli = SPAWN:New( "Escort Helicopter" ) + SpawnEscortPlane = SPAWN:New( "Escort Plane" ) + SpawnEscortGround = SPAWN:New( "Escort Ground" ) + SpawnEscortShip = SPAWN:New( "Escort Ship" ) + SpawnEscortArtillery = SPAWN:New( "Ground Attack Assistance" ) + + EscortHeliSetGroup = SET_GROUP:New():FilterPrefixes("Escort Helicopter"):FilterStart() + EscortHeliDetection = DETECTION_AREAS:New( EscortHeliSetGroup, 20000, 1500 ) + + EscortClientHeli = CLIENT:FindByName( "Lead Helicopter", "Fly around and observe the behaviour of the escort helicopter" ):Alive( EventAliveHelicopter ) + EscortClientPlane = CLIENT:FindByName( "Lead Plane", "Fly around and observe the behaviour of the escort airplane. Select Navigate->Joun-Up and airplane should follow you. Change speed and directions." ) + :Alive( EventAlivePlane ) + +end + +env.info( "Test Mission loaded" ) diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/l10n/DEFAULT/Moose.lua b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/l10n/DEFAULT/Moose.lua new file mode 100644 index 000000000..2d3723848 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/l10n/DEFAULT/Moose.lua @@ -0,0 +1,31 @@ +env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) +env.info( 'Moose Generation Timestamp: 20170208_2216' ) + +local base = _G + +Include = {} + +Include.File = function( IncludeFile ) + if not Include.Files[ IncludeFile ] then + Include.Files[IncludeFile] = IncludeFile + env.info( "Include:" .. IncludeFile .. " from " .. Include.ProgramPath ) + local f = assert( base.loadfile( Include.ProgramPath .. IncludeFile .. ".lua" ) ) + if f == nil then + error ("Could not load MOOSE file " .. IncludeFile .. ".lua" ) + else + env.info( "Include:" .. IncludeFile .. " loaded from " .. Include.ProgramPath ) + return f() + end + end +end + +Include.ProgramPath = "Scripts/Moose/" + +env.info( "Include.ProgramPath = " .. Include.ProgramPath) + +Include.Files = {} + +Include.File( "Moose" ) + +BASE:TraceOnOff( true ) +env.info( '*** MOOSE INCLUDE END *** ' ) diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/l10n/DEFAULT/dictionary b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/l10n/DEFAULT/dictionary new file mode 100644 index 000000000..3a1c3c19a --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/l10n/DEFAULT/dictionary @@ -0,0 +1,168 @@ +dictionary = +{ + ["DictKey_WptName_159"] = "", + ["DictKey_WptName_11"] = "", + ["DictKey_UnitName_85"] = "Unit #003", + ["DictKey_GroupName_15"] = "Lead Plane", + ["DictKey_WptName_138"] = "", + ["DictKey_GroupName_150"] = "Ground Attack Assistance", + ["DictKey_UnitName_73"] = "Ground Attack Test #010", + ["DictKey_WptName_21"] = "", + ["DictKey_WptName_22"] = "", + ["DictKey_UnitName_39"] = "Unit #001", + ["DictKey_WptName_126"] = "", + ["DictKey_WptName_112"] = "", + ["DictKey_WptName_83"] = "", + ["DictKey_WptName_27"] = "", + ["DictKey_WptName_123"] = "", + ["DictKey_GroupName_51"] = "Ground Attack Test #003", + ["DictKey_UnitName_20"] = "Escort Plane", + ["DictKey_WptName_43"] = "", + ["DictKey_WptName_30"] = "", + ["DictKey_WptName_124"] = "", + ["DictKey_UnitName_76"] = "Ground Attack Test #011", + ["DictKey_WptName_137"] = "", + ["DictKey_WptName_134"] = "", + ["DictKey_UnitName_36"] = "Escort Ship", + ["DictKey_WptName_109"] = "", + ["DictKey_GroupName_45"] = "Ground Attack Test #001", + ["DictKey_UnitName_157"] = "Unit #011", + ["DictKey_WptName_25"] = "", + ["DictKey_GroupName_100"] = "Escort Ship #001", + ["DictKey_WptName_105"] = "", + ["DictKey_UnitName_61"] = "Ground Attack Test #006", + ["DictKey_WptName_40"] = "", + ["DictKey_WptName_153"] = "", + ["DictKey_UnitName_49"] = "Ground Attack Test #002", + ["DictKey_WptName_28"] = "", + ["DictKey_WptName_125"] = "", + ["DictKey_UnitName_79"] = "Ground Attack Test #012", + ["DictKey_WptName_142"] = "", + ["DictKey_WptName_71"] = "", + ["DictKey_WptName_17"] = "", + ["DictKey_WptName_104"] = "", + ["DictKey_WptName_158"] = "", + ["DictKey_WptName_14"] = "", + ["DictKey_GroupName_12"] = "Escort Helicopter", + ["DictKey_GroupName_19"] = "Escort Plane", + ["DictKey_GroupName_38"] = "Escort Ground", + ["DictKey_UnitName_149"] = "Pilot #003", + ["DictKey_WptName_47"] = "", + ["DictKey_GroupName_81"] = "WayPoint Test", + ["DictKey_WptName_130"] = "", + ["DictKey_UnitName_46"] = "Ground Attack Test #001", + ["DictKey_WptName_92"] = "", + ["DictKey_WptName_140"] = "", + ["DictKey_GroupName_31"] = "Test Attack", + ["DictKey_WptName_37"] = "", + ["DictKey_GroupName_72"] = "Ground Attack Test #010", + ["DictKey_GroupName_75"] = "Ground Attack Test #011", + ["DictKey_GroupName_41"] = "Ground Attack Test", + ["DictKey_WptName_116"] = "", + ["DictKey_GroupName_93"] = "Test Attack #005", + ["DictKey_WptName_132"] = "", + ["DictKey_WptName_154"] = "", + ["DictKey_WptName_152"] = "", + ["DictKey_WptName_95"] = "", + ["DictKey_WptName_62"] = "", + ["DictKey_WptName_122"] = "", + ["DictKey_sortie_4"] = "", + ["DictKey_WptName_65"] = "", + ["DictKey_GroupName_57"] = "Ground Attack Test #005", + ["DictKey_UnitName_94"] = "Unit #006", + ["DictKey_WptName_18"] = "", + ["DictKey_WptName_110"] = "", + ["DictKey_GroupName_60"] = "Ground Attack Test #006", + ["DictKey_GroupName_48"] = "Ground Attack Test #002", + ["DictKey_GroupName_144"] = "Ground Attack Test #013", + ["DictKey_WptName_50"] = "", + ["DictKey_GroupName_54"] = "Ground Attack Test #004", + ["DictKey_WptName_89"] = "", + ["DictKey_UnitName_42"] = "Ground Attack Test", + ["DictKey_WptName_128"] = "", + ["DictKey_UnitName_97"] = "Pilot #001", + ["DictKey_WptName_106"] = "", + ["DictKey_descriptionText_1"] = "", + ["DictKey_UnitName_55"] = "Ground Attack Test #004", + ["DictKey_UnitName_64"] = "Ground Attack Test #007", + ["DictKey_WptName_103"] = "", + ["DictKey_UnitName_58"] = "Ground Attack Test #005", + ["DictKey_UnitName_67"] = "Ground Attack Test #008", + ["DictKey_ActionText_96"] = "BASE:TraceClass(\"ESCORT\")\ +BASE:TraceClass(\"DETECTION_AREAS\")", + ["DictKey_WptName_24"] = "", + ["DictKey_WptName_74"] = "", + ["DictKey_UnitName_101"] = "Unit #007", + ["DictKey_WptName_143"] = "", + ["DictKey_UnitName_99"] = "Pilot #003", + ["DictKey_GroupName_69"] = "Ground Attack Test #009", + ["DictKey_GroupName_78"] = "Ground Attack Test #012", + ["DictKey_WptName_23"] = "", + ["DictKey_UnitName_114"] = "Pilot #001", + ["DictKey_UnitName_148"] = "Pilot #002", + ["DictKey_UnitName_155"] = "Unit #009", + ["DictKey_descriptionBlueTask_3"] = "", + ["DictKey_UnitName_10"] = "Lead Helicopter", + ["DictKey_WptName_146"] = "", + ["DictKey_WptName_135"] = "", + ["DictKey_WptName_86"] = "", + ["DictKey_WptName_108"] = "", + ["DictKey_WptName_77"] = "", + ["DictKey_UnitName_147"] = "Pilot #001", + ["DictKey_WptName_68"] = "", + ["DictKey_GroupName_9"] = "Lead Helicopter", + ["DictKey_WptName_53"] = "", + ["DictKey_GroupName_66"] = "Ground Attack Test #008", + ["DictKey_UnitName_82"] = "Unit #002", + ["DictKey_WptName_115"] = "", + ["DictKey_ActionText_107"] = "local EscortGroup = GROUP:NewFromName( \"WayPoint Air Test\" )\ +\ +local TaskPoints = EscortGroup:GetTaskRoute()\ +\ +TaskPoints[2].task = EscortGroup:TaskRegisterWayPoint( 2 )\ +\ +TaskPoints[3].task = EscortGroup:TaskRegisterWayPoint( 3 )\ +\ +EscortGroup:SetTask( EscortGroup:TaskRoute( TaskPoints ) )\ +", + ["DictKey_GroupName_35"] = "Escort Ship", + ["DictKey_WptName_33"] = "", + ["DictKey_WptName_129"] = "", + ["DictKey_UnitName_88"] = "Unit #004", + ["DictKey_UnitName_16"] = "Lead Plane", + ["DictKey_UnitName_32"] = "Unit #1", + ["DictKey_WptName_131"] = "", + ["DictKey_WptName_127"] = "", + ["DictKey_UnitName_91"] = "Unit #005", + ["DictKey_WptName_133"] = "", + ["DictKey_UnitName_156"] = "Unit #010", + ["DictKey_WptName_121"] = "", + ["DictKey_UnitName_70"] = "Ground Attack Test #009", + ["DictKey_GroupName_63"] = "Ground Attack Test #007", + ["DictKey_UnitName_98"] = "Pilot #002", + ["DictKey_WptName_80"] = "", + ["DictKey_GroupName_87"] = "Test Attack #003", + ["DictKey_WptName_119"] = "", + ["DictKey_WptName_29"] = "", + ["DictKey_WptName_26"] = "", + ["DictKey_UnitName_145"] = "Unit #008", + ["DictKey_GroupName_113"] = "WayPoint Air Test", + ["DictKey_WptName_59"] = "", + ["DictKey_GroupName_90"] = "Test Attack #004", + ["DictKey_WptName_118"] = "", + ["DictKey_UnitName_13"] = "Escort Helicopter", + ["DictKey_WptName_120"] = "", + ["DictKey_UnitName_52"] = "Ground Attack Test #003", + ["DictKey_WptName_139"] = "", + ["DictKey_WptName_136"] = "", + ["DictKey_WptName_117"] = "", + ["DictKey_WptName_102"] = "", + ["DictKey_WptName_44"] = "", + ["DictKey_GroupName_84"] = "Test Attack #002", + ["DictKey_WptName_111"] = "", + ["DictKey_descriptionRedTask_2"] = "", + ["DictKey_WptName_56"] = "", + ["DictKey_WptName_141"] = "", + ["DictKey_WptName_34"] = "", + ["DictKey_UnitName_151"] = "Unit #007", +} -- end of dictionary diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/l10n/DEFAULT/mapResource b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/l10n/DEFAULT/mapResource new file mode 100644 index 000000000..7ea651014 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/l10n/DEFAULT/mapResource @@ -0,0 +1,5 @@ +mapResource = +{ + ["ResKey_Action_8"] = "ESC-001 - Escorting Helicopters.lua", + ["ResKey_Action_6"] = "Moose.lua", +} -- end of mapResource diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/mission b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/mission new file mode 100644 index 000000000..f833626c5 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/mission @@ -0,0 +1,6920 @@ +mission = +{ + ["trig"] = + { + ["actions"] = + { + [1] = "a_do_script_file(getValueResourceByKey(\"ResKey_Action_6\"));", + [2] = "a_do_script(getValueDictByKey(\"DictKey_ActionText_96\"));", + [3] = "a_do_script_file(getValueResourceByKey(\"ResKey_Action_8\"));", + }, -- end of ["actions"] + ["events"] = + { + }, -- end of ["events"] + ["custom"] = + { + }, -- end of ["custom"] + ["func"] = + { + }, -- end of ["func"] + ["flag"] = + { + [1] = true, + [2] = true, + [3] = true, + }, -- end of ["flag"] + ["conditions"] = + { + [1] = "return(true)", + [2] = "return(true)", + [3] = "return(true)", + }, -- end of ["conditions"] + ["customStartup"] = + { + }, -- end of ["customStartup"] + ["funcStartup"] = + { + [1] = "if mission.trig.conditions[1]() then mission.trig.actions[1]() end", + [2] = "if mission.trig.conditions[2]() then mission.trig.actions[2]() end", + [3] = "if mission.trig.conditions[3]() then mission.trig.actions[3]() end", + }, -- end of ["funcStartup"] + }, -- end of ["trig"] + ["date"] = + { + ["Day"] = 1, + ["Year"] = 2011, + ["Month"] = 10, + }, -- end of ["date"] + ["maxDictId"] = 159, + ["result"] = + { + ["offline"] = + { + ["conditions"] = + { + }, -- end of ["conditions"] + ["actions"] = + { + }, -- end of ["actions"] + ["func"] = + { + }, -- end of ["func"] + }, -- end of ["offline"] + ["total"] = 0, + ["blue"] = + { + ["conditions"] = + { + }, -- end of ["conditions"] + ["actions"] = + { + }, -- end of ["actions"] + ["func"] = + { + }, -- end of ["func"] + }, -- end of ["blue"] + ["red"] = + { + ["conditions"] = + { + }, -- end of ["conditions"] + ["actions"] = + { + }, -- end of ["actions"] + ["func"] = + { + }, -- end of ["func"] + }, -- end of ["red"] + }, -- end of ["result"] + ["groundControl"] = + { + ["isPilotControlVehicles"] = true, + ["roles"] = + { + ["artillery_commander"] = + { + ["blue"] = 0, + ["red"] = 0, + }, -- end of ["artillery_commander"] + ["instructor"] = + { + ["blue"] = 1, + ["red"] = 1, + }, -- end of ["instructor"] + ["observer"] = + { + ["blue"] = 0, + ["red"] = 0, + }, -- end of ["observer"] + ["forward_observer"] = + { + ["blue"] = 0, + ["red"] = 0, + }, -- end of ["forward_observer"] + }, -- end of ["roles"] + }, -- end of ["groundControl"] + ["triggers"] = + { + ["zones"] = + { + }, -- end of ["zones"] + }, -- end of ["triggers"] + ["weather"] = + { + ["name_ru"] = "Осень. Ливень", + ["wind"] = + { + ["at8000"] = + { + ["speed"] = 0, + ["dir"] = 0, + }, -- end of ["at8000"] + ["atGround"] = + { + ["speed"] = 0, + ["dir"] = 0, + }, -- end of ["atGround"] + ["at2000"] = + { + ["speed"] = 0, + ["dir"] = 0, + }, -- end of ["at2000"] + }, -- end of ["wind"] + ["enable_fog"] = true, + ["atmosphere_type"] = 0, + ["visibility"] = + { + ["distance"] = 80000, + }, -- end of ["visibility"] + ["groundTurbulence"] = 0, + ["season"] = + { + ["temperature"] = 12, + }, -- end of ["season"] + ["type_weather"] = 1, + ["qnh"] = 760, + ["cyclones"] = + { + }, -- end of ["cyclones"] + ["name_de"] = "Herbst, Starker Regen", + ["fog"] = + { + ["thickness"] = 40, + ["visibility"] = 5470, + ["density"] = 7, + }, -- end of ["fog"] + ["name_fr"] = "Automne, pluie violente", + ["name"] = "Winter, clean sky", + ["name_es"] = "Otoño. Lluvia fuerte", + ["clouds"] = + { + ["thickness"] = 1730, + ["density"] = 10, + ["base"] = 4300, + ["iprecptns"] = 0, + }, -- end of ["clouds"] + }, -- end of ["weather"] + ["theatre"] = "Caucasus", + ["needModules"] = + { + }, -- end of ["needModules"] + ["map"] = + { + ["centerY"] = 637800.00000001, + ["zoom"] = 50000, + ["centerX"] = -282540, + }, -- end of ["map"] + ["coalitions"] = + { + ["blue"] = + { + [1] = 21, + [2] = 11, + [3] = 8, + [4] = 28, + [5] = 26, + [6] = 13, + [7] = 5, + [8] = 16, + [9] = 6, + [10] = 15, + [11] = 20, + [12] = 12, + [13] = 40, + [14] = 45, + [15] = 9, + [16] = 10, + [17] = 3, + [18] = 4, + [19] = 2, + }, -- end of ["blue"] + ["neutrals"] = + { + [1] = 23, + [2] = 25, + [3] = 29, + [4] = 30, + [5] = 31, + [6] = 32, + [7] = 33, + [8] = 17, + [9] = 35, + [10] = 36, + [11] = 39, + [12] = 41, + [13] = 42, + [14] = 44, + [15] = 46, + [16] = 22, + [17] = 7, + }, -- end of ["neutrals"] + ["red"] = + { + [1] = 18, + [2] = 24, + [3] = 27, + [4] = 34, + [5] = 37, + [6] = 38, + [7] = 0, + [8] = 43, + [9] = 19, + [10] = 47, + [11] = 1, + }, -- end of ["red"] + }, -- end of ["coalitions"] + ["descriptionText"] = "DictKey_descriptionText_1", + ["pictureFileNameR"] = + { + }, -- end of ["pictureFileNameR"] + ["descriptionBlueTask"] = "DictKey_descriptionBlueTask_3", + ["descriptionRedTask"] = "DictKey_descriptionRedTask_2", + ["pictureFileNameB"] = + { + }, -- end of ["pictureFileNameB"] + ["trigrules"] = + { + [1] = + { + ["rules"] = + { + }, -- end of ["rules"] + ["eventlist"] = "", + ["predicate"] = "triggerStart", + ["actions"] = + { + [1] = + { + ["file"] = "ResKey_Action_6", + ["predicate"] = "a_do_script_file", + ["ai_task"] = + { + [1] = "", + [2] = "", + }, -- end of ["ai_task"] + }, -- end of [1] + }, -- end of ["actions"] + ["comment"] = "Load Moose", + }, -- end of [1] + [2] = + { + ["rules"] = + { + }, -- end of ["rules"] + ["comment"] = "MOOSE Trace", + ["eventlist"] = "", + ["actions"] = + { + [1] = + { + ["predicate"] = "a_do_script", + ["text"] = "DictKey_ActionText_96", + ["KeyDict_text"] = "DictKey_ActionText_96", + ["ai_task"] = + { + [1] = "", + [2] = "", + }, -- end of ["ai_task"] + }, -- end of [1] + }, -- end of ["actions"] + ["predicate"] = "triggerStart", + }, -- end of [2] + [3] = + { + ["rules"] = + { + }, -- end of ["rules"] + ["eventlist"] = "", + ["predicate"] = "triggerStart", + ["actions"] = + { + [1] = + { + ["file"] = "ResKey_Action_8", + ["predicate"] = "a_do_script_file", + ["ai_task"] = + { + [1] = "", + [2] = "", + }, -- end of ["ai_task"] + }, -- end of [1] + }, -- end of ["actions"] + ["comment"] = "MOOSE Load Mission", + }, -- end of [3] + }, -- end of ["trigrules"] + ["coalition"] = + { + ["blue"] = + { + ["bullseye"] = + { + ["y"] = 617414, + ["x"] = -291014, + }, -- end of ["bullseye"] + ["nav_points"] = + { + }, -- end of ["nav_points"] + ["name"] = "blue", + ["country"] = + { + [1] = + { + ["id"] = 21, + ["name"] = "Australia", + }, -- end of [1] + [2] = + { + ["id"] = 11, + ["name"] = "Belgium", + }, -- end of [2] + [3] = + { + ["id"] = 8, + ["name"] = "Canada", + }, -- end of [3] + [4] = + { + ["id"] = 28, + ["name"] = "Croatia", + }, -- end of [4] + [5] = + { + ["id"] = 26, + ["name"] = "Czech Republic", + }, -- end of [5] + [6] = + { + ["id"] = 13, + ["name"] = "Denmark", + }, -- end of [6] + [7] = + { + ["id"] = 5, + ["name"] = "France", + }, -- end of [7] + [8] = + { + ["id"] = 16, + ["name"] = "Georgia", + ["plane"] = + { + ["group"] = + { + [1] = + { + ["modulation"] = 0, + ["tasks"] = + { + }, -- end of ["tasks"] + ["radioSet"] = true, + ["task"] = "Ground Attack", + ["uncontrolled"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["points"] = + { + [1] = + { + ["alt"] = 2000, + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 194.44444444444, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Turning Point", + ["ETA"] = 0, + ["ETA_locked"] = true, + ["y"] = 423654.28571429, + ["x"] = -131702.85714286, + ["name"] = "DictKey_WptName_17", + ["formation_template"] = "", + ["speed_locked"] = true, + }, -- end of [1] + [2] = + { + ["alt"] = 2000, + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 138.88888888889, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Turning Point", + ["ETA"] = 538.59809087661, + ["ETA_locked"] = false, + ["y"] = 345600, + ["x"] = -66514.285714286, + ["name"] = "DictKey_WptName_24", + ["formation_template"] = "", + ["speed_locked"] = true, + }, -- end of [2] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 3, + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["alt"] = 2000, + ["hardpoint_racks"] = true, + ["alt_type"] = "BARO", + ["livery_id"] = "af standard", + ["skill"] = "Client", + ["speed"] = 194.44444444444, + ["type"] = "Su-25T", + ["unitId"] = 3, + ["psi"] = 0.87497529383952, + ["y"] = 423654.28571429, + ["x"] = -131702.85714286, + ["name"] = "DictKey_UnitName_16", + ["payload"] = + { + ["pylons"] = + { + [1] = + { + ["CLSID"] = "{682A481F-0CB5-4693-A382-D00DD4A156D7}", + }, -- end of [1] + [2] = + { + ["CLSID"] = "{A0648264-4BC0-4EE8-A543-D119F6BA4257}", + }, -- end of [2] + [3] = + { + ["CLSID"] = "{3C612111-C7AD-476E-8A8E-2485812F4E5C}", + }, -- end of [3] + [4] = + { + ["CLSID"] = "{3C612111-C7AD-476E-8A8E-2485812F4E5C}", + }, -- end of [4] + [5] = + { + ["CLSID"] = "{E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF}", + }, -- end of [5] + [7] = + { + ["CLSID"] = "{E8D4652F-FD48-45B7-BA5B-2AE05BB5A9CF}", + }, -- end of [7] + [8] = + { + ["CLSID"] = "{3C612111-C7AD-476E-8A8E-2485812F4E5C}", + }, -- end of [8] + [9] = + { + ["CLSID"] = "{3C612111-C7AD-476E-8A8E-2485812F4E5C}", + }, -- end of [9] + [10] = + { + ["CLSID"] = "{A0648264-4BC0-4EE8-A543-D119F6BA4257}", + }, -- end of [10] + [11] = + { + ["CLSID"] = "{682A481F-0CB5-4693-A382-D00DD4A156D7}", + }, -- end of [11] + }, -- end of ["pylons"] + ["fuel"] = "3790", + ["flare"] = 128, + ["chaff"] = 128, + ["gun"] = 100, + }, -- end of ["payload"] + ["heading"] = -0.87497529383952, + ["callsign"] = + { + [1] = 2, + [2] = 1, + [3] = 1, + ["name"] = "Springfield11", + }, -- end of ["callsign"] + ["onboard_num"] = "010", + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 423654.28571429, + ["x"] = -131702.85714286, + ["name"] = "DictKey_GroupName_15", + ["communication"] = true, + ["start_time"] = 0, + ["frequency"] = 124, + }, -- end of [1] + }, -- end of ["group"] + }, -- end of ["plane"] + }, -- end of [8] + [9] = + { + ["id"] = 6, + ["name"] = "Germany", + }, -- end of [9] + [10] = + { + ["id"] = 15, + ["name"] = "Israel", + }, -- end of [10] + [11] = + { + ["id"] = 20, + ["name"] = "Italy", + }, -- end of [11] + [12] = + { + ["id"] = 12, + ["name"] = "Norway", + }, -- end of [12] + [13] = + { + ["id"] = 40, + ["name"] = "Poland", + }, -- end of [13] + [14] = + { + ["id"] = 45, + ["name"] = "South Korea", + }, -- end of [14] + [15] = + { + ["id"] = 9, + ["name"] = "Spain", + }, -- end of [15] + [16] = + { + ["id"] = 10, + ["name"] = "The Netherlands", + }, -- end of [16] + [17] = + { + ["id"] = 3, + ["name"] = "Turkey", + }, -- end of [17] + [18] = + { + ["id"] = 4, + ["name"] = "UK", + }, -- end of [18] + [19] = + { + ["name"] = "USA", + ["ship"] = + { + ["group"] = + { + [1] = + { + ["visible"] = false, + ["lateActivation"] = true, + ["groupId"] = 6, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "TICONDEROG", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 6, + ["skill"] = "Excellent", + ["y"] = 387142.85714286, + ["x"] = -137000, + ["name"] = "DictKey_UnitName_36", + ["heading"] = 0, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 387142.85714286, + ["x"] = -137000, + ["name"] = "DictKey_GroupName_35", + ["route"] = + { + ["routeRelativeTOT"] = true, + ["points"] = + { + [1] = + { + ["alt"] = 0, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 387142.85714286, + ["x"] = -137000, + ["name"] = "DictKey_WptName_37", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Turning Point", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["start_time"] = 0, + }, -- end of [1] + }, -- end of ["group"] + }, -- end of ["ship"] + ["id"] = 2, + ["vehicle"] = + { + ["group"] = + { + [1] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 12, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 637385.71428571, + ["x"] = -285056.57142856, + ["name"] = "DictKey_WptName_33", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 14, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 5, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "M1043 HMMWV Armament", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 5, + ["skill"] = "Average", + ["y"] = 637385.71428571, + ["x"] = -285056.57142856, + ["name"] = "DictKey_UnitName_32", + ["playerCanDrive"] = true, + ["heading"] = 0, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 637385.71428571, + ["x"] = -285056.57142856, + ["name"] = "DictKey_GroupName_31", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [1] + [2] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 12, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 637357.14285714, + ["x"] = -284799.42857142, + ["name"] = "DictKey_WptName_86", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 22, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "AAV7", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 22, + ["skill"] = "Average", + ["y"] = 637357.14285714, + ["x"] = -284799.42857142, + ["name"] = "DictKey_UnitName_85", + ["playerCanDrive"] = true, + ["heading"] = 0, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 637357.14285714, + ["x"] = -284799.42857142, + ["name"] = "DictKey_GroupName_84", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [2] + [3] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 12, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 637985.71428571, + ["x"] = -284899.42857142, + ["name"] = "DictKey_WptName_95", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 15, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 25, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "MLRS", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 25, + ["skill"] = "Average", + ["y"] = 637985.71428571, + ["x"] = -284899.42857142, + ["name"] = "DictKey_UnitName_94", + ["playerCanDrive"] = true, + ["heading"] = 0, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 637985.71428571, + ["x"] = -284899.42857142, + ["name"] = "DictKey_GroupName_93", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [3] + [4] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 12, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 636742.85714285, + ["x"] = -284885.14285714, + ["name"] = "DictKey_WptName_92", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 12, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 24, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "M-1 Abrams", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 24, + ["skill"] = "Average", + ["y"] = 636742.85714285, + ["x"] = -284885.14285714, + ["name"] = "DictKey_UnitName_91", + ["playerCanDrive"] = true, + ["heading"] = 0, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 636742.85714285, + ["x"] = -284885.14285714, + ["name"] = "DictKey_GroupName_90", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [4] + [5] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 12, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 637085.71428571, + ["x"] = -284499.42857142, + ["name"] = "DictKey_WptName_89", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 13, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 23, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "M1128 Stryker MGS", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 23, + ["skill"] = "Average", + ["y"] = 637085.71428571, + ["x"] = -284499.42857142, + ["name"] = "DictKey_UnitName_88", + ["playerCanDrive"] = true, + ["heading"] = 0, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 637085.71428571, + ["x"] = -284499.42857142, + ["name"] = "DictKey_GroupName_87", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [5] + [6] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 633033.42857142, + ["x"] = -280811.42857144, + }, -- end of [1] + [2] = + { + ["y"] = 633046.28571428, + ["x"] = -280844.28571429, + }, -- end of [2] + }, -- end of [1] + [2] = + { + [1] = + { + ["y"] = 633046.28571428, + ["x"] = -280844.28571429, + }, -- end of [1] + [2] = + { + ["y"] = 633072, + ["x"] = -280841.42857144, + }, -- end of [2] + }, -- end of [2] + [4] = + { + [1] = + { + ["y"] = 633069.14285714, + ["x"] = -280805.71428572, + }, -- end of [1] + [2] = + { + ["y"] = 633069.14285714, + ["x"] = -280805.71428572, + }, -- end of [2] + }, -- end of [4] + [3] = + { + [1] = + { + ["y"] = 633072, + ["x"] = -280841.42857144, + }, -- end of [1] + [2] = + { + ["y"] = 633069.14285714, + ["x"] = -280805.71428572, + }, -- end of [2] + }, -- end of [3] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 13, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 633033.42857142, + ["x"] = -280811.42857144, + ["name"] = "DictKey_WptName_83", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 16, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + [2] = + { + ["alt"] = 13, + ["type"] = "Turning Point", + ["ETA"] = 406.90368915125, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 633046.28571428, + ["x"] = -280844.28571429, + ["name"] = "DictKey_WptName_110", + ["ETA_locked"] = false, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [2] + [3] = + { + ["alt"] = 12, + ["type"] = "Turning Point", + ["ETA"] = 6.3509600752468, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 633072, + ["x"] = -280841.42857144, + ["name"] = "DictKey_WptName_111", + ["ETA_locked"] = false, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [3] + [4] = + { + ["alt"] = 12, + ["type"] = "Turning Point", + ["ETA"] = 11.008015289131, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 633069.14285714, + ["x"] = -280805.71428572, + ["name"] = "DictKey_WptName_112", + ["ETA_locked"] = false, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [4] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 21, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "M1134 Stryker ATGM", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 21, + ["skill"] = "Average", + ["y"] = 633033.42857142, + ["x"] = -280811.42857144, + ["name"] = "DictKey_UnitName_82", + ["playerCanDrive"] = true, + ["heading"] = 2.7686049316418, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 633033.42857142, + ["x"] = -280811.42857144, + ["name"] = "DictKey_GroupName_81", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [6] + [7] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + }, -- end of [1] + [2] = + { + ["y"] = 656040, + ["x"] = -309499.42857142, + }, -- end of [2] + }, -- end of [1] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 156, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 646482.85714285, + ["x"] = -267613.71428571, + ["name"] = "DictKey_WptName_62", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 8, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 14, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "M-2 Bradley", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 14, + ["skill"] = "Average", + ["y"] = 646482.85714285, + ["x"] = -267613.71428571, + ["name"] = "DictKey_UnitName_61", + ["playerCanDrive"] = true, + ["heading"] = 5.1760365893855, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 646482.85714285, + ["x"] = -267613.71428571, + ["name"] = "DictKey_GroupName_60", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [7] + [8] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + }, -- end of [1] + [2] = + { + ["y"] = 656040, + ["x"] = -309499.42857142, + }, -- end of [2] + }, -- end of [1] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 156, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 623282.85714285, + ["x"] = -270242.28571428, + ["name"] = "DictKey_WptName_59", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 9, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 13, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "M-1 Abrams", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 13, + ["skill"] = "Average", + ["y"] = 623282.85714285, + ["x"] = -270242.28571428, + ["name"] = "DictKey_UnitName_58", + ["playerCanDrive"] = true, + ["heading"] = 5.1760365893855, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 623282.85714285, + ["x"] = -270242.28571428, + ["name"] = "DictKey_GroupName_57", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [8] + [9] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [2] = + { + [1] = + { + ["y"] = 630209.14285714, + ["x"] = -302744.57142857, + }, -- end of [1] + [2] = + { + ["y"] = 630183.42857143, + ["x"] = -302647.42857143, + }, -- end of [2] + }, -- end of [2] + [3] = + { + [1] = + { + ["y"] = 630183.42857143, + ["x"] = -302647.42857143, + }, -- end of [1] + [2] = + { + ["y"] = 630103.42857143, + ["x"] = -302647.42857143, + }, -- end of [2] + }, -- end of [3] + [1] = + { + [1] = + { + ["y"] = 630140, + ["x"] = -302742.28571428, + }, -- end of [1] + [2] = + { + ["y"] = 630209.14285714, + ["x"] = -302744.57142857, + }, -- end of [2] + }, -- end of [1] + [4] = + { + [1] = + { + ["y"] = 630103.42857143, + ["x"] = -302647.42857143, + }, -- end of [1] + [2] = + { + ["y"] = 630077.71428572, + ["x"] = -302736, + }, -- end of [2] + }, -- end of [4] + [5] = + { + [1] = + { + ["y"] = 632257.14285714, + ["x"] = -300585.71428572, + }, -- end of [1] + [2] = + { + ["y"] = 632257.14285714, + ["x"] = -300585.71428572, + }, -- end of [2] + }, -- end of [5] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 156, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 630140, + ["x"] = -302742.28571428, + ["name"] = "DictKey_WptName_53", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["enabled"] = true, + ["auto"] = true, + ["id"] = "WrappedAction", + ["number"] = 1, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 1, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + [2] = + { + ["alt"] = 25, + ["type"] = "Turning Point", + ["ETA"] = 12.452512900578, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 630209.14285714, + ["x"] = -302744.57142857, + ["name"] = "DictKey_WptName_103", + ["ETA_locked"] = false, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [2] + [3] = + { + ["alt"] = 24, + ["type"] = "Turning Point", + ["ETA"] = 30.540461306249, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 630183.42857143, + ["x"] = -302647.42857143, + ["name"] = "DictKey_WptName_104", + ["ETA_locked"] = false, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [3] + [4] = + { + ["alt"] = 24, + ["type"] = "Turning Point", + ["ETA"] = 44.940461306249, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 630103.42857143, + ["x"] = -302647.42857143, + ["name"] = "DictKey_WptName_105", + ["ETA_locked"] = false, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [4] + [5] = + { + ["alt"] = 24, + ["type"] = "Turning Point", + ["ETA"] = 61.541616908548, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 630077.71428572, + ["x"] = -302736, + ["name"] = "DictKey_WptName_106", + ["ETA_locked"] = false, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [5] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 11, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "M-2 Bradley", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 11, + ["skill"] = "Average", + ["y"] = 630140, + ["x"] = -302742.28571428, + ["name"] = "DictKey_UnitName_52", + ["playerCanDrive"] = true, + ["heading"] = 1.6038421438778, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 630140, + ["x"] = -302742.28571428, + ["name"] = "DictKey_GroupName_51", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [9] + [10] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + }, -- end of [1] + [2] = + { + ["y"] = 656040, + ["x"] = -309499.42857142, + }, -- end of [2] + }, -- end of [1] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 156, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 655582.85714285, + ["x"] = -312185.14285714, + ["name"] = "DictKey_WptName_47", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 2, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 9, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "M1134 Stryker ATGM", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 9, + ["skill"] = "Average", + ["y"] = 655582.85714285, + ["x"] = -312185.14285714, + ["name"] = "DictKey_UnitName_46", + ["playerCanDrive"] = true, + ["heading"] = 5.1760365893855, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 655582.85714285, + ["x"] = -312185.14285714, + ["name"] = "DictKey_GroupName_45", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [10] + [11] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + }, -- end of [1] + [2] = + { + ["y"] = 656040, + ["x"] = -309499.42857142, + }, -- end of [2] + }, -- end of [1] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 156, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 657982.85714285, + ["x"] = -312528, + ["name"] = "DictKey_WptName_50", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 10, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "AAV7", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 10, + ["skill"] = "Average", + ["y"] = 657982.85714285, + ["x"] = -312528, + ["name"] = "DictKey_UnitName_49", + ["playerCanDrive"] = true, + ["heading"] = 5.1760365893855, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 657982.85714285, + ["x"] = -312528, + ["name"] = "DictKey_GroupName_48", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [11] + [12] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + }, -- end of [1] + [2] = + { + ["y"] = 656040, + ["x"] = -309499.42857142, + }, -- end of [2] + }, -- end of [1] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 156, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 659182.85714285, + ["x"] = -310242.28571428, + ["name"] = "DictKey_WptName_56", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 3, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 12, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "M1128 Stryker MGS", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 12, + ["skill"] = "Average", + ["y"] = 659182.85714285, + ["x"] = -310242.28571428, + ["name"] = "DictKey_UnitName_55", + ["playerCanDrive"] = true, + ["heading"] = 5.1760365893855, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 659182.85714285, + ["x"] = -310242.28571428, + ["name"] = "DictKey_GroupName_54", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [12] + [13] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + }, -- end of [1] + [2] = + { + ["y"] = 656040, + ["x"] = -309499.42857142, + }, -- end of [2] + }, -- end of [1] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 156, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + ["name"] = "DictKey_WptName_43", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 4, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 8, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "M-1 Abrams", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 8, + ["skill"] = "Average", + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + ["name"] = "DictKey_UnitName_42", + ["playerCanDrive"] = true, + ["heading"] = 5.1760365893855, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + ["name"] = "DictKey_GroupName_41", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [13] + [14] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + }, -- end of [1] + [2] = + { + ["y"] = 656040, + ["x"] = -309499.42857142, + }, -- end of [2] + }, -- end of [1] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 130, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 636314.28571428, + ["x"] = -260871.42857143, + ["name"] = "DictKey_WptName_77", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 5, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 19, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "Vulcan", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 19, + ["skill"] = "Average", + ["y"] = 636314.28571428, + ["x"] = -260871.42857143, + ["name"] = "DictKey_UnitName_76", + ["playerCanDrive"] = true, + ["heading"] = 5.1760365893855, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 636314.28571428, + ["x"] = -260871.42857143, + ["name"] = "DictKey_GroupName_75", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [14] + [15] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + }, -- end of [1] + [2] = + { + ["y"] = 656040, + ["x"] = -309499.42857142, + }, -- end of [2] + }, -- end of [1] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 27, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 618600, + ["x"] = -259585.71428572, + ["name"] = "DictKey_WptName_80", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 10, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 20, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "M1128 Stryker MGS", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 20, + ["skill"] = "Average", + ["y"] = 618600, + ["x"] = -259585.71428572, + ["name"] = "DictKey_UnitName_79", + ["playerCanDrive"] = true, + ["heading"] = 5.1760365893855, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 618600, + ["x"] = -259585.71428572, + ["name"] = "DictKey_GroupName_78", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [15] + [16] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + }, -- end of [1] + [2] = + { + ["y"] = 656040, + ["x"] = -309499.42857142, + }, -- end of [2] + }, -- end of [1] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 156, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 644825.71428571, + ["x"] = -254470.85714285, + ["name"] = "DictKey_WptName_65", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 15, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "AAV7", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 15, + ["skill"] = "Average", + ["y"] = 644825.71428571, + ["x"] = -254470.85714285, + ["name"] = "DictKey_UnitName_64", + ["playerCanDrive"] = true, + ["heading"] = 5.1760365893855, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 644825.71428571, + ["x"] = -254470.85714285, + ["name"] = "DictKey_GroupName_63", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [16] + [18] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + }, -- end of [1] + [2] = + { + ["y"] = 656040, + ["x"] = -309499.42857142, + }, -- end of [2] + }, -- end of [1] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 156, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 668939.99999999, + ["x"] = -268470.85714285, + ["name"] = "DictKey_WptName_68", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 7, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 16, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "M1134 Stryker ATGM", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 16, + ["skill"] = "Average", + ["y"] = 668939.99999999, + ["x"] = -268470.85714285, + ["name"] = "DictKey_UnitName_67", + ["playerCanDrive"] = true, + ["heading"] = 5.1760365893855, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 668939.99999999, + ["x"] = -268470.85714285, + ["name"] = "DictKey_GroupName_66", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [18] + [19] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + }, -- end of [1] + [2] = + { + ["y"] = 656040, + ["x"] = -309499.42857142, + }, -- end of [2] + }, -- end of [1] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 61, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 679314.28571428, + ["x"] = -279728.57142857, + ["name"] = "DictKey_WptName_74", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 11, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 18, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "M1126 Stryker ICV", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 18, + ["skill"] = "Average", + ["y"] = 679314.28571428, + ["x"] = -279728.57142857, + ["name"] = "DictKey_UnitName_73", + ["playerCanDrive"] = true, + ["heading"] = 5.1760365893855, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 679314.28571428, + ["x"] = -279728.57142857, + ["name"] = "DictKey_GroupName_72", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [19] + [17] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 656382.85714285, + ["x"] = -309670.85714285, + }, -- end of [1] + [2] = + { + ["y"] = 656040, + ["x"] = -309499.42857142, + }, -- end of [2] + }, -- end of [1] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 156, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 674254.28571428, + ["x"] = -258642.28571428, + ["name"] = "DictKey_WptName_71", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 6, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 17, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "Vulcan", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 17, + ["skill"] = "Average", + ["y"] = 674254.28571428, + ["x"] = -258642.28571428, + ["name"] = "DictKey_UnitName_70", + ["playerCanDrive"] = true, + ["heading"] = 5.1760365893855, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 674254.28571428, + ["x"] = -258642.28571428, + ["name"] = "DictKey_GroupName_69", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [17] + [20] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["lateActivation"] = true, + ["groupId"] = 7, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "MLRS", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 7, + ["skill"] = "Excellent", + ["y"] = 415182.85714286, + ["x"] = -122460, + ["name"] = "DictKey_UnitName_39", + ["playerCanDrive"] = true, + ["heading"] = 0, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 415182.85714286, + ["x"] = -122460, + ["name"] = "DictKey_GroupName_38", + ["route"] = + { + ["spans"] = + { + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 26, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 415182.85714286, + ["x"] = -122460, + ["name"] = "DictKey_WptName_40", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "EPLRS", + ["params"] = + { + ["value"] = true, + ["groupId"] = 17, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + ["routeRelativeTOT"] = true, + }, -- end of ["route"] + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [20] + }, -- end of ["group"] + }, -- end of ["vehicle"] + ["plane"] = + { + ["group"] = + { + [1] = + { + ["lateActivation"] = true, + ["tasks"] = + { + }, -- end of ["tasks"] + ["radioSet"] = true, + ["task"] = "AFAC", + ["uncontrolled"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["routeRelativeTOT"] = true, + ["points"] = + { + [1] = + { + ["alt"] = 1000, + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 138.88888888889, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = true, + ["id"] = "FAC", + ["enabled"] = true, + ["params"] = + { + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Turning Point", + ["ETA"] = 0, + ["ETA_locked"] = true, + ["y"] = 420571.42857143, + ["x"] = -136731.42857143, + ["name"] = "DictKey_WptName_21", + ["formation_template"] = "", + ["speed_locked"] = true, + }, -- end of [1] + [2] = + { + ["alt"] = 1000, + ["action"] = "Fly Over Point", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 138.88888888889, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Turning Point", + ["ETA"] = 214.57065033148, + ["ETA_locked"] = false, + ["y"] = 402682.85714286, + ["x"] = -111331.42857143, + ["name"] = "DictKey_WptName_22", + ["formation_template"] = "", + ["speed_locked"] = true, + }, -- end of [2] + [3] = + { + ["alt"] = 1000, + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 138.88888888889, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["auto"] = false, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "Script", + ["params"] = + { + ["command"] = "", + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [1] + [2] = + { + ["number"] = 2, + ["auto"] = false, + ["id"] = "WrappedAction", + ["enabled"] = true, + ["params"] = + { + ["action"] = + { + ["id"] = "SwitchWaypoint", + ["params"] = + { + ["goToWaypointIndex"] = 2, + ["fromWaypointIndex"] = 3, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [2] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Turning Point", + ["ETA"] = 1044.8016797486, + ["ETA_locked"] = false, + ["y"] = 303885.71428571, + ["x"] = -52800, + ["name"] = "DictKey_WptName_23", + ["formation_template"] = "", + ["speed_locked"] = true, + }, -- end of [3] + [4] = + { + ["alt"] = 40, + ["action"] = "Landing", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 138.88888888889, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Land", + ["ETA"] = 1241.6966380211, + ["ETA_locked"] = false, + ["y"] = 279256.64920952, + ["x"] = -40915.496728899, + ["name"] = "DictKey_WptName_34", + ["formation_template"] = "", + ["airdromeId"] = 14, + ["speed_locked"] = true, + }, -- end of [4] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 4, + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["alt"] = 1000, + ["hardpoint_racks"] = true, + ["alt_type"] = "BARO", + ["livery_id"] = "AVIODEV Skin", + ["skill"] = "Excellent", + ["speed"] = 138.88888888889, + ["AddPropAircraft"] = + { + ["SoloFlight"] = false, + ["NetCrewControlPriority"] = 1, + }, -- end of ["AddPropAircraft"] + ["type"] = "C-101CC", + ["unitId"] = 4, + ["psi"] = 0.61358897614815, + ["y"] = 420571.42857143, + ["x"] = -136731.42857143, + ["name"] = "DictKey_UnitName_20", + ["payload"] = + { + ["pylons"] = + { + [3] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [3] + [2] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [2] + [6] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [6] + [5] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [5] + }, -- end of ["pylons"] + ["fuel"] = 1885, + ["flare"] = 0, + ["chaff"] = 0, + ["gun"] = 100, + }, -- end of ["payload"] + ["heading"] = -0.61358897614815, + ["callsign"] = + { + [1] = 1, + [2] = 1, + [3] = 1, + ["name"] = "Enfield11", + }, -- end of ["callsign"] + ["onboard_num"] = "011", + }, -- end of [1] + [2] = + { + ["alt"] = 1000, + ["alt_type"] = "BARO", + ["livery_id"] = "AVIODEV Skin", + ["skill"] = "Excellent", + ["speed"] = 138.88888888889, + ["AddPropAircraft"] = + { + ["SoloFlight"] = false, + ["NetCrewControlPriority"] = 1, + }, -- end of ["AddPropAircraft"] + ["type"] = "C-101CC", + ["unitId"] = 31, + ["psi"] = 0.61358897614815, + ["y"] = 420611.42857143, + ["x"] = -136771.42857143, + ["name"] = "DictKey_UnitName_147", + ["payload"] = + { + ["pylons"] = + { + [3] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [3] + [2] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [2] + [5] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [5] + [6] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [6] + }, -- end of ["pylons"] + ["fuel"] = 1885, + ["flare"] = 0, + ["chaff"] = 0, + ["gun"] = 100, + }, -- end of ["payload"] + ["heading"] = -0.61358897614815, + ["callsign"] = + { + [1] = 1, + [2] = 1, + [3] = 2, + ["name"] = "Enfield12", + }, -- end of ["callsign"] + ["onboard_num"] = "012", + }, -- end of [2] + [3] = + { + ["alt"] = 1000, + ["alt_type"] = "BARO", + ["livery_id"] = "AVIODEV Skin", + ["skill"] = "Excellent", + ["speed"] = 138.88888888889, + ["AddPropAircraft"] = + { + ["SoloFlight"] = false, + ["NetCrewControlPriority"] = 1, + }, -- end of ["AddPropAircraft"] + ["type"] = "C-101CC", + ["unitId"] = 32, + ["psi"] = 0.61358897614815, + ["y"] = 420651.42857143, + ["x"] = -136811.42857143, + ["name"] = "DictKey_UnitName_148", + ["payload"] = + { + ["pylons"] = + { + [3] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [3] + [2] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [2] + [6] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [6] + [5] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [5] + }, -- end of ["pylons"] + ["fuel"] = 1885, + ["flare"] = 0, + ["chaff"] = 0, + ["gun"] = 100, + }, -- end of ["payload"] + ["heading"] = -0.61358897614815, + ["callsign"] = + { + [1] = 1, + [2] = 1, + [3] = 3, + ["name"] = "Enfield13", + }, -- end of ["callsign"] + ["onboard_num"] = "013", + }, -- end of [3] + [4] = + { + ["alt"] = 1000, + ["alt_type"] = "BARO", + ["livery_id"] = "AVIODEV Skin", + ["skill"] = "Excellent", + ["speed"] = 138.88888888889, + ["AddPropAircraft"] = + { + ["SoloFlight"] = false, + ["NetCrewControlPriority"] = 1, + }, -- end of ["AddPropAircraft"] + ["type"] = "C-101CC", + ["unitId"] = 33, + ["psi"] = 0.61358897614815, + ["y"] = 420691.42857143, + ["x"] = -136851.42857143, + ["name"] = "DictKey_UnitName_149", + ["payload"] = + { + ["pylons"] = + { + [3] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [3] + [2] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [2] + [5] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [5] + [6] = + { + ["CLSID"] = "{4F977A2A-CD25-44df-90EF-164BFA2AE72F}", + }, -- end of [6] + }, -- end of ["pylons"] + ["fuel"] = 1885, + ["flare"] = 0, + ["chaff"] = 0, + ["gun"] = 100, + }, -- end of ["payload"] + ["heading"] = -0.61358897614815, + ["callsign"] = + { + [1] = 1, + [2] = 1, + [3] = 4, + ["name"] = "Enfield14", + }, -- end of ["callsign"] + ["onboard_num"] = "014", + }, -- end of [4] + }, -- end of ["units"] + ["y"] = 420571.42857143, + ["x"] = -136731.42857143, + ["name"] = "DictKey_GroupName_19", + ["communication"] = true, + ["start_time"] = 0, + ["modulation"] = 0, + ["frequency"] = 127.5, + }, -- end of [1] + }, -- end of ["group"] + }, -- end of ["plane"] + }, -- end of [19] + }, -- end of ["country"] + }, -- end of ["blue"] + ["red"] = + { + ["bullseye"] = + { + ["y"] = 371700, + ["x"] = 11557, + }, -- end of ["bullseye"] + ["nav_points"] = + { + }, -- end of ["nav_points"] + ["name"] = "red", + ["country"] = + { + [1] = + { + ["id"] = 18, + ["name"] = "Abkhazia", + }, -- end of [1] + [2] = + { + ["id"] = 24, + ["name"] = "Belarus", + }, -- end of [2] + [3] = + { + ["id"] = 27, + ["name"] = "China", + }, -- end of [3] + [4] = + { + ["id"] = 34, + ["name"] = "Iran", + }, -- end of [4] + [5] = + { + ["id"] = 37, + ["name"] = "Kazakhstan", + }, -- end of [5] + [6] = + { + ["id"] = 38, + ["name"] = "North Korea", + }, -- end of [6] + [7] = + { + ["helicopter"] = + { + ["group"] = + { + [1] = + { + ["lateActivation"] = true, + ["tasks"] = + { + }, -- end of ["tasks"] + ["radioSet"] = false, + ["task"] = "CAS", + ["uncontrolled"] = false, + ["route"] = + { + ["routeRelativeTOT"] = true, + ["points"] = + { + [1] = + { + ["alt"] = 30, + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 55.555555555556, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["key"] = "CAS", + ["id"] = "EngageTargets", + ["enabled"] = true, + ["auto"] = true, + ["params"] = + { + ["targetTypes"] = + { + [1] = "Helicopters", + [2] = "Ground Units", + [3] = "Light armed ships", + }, -- end of ["targetTypes"] + ["priority"] = 0, + }, -- end of ["params"] + }, -- end of [1] + [2] = + { + ["enabled"] = true, + ["auto"] = false, + ["id"] = "WrappedAction", + ["number"] = 2, + ["params"] = + { + ["action"] = + { + ["id"] = "Option", + ["params"] = + { + ["value"] = 2, + ["name"] = 0, + }, -- end of ["params"] + }, -- end of ["action"] + }, -- end of ["params"] + }, -- end of [2] + [3] = + { + ["enabled"] = true, + ["auto"] = false, + ["id"] = "AttackUnit", + ["number"] = 3, + ["params"] = + { + ["altitudeEnabled"] = false, + ["unitId"] = 21, + ["attackQtyLimit"] = false, + ["attackQty"] = 1, + ["expend"] = "Auto", + ["altitude"] = 30, + ["directionEnabled"] = false, + ["groupAttack"] = false, + ["weaponType"] = 1073741822, + ["direction"] = 0, + }, -- end of ["params"] + }, -- end of [3] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Turning Point", + ["ETA"] = 0, + ["ETA_locked"] = true, + ["y"] = 636400, + ["x"] = -283060, + ["name"] = "DictKey_WptName_14", + ["formation_template"] = "", + ["speed_locked"] = true, + }, -- end of [1] + [2] = + { + ["alt"] = 500, + ["action"] = "Fly Over Point", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 27.777777777778, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Turning Point", + ["ETA"] = 128.13437602108, + ["ETA_locked"] = false, + ["y"] = 633328.57142858, + ["x"] = -281261.42857143, + ["name"] = "DictKey_WptName_25", + ["formation_template"] = "", + ["speed_locked"] = true, + }, -- end of [2] + [3] = + { + ["alt"] = 500, + ["action"] = "Fly Over Point", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 27.777777777778, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Turning Point", + ["ETA"] = 396.93099556146, + ["ETA_locked"] = false, + ["y"] = 633914.28571429, + ["x"] = -288488.57142858, + ["name"] = "DictKey_WptName_27", + ["formation_template"] = "", + ["speed_locked"] = true, + }, -- end of [3] + [4] = + { + ["alt"] = 500, + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 27.777777777778, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Turning Point", + ["ETA"] = 586.87147079203, + ["ETA_locked"] = false, + ["y"] = 629771.42857142, + ["x"] = -291755.71428573, + ["name"] = "DictKey_WptName_28", + ["formation_template"] = "", + ["speed_locked"] = true, + }, -- end of [4] + [5] = + { + ["alt"] = 500, + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 27.777777777778, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Turning Point", + ["ETA"] = 1073.0374533329, + ["ETA_locked"] = false, + ["y"] = 643271.42857143, + ["x"] = -291402.85714286, + ["name"] = "DictKey_WptName_29", + ["formation_template"] = "", + ["speed_locked"] = true, + }, -- end of [5] + [6] = + { + ["alt"] = 500, + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 27.777777777778, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Turning Point", + ["ETA"] = 879.38725596888, + ["ETA_locked"] = false, + ["y"] = 642132.85714286, + ["x"] = -281992.28571428, + ["name"] = "DictKey_WptName_30", + ["formation_template"] = "", + ["speed_locked"] = true, + }, -- end of [6] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 2, + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["alt"] = 30, + ["hardpoint_racks"] = true, + ["alt_type"] = "BARO", + ["livery_id"] = "night", + ["skill"] = "High", + ["ropeLength"] = 15, + ["speed"] = 55.555555555556, + ["type"] = "Mi-28N", + ["unitId"] = 2, + ["psi"] = 1.0410462089454, + ["y"] = 636400, + ["x"] = -283060, + ["name"] = "DictKey_UnitName_13", + ["payload"] = + { + ["pylons"] = + { + [1] = + { + ["CLSID"] = "{57232979-8B0F-4db7-8D9A-55197E06B0F5}", + }, -- end of [1] + [2] = + { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + }, -- end of [2] + [3] = + { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + }, -- end of [3] + [4] = + { + ["CLSID"] = "{57232979-8B0F-4db7-8D9A-55197E06B0F5}", + }, -- end of [4] + }, -- end of ["pylons"] + ["fuel"] = "1500", + ["flare"] = 128, + ["chaff"] = 0, + ["gun"] = 100, + }, -- end of ["payload"] + ["heading"] = -1.0410462089454, + ["callsign"] = 101, + ["onboard_num"] = "051", + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 636400, + ["x"] = -283060, + ["name"] = "DictKey_GroupName_12", + ["communication"] = true, + ["start_time"] = 0, + ["modulation"] = 0, + ["frequency"] = 127.5, + }, -- end of [1] + [2] = + { + ["modulation"] = 0, + ["tasks"] = + { + }, -- end of ["tasks"] + ["radioSet"] = false, + ["task"] = "CAS", + ["uncontrolled"] = false, + ["route"] = + { + ["points"] = + { + [1] = + { + ["alt"] = 100, + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 27.777777777778, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + [1] = + { + ["number"] = 1, + ["key"] = "CAS", + ["id"] = "EngageTargets", + ["enabled"] = true, + ["auto"] = true, + ["params"] = + { + ["targetTypes"] = + { + [1] = "Helicopters", + [2] = "Ground Units", + [3] = "Light armed ships", + }, -- end of ["targetTypes"] + ["priority"] = 0, + }, -- end of ["params"] + }, -- end of [1] + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Turning Point", + ["ETA"] = 0, + ["ETA_locked"] = true, + ["y"] = 632342.85714286, + ["x"] = -285231.42857143, + ["name"] = "DictKey_WptName_11", + ["formation_template"] = "", + ["speed_locked"] = true, + }, -- end of [1] + [2] = + { + ["alt"] = 500, + ["action"] = "Turning Point", + ["alt_type"] = "BARO", + ["properties"] = + { + ["vnav"] = 1, + ["scale"] = 0, + ["angle"] = 0, + ["vangle"] = 0, + ["steer"] = 2, + }, -- end of ["properties"] + ["speed"] = 55.555555555556, + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["type"] = "Turning Point", + ["ETA"] = 81.879555196587, + ["ETA_locked"] = false, + ["y"] = 635657.14285715, + ["x"] = -288347.14285715, + ["name"] = "DictKey_WptName_26", + ["formation_template"] = "", + ["speed_locked"] = true, + }, -- end of [2] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 1, + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["alt"] = 100, + ["hardpoint_racks"] = true, + ["alt_type"] = "BARO", + ["livery_id"] = "Russia Standard Army", + ["skill"] = "Client", + ["ropeLength"] = 15, + ["speed"] = 27.777777777778, + ["type"] = "Ka-50", + ["Radio"] = + { + [1] = + { + ["channels"] = + { + [7] = 40, + [1] = 21.5, + [2] = 25.7, + [4] = 28, + [8] = 50, + [9] = 55.5, + [5] = 30, + [10] = 59.9, + [3] = 27, + [6] = 32, + }, -- end of ["channels"] + }, -- end of [1] + [2] = + { + ["channels"] = + { + [15] = 0.995, + [13] = 0.583, + [7] = 0.443, + [14] = 0.283, + [2] = 0.303, + [4] = 0.591, + [8] = 0.215, + [16] = 1.21, + [9] = 0.525, + [5] = 0.408, + [10] = 1.065, + [3] = 0.289, + [11] = 0.718, + [6] = 0.803, + [12] = 0.35, + [1] = 0.625, + }, -- end of ["channels"] + }, -- end of [2] + }, -- end of ["Radio"] + ["unitId"] = 1, + ["psi"] = -2.3253222757538, + ["y"] = 632342.85714286, + ["x"] = -285231.42857143, + ["name"] = "DictKey_UnitName_10", + ["payload"] = + { + ["pylons"] = + { + [1] = + { + ["CLSID"] = "{A6FD14D3-6D30-4C85-88A7-8D17BEE120E2}", + }, -- end of [1] + [2] = + { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + }, -- end of [2] + [3] = + { + ["CLSID"] = "{FC56DF80-9B09-44C5-8976-DCFAFF219062}", + }, -- end of [3] + [4] = + { + ["CLSID"] = "{A6FD14D3-6D30-4C85-88A7-8D17BEE120E2}", + }, -- end of [4] + }, -- end of ["pylons"] + ["fuel"] = "1450", + ["flare"] = 128, + ["chaff"] = 0, + ["gun"] = 100, + }, -- end of ["payload"] + ["heading"] = 2.3253222757538, + ["callsign"] = 103, + ["onboard_num"] = "050", + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 632342.85714286, + ["x"] = -285231.42857143, + ["name"] = "DictKey_GroupName_9", + ["communication"] = true, + ["start_time"] = 0, + ["frequency"] = 124, + }, -- end of [2] + }, -- end of ["group"] + }, -- end of ["helicopter"] + ["name"] = "Russia", + ["id"] = 0, + ["vehicle"] = + { + ["group"] = + { + [1] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["route"] = + { + ["spans"] = + { + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 17, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 402742.85714286, + ["x"] = -111385.71428571, + ["name"] = "DictKey_WptName_146", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + }, -- end of ["points"] + }, -- end of ["route"] + ["groupId"] = 27, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "BTR-80", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 30, + ["skill"] = "Average", + ["y"] = 402742.85714286, + ["x"] = -111385.71428571, + ["name"] = "DictKey_UnitName_145", + ["playerCanDrive"] = true, + ["heading"] = 0, + }, -- end of [1] + }, -- end of ["units"] + ["y"] = 402742.85714286, + ["x"] = -111385.71428571, + ["name"] = "DictKey_GroupName_144", + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [1] + [2] = + { + ["visible"] = false, + ["taskSelected"] = true, + ["lateActivation"] = true, + ["groupId"] = 28, + ["tasks"] = + { + }, -- end of ["tasks"] + ["hidden"] = false, + ["units"] = + { + [1] = + { + ["type"] = "Uragan_BM-27", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 34, + ["skill"] = "Random", + ["y"] = 639382.85714286, + ["x"] = -292431.42857143, + ["name"] = "DictKey_UnitName_151", + ["playerCanDrive"] = true, + ["heading"] = 1.4263547484622, + }, -- end of [1] + [2] = + { + ["type"] = "Uragan_BM-27", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 35, + ["skill"] = "Random", + ["y"] = 639343.27368529, + ["x"] = -292437.18616526, + ["name"] = "DictKey_UnitName_155", + ["playerCanDrive"] = true, + ["heading"] = 1.4263547484622, + }, -- end of [2] + [3] = + { + ["type"] = "Uragan_BM-27", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 36, + ["skill"] = "Random", + ["y"] = 639303.69022772, + ["x"] = -292442.94375909, + ["name"] = "DictKey_UnitName_156", + ["playerCanDrive"] = true, + ["heading"] = 1.4263547484622, + }, -- end of [3] + [4] = + { + ["type"] = "Uragan_BM-27", + ["transportable"] = + { + ["randomTransportable"] = false, + }, -- end of ["transportable"] + ["unitId"] = 37, + ["skill"] = "Random", + ["y"] = 639264.10677015, + ["x"] = -292448.70135292, + ["name"] = "DictKey_UnitName_157", + ["playerCanDrive"] = true, + ["heading"] = 1.4263547484622, + }, -- end of [4] + }, -- end of ["units"] + ["y"] = 639382.85714286, + ["x"] = -292431.42857143, + ["name"] = "DictKey_GroupName_150", + ["route"] = + { + ["spans"] = + { + [1] = + { + [1] = + { + ["y"] = 639382.85714286, + ["x"] = -292431.42857143, + }, -- end of [1] + [2] = + { + ["y"] = 639540, + ["x"] = -292408.57142858, + }, -- end of [2] + }, -- end of [1] + [2] = + { + [1] = + { + ["y"] = 639540, + ["x"] = -292408.57142858, + }, -- end of [1] + [2] = + { + ["y"] = 640251.42857143, + ["x"] = -292071.42857143, + }, -- end of [2] + }, -- end of [2] + [4] = + { + [1] = + { + ["y"] = 640057.14285715, + ["x"] = -291868.57142858, + }, -- end of [1] + [2] = + { + ["y"] = 640057.14285715, + ["x"] = -291868.57142858, + }, -- end of [2] + }, -- end of [4] + [3] = + { + [1] = + { + ["y"] = 640251.42857143, + ["x"] = -292071.42857143, + }, -- end of [1] + [2] = + { + ["y"] = 640057.14285715, + ["x"] = -291868.57142858, + }, -- end of [2] + }, -- end of [3] + }, -- end of ["spans"] + ["points"] = + { + [1] = + { + ["alt"] = 7, + ["type"] = "Turning Point", + ["ETA"] = 0, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 639382.85714286, + ["x"] = -292431.42857143, + ["name"] = "DictKey_WptName_152", + ["ETA_locked"] = true, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [1] + [2] = + { + ["alt"] = 7, + ["type"] = "Turning Point", + ["ETA"] = 28.583368933575, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 639540, + ["x"] = -292408.57142858, + ["name"] = "DictKey_WptName_154", + ["ETA_locked"] = false, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [2] + [3] = + { + ["alt"] = 8, + ["type"] = "Turning Point", + ["ETA"] = 28.583368933575, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 640251.42857143, + ["x"] = -292071.42857143, + ["name"] = "DictKey_WptName_158", + ["ETA_locked"] = false, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [3] + [4] = + { + ["alt"] = 8, + ["type"] = "Turning Point", + ["ETA"] = 170.29218219196, + ["alt_type"] = "BARO", + ["formation_template"] = "", + ["y"] = 640057.14285715, + ["x"] = -291868.57142858, + ["name"] = "DictKey_WptName_159", + ["ETA_locked"] = false, + ["speed"] = 5.5555555555556, + ["action"] = "Off Road", + ["task"] = + { + ["id"] = "ComboTask", + ["params"] = + { + ["tasks"] = + { + }, -- end of ["tasks"] + }, -- end of ["params"] + }, -- end of ["task"] + ["speed_locked"] = true, + }, -- end of [4] + }, -- end of ["points"] + ["routeRelativeTOT"] = true, + }, -- end of ["route"] + ["start_time"] = 0, + ["task"] = "Ground Nothing", + }, -- end of [2] + }, -- end of ["group"] + }, -- end of ["vehicle"] + }, -- end of [7] + [8] = + { + ["id"] = 43, + ["name"] = "Serbia", + }, -- end of [8] + [9] = + { + ["id"] = 19, + ["name"] = "South Ossetia", + }, -- end of [9] + [10] = + { + ["id"] = 47, + ["name"] = "Syria", + }, -- end of [10] + [11] = + { + ["id"] = 1, + ["name"] = "Ukraine", + }, -- end of [11] + }, -- end of ["country"] + }, -- end of ["red"] + }, -- end of ["coalition"] + ["sortie"] = "DictKey_sortie_4", + ["version"] = 12, + ["goals"] = + { + }, -- end of ["goals"] + ["currentKey"] = 29623, + ["start_time"] = 43200, + ["forcedOptions"] = + { + }, -- end of ["forcedOptions"] + ["failures"] = + { + ["OIL_RADIATOR_SENSOR"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "OIL_RADIATOR_SENSOR", + ["mm"] = 0, + }, -- end of ["OIL_RADIATOR_SENSOR"] + ["TURNIND_POINTER_FAILS_NO_VACUUM"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TURNIND_POINTER_FAILS_NO_VACUUM", + ["mm"] = 0, + }, -- end of ["TURNIND_POINTER_FAILS_NO_VACUUM"] + ["helmet"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "helmet", + ["mm"] = 0, + }, -- end of ["helmet"] + ["GUN_LEFT_IN_MOUNT_LOOSE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_LEFT_IN_MOUNT_LOOSE", + ["mm"] = 0, + }, -- end of ["GUN_LEFT_IN_MOUNT_LOOSE"] + ["es_damage_MainInverter"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "es_damage_MainInverter", + ["mm"] = 0, + }, -- end of ["es_damage_MainInverter"] + ["rws"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "rws", + ["mm"] = 0, + }, -- end of ["rws"] + ["AN_ALR69V_FAILURE_SENSOR_TAIL_RIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AN_ALR69V_FAILURE_SENSOR_TAIL_RIGHT", + ["mm"] = 0, + }, -- end of ["AN_ALR69V_FAILURE_SENSOR_TAIL_RIGHT"] + ["MainReductor_ShaveInOil"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "MainReductor_ShaveInOil", + ["mm"] = 0, + }, -- end of ["MainReductor_ShaveInOil"] + ["asc_y"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "asc_y", + ["mm"] = 0, + }, -- end of ["asc_y"] + ["MAIN_L_GEAR_D_LOCK"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "MAIN_L_GEAR_D_LOCK", + ["mm"] = 0, + }, -- end of ["MAIN_L_GEAR_D_LOCK"] + ["AAR_47_FAILURE_SENSOR_LEFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AAR_47_FAILURE_SENSOR_LEFT", + ["mm"] = 0, + }, -- end of ["AAR_47_FAILURE_SENSOR_LEFT"] + ["tail_reductor_chip"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "tail_reductor_chip", + ["mm"] = 0, + }, -- end of ["tail_reductor_chip"] + ["TACAN_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TACAN_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["TACAN_FAILURE_TOTAL"] + ["OIL_RADIATOR_MOTOR"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "OIL_RADIATOR_MOTOR", + ["mm"] = 0, + }, -- end of ["OIL_RADIATOR_MOTOR"] + ["SUPERCHARGER_WIRE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "SUPERCHARGER_WIRE", + ["mm"] = 0, + }, -- end of ["SUPERCHARGER_WIRE"] + ["CADC_FAILURE_TEMPERATURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CADC_FAILURE_TEMPERATURE", + ["mm"] = 0, + }, -- end of ["CADC_FAILURE_TEMPERATURE"] + ["FUSELAGE_TANK_LEAK"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "FUSELAGE_TANK_LEAK", + ["mm"] = 0, + }, -- end of ["FUSELAGE_TANK_LEAK"] + ["AN_ALE_40V_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AN_ALE_40V_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["AN_ALE_40V_FAILURE_TOTAL"] + ["HORIZON_BAR_NOT_SETTLE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "HORIZON_BAR_NOT_SETTLE", + ["mm"] = 0, + }, -- end of ["HORIZON_BAR_NOT_SETTLE"] + ["AN_ALE_40V_FAILURE_CONTAINER_LEFT_WING"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AN_ALE_40V_FAILURE_CONTAINER_LEFT_WING", + ["mm"] = 0, + }, -- end of ["AN_ALE_40V_FAILURE_CONTAINER_LEFT_WING"] + ["OIL_DILUTION_WIRE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "OIL_DILUTION_WIRE", + ["mm"] = 0, + }, -- end of ["OIL_DILUTION_WIRE"] + ["FLEX_S_BKP_LAMP_DEFECTIVE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "FLEX_S_BKP_LAMP_DEFECTIVE", + ["mm"] = 0, + }, -- end of ["FLEX_S_BKP_LAMP_DEFECTIVE"] + ["TAIL_GEAR_FAIL_GO_DOWN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TAIL_GEAR_FAIL_GO_DOWN", + ["mm"] = 0, + }, -- end of ["TAIL_GEAR_FAIL_GO_DOWN"] + ["GUN_FAIL_RIGHT_CENTER_GUN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_FAIL_RIGHT_CENTER_GUN", + ["mm"] = 0, + }, -- end of ["GUN_FAIL_RIGHT_CENTER_GUN"] + ["LeftEngine_ShaveInOil"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "LeftEngine_ShaveInOil", + ["mm"] = 0, + }, -- end of ["LeftEngine_ShaveInOil"] + ["MAIN_R_GEAR_D_LOCK"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "MAIN_R_GEAR_D_LOCK", + ["mm"] = 0, + }, -- end of ["MAIN_R_GEAR_D_LOCK"] + ["R_GEAR_DLK_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "R_GEAR_DLK_FAULT", + ["mm"] = 0, + }, -- end of ["R_GEAR_DLK_FAULT"] + ["GMC_GYRO_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GMC_GYRO_FAILURE", + ["mm"] = 0, + }, -- end of ["GMC_GYRO_FAILURE"] + ["L_GEAR_DLK_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "L_GEAR_DLK_FAULT", + ["mm"] = 0, + }, -- end of ["L_GEAR_DLK_FAULT"] + ["K14_FIXED_LAMP_DEFECTIVE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "K14_FIXED_LAMP_DEFECTIVE", + ["mm"] = 0, + }, -- end of ["K14_FIXED_LAMP_DEFECTIVE"] + ["GUN_FAIL_LEFT_CENTER_GUN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_FAIL_LEFT_CENTER_GUN", + ["mm"] = 0, + }, -- end of ["GUN_FAIL_LEFT_CENTER_GUN"] + ["engine_droop_failure"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "engine_droop_failure", + ["mm"] = 0, + }, -- end of ["engine_droop_failure"] + ["IGNITION_TERM_CONNECT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "IGNITION_TERM_CONNECT", + ["mm"] = 0, + }, -- end of ["IGNITION_TERM_CONNECT"] + ["CADC_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CADC_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["CADC_FAILURE_TOTAL"] + ["COOLANT_POOR_CONNTECT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COOLANT_POOR_CONNTECT", + ["mm"] = 0, + }, -- end of ["COOLANT_POOR_CONNTECT"] + ["TURNIND_POINTER_FAILS_DEFECTIVE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TURNIND_POINTER_FAILS_DEFECTIVE", + ["mm"] = 0, + }, -- end of ["TURNIND_POINTER_FAILS_DEFECTIVE"] + ["GUN_FAIL_RIGHT_OUT_GUN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_FAIL_RIGHT_OUT_GUN", + ["mm"] = 0, + }, -- end of ["GUN_FAIL_RIGHT_OUT_GUN"] + ["BOMBS_DAMAGE_LINKAGE_LEFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_DAMAGE_LINKAGE_LEFT", + ["mm"] = 0, + }, -- end of ["BOMBS_DAMAGE_LINKAGE_LEFT"] + ["FUSELAGE_TANK_PUMP_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "FUSELAGE_TANK_PUMP_FAULT", + ["mm"] = 0, + }, -- end of ["FUSELAGE_TANK_PUMP_FAULT"] + ["hydro_main"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "hydro_main", + ["mm"] = 0, + }, -- end of ["hydro_main"] + ["TACH_BREAK_IN_INDICATOR"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TACH_BREAK_IN_INDICATOR", + ["mm"] = 0, + }, -- end of ["TACH_BREAK_IN_INDICATOR"] + ["GUN_LEFT_OUT_MOUNT_LOOSE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_LEFT_OUT_MOUNT_LOOSE", + ["mm"] = 0, + }, -- end of ["GUN_LEFT_OUT_MOUNT_LOOSE"] + ["TAIL_GEAR_U_LOCK"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TAIL_GEAR_U_LOCK", + ["mm"] = 0, + }, -- end of ["TAIL_GEAR_U_LOCK"] + ["RADAR_ALT_TOTAL_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "RADAR_ALT_TOTAL_FAILURE", + ["mm"] = 0, + }, -- end of ["RADAR_ALT_TOTAL_FAILURE"] + ["GUN_RIGHT_CENTER_MOUNT_LOOSE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_RIGHT_CENTER_MOUNT_LOOSE", + ["mm"] = 0, + }, -- end of ["GUN_RIGHT_CENTER_MOUNT_LOOSE"] + ["TAIL_GEAR_FAIL_GO_UP"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TAIL_GEAR_FAIL_GO_UP", + ["mm"] = 0, + }, -- end of ["TAIL_GEAR_FAIL_GO_UP"] + ["asc_r"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "asc_r", + ["mm"] = 0, + }, -- end of ["asc_r"] + ["BOMBS_SOLENOID_FAULT_LEFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_SOLENOID_FAULT_LEFT", + ["mm"] = 0, + }, -- end of ["BOMBS_SOLENOID_FAULT_LEFT"] + ["sas_yaw_left"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "sas_yaw_left", + ["mm"] = 0, + }, -- end of ["sas_yaw_left"] + ["DEFECTIVE_MECHANISM"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "DEFECTIVE_MECHANISM", + ["mm"] = 0, + }, -- end of ["DEFECTIVE_MECHANISM"] + ["PITOT_HEAT_ELEMENT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "PITOT_HEAT_ELEMENT", + ["mm"] = 0, + }, -- end of ["PITOT_HEAT_ELEMENT"] + ["ILS_FAILURE_ANT_LOCALIZER"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ILS_FAILURE_ANT_LOCALIZER", + ["mm"] = 0, + }, -- end of ["ILS_FAILURE_ANT_LOCALIZER"] + ["AN_ALE_40V_FAILURE_CONTAINER_LEFT_GEAR"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AN_ALE_40V_FAILURE_CONTAINER_LEFT_GEAR", + ["mm"] = 0, + }, -- end of ["AN_ALE_40V_FAILURE_CONTAINER_LEFT_GEAR"] + ["CARBAIR_SHORT_CIRCUIT_BLB"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CARBAIR_SHORT_CIRCUIT_BLB", + ["mm"] = 0, + }, -- end of ["CARBAIR_SHORT_CIRCUIT_BLB"] + ["LEFT_TANK_PUMP_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "LEFT_TANK_PUMP_FAULT", + ["mm"] = 0, + }, -- end of ["LEFT_TANK_PUMP_FAULT"] + ["Surge_RightEngine"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "Surge_RightEngine", + ["mm"] = 0, + }, -- end of ["Surge_RightEngine"] + ["RightEngine_Fire"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["mm"] = 0, + }, -- end of ["RightEngine_Fire"] + ["GUN_FAIL_LEFT_IN_GUN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_FAIL_LEFT_IN_GUN", + ["mm"] = 0, + }, -- end of ["GUN_FAIL_LEFT_IN_GUN"] + ["CADC_FAILURE_TAS"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CADC_FAILURE_TAS", + ["mm"] = 0, + }, -- end of ["CADC_FAILURE_TAS"] + ["STARTER_SOL_SHORT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "STARTER_SOL_SHORT", + ["mm"] = 0, + }, -- end of ["STARTER_SOL_SHORT"] + ["asc_p"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "asc_p", + ["mm"] = 0, + }, -- end of ["asc_p"] + ["BOMBS_ARMING_BROKEN_SOLENOID_LEFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_ARMING_BROKEN_SOLENOID_LEFT", + ["mm"] = 0, + }, -- end of ["BOMBS_ARMING_BROKEN_SOLENOID_LEFT"] + ["GUN_LEFT_IN_AMMUN_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_LEFT_IN_AMMUN_FAULT", + ["mm"] = 0, + }, -- end of ["GUN_LEFT_IN_AMMUN_FAULT"] + ["PUMP_RELIEF_VALVE_SCREEN_CLOGGED"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "PUMP_RELIEF_VALVE_SCREEN_CLOGGED", + ["mm"] = 0, + }, -- end of ["PUMP_RELIEF_VALVE_SCREEN_CLOGGED"] + ["abris_hardware"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "abris_hardware", + ["mm"] = 0, + }, -- end of ["abris_hardware"] + ["EEC_Failure_LeftEngine"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "EEC_Failure_LeftEngine", + ["mm"] = 0, + }, -- end of ["EEC_Failure_LeftEngine"] + ["COMPASS_POINTER_PULLS"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COMPASS_POINTER_PULLS", + ["mm"] = 0, + }, -- end of ["COMPASS_POINTER_PULLS"] + ["GUN_RIGHT_OUT_OPEN_CIRCUIT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_RIGHT_OUT_OPEN_CIRCUIT", + ["mm"] = 0, + }, -- end of ["GUN_RIGHT_OUT_OPEN_CIRCUIT"] + ["VHF_SHORTED_CTL_BOX"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "VHF_SHORTED_CTL_BOX", + ["mm"] = 0, + }, -- end of ["VHF_SHORTED_CTL_BOX"] + ["CLOCK_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CLOCK_FAILURE", + ["mm"] = 0, + }, -- end of ["CLOCK_FAILURE"] + ["BOMBS_ARMING_BROKEN_WIRING_LEFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_ARMING_BROKEN_WIRING_LEFT", + ["mm"] = 0, + }, -- end of ["BOMBS_ARMING_BROKEN_WIRING_LEFT"] + ["OIL_RADIATOR_WIRING"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "OIL_RADIATOR_WIRING", + ["mm"] = 0, + }, -- end of ["OIL_RADIATOR_WIRING"] + ["IGNITION_NO_OUTPUT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "IGNITION_NO_OUTPUT", + ["mm"] = 0, + }, -- end of ["IGNITION_NO_OUTPUT"] + ["AAR_47_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AAR_47_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["AAR_47_FAILURE_TOTAL"] + ["PILOT_KILLED_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "PILOT_KILLED_FAILURE", + ["mm"] = 0, + }, -- end of ["PILOT_KILLED_FAILURE"] + ["BOMBS_ARMING_BROKEN_WIRING_RIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_ARMING_BROKEN_WIRING_RIGHT", + ["mm"] = 0, + }, -- end of ["BOMBS_ARMING_BROKEN_WIRING_RIGHT"] + ["VHF_VT_BURNED_OUT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "VHF_VT_BURNED_OUT", + ["mm"] = 0, + }, -- end of ["VHF_VT_BURNED_OUT"] + ["COMPASS_ERRATIC_OPERATION"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COMPASS_ERRATIC_OPERATION", + ["mm"] = 0, + }, -- end of ["COMPASS_ERRATIC_OPERATION"] + ["asc_a"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "asc_a", + ["mm"] = 0, + }, -- end of ["asc_a"] + ["AIRSPEED_INDICATOR_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AIRSPEED_INDICATOR_FAILURE", + ["mm"] = 0, + }, -- end of ["AIRSPEED_INDICATOR_FAILURE"] + ["GUN_LEFT_CENTER_BARREL_WORN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_LEFT_CENTER_BARREL_WORN", + ["mm"] = 0, + }, -- end of ["GUN_LEFT_CENTER_BARREL_WORN"] + ["TURNIND_POINTER_VIBRATES"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TURNIND_POINTER_VIBRATES", + ["mm"] = 0, + }, -- end of ["TURNIND_POINTER_VIBRATES"] + ["GUN_FAIL_LEFT_OUT_GUN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_FAIL_LEFT_OUT_GUN", + ["mm"] = 0, + }, -- end of ["GUN_FAIL_LEFT_OUT_GUN"] + ["PUMP_FAILS"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "PUMP_FAILS", + ["mm"] = 0, + }, -- end of ["PUMP_FAILS"] + ["ROCKETS_INTERVALOMETER_WIRING"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ROCKETS_INTERVALOMETER_WIRING", + ["mm"] = 0, + }, -- end of ["ROCKETS_INTERVALOMETER_WIRING"] + ["GUN_RIGHT_OUT_AMMUN_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_RIGHT_OUT_AMMUN_FAULT", + ["mm"] = 0, + }, -- end of ["GUN_RIGHT_OUT_AMMUN_FAULT"] + ["GUN_RIGHT_IN_AMMUN_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_RIGHT_IN_AMMUN_FAULT", + ["mm"] = 0, + }, -- end of ["GUN_RIGHT_IN_AMMUN_FAULT"] + ["D2_LEFT_CYLINDER"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "D2_LEFT_CYLINDER", + ["mm"] = 0, + }, -- end of ["D2_LEFT_CYLINDER"] + ["Surge_LeftEngine"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "Surge_LeftEngine", + ["mm"] = 0, + }, -- end of ["Surge_LeftEngine"] + ["BOMBS_RUST_LEFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_RUST_LEFT", + ["mm"] = 0, + }, -- end of ["BOMBS_RUST_LEFT"] + ["GUN_RIGHT_CENTER_BARREL_WORN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_RIGHT_CENTER_BARREL_WORN", + ["mm"] = 0, + }, -- end of ["GUN_RIGHT_CENTER_BARREL_WORN"] + ["INSUF_FUEL_PRES"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "INSUF_FUEL_PRES", + ["mm"] = 0, + }, -- end of ["INSUF_FUEL_PRES"] + ["COMPASS_NO_TORQUE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COMPASS_NO_TORQUE", + ["mm"] = 0, + }, -- end of ["COMPASS_NO_TORQUE"] + ["COOLANT_BREAK_BULB"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COOLANT_BREAK_BULB", + ["mm"] = 0, + }, -- end of ["COOLANT_BREAK_BULB"] + ["PROP_GOVERNOR"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "PROP_GOVERNOR", + ["mm"] = 0, + }, -- end of ["PROP_GOVERNOR"] + ["MANIFOLD_SHIFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "MANIFOLD_SHIFT", + ["mm"] = 0, + }, -- end of ["MANIFOLD_SHIFT"] + ["RIGHT_GUNNER_KILLED_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "RIGHT_GUNNER_KILLED_FAILURE", + ["mm"] = 0, + }, -- end of ["RIGHT_GUNNER_KILLED_FAILURE"] + ["UNLOAD_VALVE_NOT_UNLOAD"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "UNLOAD_VALVE_NOT_UNLOAD", + ["mm"] = 0, + }, -- end of ["UNLOAD_VALVE_NOT_UNLOAD"] + ["STARTER_BURNOUT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "STARTER_BURNOUT", + ["mm"] = 0, + }, -- end of ["STARTER_BURNOUT"] + ["UNLOAD_VALVE_NOT_LOAD"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "UNLOAD_VALVE_NOT_LOAD", + ["mm"] = 0, + }, -- end of ["UNLOAD_VALVE_NOT_LOAD"] + ["TURNIND_INCORRECT_SENS_VAC_LOW"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TURNIND_INCORRECT_SENS_VAC_LOW", + ["mm"] = 0, + }, -- end of ["TURNIND_INCORRECT_SENS_VAC_LOW"] + ["Failure_LeftEngine"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "Failure_LeftEngine", + ["mm"] = 0, + }, -- end of ["Failure_LeftEngine"] + ["GUN_RIGHT_IN_BARREL_WORN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_RIGHT_IN_BARREL_WORN", + ["mm"] = 0, + }, -- end of ["GUN_RIGHT_IN_BARREL_WORN"] + ["K14_MOV_LAMP_DEFECTIVE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "K14_MOV_LAMP_DEFECTIVE", + ["mm"] = 0, + }, -- end of ["K14_MOV_LAMP_DEFECTIVE"] + ["ILS_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ILS_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["ILS_FAILURE_TOTAL"] + ["GUN_RIGHT_OUT_BARREL_WORN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_RIGHT_OUT_BARREL_WORN", + ["mm"] = 0, + }, -- end of ["GUN_RIGHT_OUT_BARREL_WORN"] + ["fuel_sys_transfer_pumps"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "fuel_sys_transfer_pumps", + ["mm"] = 0, + }, -- end of ["fuel_sys_transfer_pumps"] + ["PITOT_HEAT_WIRING"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "PITOT_HEAT_WIRING", + ["mm"] = 0, + }, -- end of ["PITOT_HEAT_WIRING"] + ["TURNIND_POINTER_NOT_SET_ZERO"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TURNIND_POINTER_NOT_SET_ZERO", + ["mm"] = 0, + }, -- end of ["TURNIND_POINTER_NOT_SET_ZERO"] + ["MD1_GYRO_TOTAL_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "MD1_GYRO_TOTAL_FAILURE", + ["mm"] = 0, + }, -- end of ["MD1_GYRO_TOTAL_FAILURE"] + ["VHF_FM_RADIO_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "VHF_FM_RADIO_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["VHF_FM_RADIO_FAILURE_TOTAL"] + ["RIGHT_MFCD_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "RIGHT_MFCD_FAILURE", + ["mm"] = 0, + }, -- end of ["RIGHT_MFCD_FAILURE"] + ["F2_BOTTOM_CYLINDER"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "F2_BOTTOM_CYLINDER", + ["mm"] = 0, + }, -- end of ["F2_BOTTOM_CYLINDER"] + ["LEFT_WING_TANK_LEAK"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "LEFT_WING_TANK_LEAK", + ["mm"] = 0, + }, -- end of ["LEFT_WING_TANK_LEAK"] + ["CARBAIR_BREAK_LEADS"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CARBAIR_BREAK_LEADS", + ["mm"] = 0, + }, -- end of ["CARBAIR_BREAK_LEADS"] + ["GUN_LEFT_IN_OPEN_CIRCUIT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_LEFT_IN_OPEN_CIRCUIT", + ["mm"] = 0, + }, -- end of ["GUN_LEFT_IN_OPEN_CIRCUIT"] + ["EGI_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "EGI_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["EGI_FAILURE_TOTAL"] + ["UHF_RADIO_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "UHF_RADIO_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["UHF_RADIO_FAILURE_TOTAL"] + ["GUN_RIGHT_CENTER_AMMUN_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_RIGHT_CENTER_AMMUN_FAULT", + ["mm"] = 0, + }, -- end of ["GUN_RIGHT_CENTER_AMMUN_FAULT"] + ["LEFT_GUNNER_KILLED_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "LEFT_GUNNER_KILLED_FAILURE", + ["mm"] = 0, + }, -- end of ["LEFT_GUNNER_KILLED_FAILURE"] + ["VHF_VT207_DEFECTIVE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "VHF_VT207_DEFECTIVE", + ["mm"] = 0, + }, -- end of ["VHF_VT207_DEFECTIVE"] + ["RightEngine_LowOilPressure"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "RightEngine_LowOilPressure", + ["mm"] = 0, + }, -- end of ["RightEngine_LowOilPressure"] + ["radar"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "radar", + ["mm"] = 0, + }, -- end of ["radar"] + ["RIGHT_TANK_PUMP_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "RIGHT_TANK_PUMP_FAULT", + ["mm"] = 0, + }, -- end of ["RIGHT_TANK_PUMP_FAULT"] + ["COOLANT_UNPRES"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COOLANT_UNPRES", + ["mm"] = 0, + }, -- end of ["COOLANT_UNPRES"] + ["ARN_82_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ARN_82_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["ARN_82_FAILURE_TOTAL"] + ["FLEX_S_NO_POWER_SUPPLY"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "FLEX_S_NO_POWER_SUPPLY", + ["mm"] = 0, + }, -- end of ["FLEX_S_NO_POWER_SUPPLY"] + ["eos"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "eos", + ["mm"] = 0, + }, -- end of ["eos"] + ["HYDRO_LOW_AIR_PRESSURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "HYDRO_LOW_AIR_PRESSURE", + ["mm"] = 0, + }, -- end of ["HYDRO_LOW_AIR_PRESSURE"] + ["K14_MOTOR_DEFECTIVE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "K14_MOTOR_DEFECTIVE", + ["mm"] = 0, + }, -- end of ["K14_MOTOR_DEFECTIVE"] + ["GENERATOR_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GENERATOR_FAULT", + ["mm"] = 0, + }, -- end of ["GENERATOR_FAULT"] + ["FUEL_PUMP_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "FUEL_PUMP_FAILURE", + ["mm"] = 0, + }, -- end of ["FUEL_PUMP_FAILURE"] + ["RADAR_ALTIMETR_LEFT_ANT_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "RADAR_ALTIMETR_LEFT_ANT_FAILURE", + ["mm"] = 0, + }, -- end of ["RADAR_ALTIMETR_LEFT_ANT_FAILURE"] + ["hydro"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "hydro", + ["mm"] = 0, + }, -- end of ["hydro"] + ["BAT_SOLENOID_DEFECTIVE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BAT_SOLENOID_DEFECTIVE", + ["mm"] = 0, + }, -- end of ["BAT_SOLENOID_DEFECTIVE"] + ["LeftEngine_Fire"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["mm"] = 0, + }, -- end of ["LeftEngine_Fire"] + ["SUPERCHARGER_LIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "SUPERCHARGER_LIGHT", + ["mm"] = 0, + }, -- end of ["SUPERCHARGER_LIGHT"] + ["L_GEAR_UPL_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "L_GEAR_UPL_FAULT", + ["mm"] = 0, + }, -- end of ["L_GEAR_UPL_FAULT"] + ["fs_damage_right_cell_boost_pump"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "fs_damage_right_cell_boost_pump", + ["mm"] = 0, + }, -- end of ["fs_damage_right_cell_boost_pump"] + ["TACH_RESISTANCE_ADJ"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TACH_RESISTANCE_ADJ", + ["mm"] = 0, + }, -- end of ["TACH_RESISTANCE_ADJ"] + ["MAGNETO_1"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "MAGNETO_1", + ["mm"] = 0, + }, -- end of ["MAGNETO_1"] + ["BOMBS_NO_VOLATAGE_AT_RACK_RIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_NO_VOLATAGE_AT_RACK_RIGHT", + ["mm"] = 0, + }, -- end of ["BOMBS_NO_VOLATAGE_AT_RACK_RIGHT"] + ["GUN_RIGHT_OUT_MOUNT_LOOSE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_RIGHT_OUT_MOUNT_LOOSE", + ["mm"] = 0, + }, -- end of ["GUN_RIGHT_OUT_MOUNT_LOOSE"] + ["TailReductor_ShaveInOil"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TailReductor_ShaveInOil", + ["mm"] = 0, + }, -- end of ["TailReductor_ShaveInOil"] + ["R_GEAR_UPL_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "R_GEAR_UPL_FAULT", + ["mm"] = 0, + }, -- end of ["R_GEAR_UPL_FAULT"] + ["BOMBS_TRAIN_DEFECTIVE_WIRING"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_TRAIN_DEFECTIVE_WIRING", + ["mm"] = 0, + }, -- end of ["BOMBS_TRAIN_DEFECTIVE_WIRING"] + ["autopilot"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "autopilot", + ["mm"] = 0, + }, -- end of ["autopilot"] + ["BOMBS_TRAIN_DEFECTIVE_SWITCH"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_TRAIN_DEFECTIVE_SWITCH", + ["mm"] = 0, + }, -- end of ["BOMBS_TRAIN_DEFECTIVE_SWITCH"] + ["CARBAIR_SHORT_CIRCUIT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CARBAIR_SHORT_CIRCUIT", + ["mm"] = 0, + }, -- end of ["CARBAIR_SHORT_CIRCUIT"] + ["STARTER_RELAY"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "STARTER_RELAY", + ["mm"] = 0, + }, -- end of ["STARTER_RELAY"] + ["AN_ALE_40V_FAILURE_CONTAINER_RIGHT_WING"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AN_ALE_40V_FAILURE_CONTAINER_RIGHT_WING", + ["mm"] = 0, + }, -- end of ["AN_ALE_40V_FAILURE_CONTAINER_RIGHT_WING"] + ["TACAN_FAILURE_RECEIVER"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TACAN_FAILURE_RECEIVER", + ["mm"] = 0, + }, -- end of ["TACAN_FAILURE_RECEIVER"] + ["GUN_RIGHT_IN_MOUNT_LOOSE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_RIGHT_IN_MOUNT_LOOSE", + ["mm"] = 0, + }, -- end of ["GUN_RIGHT_IN_MOUNT_LOOSE"] + ["LEFT_MFCD_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "LEFT_MFCD_FAILURE", + ["mm"] = 0, + }, -- end of ["LEFT_MFCD_FAILURE"] + ["sas_yaw_right"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "sas_yaw_right", + ["mm"] = 0, + }, -- end of ["sas_yaw_right"] + ["DOORS_TVC_BROKEN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "DOORS_TVC_BROKEN", + ["mm"] = 0, + }, -- end of ["DOORS_TVC_BROKEN"] + ["SADL_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "SADL_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["SADL_FAILURE_TOTAL"] + ["fs_damage_left_cell_boost_pump"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "fs_damage_left_cell_boost_pump", + ["mm"] = 0, + }, -- end of ["fs_damage_left_cell_boost_pump"] + ["BOOST_REG"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOOST_REG", + ["mm"] = 0, + }, -- end of ["BOOST_REG"] + ["r_conv"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "r_conv", + ["mm"] = 0, + }, -- end of ["r_conv"] + ["ENGINE_JAM"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ENGINE_JAM", + ["mm"] = 0, + }, -- end of ["ENGINE_JAM"] + ["MAGNETO_2"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "MAGNETO_2", + ["mm"] = 0, + }, -- end of ["MAGNETO_2"] + ["SAR_1_95"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "SAR_1_95", + ["mm"] = 0, + }, -- end of ["SAR_1_95"] + ["BOMBS_SOLENOID_FAULT_RIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_SOLENOID_FAULT_RIGHT", + ["mm"] = 0, + }, -- end of ["BOMBS_SOLENOID_FAULT_RIGHT"] + ["CDU_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CDU_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["CDU_FAILURE_TOTAL"] + ["AN_ALR69V_FAILURE_SENSOR_NOSE_RIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AN_ALR69V_FAILURE_SENSOR_NOSE_RIGHT", + ["mm"] = 0, + }, -- end of ["AN_ALR69V_FAILURE_SENSOR_NOSE_RIGHT"] + ["TAIL_GEAR_C_CABLE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TAIL_GEAR_C_CABLE", + ["mm"] = 0, + }, -- end of ["TAIL_GEAR_C_CABLE"] + ["STARTER_WIRING"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "STARTER_WIRING", + ["mm"] = 0, + }, -- end of ["STARTER_WIRING"] + ["engine_driveshaft_failure"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "engine_driveshaft_failure", + ["mm"] = 0, + }, -- end of ["engine_driveshaft_failure"] + ["PUMP_RELIEF_VALVE_LEAKS"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "PUMP_RELIEF_VALVE_LEAKS", + ["mm"] = 0, + }, -- end of ["PUMP_RELIEF_VALVE_LEAKS"] + ["HUD_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "HUD_FAILURE", + ["mm"] = 0, + }, -- end of ["HUD_FAILURE"] + ["mfd"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "mfd", + ["mm"] = 0, + }, -- end of ["mfd"] + ["CARBAIR_GND_LEAD"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CARBAIR_GND_LEAD", + ["mm"] = 0, + }, -- end of ["CARBAIR_GND_LEAD"] + ["GMC_MAGN_COMP_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GMC_MAGN_COMP_FAILURE", + ["mm"] = 0, + }, -- end of ["GMC_MAGN_COMP_FAILURE"] + ["es_damage_GeneratorLeft"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "es_damage_GeneratorLeft", + ["mm"] = 0, + }, -- end of ["es_damage_GeneratorLeft"] + ["ILS_FAILURE_ANT_GLIDESLOPE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ILS_FAILURE_ANT_GLIDESLOPE", + ["mm"] = 0, + }, -- end of ["ILS_FAILURE_ANT_GLIDESLOPE"] + ["engine_chip"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "engine_chip", + ["mm"] = 0, + }, -- end of ["engine_chip"] + ["GUN_LEFT_CENTER_AMMUN_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_LEFT_CENTER_AMMUN_FAULT", + ["mm"] = 0, + }, -- end of ["GUN_LEFT_CENTER_AMMUN_FAULT"] + ["CADC_FAILURE_MACH"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CADC_FAILURE_MACH", + ["mm"] = 0, + }, -- end of ["CADC_FAILURE_MACH"] + ["ROCKETS_DEFECTIVE_WIRING"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ROCKETS_DEFECTIVE_WIRING", + ["mm"] = 0, + }, -- end of ["ROCKETS_DEFECTIVE_WIRING"] + ["COPILOT_GYRO_TOTAL_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COPILOT_GYRO_TOTAL_FAILURE", + ["mm"] = 0, + }, -- end of ["COPILOT_GYRO_TOTAL_FAILURE"] + ["RightEngine_ShaveInOil"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "RightEngine_ShaveInOil", + ["mm"] = 0, + }, -- end of ["RightEngine_ShaveInOil"] + ["EEC_Failure_RightEngine"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "EEC_Failure_RightEngine", + ["mm"] = 0, + }, -- end of ["EEC_Failure_RightEngine"] + ["laser_failure"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "laser_failure", + ["mm"] = 0, + }, -- end of ["laser_failure"] + ["AN_ALE_40V_FAILURE_CONTAINER_RIGHT_GEAR"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AN_ALE_40V_FAILURE_CONTAINER_RIGHT_GEAR", + ["mm"] = 0, + }, -- end of ["AN_ALE_40V_FAILURE_CONTAINER_RIGHT_GEAR"] + ["BOMBS_NO_VOLATAGE_BOTH"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_NO_VOLATAGE_BOTH", + ["mm"] = 0, + }, -- end of ["BOMBS_NO_VOLATAGE_BOTH"] + ["COOLANT_RADIATOR_WIRING"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COOLANT_RADIATOR_WIRING", + ["mm"] = 0, + }, -- end of ["COOLANT_RADIATOR_WIRING"] + ["COPILOT_KILLED_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COPILOT_KILLED_FAILURE", + ["mm"] = 0, + }, -- end of ["COPILOT_KILLED_FAILURE"] + ["CICU_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CICU_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["CICU_FAILURE_TOTAL"] + ["TURNIND_INCORRECT_SENS_VAC_HIGH"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TURNIND_INCORRECT_SENS_VAC_HIGH", + ["mm"] = 0, + }, -- end of ["TURNIND_INCORRECT_SENS_VAC_HIGH"] + ["BATTERY_OVERHEAT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BATTERY_OVERHEAT", + ["mm"] = 0, + }, -- end of ["BATTERY_OVERHEAT"] + ["NOSE_AIRSPEED_INDICATOR_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "NOSE_AIRSPEED_INDICATOR_FAILURE", + ["mm"] = 0, + }, -- end of ["NOSE_AIRSPEED_INDICATOR_FAILURE"] + ["CARBAIR_SHORT_CIRCUIT_LEADS"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CARBAIR_SHORT_CIRCUIT_LEADS", + ["mm"] = 0, + }, -- end of ["CARBAIR_SHORT_CIRCUIT_LEADS"] + ["Failure_RightEngine"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "Failure_RightEngine", + ["mm"] = 0, + }, -- end of ["Failure_RightEngine"] + ["asc"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "asc", + ["mm"] = 0, + }, -- end of ["asc"] + ["CADC_FAILURE_IAS"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CADC_FAILURE_IAS", + ["mm"] = 0, + }, -- end of ["CADC_FAILURE_IAS"] + ["ARN_83_ADF_DAMAGE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ARN_83_ADF_DAMAGE", + ["mm"] = 0, + }, -- end of ["ARN_83_ADF_DAMAGE"] + ["ARN_83_TOTAL_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ARN_83_TOTAL_FAILURE", + ["mm"] = 0, + }, -- end of ["ARN_83_TOTAL_FAILURE"] + ["GMC_TOTAL_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GMC_TOTAL_FAILURE", + ["mm"] = 0, + }, -- end of ["GMC_TOTAL_FAILURE"] + ["BOMBS_ARMING_NO_VOLATAGE_LEFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_ARMING_NO_VOLATAGE_LEFT", + ["mm"] = 0, + }, -- end of ["BOMBS_ARMING_NO_VOLATAGE_LEFT"] + ["STARTER_SOLENOID"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "STARTER_SOLENOID", + ["mm"] = 0, + }, -- end of ["STARTER_SOLENOID"] + ["TACH_BREAK_CIRCUIT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TACH_BREAK_CIRCUIT", + ["mm"] = 0, + }, -- end of ["TACH_BREAK_CIRCUIT"] + ["hydro_main_irreversible_valve"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "hydro_main_irreversible_valve", + ["mm"] = 0, + }, -- end of ["hydro_main_irreversible_valve"] + ["TAIL_GEAR_D_LOCK"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TAIL_GEAR_D_LOCK", + ["mm"] = 0, + }, -- end of ["TAIL_GEAR_D_LOCK"] + ["hud"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "hud", + ["mm"] = 0, + }, -- end of ["hud"] + ["INT_HYDRO_LEAK"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "INT_HYDRO_LEAK", + ["mm"] = 0, + }, -- end of ["INT_HYDRO_LEAK"] + ["BOMBS_DAMAGE_ELINKAGE_LEFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_DAMAGE_ELINKAGE_LEFT", + ["mm"] = 0, + }, -- end of ["BOMBS_DAMAGE_ELINKAGE_LEFT"] + ["SAR_1_2_95"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "SAR_1_2_95", + ["mm"] = 0, + }, -- end of ["SAR_1_2_95"] + ["fuel_sys_left_transfer_pump"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "fuel_sys_left_transfer_pump", + ["mm"] = 0, + }, -- end of ["fuel_sys_left_transfer_pump"] + ["LeftEngine_LowOilPressure"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "LeftEngine_LowOilPressure", + ["mm"] = 0, + }, -- end of ["LeftEngine_LowOilPressure"] + ["FAULTY_ROCKET_LEFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "FAULTY_ROCKET_LEFT", + ["mm"] = 0, + }, -- end of ["FAULTY_ROCKET_LEFT"] + ["es_damage_MainGenerator"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "es_damage_MainGenerator", + ["mm"] = 0, + }, -- end of ["es_damage_MainGenerator"] + ["TGP_FAILURE_RIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TGP_FAILURE_RIGHT", + ["mm"] = 0, + }, -- end of ["TGP_FAILURE_RIGHT"] + ["TGP_FAILURE_LEFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TGP_FAILURE_LEFT", + ["mm"] = 0, + }, -- end of ["TGP_FAILURE_LEFT"] + ["es_damage_StarterGenerator"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "es_damage_StarterGenerator", + ["mm"] = 0, + }, -- end of ["es_damage_StarterGenerator"] + ["es_damage_Battery"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "es_damage_Battery", + ["mm"] = 0, + }, -- end of ["es_damage_Battery"] + ["ILS_FAILURE_ANT_MARKER"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ILS_FAILURE_ANT_MARKER", + ["mm"] = 0, + }, -- end of ["ILS_FAILURE_ANT_MARKER"] + ["VHF_CRYSTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "VHF_CRYSTAL", + ["mm"] = 0, + }, -- end of ["VHF_CRYSTAL"] + ["GUN_LEFT_OUT_BARREL_WORN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_LEFT_OUT_BARREL_WORN", + ["mm"] = 0, + }, -- end of ["GUN_LEFT_OUT_BARREL_WORN"] + ["TACH_POOR_CONNECTION"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TACH_POOR_CONNECTION", + ["mm"] = 0, + }, -- end of ["TACH_POOR_CONNECTION"] + ["sas_pitch_right"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "sas_pitch_right", + ["mm"] = 0, + }, -- end of ["sas_pitch_right"] + ["BOMBS_NO_VOLATAGE_AT_RACK_LEFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_NO_VOLATAGE_AT_RACK_LEFT", + ["mm"] = 0, + }, -- end of ["BOMBS_NO_VOLATAGE_AT_RACK_LEFT"] + ["CADC_FAILURE_DYNAMIC"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CADC_FAILURE_DYNAMIC", + ["mm"] = 0, + }, -- end of ["CADC_FAILURE_DYNAMIC"] + ["GUN_LEFT_CENTER_OPEN_CIRCUIT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_LEFT_CENTER_OPEN_CIRCUIT", + ["mm"] = 0, + }, -- end of ["GUN_LEFT_CENTER_OPEN_CIRCUIT"] + ["VHF_AM_RADIO_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "VHF_AM_RADIO_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["VHF_AM_RADIO_FAILURE_TOTAL"] + ["main_reductor_chip"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "main_reductor_chip", + ["mm"] = 0, + }, -- end of ["main_reductor_chip"] + ["VHF_SQUELCH_RELAY"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "VHF_SQUELCH_RELAY", + ["mm"] = 0, + }, -- end of ["VHF_SQUELCH_RELAY"] + ["MainReductor_LowOilPressure"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "MainReductor_LowOilPressure", + ["mm"] = 0, + }, -- end of ["MainReductor_LowOilPressure"] + ["SAR_1_101"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "SAR_1_101", + ["mm"] = 0, + }, -- end of ["SAR_1_101"] + ["F2_TOP_CYLINDER"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "F2_TOP_CYLINDER", + ["mm"] = 0, + }, -- end of ["F2_TOP_CYLINDER"] + ["FLEX_S_MAIN_LAMP_DEFECTIVE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "FLEX_S_MAIN_LAMP_DEFECTIVE", + ["mm"] = 0, + }, -- end of ["FLEX_S_MAIN_LAMP_DEFECTIVE"] + ["MANIFOLD_LINE_LEAK"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "MANIFOLD_LINE_LEAK", + ["mm"] = 0, + }, -- end of ["MANIFOLD_LINE_LEAK"] + ["RIGHT_WING_TANK_LEAK"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "RIGHT_WING_TANK_LEAK", + ["mm"] = 0, + }, -- end of ["RIGHT_WING_TANK_LEAK"] + ["CADC_FAILURE_PRESSURE_ALT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CADC_FAILURE_PRESSURE_ALT", + ["mm"] = 0, + }, -- end of ["CADC_FAILURE_PRESSURE_ALT"] + ["K14_NO_POWER_SUPPLY"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "K14_NO_POWER_SUPPLY", + ["mm"] = 0, + }, -- end of ["K14_NO_POWER_SUPPLY"] + ["BOMBS_DAMAGE_ELINKAGE_RIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_DAMAGE_ELINKAGE_RIGHT", + ["mm"] = 0, + }, -- end of ["BOMBS_DAMAGE_ELINKAGE_RIGHT"] + ["GUN_LEFT_CENTER_MOUNT_LOOSE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_LEFT_CENTER_MOUNT_LOOSE", + ["mm"] = 0, + }, -- end of ["GUN_LEFT_CENTER_MOUNT_LOOSE"] + ["BOMBS_DAMAGE_LINKAGE_RIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_DAMAGE_LINKAGE_RIGHT", + ["mm"] = 0, + }, -- end of ["BOMBS_DAMAGE_LINKAGE_RIGHT"] + ["fs_damage_engine_pump"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "fs_damage_engine_pump", + ["mm"] = 0, + }, -- end of ["fs_damage_engine_pump"] + ["es_damage_GeneratorRight"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "es_damage_GeneratorRight", + ["mm"] = 0, + }, -- end of ["es_damage_GeneratorRight"] + ["CADC_FAILURE_STATIC"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CADC_FAILURE_STATIC", + ["mm"] = 0, + }, -- end of ["CADC_FAILURE_STATIC"] + ["CADC_FAILURE_BARO_ALT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CADC_FAILURE_BARO_ALT", + ["mm"] = 0, + }, -- end of ["CADC_FAILURE_BARO_ALT"] + ["GUN_RIGHT_CENTER_OPEN_CIRCUIT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_RIGHT_CENTER_OPEN_CIRCUIT", + ["mm"] = 0, + }, -- end of ["GUN_RIGHT_CENTER_OPEN_CIRCUIT"] + ["IFFCC_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "IFFCC_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["IFFCC_FAILURE_TOTAL"] + ["sas_pitch_left"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "sas_pitch_left", + ["mm"] = 0, + }, -- end of ["sas_pitch_left"] + ["abris_software"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "abris_software", + ["mm"] = 0, + }, -- end of ["abris_software"] + ["ROOF_AIRSPEED_INDICATOR_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ROOF_AIRSPEED_INDICATOR_FAILURE", + ["mm"] = 0, + }, -- end of ["ROOF_AIRSPEED_INDICATOR_FAILURE"] + ["engine_surge_failure"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "engine_surge_failure", + ["mm"] = 0, + }, -- end of ["engine_surge_failure"] + ["GUN_FAIL_RIGHT_IN_GUN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_FAIL_RIGHT_IN_GUN", + ["mm"] = 0, + }, -- end of ["GUN_FAIL_RIGHT_IN_GUN"] + ["EXT_HYDRO_LEAK"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "EXT_HYDRO_LEAK", + ["mm"] = 0, + }, -- end of ["EXT_HYDRO_LEAK"] + ["BOMBS_ARMING_BROKEN_SOLENOID_RIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_ARMING_BROKEN_SOLENOID_RIGHT", + ["mm"] = 0, + }, -- end of ["BOMBS_ARMING_BROKEN_SOLENOID_RIGHT"] + ["DEFECTIVE_INSTRUMENT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "DEFECTIVE_INSTRUMENT", + ["mm"] = 0, + }, -- end of ["DEFECTIVE_INSTRUMENT"] + ["AN_ALR69V_FAILURE_SENSOR_NOSE_LEFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AN_ALR69V_FAILURE_SENSOR_NOSE_LEFT", + ["mm"] = 0, + }, -- end of ["AN_ALR69V_FAILURE_SENSOR_NOSE_LEFT"] + ["mlws"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "mlws", + ["mm"] = 0, + }, -- end of ["mlws"] + ["BOMBS_ARMING_NO_VOLATAGE_BOTH"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_ARMING_NO_VOLATAGE_BOTH", + ["mm"] = 0, + }, -- end of ["BOMBS_ARMING_NO_VOLATAGE_BOTH"] + ["BAT_SOLENOID_WIRING"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BAT_SOLENOID_WIRING", + ["mm"] = 0, + }, -- end of ["BAT_SOLENOID_WIRING"] + ["STARTER_LOSE_CON"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "STARTER_LOSE_CON", + ["mm"] = 0, + }, -- end of ["STARTER_LOSE_CON"] + ["FUEL_VALVE_LEAK"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "FUEL_VALVE_LEAK", + ["mm"] = 0, + }, -- end of ["FUEL_VALVE_LEAK"] + ["FLEX_S_NO_GUN_SIGN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "FLEX_S_NO_GUN_SIGN", + ["mm"] = 0, + }, -- end of ["FLEX_S_NO_GUN_SIGN"] + ["fuel_sys_right_transfer_pump"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "fuel_sys_right_transfer_pump", + ["mm"] = 0, + }, -- end of ["fuel_sys_right_transfer_pump"] + ["COOLANT_RADIATOR_MOTOR"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COOLANT_RADIATOR_MOTOR", + ["mm"] = 0, + }, -- end of ["COOLANT_RADIATOR_MOTOR"] + ["CARBAIR_OPEN_CIRCUIT_BLB"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CARBAIR_OPEN_CIRCUIT_BLB", + ["mm"] = 0, + }, -- end of ["CARBAIR_OPEN_CIRCUIT_BLB"] + ["AAR_47_FAILURE_SENSOR_TAIL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AAR_47_FAILURE_SENSOR_TAIL", + ["mm"] = 0, + }, -- end of ["AAR_47_FAILURE_SENSOR_TAIL"] + ["GUN_LEFT_OUT_OPEN_CIRCUIT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_LEFT_OUT_OPEN_CIRCUIT", + ["mm"] = 0, + }, -- end of ["GUN_LEFT_OUT_OPEN_CIRCUIT"] + ["TACAN_FAILURE_TRANSMITTER"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TACAN_FAILURE_TRANSMITTER", + ["mm"] = 0, + }, -- end of ["TACAN_FAILURE_TRANSMITTER"] + ["GUN_LEFT_OUT_AMMUN_FAULT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_LEFT_OUT_AMMUN_FAULT", + ["mm"] = 0, + }, -- end of ["GUN_LEFT_OUT_AMMUN_FAULT"] + ["l_gen"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "l_gen", + ["mm"] = 0, + }, -- end of ["l_gen"] + ["ecf"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["mm"] = 0, + }, -- end of ["ecf"] + ["GUN_LEFT_IN_BARREL_WORN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_LEFT_IN_BARREL_WORN", + ["mm"] = 0, + }, -- end of ["GUN_LEFT_IN_BARREL_WORN"] + ["r_gen"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "r_gen", + ["mm"] = 0, + }, -- end of ["r_gen"] + ["l_conv"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "l_conv", + ["mm"] = 0, + }, -- end of ["l_conv"] + ["AAR_47_FAILURE_SENSOR_RIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AAR_47_FAILURE_SENSOR_RIGHT", + ["mm"] = 0, + }, -- end of ["AAR_47_FAILURE_SENSOR_RIGHT"] + ["ROCKETS_INTERVALOMETER_SEQ"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ROCKETS_INTERVALOMETER_SEQ", + ["mm"] = 0, + }, -- end of ["ROCKETS_INTERVALOMETER_SEQ"] + ["hydro_common"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "hydro_common", + ["mm"] = 0, + }, -- end of ["hydro_common"] + ["SAR_2_95"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "SAR_2_95", + ["mm"] = 0, + }, -- end of ["SAR_2_95"] + ["SAR_2_101"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "SAR_2_101", + ["mm"] = 0, + }, -- end of ["SAR_2_101"] + ["BOOSTER_COIL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOOSTER_COIL", + ["mm"] = 0, + }, -- end of ["BOOSTER_COIL"] + ["RADAR_ALTIMETR_RIGHT_ANT_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "RADAR_ALTIMETR_RIGHT_ANT_FAILURE", + ["mm"] = 0, + }, -- end of ["RADAR_ALTIMETR_RIGHT_ANT_FAILURE"] + ["FAULTY_ROCKET_RIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "FAULTY_ROCKET_RIGHT", + ["mm"] = 0, + }, -- end of ["FAULTY_ROCKET_RIGHT"] + ["GUN_RIGHT_IN_OPEN_CIRCUIT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "GUN_RIGHT_IN_OPEN_CIRCUIT", + ["mm"] = 0, + }, -- end of ["GUN_RIGHT_IN_OPEN_CIRCUIT"] + ["COMPASS_ERRATIC_INDIACATON"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COMPASS_ERRATIC_INDIACATON", + ["mm"] = 0, + }, -- end of ["COMPASS_ERRATIC_INDIACATON"] + ["OIL_DILUTION_SOLENOID"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "OIL_DILUTION_SOLENOID", + ["mm"] = 0, + }, -- end of ["OIL_DILUTION_SOLENOID"] + ["PUMP_SEPARATOR_CLOGGED"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "PUMP_SEPARATOR_CLOGGED", + ["mm"] = 0, + }, -- end of ["PUMP_SEPARATOR_CLOGGED"] + ["hydro_right"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "hydro_right", + ["mm"] = 0, + }, -- end of ["hydro_right"] + ["BOMBS_RUST_RIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_RUST_RIGHT", + ["mm"] = 0, + }, -- end of ["BOMBS_RUST_RIGHT"] + ["CLOGGED_FUEL_STRAINER"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "CLOGGED_FUEL_STRAINER", + ["mm"] = 0, + }, -- end of ["CLOGGED_FUEL_STRAINER"] + ["TransitionalReductor_ShaveInOil"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TransitionalReductor_ShaveInOil", + ["mm"] = 0, + }, -- end of ["TransitionalReductor_ShaveInOil"] + ["r_engine"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "r_engine", + ["mm"] = 0, + }, -- end of ["r_engine"] + ["hydro_left"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "hydro_left", + ["mm"] = 0, + }, -- end of ["hydro_left"] + ["A11_CLOCK_FAILURE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "A11_CLOCK_FAILURE", + ["mm"] = 0, + }, -- end of ["A11_CLOCK_FAILURE"] + ["DOORS_TV_JAMMED"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "DOORS_TV_JAMMED", + ["mm"] = 0, + }, -- end of ["DOORS_TV_JAMMED"] + ["D2_RIGHT_CYLINDER"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "D2_RIGHT_CYLINDER", + ["mm"] = 0, + }, -- end of ["D2_RIGHT_CYLINDER"] + ["ecm"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "ecm", + ["mm"] = 0, + }, -- end of ["ecm"] + ["AN_ALR69V_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AN_ALR69V_FAILURE_TOTAL", + ["mm"] = 0, + }, -- end of ["AN_ALR69V_FAILURE_TOTAL"] + ["SUPERCHARGER_SOLENOID"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "SUPERCHARGER_SOLENOID", + ["mm"] = 0, + }, -- end of ["SUPERCHARGER_SOLENOID"] + ["COOLANT_SHORT_CIRCUIT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COOLANT_SHORT_CIRCUIT", + ["mm"] = 0, + }, -- end of ["COOLANT_SHORT_CIRCUIT"] + ["AN_ALR69V_FAILURE_SENSOR_TAIL_LEFT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AN_ALR69V_FAILURE_SENSOR_TAIL_LEFT", + ["mm"] = 0, + }, -- end of ["AN_ALR69V_FAILURE_SENSOR_TAIL_LEFT"] + ["l_engine"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "l_engine", + ["mm"] = 0, + }, -- end of ["l_engine"] + ["es_damage_SpareInverter"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "es_damage_SpareInverter", + ["mm"] = 0, + }, -- end of ["es_damage_SpareInverter"] + ["AAR_47_FAILURE_SENSOR_BOTTOM"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "AAR_47_FAILURE_SENSOR_BOTTOM", + ["mm"] = 0, + }, -- end of ["AAR_47_FAILURE_SENSOR_BOTTOM"] + ["COOLANT_DEFECTIVE_IND"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COOLANT_DEFECTIVE_IND", + ["mm"] = 0, + }, -- end of ["COOLANT_DEFECTIVE_IND"] + ["COOLANT_RADIATOR_SENSOR"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "COOLANT_RADIATOR_SENSOR", + ["mm"] = 0, + }, -- end of ["COOLANT_RADIATOR_SENSOR"] + ["JADRO_1A_FAILURE_TOTAL"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["mm"] = 0, + }, -- end of ["JADRO_1A_FAILURE_TOTAL"] + ["BOMBS_ARMING_NO_VOLATAGE_RIGHT"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "BOMBS_ARMING_NO_VOLATAGE_RIGHT", + ["mm"] = 0, + }, -- end of ["BOMBS_ARMING_NO_VOLATAGE_RIGHT"] + ["IFFCC_FAILURE_GUN"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "IFFCC_FAILURE_GUN", + ["mm"] = 0, + }, -- end of ["IFFCC_FAILURE_GUN"] + ["APU_Fire"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["mm"] = 0, + }, -- end of ["APU_Fire"] + ["TURNIND_INCORRECT_SENS_DEFECTIVE"] = + { + ["hh"] = 0, + ["prob"] = 100, + ["enable"] = false, + ["mmint"] = 1, + ["id"] = "TURNIND_INCORRECT_SENS_DEFECTIVE", + ["mm"] = 0, + }, -- end of ["TURNIND_INCORRECT_SENS_DEFECTIVE"] + }, -- end of ["failures"] +} -- end of mission diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/options b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/options new file mode 100644 index 000000000..5a2439af7 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/options @@ -0,0 +1,229 @@ +options = +{ + ["playerName"] = "Killer", + ["miscellaneous"] = + { + ["headmove"] = true, + ["TrackIR_external_views"] = true, + ["f5_nearest_ac"] = true, + ["f11_free_camera"] = true, + ["F2_view_effects"] = 2, + ["f10_awacs"] = true, + ["Coordinate_Display"] = "Lat Long", + ["accidental_failures"] = false, + ["force_feedback_enabled"] = true, + ["synchronize_controls"] = false, + ["show_pilot_body"] = true, + }, -- end of ["miscellaneous"] + ["difficulty"] = + { + ["padlock"] = true, + ["labels"] = false, + ["easyCommunication"] = true, + ["easyRadar"] = false, + ["fuel"] = false, + ["miniHUD"] = false, + ["tips"] = true, + ["birds"] = 0, + ["optionsView"] = "optview_all", + ["permitCrash"] = true, + ["immortal"] = false, + ["cockpitStatusBarAllowed"] = false, + ["cockpitVisualRM"] = true, + ["easyFlight"] = false, + ["reports"] = true, + ["hideStick"] = false, + ["radio"] = true, + ["externalViews"] = true, + ["units"] = "metric", + ["userMarks"] = true, + ["cockpitLanguage"] = "english", + ["spectatorExternalViews"] = true, + ["userSnapView"] = true, + ["avionicsLanguage"] = "native", + ["impostors"] = "medium", + ["iconsTheme"] = "nato", + ["map"] = true, + ["weapons"] = false, + ["setGlobal"] = true, + ["geffect"] = "realistic", + }, -- end of ["difficulty"] + ["VR"] = + { + ["use_mouse"] = false, + ["enable"] = true, + ["box_mouse_cursor"] = true, + ["pixel_density"] = 1, + }, -- end of ["VR"] + ["graphics"] = + { + ["OculusRift"] = false, + ["color"] = "32", + ["LensEffects"] = 3, + ["heatBlr"] = 2, + ["scenes"] = "high", + ["water"] = 2, + ["visibRange"] = "High", + ["treesVisibility"] = 25000, + ["aspect"] = 2.5, + ["lights"] = 2, + ["HDR"] = 1, + ["MSAA"] = 2, + ["civTraffic"] = "high", + ["clutterMaxDistance"] = 1500, + ["terrainTextures"] = "max", + ["multiMonitorSetup"] = "1camera", + ["shadowTree"] = true, + ["fullScreen"] = false, + ["disableAero"] = false, + ["DOF"] = 0, + ["clouds"] = 1, + ["flatTerrainShadows"] = 1, + ["cockpitShadows"] = true, + ["height"] = 768, + ["width"] = 1920, + ["shadows"] = 4, + ["TranspSSAA"] = false, + ["sync"] = true, + ["preloadRadius"] = 73885, + ["anisotropy"] = 2, + ["haze"] = 1, + ["textures"] = 2, + ["effects"] = 3, + }, -- end of ["graphics"] + ["plugins"] = + { + ["CA"] = + { + ["kompass_options"] = 1, + ["ground_target_info"] = true, + ["ground_aim_helper"] = true, + ["ground_platform_shake"] = true, + ["ground_automatic"] = true, + }, -- end of ["CA"] + ["M-2000C"] = + { + ["UNI_NODRIFT"] = false, + ["TDC_"] = false, + ["CPLocalList"] = "default", + ["PPA_TOTPAR"] = false, + ["UNI_ALIGNED"] = false, + }, -- end of ["M-2000C"] + ["A-10C"] = + { + ["CPLocalList"] = "default", + }, -- end of ["A-10C"] + ["FC3"] = + { + ["CPLocalList_F-15C"] = "default", + ["CPLocalList_MiG-29S"] = "default", + ["CPLocalList_MiG-29A"] = "default", + ["CPLocalList_Su-25"] = "default", + ["CPLocalList_A-10A"] = "default", + ["CPLocalList_Su-27"] = "chinese", + ["CPLocalList_MiG-29G"] = "default", + ["CPLocalList_Su-33"] = "default", + }, -- end of ["FC3"] + ["Hawk"] = + { + ["CPLocalList"] = "high", + }, -- end of ["Hawk"] + ["P-51D"] = + { + ["assistance"] = 100, + ["CPLocalList"] = "default", + ["autoRudder"] = false, + }, -- end of ["P-51D"] + ["TF-51D"] = + { + ["assistance"] = 100, + ["CPLocalList"] = "default", + ["autoRudder"] = false, + }, -- end of ["TF-51D"] + ["MiG-21Bis"] = + { + ["Engine"] = false, + ["Shake"] = 100, + ["CustomCockpit"] = false, + ["Reticle"] = false, + ["Freeze"] = false, + }, -- end of ["MiG-21Bis"] + ["F-86F"] = + { + ["landSeatAdjustF86"] = true, + ["aiHelper"] = false, + ["CPLocalList"] = "default", + ["NoseWheelSteeringSimpleBehaviourF86"] = true, + ["gunCamera"] = 0, + }, -- end of ["F-86F"] + ["Su-25T"] = + { + ["CPLocalList"] = "default", + }, -- end of ["Su-25T"] + ["Mi-8MTV2"] = + { + ["Mi8TrimmingMethod"] = 0, + ["Mi8AutopilotAdjustment"] = false, + ["gunCamera"] = 0, + ["controlHelperMi8"] = false, + ["weapTooltipsMi8"] = true, + ["Mi8RudderTrimmer"] = false, + ["CPLocalList"] = "default", + ["altMi8TrimmingMethod"] = false, + ["Mi8FOV"] = 120, + }, -- end of ["Mi-8MTV2"] + ["MiG-15bis"] = + { + ["autoLeanToAimMiG15"] = true, + ["CPLocalList"] = "chinese", + ["gunCamera"] = 0, + ["aiHelper"] = false, + }, -- end of ["MiG-15bis"] + ["FW-190D9"] = + { + ["assistance"] = 100, + ["CPLocalList"] = "default", + ["autoRudder"] = false, + }, -- end of ["FW-190D9"] + ["UH-1H"] = + { + ["UHTrackIRAiming"] = true, + ["autoPilot"] = true, + ["UHTrimmingMethod"] = 0, + ["altUHTrimmingMethod"] = false, + ["CPLocalList"] = "default", + ["weapTooltips"] = true, + ["UHRudderTrimmer"] = false, + }, -- end of ["UH-1H"] + ["Ka-50"] = + { + ["altTrimmingMethod"] = false, + ["Ka50RudderTrimmer"] = false, + ["CPLocalList"] = "english", + }, -- end of ["Ka-50"] + }, -- end of ["plugins"] + ["format"] = 1, + ["sound"] = + { + ["hear_in_helmet"] = false, + ["headphones"] = 100, + ["cockpit"] = 100, + ["GBreathEffect"] = true, + ["gui"] = 100, + ["volume"] = 100, + ["radioSpeech"] = true, + ["music"] = 100, + ["subtitles"] = true, + ["world"] = 100, + }, -- end of ["sound"] + ["views"] = + { + ["cockpit"] = + { + ["mirrors"] = false, + ["reflections"] = false, + ["avionics"] = 3, + ["russianHud"] = false, + }, -- end of ["cockpit"] + }, -- end of ["views"] +} -- end of options diff --git a/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/warehouses b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/warehouses new file mode 100644 index 000000000..c46e48604 --- /dev/null +++ b/Moose Test Missions/ESC - Escorting/ESC-001 - Escorting Helicopters/ESC-001 - Escorting Helicopters/warehouses @@ -0,0 +1,845 @@ +warehouses = +{ + ["airports"] = + { + [12] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [12] + [13] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [13] + [14] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "RED", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [14] + [15] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [15] + [16] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [16] + [17] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [17] + [18] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [18] + [19] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [19] + [20] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [20] + [21] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [21] + [22] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [22] + [23] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "BLUE", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [23] + [24] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [24] + [25] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [25] + [26] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [26] + [27] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [27] + [28] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [28] + [29] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [29] + [30] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [30] + [31] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [31] + [32] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "NEUTRAL", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [32] + }, -- end of ["airports"] + ["warehouses"] = + { + [6] = + { + ["gasoline"] = + { + ["InitFuel"] = 100, + }, -- end of ["gasoline"] + ["unlimitedMunitions"] = true, + ["methanol_mixture"] = + { + ["InitFuel"] = 100, + }, -- end of ["methanol_mixture"] + ["OperatingLevel_Air"] = 10, + ["diesel"] = + { + ["InitFuel"] = 100, + }, -- end of ["diesel"] + ["speed"] = 16.666666, + ["size"] = 100, + ["periodicity"] = 30, + ["suppliers"] = + { + }, -- end of ["suppliers"] + ["coalition"] = "red", + ["jet_fuel"] = + { + ["InitFuel"] = 100, + }, -- end of ["jet_fuel"] + ["OperatingLevel_Eqp"] = 10, + ["unlimitedFuel"] = true, + ["aircrafts"] = + { + }, -- end of ["aircrafts"] + ["weapons"] = + { + }, -- end of ["weapons"] + ["OperatingLevel_Fuel"] = 10, + ["unlimitedAircrafts"] = true, + }, -- end of [6] + }, -- end of ["warehouses"] +} -- end of warehouses diff --git a/Moose Test Missions/GRP - Group Commands/GRP-100 - TaskAttackUnit/GRP-100 - TaskAttackUnit.lua b/Moose Test Missions/GRP - Group Commands/GRP-100 - TaskAttackUnit/GRP-100 - TaskAttackUnit.lua new file mode 100644 index 000000000..101ffafee --- /dev/null +++ b/Moose Test Missions/GRP - Group Commands/GRP-100 - TaskAttackUnit/GRP-100 - TaskAttackUnit.lua @@ -0,0 +1,30 @@ +--- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class. + +local HeliGroup = GROUP:FindByName( "Helicopter" ) + +local AttackGroup = GROUP:FindByName( "AttackGroup" ) + +local AttackUnits = AttackGroup:GetUnits() + +local Tasks = {} + +for i = 1, #AttackUnits do + + local AttackUnit = AttackGroup:GetUnit( i ) + Tasks[#Tasks+1] = HeliGroup:TaskAttackUnit( AttackUnit ) +end + +Tasks[#Tasks+1] = HeliGroup:TaskFunction( 1, 7, "_Resume", { "''" } ) + +--- @param Wrapper.Group#GROUP HeliGroup +function _Resume( HeliGroup ) + env.info( '_Resume' ) + + HeliGroup:MessageToAll( "Resuming",10,"Info") +end + +HeliGroup:PushTask( + HeliGroup:TaskCombo( + Tasks + ), 30 +) \ No newline at end of file diff --git a/Moose Test Missions/GRP - Group Commands/GRP-100 - TaskAttackUnit/GRP-100 - TaskAttackUnit.miz b/Moose Test Missions/GRP - Group Commands/GRP-100 - TaskAttackUnit/GRP-100 - TaskAttackUnit.miz new file mode 100644 index 000000000..b73e95b2a Binary files /dev/null and b/Moose Test Missions/GRP - Group Commands/GRP-100 - TaskAttackUnit/GRP-100 - TaskAttackUnit.miz differ diff --git a/Moose Test Missions/MOOSE_Header.lua b/Moose Test Missions/MOOSE_Header.lua new file mode 100644 index 000000000..daaa33103 --- /dev/null +++ b/Moose Test Missions/MOOSE_Header.lua @@ -0,0 +1,14 @@ +--- +-- Name: +-- Author: +-- Date Created: +-- +-- # Situation: +-- +-- . +-- +-- # Test cases: +-- +-- 1. +-- 2. +-- diff --git a/Moose Test Missions/MOOSE_Test_Template.miz b/Moose Test Missions/MOOSE_Template.miz similarity index 100% rename from Moose Test Missions/MOOSE_Test_Template.miz rename to Moose Test Missions/MOOSE_Template.miz diff --git a/docs/Documentation/AI_Balancer.html b/docs/Documentation/AI_Balancer.html index 7b1a36cfe..0d0a13fce 100644 --- a/docs/Documentation/AI_Balancer.html +++ b/docs/Documentation/AI_Balancer.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • diff --git a/docs/Documentation/AI_Cap.html b/docs/Documentation/AI_Cap.html index ec34c1a56..a2e672290 100644 --- a/docs/Documentation/AI_Cap.html +++ b/docs/Documentation/AI_Cap.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • diff --git a/docs/Documentation/AI_Cas.html b/docs/Documentation/AI_Cas.html index a18c40a16..3b11f8e58 100644 --- a/docs/Documentation/AI_Cas.html +++ b/docs/Documentation/AI_Cas.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • @@ -259,7 +259,7 @@ It can be notified to go RTB through the RTB event.

    - AI_CAS_ZONE:Engage() + AI_CAS_ZONE:Engage(EngageSpeed, EngageAltitude, EngageWeaponExpend, EngageAttackQty, EngageDirection)

    Synchronous Event Trigger for Event Engage.

    @@ -331,7 +331,7 @@ It can be notified to go RTB through the RTB event.

    - AI_CAS_ZONE:OnAfterEngage(Controllable, From, Event, To, EngageSpeed, EngageWeaponExpend, EngageAltitude, EngageAttackQty, EngageDirection) + AI_CAS_ZONE:OnAfterEngage(Controllable, From, Event, To)

    OnAfter Transition Handler for Event Engage.

    @@ -361,7 +361,7 @@ It can be notified to go RTB through the RTB event.

    - AI_CAS_ZONE:OnBeforeEngage(Controllable, From, Event, To, EngageSpeed, EngageWeaponExpend, EngageAltitude, EngageAttackQty, EngageDirection) + AI_CAS_ZONE:OnBeforeEngage(Controllable, From, Event, To)

    OnBefore Transition Handler for Event Engage.

    @@ -421,7 +421,7 @@ It can be notified to go RTB through the RTB event.

    - AI_CAS_ZONE:__Engage(Delay) + AI_CAS_ZONE:__Engage(Delay, EngageSpeed, EngageAltitude, EngageWeaponExpend, EngageAttackQty, EngageDirection)

    Asynchronous Event Trigger for Event Engage.

    @@ -445,7 +445,7 @@ It can be notified to go RTB through the RTB event.

    - AI_CAS_ZONE:onafterEngage(Controllable, From, Event, To, EngageSpeed, EngageWeaponExpend, EngageAltitude, EngageAttackQty, EngageDirection) + AI_CAS_ZONE:onafterEngage(Controllable, From, Event, To, EngageSpeed, EngageAltitude, EngageWeaponExpend, EngageAttackQty, EngageDirection) @@ -598,13 +598,46 @@ It can be notified to go RTB through the RTB event.

    -AI_CAS_ZONE:Engage() +AI_CAS_ZONE:Engage(EngageSpeed, EngageAltitude, EngageWeaponExpend, EngageAttackQty, EngageDirection)

    Synchronous Event Trigger for Event Engage.

    +

    Parameters

    +
      +
    • + +

      #number EngageSpeed : +(optional) The speed the Group will hold when engaging to the target zone.

      + +
    • +
    • + +

      Dcs.DCSTypes#Distance EngageAltitude : +(optional) Desired altitude to perform the unit engagement.

      + +
    • +
    • + +

      Dcs.DCSTypes#AI.Task.WeaponExpend EngageWeaponExpend : +(optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion.

      + +
    • +
    • + +

      #number EngageAttackQty : +(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.

      + +
    • +
    • + +

      Dcs.DCSTypes#Azimuth EngageDirection : +(optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction.

      + +
    • +
    @@ -888,7 +921,7 @@ The To State string.

    -AI_CAS_ZONE:OnAfterEngage(Controllable, From, Event, To, EngageSpeed, EngageWeaponExpend, EngageAltitude, EngageAttackQty, EngageDirection) +AI_CAS_ZONE:OnAfterEngage(Controllable, From, Event, To)
    @@ -920,36 +953,6 @@ The Event string.

    #string To : The To State string.

    - -
  • - -

    #number EngageSpeed : -(optional) The speed the Group will hold when engaging to the target zone.

    - -
  • -
  • - -

    Dcs.DCSTypes#AI.Task.WeaponExpend EngageWeaponExpend : -(optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion.

    - -
  • -
  • - -

    Dcs.DCSTypes#Distance EngageAltitude : -(optional) Desired altitude to perform the unit engagement.

    - -
  • -
  • - -

    #number EngageAttackQty : -(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.

    - -
  • -
  • - -

    Dcs.DCSTypes#Azimuth EngageDirection : -(optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction.

    -
  • @@ -1133,7 +1136,7 @@ Return false to cancel Transition.

    -AI_CAS_ZONE:OnBeforeEngage(Controllable, From, Event, To, EngageSpeed, EngageWeaponExpend, EngageAltitude, EngageAttackQty, EngageDirection) +AI_CAS_ZONE:OnBeforeEngage(Controllable, From, Event, To)
    @@ -1165,36 +1168,6 @@ The Event string.

    #string To : The To State string.

    - -
  • - -

    #number EngageSpeed : -(optional) The speed the Group will hold when engaging to the target zone.

    - -
  • -
  • - -

    Dcs.DCSTypes#AI.Task.WeaponExpend EngageWeaponExpend : -(optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion.

    - -
  • -
  • - -

    Dcs.DCSTypes#Distance EngageAltitude : -(optional) Desired altitude to perform the unit engagement.

    - -
  • -
  • - -

    #number EngageAttackQty : -(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.

    - -
  • -
  • - -

    Dcs.DCSTypes#Azimuth EngageDirection : -(optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction.

    -
  • @@ -1464,20 +1437,50 @@ The delay in seconds.

    -AI_CAS_ZONE:__Engage(Delay) +AI_CAS_ZONE:__Engage(Delay, EngageSpeed, EngageAltitude, EngageWeaponExpend, EngageAttackQty, EngageDirection)

    Asynchronous Event Trigger for Event Engage.

    -

    Parameter

    +

    Parameters

    • #number Delay : The delay in seconds.

      +
    • +
    • + +

      #number EngageSpeed : +(optional) The speed the Group will hold when engaging to the target zone.

      + +
    • +
    • + +

      Dcs.DCSTypes#Distance EngageAltitude : +(optional) Desired altitude to perform the unit engagement.

      + +
    • +
    • + +

      Dcs.DCSTypes#AI.Task.WeaponExpend EngageWeaponExpend : +(optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion.

      + +
    • +
    • + +

      #number EngageAttackQty : +(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.

      + +
    • +
    • + +

      Dcs.DCSTypes#Azimuth EngageDirection : +(optional) Desired ingress direction from the target to the attacking aircraft. Controllable/aircraft will make its attacks from the direction. Of course if there is no way to attack from the direction due the terrain controllable/aircraft will choose another direction.

      +
    @@ -1593,7 +1596,7 @@ The To State string.

    -AI_CAS_ZONE:onafterEngage(Controllable, From, Event, To, EngageSpeed, EngageWeaponExpend, EngageAltitude, EngageAttackQty, EngageDirection) +AI_CAS_ZONE:onafterEngage(Controllable, From, Event, To, EngageSpeed, EngageAltitude, EngageWeaponExpend, EngageAttackQty, EngageDirection)
    @@ -1634,14 +1637,14 @@ The To State string.

  • -

    Dcs.DCSTypes#AI.Task.WeaponExpend EngageWeaponExpend : -(optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion.

    +

    Dcs.DCSTypes#Distance EngageAltitude : +(optional) Desired altitude to perform the unit engagement.

  • -

    Dcs.DCSTypes#Distance EngageAltitude : -(optional) Desired altitude to perform the unit engagement.

    +

    Dcs.DCSTypes#AI.Task.WeaponExpend EngageWeaponExpend : +(optional) Determines how much weapon will be released at each attack. If parameter is not defined the unit / controllable will choose expend on its own discretion.

  • diff --git a/docs/Documentation/AI_Patrol.html b/docs/Documentation/AI_Patrol.html index cfd08e72f..1804d6d64 100644 --- a/docs/Documentation/AI_Patrol.html +++ b/docs/Documentation/AI_Patrol.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • @@ -880,9 +880,6 @@ Use the method AIPATROLZONE.M - -

    This table contains the targets detected during patrol.

    -
    diff --git a/docs/Documentation/Account.html b/docs/Documentation/Account.html index 5b145b1df..469ffb5b0 100644 --- a/docs/Documentation/Account.html +++ b/docs/Documentation/Account.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • diff --git a/docs/Documentation/Airbase.html b/docs/Documentation/Airbase.html index 65dbb7cab..148977871 100644 --- a/docs/Documentation/Airbase.html +++ b/docs/Documentation/Airbase.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • diff --git a/docs/Documentation/AirbasePolice.html b/docs/Documentation/AirbasePolice.html index 7abdaf4aa..b85cf5549 100644 --- a/docs/Documentation/AirbasePolice.html +++ b/docs/Documentation/AirbasePolice.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • diff --git a/docs/Documentation/Assign.html b/docs/Documentation/Assign.html index 93bdb60ae..52eed4a74 100644 --- a/docs/Documentation/Assign.html +++ b/docs/Documentation/Assign.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • diff --git a/docs/Documentation/Base.html b/docs/Documentation/Base.html index 39c311970..47b494f73 100644 --- a/docs/Documentation/Base.html +++ b/docs/Documentation/Base.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • diff --git a/docs/Documentation/Cargo.html b/docs/Documentation/Cargo.html index fb98d54a5..6e4a998ff 100644 --- a/docs/Documentation/Cargo.html +++ b/docs/Documentation/Cargo.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • @@ -2424,6 +2424,7 @@ The UNIT carrying the package.

    + AI_CARGO_UNIT.CargoCarrier diff --git a/docs/Documentation/CleanUp.html b/docs/Documentation/CleanUp.html index 41e24b2d7..b47299090 100644 --- a/docs/Documentation/CleanUp.html +++ b/docs/Documentation/CleanUp.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • @@ -100,9 +100,15 @@ - CLEANUP:New(ZoneNames, TimeInterval) + CLEANUP.CleanUpScheduler + + + + CLEANUP:New(ZoneNames, TimeInterval) + +

    Creates the main object which is handling the cleaning of the debris within the given Zone Names.

    @@ -172,7 +178,7 @@ - CLEANUP:_OnEventBirth(Event) + CLEANUP:_OnEventBirth(EventData) @@ -232,33 +238,61 @@
    - -CLEANUP:New(ZoneNames, TimeInterval) + + +CLEANUP.CleanUpScheduler
    -

    Parameters

    -
      -
    • - -

      ZoneNames :

      - -
    • -
    • - -

      TimeInterval :

      - -
    • -
    - #number + +CLEANUP:New(ZoneNames, TimeInterval) + +
    +
    + +

    Creates the main object which is handling the cleaning of the debris within the given Zone Names.

    + +

    Parameters

    +
      +
    • + +

      #table ZoneNames : +Is a table of zone names where the debris should be cleaned. Also a single string can be passed with one zone name.

      + +
    • +
    • + +

      #number TimeInterval : +The interval in seconds when the clean activity takes place. The default is 300 seconds, thus every 5 minutes.

      + +
    • +
    +

    Return value

    + +

    #CLEANUP:

    + + +

    Usage:

    +
     -- Clean these Zones.
    +CleanUpAirports = CLEANUP:New( { 'CLEAN Tbilisi', 'CLEAN Kutaisi' }, 150 )
    +or
    +CleanUpTbilisi = CLEANUP:New( 'CLEAN Tbilisi', 150 )
    +CleanUpKutaisi = CLEANUP:New( 'CLEAN Kutaisi', 600 )
    + +
    +
    +
    +
    + + CLEANUP.TimeInterval @@ -525,7 +559,7 @@ The Unit name ...

    -CLEANUP:_OnEventBirth(Event) +CLEANUP:_OnEventBirth(EventData)
    @@ -536,7 +570,7 @@ The Unit name ...

    diff --git a/docs/Documentation/Client.html b/docs/Documentation/Client.html index ebcef655e..ce349f609 100644 --- a/docs/Documentation/Client.html +++ b/docs/Documentation/Client.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • diff --git a/docs/Documentation/CommandCenter.html b/docs/Documentation/CommandCenter.html index 23bc8a52b..403772d3e 100644 --- a/docs/Documentation/CommandCenter.html +++ b/docs/Documentation/CommandCenter.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • diff --git a/docs/Documentation/Controllable.html b/docs/Documentation/Controllable.html index c9540f79e..946cfb89a 100644 --- a/docs/Documentation/Controllable.html +++ b/docs/Documentation/Controllable.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • @@ -294,7 +294,7 @@ This is different from the EnRoute tasks, where the targets of the task need to CONTROLLABLE:EnRouteTaskEngageUnit(EngageUnit, Priority, GroupAttack, WeaponExpend, AttackQty, Direction, Altitude, Visible, ControllableAttack) -

    (AIR) Attack the Unit.

    +

    (AIR) Search and attack the Unit.

    @@ -509,7 +509,7 @@ A speed can be given in km/h.

    - CONTROLLABLE:TaskAttackUnit(AttackUnit, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, ControllableAttack) + CONTROLLABLE:TaskAttackUnit(AttackUnit, GroupAttack, WeaponExpend, AttackQty, Direction, Altitude, Visible, ControllableAttack)

    (AIR) Attack the Unit.

    @@ -1069,7 +1069,7 @@ The DCS task structure.

    -

    (AIR) Attack the Unit.

    +

    (AIR) Search and attack the Unit.

    Parameters

    +
    +
    + + #DETECTION_UNITS + +DETECTION_UNITS + +
    +
    + + +

    Type Detection

    @@ -762,13 +1274,13 @@ self

    - -DETECTION_AREAS.AddDetectedArea(Set, Zone, self) + +DETECTION_AREAS.AddDetectedItem(Set, Zone, self)
    -

    Add a detected DETECTION_AREAS.DetectedArea.

    +

    Add a detected DETECTION_AREAS.DetectedItem.

    Parameters

      @@ -792,8 +1304,8 @@ self

    Return value

    -

    #DETECTION_AREAS.DetectedArea: -DetectedArea

    +

    #DETECTION_AREAS.DetectedItem: +DetectedItem

    @@ -856,9 +1368,35 @@ self

    - #DETECTION_AREAS.DetectedAreas - -DETECTION_AREAS.DetectedAreas + +DETECTION_AREAS:DetectedItemReportSummary(Index) + +
    +
    + +

    Report summary of a detected item using a given numeric index.

    + +

    Parameter

    +
      +
    • + +

      #number Index :

      + +
    • +
    +

    Return value

    + +

    #string:

    + + +
    +
    +
    +
    + + #DETECTION_AREAS.DetectedItems + +DETECTION_AREAS.DetectedItems
    @@ -946,68 +1484,6 @@ The Changes text

    - -DETECTION_AREAS:GetDetectedAreaCount() - -
    -
    - -

    Get the amount of DETECTION_AREAS.DetectedAreas.

    - -

    Return value

    - -

    #number: -DetectedAreaCount

    - -
    -
    -
    -
    - - -DETECTION_AREAS:GetDetectedAreas() - -
    -
    - -

    Get the detected DETECTION_AREAS.DetectedAreas.

    - -

    Return value

    - -

    #DETECTION_AREAS.DetectedAreas: -DetectedAreas

    - -
    -
    -
    -
    - - -DETECTION_AREAS:GetDetectedSet(Index) - -
    -
    - -

    Get the Set#SET_UNIT of a detecttion area using a given numeric index.

    - -

    Parameter

    -
      -
    • - -

      #number Index :

      - -
    • -
    -

    Return value

    - -

    Core.Set#SET_UNIT: -DetectedSet

    - -
    -
    -
    -
    - DETECTION_AREAS:GetDetectedZone(Index) @@ -1113,7 +1589,7 @@ The nearest FAC unit

    -DETECTION_AREAS:New(DetectionSetGroup, DetectionRange, DetectionZoneRange) +DETECTION_AREAS:New(DetectionSetGroup, DetectionZoneRange)
    @@ -1130,12 +1606,6 @@ The Set of GROUPs in the Forward Air Controller role.

  • -

    Dcs.DCSTypes#Distance DetectionRange : -The range till which targets are accepted to be detected.

    - -
  • -
  • -

    Dcs.DCSTypes#Distance DetectionZoneRange : The range till which targets are grouped upon the first detected target.

    @@ -1151,20 +1621,25 @@ self

    - -DETECTION_AREAS:RemoveDetectedArea(Index) + +DETECTION_AREAS:RemoveDetectedItem(Index, DetectedItemIndex)
    -

    Remove a detected DETECTION_AREAS.DetectedArea with a given Index.

    +

    Remove a detected DETECTION_AREAS.DetectedItem with a given Index.

    -

    Parameter

    +

    Parameters

    • #number Index : -The Index of the detection are to be removed.

      +The DetectedItemIndex of the DetectedItems list are to be removed.

      + +
    • +
    • + +

      DetectedItemIndex :

    @@ -1299,20 +1774,6 @@ self

    - #number - -DETECTION_AREAS.DetectedArea.AreaID - -
    -
    - -

    -- The identifier of the detected area.

    - -
    -
    -
    -
    - #boolean DETECTION_AREAS.DetectedArea.Changed @@ -1320,35 +1781,21 @@ self

    -

    Documents if the detected area has changes.

    +
    - #table + DETECTION_AREAS.DetectedArea.Changes
    -

    A list of the changes reported on the detected area. (It is up to the user of the detected area to consume those changes).

    -
    -
    -
    -
    - - #boolean - -DETECTION_AREAS.DetectedArea.FriendliesNearBy - -
    -
    - -

    Indicates if there are friendlies within the detected area.

    @@ -1369,13 +1816,103 @@ self

    - Wrapper.Unit#UNIT + DETECTION_AREAS.DetectedArea.NearestFAC
    + + +
    +
    +
    +
    + + + +DETECTION_AREAS.DetectedArea.Zone + +
    +
    + + + + +

    Assign the Unit as the new center unit of the detected area.

    + +
    +
    + +

    Type DETECTION_AREAS.DetectedItem

    +

    Field(s)

    +
    +
    + + #number + +DETECTION_AREAS.DetectedItem.AreaID + +
    +
    + +

    -- The identifier of the detected area.

    + +
    +
    +
    +
    + + #boolean + +DETECTION_AREAS.DetectedItem.Changed + +
    +
    + +

    Documents if the detected area has changes.

    + +
    +
    +
    +
    + + #table + +DETECTION_AREAS.DetectedItem.Changes + +
    +
    + +

    A list of the changes reported on the detected area. (It is up to the user of the detected area to consume those changes).

    + +
    +
    +
    +
    + + #boolean + +DETECTION_AREAS.DetectedItem.FriendliesNearBy + +
    +
    + +

    Indicates if there are friendlies within the detected area.

    + +
    +
    +
    +
    + + Wrapper.Unit#UNIT + +DETECTION_AREAS.DetectedItem.NearestFAC + +
    +
    +

    The nearest FAC near the Area.

    @@ -1384,8 +1921,8 @@ self

    Core.Set#SET_UNIT - -DETECTION_AREAS.DetectedArea.Set + +DETECTION_AREAS.DetectedItem.Set
    @@ -1398,8 +1935,8 @@ self

    Core.Zone#ZONE_UNIT - -DETECTION_AREAS.DetectedArea.Zone + +DETECTION_AREAS.DetectedItem.Zone
    @@ -1409,7 +1946,7 @@ self

    -

    Type DETECTION_AREAS.DetectedAreas

    +

    Type DETECTION_AREAS.DetectedItems

    Type DETECTION_BASE

    @@ -1419,6 +1956,55 @@ self

    + + +DETECTION_BASE.AcceptRange + +
    +
    + + + +
    +
    +
    +
    + + + +DETECTION_BASE.AcceptZones + +
    +
    + + + +
    +
    +
    +
    + + +DETECTION_BASE:AddDetectedItem() + +
    +
    + +

    Adds a new DetectedItem to the DetectedItems list.

    + + +

    The DetectedItem is a table and contains a SET_UNIT in the field Set.

    + +

    Return value

    + +

    #DETECTION_BASE.DetectedItem:

    + + +
    +
    +
    +
    + #string DETECTION_BASE.ClassName @@ -1449,6 +2035,19 @@ self

    #DETECTION_BASE: self

    +
    +
    +
    +
    + + +DETECTION_BASE:Detect() + +
    +
    + +

    Synchronous Event Trigger for Event Detect.

    +
    @@ -1533,6 +2132,59 @@ self

    +
  • +
    +
    +
    + + +DETECTION_BASE:Detected() + +
    +
    + +

    Synchronous Event Trigger for Event Detected.

    + +
    +
    +
    +
    + + +DETECTION_BASE:DetectedItemReportSummary(Index) + +
    +
    + +

    Report summary of a detected item using a given numeric index.

    + +

    Parameter

    +
      +
    • + +

      #number Index :

      + +
    • +
    +

    Return value

    + +

    #string:

    + + +
    +
    +
    +
    + + + +DETECTION_BASE.DetectedItems + +
    +
    + + +
    @@ -1561,6 +2213,20 @@ self

    Map of the DetectedObjects identified.

    +
    +
    +
    +
    + + #number + +DETECTION_BASE.DetectionInterval + +
    +
    + + +
    @@ -1617,6 +2283,82 @@ self

    The Set of GROUPs in the Forward Air Controller role.

    + +
    +
    +
    + + + +DETECTION_BASE.DistanceProbability + +
    +
    + + + +
    +
    +
    +
    + + +DETECTION_BASE:GetDetectedItem(Index) + +
    +
    + +

    Get a detected item using a given numeric index.

    + +

    Parameter

    +
      +
    • + +

      #number Index :

      + +
    • +
    +

    Return value

    + + +

    DETECTION_BASE.DetectedItem

    + +
    +
    +
    +
    + + +DETECTION_BASE:GetDetectedItems() + +
    +
    + +

    Get the detected Set#SET_BASEs.

    + +

    Return value

    + +

    #DETECTION_BASE.DetectedItems:

    + + +
    +
    +
    +
    + + +DETECTION_BASE:GetDetectedItemsCount() + +
    +
    + +

    Get the amount of SETs with detected objects.

    + +

    Return value

    + +

    #number: +Count

    +
    @@ -1654,7 +2396,7 @@ self

    -

    Get a SET of detected objects using a given numeric index.

    +

    Get the Set#SET_UNIT of a detecttion area using a given numeric index.

    Parameter

      @@ -1666,44 +2408,8 @@ self

    Return value

    -

    Core.Set#SET_BASE:

    - - -
    -
    -
    -
    - - -DETECTION_BASE:GetDetectedSetCount() - -
    -
    - -

    Get the amount of SETs with detected objects.

    - -

    Return value

    - -

    #number: -Count

    - -
    -
    -
    -
    - - -DETECTION_BASE:GetDetectedSets() - -
    -
    - -

    Get the detected Set#SET_BASEs.

    - -

    Return value

    - -

    #DETECTION_BASE.DetectedSets: -DetectedSets

    +

    Core.Set#SET_UNIT: +DetectedSet

    @@ -1723,6 +2429,20 @@ DetectedSets

    Wrapper.Group#GROUP:

    + +
    +
    +
    + + + +DETECTION_BASE.HeightProbability + +
    +
    + + +
    @@ -1932,26 +2652,20 @@ true if already identified.

    -DETECTION_BASE:New(DetectionSetGroup, DetectionRange) +DETECTION_BASE:New(DetectionSetGroup)

    DETECTION constructor.

    -

    Parameters

    +

    Parameter

    Return value

    @@ -1964,6 +2678,483 @@ self

    + +DETECTION_BASE:OnAfterDetect(From, Event, To) + +
    +
    + +

    OnAfter Transition Handler for Event Detect.

    + +

    Parameters

    +
      +
    • + +

      #string From : +The From State string.

      + +
    • +
    • + +

      #string Event : +The Event string.

      + +
    • +
    • + +

      #string To : +The To State string.

      + +
    • +
    +
    +
    +
    +
    + + +DETECTION_BASE:OnAfterDetected(From, Event, To) + +
    +
    + +

    OnAfter Transition Handler for Event Detected.

    + +

    Parameters

    +
      +
    • + +

      #string From : +The From State string.

      + +
    • +
    • + +

      #string Event : +The Event string.

      + +
    • +
    • + +

      #string To : +The To State string.

      + +
    • +
    +
    +
    +
    +
    + + +DETECTION_BASE:OnAfterStart(From, Event, To) + +
    +
    + +

    OnAfter Transition Handler for Event Start.

    + +

    Parameters

    +
      +
    • + +

      #string From : +The From State string.

      + +
    • +
    • + +

      #string Event : +The Event string.

      + +
    • +
    • + +

      #string To : +The To State string.

      + +
    • +
    +
    +
    +
    +
    + + +DETECTION_BASE:OnAfterStop(From, Event, To) + +
    +
    + +

    OnAfter Transition Handler for Event Stop.

    + +

    Parameters

    +
      +
    • + +

      #string From : +The From State string.

      + +
    • +
    • + +

      #string Event : +The Event string.

      + +
    • +
    • + +

      #string To : +The To State string.

      + +
    • +
    +
    +
    +
    +
    + + +DETECTION_BASE:OnBeforeDetect(From, Event, To) + +
    +
    + +

    OnBefore Transition Handler for Event Detect.

    + +

    Parameters

    +
      +
    • + +

      #string From : +The From State string.

      + +
    • +
    • + +

      #string Event : +The Event string.

      + +
    • +
    • + +

      #string To : +The To State string.

      + +
    • +
    +

    Return value

    + +

    #boolean: +Return false to cancel Transition.

    + +
    +
    +
    +
    + + +DETECTION_BASE:OnBeforeDetected(From, Event, To) + +
    +
    + +

    OnBefore Transition Handler for Event Detected.

    + +

    Parameters

    +
      +
    • + +

      #string From : +The From State string.

      + +
    • +
    • + +

      #string Event : +The Event string.

      + +
    • +
    • + +

      #string To : +The To State string.

      + +
    • +
    +

    Return value

    + +

    #boolean: +Return false to cancel Transition.

    + +
    +
    +
    +
    + + +DETECTION_BASE:OnBeforeStart(From, Event, To) + +
    +
    + +

    OnBefore Transition Handler for Event Start.

    + +

    Parameters

    +
      +
    • + +

      #string From : +The From State string.

      + +
    • +
    • + +

      #string Event : +The Event string.

      + +
    • +
    • + +

      #string To : +The To State string.

      + +
    • +
    +

    Return value

    + +

    #boolean: +Return false to cancel Transition.

    + +
    +
    +
    +
    + + +DETECTION_BASE:OnBeforeStop(From, Event, To) + +
    +
    + +

    OnBefore Transition Handler for Event Stop.

    + +

    Parameters

    +
      +
    • + +

      #string From : +The From State string.

      + +
    • +
    • + +

      #string Event : +The Event string.

      + +
    • +
    • + +

      #string To : +The To State string.

      + +
    • +
    +

    Return value

    + +

    #boolean: +Return false to cancel Transition.

    + +
    +
    +
    +
    + + +DETECTION_BASE:OnEnterDetecting(From, Event, To) + +
    +
    + +

    OnEnter Transition Handler for State Detecting.

    + +

    Parameters

    +
      +
    • + +

      #string From : +The From State string.

      + +
    • +
    • + +

      #string Event : +The Event string.

      + +
    • +
    • + +

      #string To : +The To State string.

      + +
    • +
    +
    +
    +
    +
    + + +DETECTION_BASE:OnEnterStopped(From, Event, To) + +
    +
    + +

    OnEnter Transition Handler for State Stopped.

    + +

    Parameters

    +
      +
    • + +

      #string From : +The From State string.

      + +
    • +
    • + +

      #string Event : +The Event string.

      + +
    • +
    • + +

      #string To : +The To State string.

      + +
    • +
    +
    +
    +
    +
    + + +DETECTION_BASE:OnLeaveDetecting(From, Event, To) + +
    +
    + +

    OnLeave Transition Handler for State Detecting.

    + +

    Parameters

    +
      +
    • + +

      #string From : +The From State string.

      + +
    • +
    • + +

      #string Event : +The Event string.

      + +
    • +
    • + +

      #string To : +The To State string.

      + +
    • +
    +

    Return value

    + +

    #boolean: +Return false to cancel Transition.

    + +
    +
    +
    +
    + + +DETECTION_BASE:OnLeaveStopped(From, Event, To) + +
    +
    + +

    OnLeave Transition Handler for State Stopped.

    + +

    Parameters

    +
      +
    • + +

      #string From : +The From State string.

      + +
    • +
    • + +

      #string Event : +The Event string.

      + +
    • +
    • + +

      #string To : +The To State string.

      + +
    • +
    +

    Return value

    + +

    #boolean: +Return false to cancel Transition.

    + +
    +
    +
    +
    + + + +DETECTION_BASE.RejectZones + +
    +
    + + + +
    +
    +
    +
    + + +DETECTION_BASE:RemoveDetectedItem(DetectedItemIndex) + +
    +
    + +

    Removes an existing DetectedItem from the DetectedItems list.

    + + +

    The DetectedItem is a table and contains a SET_UNIT in the field Set.

    + +

    Parameter

    +
      +
    • + +

      #number DetectedItemIndex : +The index or position in the DetectedItems list where the item needs to be removed.

      + +
    • +
    +
    +
    +
    +
    + DETECTION_BASE:Schedule(DelayTime, RepeatInterval) @@ -2020,6 +3211,218 @@ self

    +
    +
    +
    +
    + + +DETECTION_BASE:SetAcceptRange(AcceptRange) + +
    +
    + +

    Accept detections if within a range in meters.

    + +

    Parameter

    +
      +
    • + +

      #number AcceptRange : +Accept a detection if the unit is within the AcceptRange in meters.

      + +
    • +
    +

    Return value

    + +

    #DETECTION_BASE: +self

    + +
    +
    +
    +
    + + +DETECTION_BASE:SetAcceptZones(AcceptZones) + +
    +
    + +

    Accept detections if within the specified zone(s).

    + +

    Parameter

    +
      +
    • + +

      AcceptZones : +Can be a list or ZONEBASE objects, or a single ZONEBASE object.

      + +
    • +
    +

    Return value

    + +

    #DETECTION_BASE: +self

    + +
    +
    +
    +
    + + +DETECTION_BASE:SetDistanceProbability(DistanceProbability) + +
    +
    + +

    Upon a visual detection, the further away a detected object is, the less likely it is to be detected properly.

    + + +

    Also, the speed of accurate detection plays a role. +A distance probability factor between 0 and 1 can be given, that will model a linear extrapolated probability over 10 km distance. +For example, if a probability factor of 0.6 (60%) is given, the extrapolated probabilities over 15 kilometers would like like: +1 km: 96%, 2 km: 92%, 3 km: 88%, 4 km: 84%, 5 km: 80%, 6 km: 76%, 7 km: 72%, 8 km: 68%, 9 km: 64%, 10 km: 60%, 11 km: 56%, 12 km: 52%, 13 km: 48%, 14 km: 44%, 15 km: 40%.

    + +

    Parameter

    +
      +
    • + +

      DistanceProbability : +The probability factor.

      + +
    • +
    +

    Return value

    + +

    #DETECTION_BASE: +self

    + +
    +
    +
    +
    + + +DETECTION_BASE:SetHeightProbability(HeightProbability) + +
    +
    + +

    Upon a visual detection, the higher the unit is during the detecting process, the more likely the detected unit is to be detected properly.

    + + +

    A detection at a 90% alpha angle is the most optimal, a detection at 10% is less and a detection at 0% is less likely to be correct.

    + +

    A probability factor between 0 and 1 can be given, that will model a progressive extrapolated probability if the target would be detected at a 0° angle.

    + +

    For example, if a alpha angle probability factor of 0.7 is given, the extrapolated probabilities of the different angles would look like: +0°: 70%, 10°: 75,21%, 20°: 80,26%, 30°: 85%, 40°: 89,28%, 50°: 92,98%, 60°: 95,98%, 70°: 98,19%, 80°: 99,54%, 90°: 100%

    + +

    Parameter

    +
      +
    • + +

      HeightProbability : +The probability factor.

      + +
    • +
    +

    Return value

    + +

    #DETECTION_BASE: +self

    + +
    +
    +
    +
    + + +DETECTION_BASE:SetRejectZones(RejectZones) + +
    +
    + +

    Reject detections if within the specified zone(s).

    + +

    Parameter

    +
      +
    • + +

      RejectZones : +Can be a list or ZONEBASE objects, or a single ZONEBASE object.

      + +
    • +
    +

    Return value

    + +

    #DETECTION_BASE: +self

    + +
    +
    +
    +
    + + +DETECTION_BASE:SetZoneProbability(CloudyZone, ZoneProbability) + +
    +
    + +

    Upon a visual detection, the more a detected unit is within a cloudy zone, the less likely the detected unit is to be detected successfully.

    + + +

    The Cloudy Zones work with the ZONE_BASE derived classes. The mission designer can define within the mission +zones that reflect cloudy areas where detected units may not be so easily visually detected.

    + +

    Parameters

    +
      +
    • + +

      CloudyZone : +The ZONE_BASE object.

      + +
    • +
    • + +

      ZoneProbability : +The probability factor.

      + +
    • +
    +

    Return value

    + +

    #DETECTION_BASE: +self

    + +
    +
    +
    +
    + + +DETECTION_BASE:Start() + +
    +
    + +

    Synchronous Event Trigger for Event Start.

    + +
    +
    +
    +
    + + +DETECTION_BASE:Stop() + +
    +
    + +

    Synchronous Event Trigger for Event Stop.

    +
    @@ -2059,25 +3462,125 @@ self

    - -DETECTION_BASE:_DetectionScheduler(SchedulerName) + + +DETECTION_BASE.ZoneProbability
    -

    Form Sets of detected Unit#UNITs in an array of Set#SET_BASEs.

    + + +
    +
    +
    +
    + + +DETECTION_BASE:__Detect(Delay) + +
    +
    + +

    Asynchronous Event Trigger for Event Detect.

    Parameter

    • -

      SchedulerName :

      +

      #number Delay : +The delay in seconds.

      + +
    • +
    +
    +
    +
    +
    + + +DETECTION_BASE:__Detected(Delay) + +
    +
    + +

    Asynchronous Event Trigger for Event Detected.

    + +

    Parameter

    +
      +
    • + +

      #number Delay : +The delay in seconds.

      + +
    • +
    +
    +
    +
    +
    + + +DETECTION_BASE:__Start(Delay) + +
    +
    + +

    Asynchronous Event Trigger for Event Start.

    + +

    Parameter

    +
      +
    • + +

      #number Delay : +The delay in seconds.

      + +
    • +
    +
    +
    +
    +
    + + +DETECTION_BASE:__Stop(Delay) + +
    +
    + +

    Asynchronous Event Trigger for Event Stop.

    + +

    Parameter

    +
      +
    • + +

      #number Delay : +The delay in seconds.

    +

    Type DETECTION_BASE.DetectedItem

    +

    Field(s)

    +
    +
    + + Core.Set#SET_UNIT + +DETECTION_BASE.DetectedItem.Set + +
    +
    + + + +
    +
    + +

    Type DETECTION_BASE.DetectedItems

    +

    Type DETECTION_BASE.DetectedObject

    Field(s)

    @@ -2153,8 +3656,184 @@ self

    Type DETECTION_BASE.DetectedObjects

    -

    Type DETECTION_BASE.DetectedSets

    - +

    Type DETECTION_UNITS

    + +

    DETECTION_UNITS class

    + +

    Field(s)

    +
    +
    + + #string + +DETECTION_UNITS.ClassName + +
    +
    + + + +
    +
    +
    +
    + + +DETECTION_UNITS:CreateDetectionSets() + +
    +
    + +

    Create the DetectedItems list from the DetectedObjects table.

    + + +

    For each DetectedItem, a one field array is created containing the Unit detected.

    + +

    Return value

    + +

    #DETECTION_UNITS: +self

    + +
    +
    +
    +
    + + +DETECTION_UNITS:DetectedItemReportSummary(Index) + +
    +
    + +

    Report summary of a DetectedItem using a given numeric index.

    + +

    Parameter

    +
      +
    • + +

      #number Index :

      + +
    • +
    +

    Return value

    + +

    #string:

    + + +
    +
    +
    +
    + + + +DETECTION_UNITS.DetectedItems + +
    +
    + + + +
    +
    +
    +
    + + Dcs.DCSTypes#Distance + +DETECTION_UNITS.DetectionRange + +
    +
    + +

    The range till which targets are detected.

    + +
    +
    +
    +
    + + +DETECTION_UNITS:New(DetectionSetGroup) + +
    +
    + +

    DETECTION_UNITS constructor.

    + +

    Parameter

    +
      +
    • + +

      Core.Set#SET_GROUP DetectionSetGroup : +The Set of GROUPs in the Forward Air Controller role.

      + +
    • +
    +

    Return value

    + +

    Functional.Detection#DETECTION_UNITS: +self

    + +
    +
    +
    +
    + + #boolean + +DETECTION_UNITS._FlareDetectedUnits + +
    +
    + + + +
    +
    +
    +
    + + #boolean + +DETECTION_UNITS._FlareDetectedZones + +
    +
    + + + +
    +
    +
    +
    + + #boolean + +DETECTION_UNITS._SmokeDetectedUnits + +
    +
    + + + +
    +
    +
    +
    + + #boolean + +DETECTION_UNITS._SmokeDetectedZones + +
    +
    + + + +
    +
    + diff --git a/docs/Documentation/DetectionManager.html b/docs/Documentation/DetectionManager.html index 95ed04d86..a32d6921c 100644 --- a/docs/Documentation/DetectionManager.html +++ b/docs/Documentation/DetectionManager.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • diff --git a/docs/Documentation/Escort.html b/docs/Documentation/Escort.html index f3d622cfe..56357f0f5 100644 --- a/docs/Documentation/Escort.html +++ b/docs/Documentation/Escort.html @@ -39,11 +39,11 @@
  • Fsm
  • Group
  • Identifiable
  • -
  • MOVEMENT
  • Menu
  • Message
  • MissileTrainer
  • Mission
  • +
  • Movement
  • Object
  • Point
  • Positionable
  • @@ -160,7 +160,7 @@ Note that this is really fantastic, as you now have the dynamic of taking contro

    ESCORT initialization methods.

    -

    The following menus are created within the RADIO MENU of an active unit hosted by a player:

    +

    The following menus are created within the RADIO MENU (F10) of an active unit hosted by a player: