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
@@ -2043,7 +2043,7 @@ The DCS task structure.
-
-CONTROLLABLE:TaskAttackUnit(AttackUnit, WeaponType, WeaponExpend, AttackQty, Direction, AttackQtyLimit, ControllableAttack)
+CONTROLLABLE:TaskAttackUnit(AttackUnit, GroupAttack, WeaponExpend, AttackQty, Direction, Altitude, Visible, ControllableAttack)
-
@@ -2055,13 +2055,13 @@ The DCS task structure.
-
Wrapper.Unit#UNIT AttackUnit :
-The unit.
+The UNIT.
-
-
#number WeaponType :
-(optional) Bitmask of weapon types those allowed to use. If parameter is not defined that means no limits on weapon usage.
+#boolean GroupAttack :
+(optional) If true, all units in the group will attack the Unit when found.
-
@@ -2084,8 +2084,14 @@ The unit.
-
-
#boolean AttackQtyLimit :
-(optional) The flag determines how to interpret attackQty parameter. If the flag is true then attackQty is a limit on maximal attack quantity for "AttackControllable" and "AttackUnit" tasks. If the flag is false then attackQty is a desired attack quantity for "Bombing" and "BombingRunway" tasks.
+Dcs.DCSTypes#Distance Altitude :
+(optional) Desired altitude to perform the unit engagement.
+
+
+ -
+
+
#boolean Visible :
+(optional) Unit must be visible.
-
diff --git a/docs/Documentation/Database.html b/docs/Documentation/Database.html
index 82e423ee5..99c49f976 100644
--- a/docs/Documentation/Database.html
+++ b/docs/Documentation/Database.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Detection.html b/docs/Documentation/Detection.html
index f53ea7c43..8a75e6329 100644
--- a/docs/Documentation/Detection.html
+++ b/docs/Documentation/Detection.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
@@ -76,14 +76,18 @@
-
- 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 Groups 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 Groups 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.
@@ -92,41 +96,217 @@
Use the following functions to report the objects it detected using the methods Visual, Optical, Radar, IRST, RWR, DLINK:
- 1.3) Obtain objects detected by DETECTION_BASE
- DETECTION_BASE builds Sets of objects detected. These Set#SET_BASEs 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
+
+ DETECTIONBASE 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 SETUNIT 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 ) Height 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.SetHeightProbability() 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 DETECTIONBASE to calculate the presence of the detected unit within each zone.
+ Expecially for ZONEPOLYGON, 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 ZONEBASE object(s) can be given as a parameter, which will only accept a detection if the unit is within the specified ZONEBASE 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 ZONEBASE object(s) can be given as a parameter, which will reject detection if the unit is within the specified ZONEBASE 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_UNITS class, extends Detection#DETECTION_BASE
+
+ The Detection#DETECTION_UNITS class will detect units within the battle zone within a specified range.
+ 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.
+
+ # 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 Groups detecting targets following (a) detection method(s),
and will build a list (table) of Set#SET_UNITs containing the Unit#UNITs 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_UNITs.
- 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 Zones 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.
@@ -134,13 +314,13 @@
### Contributions:
- - Mechanist : Concept & Testing
+ - Mechanist : Early concept of DETECTION_AREAS.
### Authors:
- - FlightControl : Design & Programming
+
- FlightControl : Analysis, Design, Programming, Testing
@@ -156,6 +336,12 @@
DETECTION_BASE |
+ |
+
+
+ | DETECTION_UNITS |
+
+
|
@@ -180,9 +366,9 @@
- | DETECTION_AREAS.AddDetectedArea(Set, Zone, self) |
+ DETECTION_AREAS.AddDetectedItem(Set, Zone, self) |
- Add a detected DETECTION_AREAS.DetectedArea.
+Add a detected DETECTION_AREAS.DetectedItem.
|
@@ -204,7 +390,13 @@
- | DETECTION_AREAS.DetectedAreas |
+ DETECTION_AREAS:DetectedItemReportSummary(Index) |
+
+ Report summary of a detected item using a given numeric index.
+ |
+
+
+ | DETECTION_AREAS.DetectedItems |
A list of areas containing the set of Units, Zones, the center Unit within the zone, and ID of each area that was detected within a DetectionZoneRange.
|
@@ -231,24 +423,6 @@
DETECTION_AREAS:GetChangeText(DetectedArea) |
Make text documenting the changes of the detected zone.
- |
-
-
- | DETECTION_AREAS:GetDetectedAreaCount() |
-
- Get the amount of DETECTION_AREAS.DetectedAreas.
- |
-
-
- | DETECTION_AREAS:GetDetectedAreas() |
-
- Get the detected DETECTION_AREAS.DetectedAreas.
- |
-
-
- | DETECTION_AREAS:GetDetectedSet(Index) |
-
- Get the Set#SET_UNIT of a detecttion area using a given numeric index.
|
@@ -276,15 +450,15 @@
- | DETECTION_AREAS:New(DetectionSetGroup, DetectionRange, DetectionZoneRange) |
+ DETECTION_AREAS:New(DetectionSetGroup, DetectionZoneRange) |
DETECTION_AREAS constructor.
|
- | 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.
|
@@ -334,27 +508,15 @@
+
+
+
+
+ | DETECTION_AREAS.DetectedItem.AreaID |
+
+ -- The identifier of the detected area.
+ |
+
+
+ | DETECTION_AREAS.DetectedItem.Changed |
+
+ Documents if the detected area has changes.
+ |
+
+
+ | 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).
+ |
+
+
+ | DETECTION_AREAS.DetectedItem.FriendliesNearBy |
+
+ Indicates if there are friendlies within the detected area.
+ |
+
+
+ | DETECTION_AREAS.DetectedItem.NearestFAC |
+
The nearest FAC near the Area.
|
- | DETECTION_AREAS.DetectedArea.Set |
+ DETECTION_AREAS.DetectedItem.Set |
-- The Set of Units in the detected area.
|
- | DETECTION_AREAS.DetectedArea.Zone |
+ DETECTION_AREAS.DetectedItem.Zone |
-- The Zone of the detected area.
|
@@ -386,6 +588,24 @@
+ | DETECTION_BASE.AcceptRange |
+
+
+ |
+
+
+ | DETECTION_BASE.AcceptZones |
+
+
+ |
+
+
+ | DETECTION_BASE:AddDetectedItem() |
+
+ Adds a new DetectedItem to the DetectedItems list.
+ |
+
+
| DETECTION_BASE.ClassName |
@@ -395,6 +615,12 @@
| DETECTION_BASE:CreateDetectionSets() |
Make a DetectionSet table.
+ |
+
+
+ | DETECTION_BASE:Detect() |
+
+ Synchronous Event Trigger for Event Detect.
|
@@ -431,6 +657,24 @@
| DETECTION_BASE.DetectVisual |
+ |
+
+
+ | DETECTION_BASE:Detected() |
+
+ Synchronous Event Trigger for Event Detected.
+ |
+
+
+ | DETECTION_BASE:DetectedItemReportSummary(Index) |
+
+ Report summary of a detected item using a given numeric index.
+ |
+
+
+ | DETECTION_BASE.DetectedItems |
+
+
|
@@ -443,6 +687,12 @@
| DETECTION_BASE.DetectedObjectsIdentified |
Map of the DetectedObjects identified.
+ |
+
+
+ | DETECTION_BASE.DetectionInterval |
+
+
|
@@ -467,6 +717,30 @@
| DETECTION_BASE.DetectionSetGroup |
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.
+ |
+
+
+ | DETECTION_BASE:GetDetectedItems() |
+
+ Get the detected Set#SET_BASEs.
+ |
+
+
+ | DETECTION_BASE:GetDetectedItemsCount() |
+
+ Get the amount of SETs with detected objects.
|
@@ -478,25 +752,19 @@
| DETECTION_BASE:GetDetectedSet(Index) |
- Get a SET of detected objects using a given numeric index.
- |
-
-
- | DETECTION_BASE:GetDetectedSetCount() |
-
- Get the amount of SETs with detected objects.
- |
-
-
- | DETECTION_BASE:GetDetectedSets() |
-
- Get the detected Set#SET_BASEs.
+Get the Set#SET_UNIT of a detecttion area using a given numeric index.
|
| DETECTION_BASE:GetDetectionSetGroup() |
Get the detection Groups.
+ |
+
+
+ | DETECTION_BASE.HeightProbability |
+
+
|
@@ -548,9 +816,93 @@
- | DETECTION_BASE:New(DetectionSetGroup, DetectionRange) |
+ DETECTION_BASE:New(DetectionSetGroup) |
DETECTION constructor.
+ |
+
+
+ | DETECTION_BASE:OnAfterDetect(From, Event, To) |
+
+ OnAfter Transition Handler for Event Detect.
+ |
+
+
+ | DETECTION_BASE:OnAfterDetected(From, Event, To) |
+
+ OnAfter Transition Handler for Event Detected.
+ |
+
+
+ | DETECTION_BASE:OnAfterStart(From, Event, To) |
+
+ OnAfter Transition Handler for Event Start.
+ |
+
+
+ | DETECTION_BASE:OnAfterStop(From, Event, To) |
+
+ OnAfter Transition Handler for Event Stop.
+ |
+
+
+ | DETECTION_BASE:OnBeforeDetect(From, Event, To) |
+
+ OnBefore Transition Handler for Event Detect.
+ |
+
+
+ | DETECTION_BASE:OnBeforeDetected(From, Event, To) |
+
+ OnBefore Transition Handler for Event Detected.
+ |
+
+
+ | DETECTION_BASE:OnBeforeStart(From, Event, To) |
+
+ OnBefore Transition Handler for Event Start.
+ |
+
+
+ | DETECTION_BASE:OnBeforeStop(From, Event, To) |
+
+ OnBefore Transition Handler for Event Stop.
+ |
+
+
+ | DETECTION_BASE:OnEnterDetecting(From, Event, To) |
+
+ OnEnter Transition Handler for State Detecting.
+ |
+
+
+ | DETECTION_BASE:OnEnterStopped(From, Event, To) |
+
+ OnEnter Transition Handler for State Stopped.
+ |
+
+
+ | DETECTION_BASE:OnLeaveDetecting(From, Event, To) |
+
+ OnLeave Transition Handler for State Detecting.
+ |
+
+
+ | DETECTION_BASE:OnLeaveStopped(From, Event, To) |
+
+ OnLeave Transition Handler for State Stopped.
+ |
+
+
+ | DETECTION_BASE.RejectZones |
+
+
+ |
+
+
+ | DETECTION_BASE:RemoveDetectedItem(DetectedItemIndex) |
+
+ Removes an existing DetectedItem from the DetectedItems list.
|
@@ -569,6 +921,54 @@
| DETECTION_BASE.ScheduleRepeatInterval |
+ |
+
+
+ | DETECTION_BASE:SetAcceptRange(AcceptRange) |
+
+ Accept detections if within a range in meters.
+ |
+
+
+ | DETECTION_BASE:SetAcceptZones(AcceptZones) |
+
+ Accept detections if within the specified zone(s).
+ |
+
+
+ | DETECTION_BASE:SetDistanceProbability(DistanceProbability) |
+
+ Upon a visual detection, the further away a detected object is, the less likely it is to be detected properly.
+ |
+
+
+ | 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.
+ |
+
+
+ | DETECTION_BASE:SetRejectZones(RejectZones) |
+
+ Reject detections if within the specified zone(s).
+ |
+
+
+ | 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.
+ |
+
+
+ | DETECTION_BASE:Start() |
+
+ Synchronous Event Trigger for Event Start.
+ |
+
+
+ | DETECTION_BASE:Stop() |
+
+ Synchronous Event Trigger for Event Stop.
|
@@ -584,9 +984,43 @@
- | 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.
+ |
+
+
+ | DETECTION_BASE:__Detected(Delay) |
+
+ Asynchronous Event Trigger for Event Detected.
+ |
+
+
+ | DETECTION_BASE:__Start(Delay) |
+
+ Asynchronous Event Trigger for Event Start.
+ |
+
+
+ | DETECTION_BASE:__Stop(Delay) |
+
+ Asynchronous Event Trigger for Event Stop.
+ |
+
+
+
+
+
@@ -621,6 +1055,70 @@
DETECTION_BASE.DetectedObject.Visible |
+ |
+
+
+
+
+
@@ -652,6 +1150,20 @@
+
+
+
+-
+
+ #DETECTION_UNITS
+
+DETECTION_UNITS
+
+
+-
+
+
+
@@ -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
@@ -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.
+
+
+
+
+
+ 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
-
+
@@ -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
+
+
+
+
+-
+
DETECTION_BASE:Schedule(DelayTime, RepeatInterval)
@@ -2020,6 +3211,218 @@ self
+
+
+
+-
+
+
+DETECTION_BASE:SetAcceptRange(AcceptRange)
+
+
+-
+
+
Accept detections if within a range in meters.
+
+ Parameter
+
+ Return value
+
+#DETECTION_BASE:
+self
+
+
+
+
+-
+
+
+DETECTION_BASE:SetAcceptZones(AcceptZones)
+
+
+-
+
+
Accept detections if within the specified zone(s).
+
+ Parameter
+
+ 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
+
+ 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
+
+ Return value
+
+#DETECTION_BASE:
+self
+
+
+
+
+-
+
+
+DETECTION_BASE:SetRejectZones(RejectZones)
+
+
+-
+
+
Reject detections if within the specified zone(s).
+
+ Parameter
+
+ 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
+
+ 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
+
+
+
+-
+
+
+DETECTION_BASE:__Detected(Delay)
+
+
+-
+
+
Asynchronous Event Trigger for Event Detected.
+
+ Parameter
+
+
+
+
+-
+
+
+DETECTION_BASE:__Start(Delay)
+
+
+-
+
+
Asynchronous Event Trigger for Event Start.
+
+ Parameter
+
+
+
+
+-
+
+
+DETECTION_BASE:__Stop(Delay)
+
+
+-
+
+
Asynchronous Event Trigger for Event Stop.
+
+ Parameter
+
+
+ Field(s)
+
+-
+
+ Core.Set#SET_UNIT
+
+DETECTION_BASE.DetectedItem.Set
+
+
+-
+
+
+
+
+
+
+
+
Field(s)
@@ -2153,8 +3656,184 @@ self
-
-
+
+
+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
+
+ 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:
- ESCORT.MenuFollowAt: Creates a menu to make the escort follow the client.
@@ -207,9 +207,27 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
+ | ESCORT.CT1 |
+
+
+ |
+
+
| ESCORT.ClassName |
+ |
+
+
+ | ESCORT.Detection |
+
+
+ |
+
+
+ | ESCORT.EscortBriefing |
+
+
|
@@ -222,6 +240,12 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
| ESCORT.EscortGroup |
+ |
+
+
+ | ESCORT.EscortMenu |
+
+
|
@@ -444,6 +468,12 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
| ESCORT.EscortName |
+ |
+
+
+ | ESCORT.EscortSetGroup |
+
+
|
@@ -456,6 +486,12 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
| ESCORT.FollowScheduler |
The instance of the SCHEDULER class.
+ |
+
+
+ | ESCORT.GT1 |
+
+
|
@@ -576,6 +612,12 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
| ESCORT.ReportTargetsScheduler |
+ |
+
+
+ | ESCORT:SetDetection(Detection) |
+
+ Set a Detection method for the EscortClient to be reported upon.
|
@@ -603,19 +645,19 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
- | ESCORT._AssistTarget(MenuParam) |
+ ESCORT._AssistTarget(DetectedItemID, self, EscortGroupAttack) |
|
- | ESCORT._AttackTarget(MenuParam) |
+ ESCORT:_AttackTarget(DetectedItemID) |
|
- | ESCORT._Flare(MenuParam) |
+ ESCORT._Flare(MenuParam, self, Color, Message) |
|
@@ -627,31 +669,31 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
- | ESCORT._HoldPosition(MenuParam) |
+ ESCORT._HoldPosition(MenuParam, self, OrbitGroup, OrbitHeight, OrbitSeconds) |
|
- | ESCORT._JoinUpAndFollow(MenuParam) |
+ ESCORT._JoinUpAndFollow(MenuParam, self, Distance) |
|
- | ESCORT._ROE(MenuParam) |
+ ESCORT._ROE(MenuParam, self, EscortROEFunction, EscortROEMessage) |
|
- | ESCORT._ROT(MenuParam) |
+ ESCORT._ROT(MenuParam, self, EscortROTFunction, EscortROTMessage) |
|
- | ESCORT._ReportNearbyTargetsNow(MenuParam) |
+ ESCORT._ReportNearbyTargetsNow(MenuParam, self) |
|
@@ -663,25 +705,25 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
- | ESCORT._ResumeMission(MenuParam) |
+ ESCORT._ResumeMission(MenuParam, self, WayPoint) |
|
- | ESCORT._ScanTargets(MenuParam) |
+ ESCORT._ScanTargets(MenuParam, self, ScanDuration) |
|
- | ESCORT._Smoke(MenuParam) |
+ ESCORT._Smoke(MenuParam, self, Color, Message) |
|
- | ESCORT._SwitchReportNearbyTargets(MenuParam) |
+ ESCORT:_SwitchReportNearbyTargets(ReportTargets) |
|
@@ -707,6 +749,12 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
+ | MENUPARAM.Distance |
+
+
+ |
+
+
| MENUPARAM.ParamDistance |
@@ -780,6 +828,20 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
-
+ #number
+
+ESCORT.CT1
+
+
+-
+
+
+
+
+
+
+-
+
#string
ESCORT.ClassName
@@ -789,6 +851,34 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
+
+
+
+-
+
+ Functional.Detection#DETECTION_BASE
+
+ESCORT.Detection
+
+
+-
+
+
+
+
+
+
+-
+
+
+
+ESCORT.EscortBriefing
+
+
+-
+
+
+
@@ -817,6 +907,20 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
+
+
+
+-
+
+
+
+
+-
+
+
+
@@ -1351,6 +1455,20 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
+
+
+
+-
+
+
+
+ESCORT.EscortSetGroup
+
+
+-
+
+
+
@@ -1379,6 +1497,20 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
The instance of the SCHEDULER class.
+
+
+
+-
+
+ #number
+
+ESCORT.GT1
+
+
+-
+
+
+
@@ -1922,6 +2054,30 @@ EscortPlanes = ESCORT:New( EscortClient, EscortGroup, "Desert", "Welcome to the
+
+
+
+-
+
+
+ESCORT:SetDetection(Detection)
+
+
+-
+
+
Set a Detection method for the EscortClient to be reported upon.
+
+
+Detection methods are based on the derived classes from DETECTION_BASE.
+
+ Parameter
+
@@ -1994,18 +2150,28 @@ If true, then the direction vector will be smoked.
-
-ESCORT._AssistTarget(MenuParam)
+ESCORT._AssistTarget(DetectedItemID, self, EscortGroupAttack)
-
-
Parameter
+ Parameters
-
-
#MENUPARAM MenuParam :
+#number DetectedItemID :
+
+
+ -
+
+
self :
+
+
+ -
+
+
EscortGroupAttack :
@@ -2015,7 +2181,7 @@ If true, then the direction vector will be smoked.
-
-ESCORT._AttackTarget(MenuParam)
+ESCORT:_AttackTarget(DetectedItemID)
-
@@ -2026,7 +2192,7 @@ If true, then the direction vector will be smoked.
@@ -2036,19 +2202,34 @@ If true, then the direction vector will be smoked.
-
-ESCORT._Flare(MenuParam)
+ESCORT._Flare(MenuParam, self, Color, Message)
-
-
Parameter
+ Parameters
-
#MENUPARAM MenuParam :
+
+ -
+
+
self :
+
+
+ -
+
+
Color :
+
+
+ -
+
+
Message :
+
@@ -2070,19 +2251,39 @@ If true, then the direction vector will be smoked.
-
-ESCORT._HoldPosition(MenuParam)
+ESCORT._HoldPosition(MenuParam, self, OrbitGroup, OrbitHeight, OrbitSeconds)
-
-
Parameter
+ Parameters
-
#MENUPARAM MenuParam :
+
+ -
+
+
self :
+
+
+ -
+
+
OrbitGroup :
+
+
+ -
+
+
OrbitHeight :
+
+
+ -
+
+
OrbitSeconds :
+
@@ -2091,19 +2292,29 @@ If true, then the direction vector will be smoked.
-
-ESCORT._JoinUpAndFollow(MenuParam)
+ESCORT._JoinUpAndFollow(MenuParam, self, Distance)
-
-
Parameter
+ Parameters
-
#MENUPARAM MenuParam :
+
+ -
+
+
self :
+
+
+ -
+
+
Distance :
+
@@ -2112,19 +2323,34 @@ If true, then the direction vector will be smoked.
-
-ESCORT._ROE(MenuParam)
+ESCORT._ROE(MenuParam, self, EscortROEFunction, EscortROEMessage)
-
-
Parameter
+ Parameters
-
#MENUPARAM MenuParam :
+
+ -
+
+
self :
+
+
+ -
+
+
EscortROEFunction :
+
+
+ -
+
+
EscortROEMessage :
+
@@ -2133,19 +2359,34 @@ If true, then the direction vector will be smoked.
-
-ESCORT._ROT(MenuParam)
+ESCORT._ROT(MenuParam, self, EscortROTFunction, EscortROTMessage)
-
-
Parameter
+ Parameters
-
#MENUPARAM MenuParam :
+
+ -
+
+
self :
+
+
+ -
+
+
EscortROTFunction :
+
+
+ -
+
+
EscortROTMessage :
+
@@ -2154,19 +2395,24 @@ If true, then the direction vector will be smoked.
-
-ESCORT._ReportNearbyTargetsNow(MenuParam)
+ESCORT._ReportNearbyTargetsNow(MenuParam, self)
-
-
Parameter
+ Parameters
@@ -2188,19 +2434,29 @@ If true, then the direction vector will be smoked.
-
-ESCORT._ResumeMission(MenuParam)
+ESCORT._ResumeMission(MenuParam, self, WayPoint)
-
-
Parameter
+ Parameters
-
#MENUPARAM MenuParam :
+
+ -
+
+
self :
+
+
+ -
+
+
WayPoint :
+
@@ -2209,19 +2465,29 @@ If true, then the direction vector will be smoked.
-
-ESCORT._ScanTargets(MenuParam)
+ESCORT._ScanTargets(MenuParam, self, ScanDuration)
-
-
Parameter
+ Parameters
-
#MENUPARAM MenuParam :
+
+ -
+
+
self :
+
+
+ -
+
+
ScanDuration :
+
@@ -2230,19 +2496,34 @@ If true, then the direction vector will be smoked.
-
-ESCORT._Smoke(MenuParam)
+ESCORT._Smoke(MenuParam, self, Color, Message)
-
-
Parameter
+ Parameters
-
#MENUPARAM MenuParam :
+
+ -
+
+
self :
+
+
+ -
+
+
Color :
+
+
+ -
+
+
Message :
+
@@ -2251,7 +2532,7 @@ If true, then the direction vector will be smoked.
-
-ESCORT._SwitchReportNearbyTargets(MenuParam)
+ESCORT:_SwitchReportNearbyTargets(ReportTargets)
-
@@ -2262,7 +2543,7 @@ If true, then the direction vector will be smoked.
-
-
MenuParam :
+ ReportTargets :
@@ -2311,6 +2592,20 @@ If true, then the direction vector will be smoked.
-
+
+
+
+-
+
+
+
+
+
+
+-
+
#Distance
| EVENT:New() |
- |
- |
-
- | EVENT:OnBirth(EventFunction, EventClass) |
-
- Set a new listener for an SEVENTBIRTH event, and registers the unit born.
|
| EVENT:OnBirthForTemplate(EventGroup, EventFunction, EventClass, EventTemplate) |
Create an OnBirth event handler for a group
- |
-
-
- | EVENT:OnBirthForUnit(EventDCSUnitName, EventFunction, EventClass) |
-
- Set a new listener for an SEVENTBIRTH event.
- |
-
-
- | EVENT:OnBirthRemove(EventClass) |
-
- Stop listening to SEVENTBIRTH event.
- |
-
-
- | EVENT:OnCrash(EventFunction, EventClass) |
-
- Set a new listener for an SEVENTCRASH event.
|
| EVENT:OnCrashForTemplate(EventGroup, EventFunction, EventClass, EventTemplate) |
Create an OnCrash event handler for a group
- |
-
-
- | EVENT:OnCrashForUnit(EventDCSUnitName, EventFunction, EventClass) |
-
- Set a new listener for an SEVENTCRASH event.
- |
-
-
- | EVENT:OnCrashRemove(EventClass) |
-
- Stop listening to SEVENTCRASH event.
- |
-
-
- | EVENT:OnDead(EventFunction, EventClass) |
-
- Set a new listener for an SEVENTDEAD event.
|
| EVENT:OnDeadForTemplate(EventGroup, EventFunction, EventClass, EventTemplate) |
Create an OnDead event handler for a group
- |
-
-
- | EVENT:OnDeadForUnit(EventDCSUnitName, EventFunction, EventClass) |
-
- Set a new listener for an SEVENTDEAD event.
- |
-
-
- | EVENT:OnDeadRemove(EventClass) |
-
- Stop listening to SEVENTDEAD event.
|
@@ -371,31 +317,7 @@ YYYY-MM-DD: CLASS:NewFunction( Params ) added
- | EVENT:OnEngineShutDownForUnit(EventDCSUnitName, EventFunction, EventClass) |
-
- Set a new listener for an SEVENTENGINE_SHUTDOWN event.
- |
-
-
- | EVENT:OnEngineShutDownRemove(EventClass) |
-
- Stop listening to SEVENTENGINE_SHUTDOWN event.
- |
-
-
- | EVENT:OnEngineStartUpForUnit(EventDCSUnitName, EventFunction, EventClass) |
-
- Set a new listener for an SEVENTENGINE_STARTUP event.
- |
-
-
- | EVENT:OnEngineStartUpRemove(EventClass) |
-
- Stop listening to SEVENTENGINE_STARTUP event.
- |
-
-
- | EVENT:OnEventForTemplate(EventTemplate, EventFunction, EventClass, OnEventFunction) |
+ EVENT:OnEventForTemplate(EventTemplate, EventFunction, EventClass, OnEventFunction, EventID) |
Create an OnDead event handler for a group
|
@@ -410,120 +332,18 @@ YYYY-MM-DD: CLASS:NewFunction( Params ) added
EVENT:OnEventGeneric(EventFunction, EventClass, EventID) |
Set a new listener for an SEVENTX event independent from a unit or a weapon.
- |
-
-
- | EVENT:OnHit(EventFunction, EventClass) |
-
- Set a new listener for an SEVENTHIT event.
- |
-
-
- | EVENT:OnHitForUnit(EventDCSUnitName, EventFunction, EventClass) |
-
- Set a new listener for an SEVENTHIT event.
- |
-
-
- | EVENT:OnHitRemove(EventClass) |
-
- Stop listening to SEVENTHIT event.
|
| EVENT:OnLandForTemplate(EventTemplate, EventFunction, EventClass) |
- |
-
-
- | EVENT:OnLandForUnit(EventDCSUnitName, EventFunction, EventClass) |
-
- Set a new listener for an SEVENTLAND event.
- |
-
-
- | EVENT:OnLandRemove(EventClass) |
-
- Stop listening to SEVENTLAND event.
- |
-
-
- | EVENT:OnPilotDead(EventFunction, EventClass) |
-
- Set a new listener for an SEVENTPILOT_DEAD event.
- |
-
-
- | EVENT:OnPilotDeadForUnit(EventDCSUnitName, EventFunction, EventClass) |
-
- Set a new listener for an SEVENTPILOT_DEAD event.
- |
-
-
- | EVENT:OnPilotDeadRemove(EventClass) |
-
- Stop listening to SEVENTPILOT_DEAD event.
- |
-
-
- | EVENT:OnPlayerEnterRemove(EventClass) |
-
- Stop listening to SEVENTPLAYERENTERUNIT event.
- |
-
-
- | EVENT:OnPlayerEnterUnit(EventFunction, EventClass) |
-
- Set a new listener for an SEVENTPLAYERENTERUNIT event.
- |
-
-
- | EVENT:OnPlayerLeaveRemove(EventClass) |
-
- Stop listening to SEVENTPLAYERLEAVEUNIT event.
- |
-
-
- | EVENT:OnPlayerLeaveUnit(EventFunction, EventClass) |
-
-
- |
-
-
- | EVENT:OnShot(EventFunction, EventClass) |
-
-
- |
-
-
- | EVENT:OnShotForUnit(EventDCSUnitName, EventFunction, EventClass) |
-
- Set a new listener for an SEVENTSHOT event for a unit.
- |
-
-
- | EVENT:OnShotRemove(EventClass) |
-
- Stop listening to SEVENTSHOT event.
|
| EVENT:OnTakeOffForTemplate(EventTemplate, EventFunction, EventClass) |
- |
-
-
- | EVENT:OnTakeOffForUnit(EventDCSUnitName, EventFunction, EventClass) |
-
- Set a new listener for an SEVENTTAKEOFF event.
- |
-
-
- | EVENT:OnTakeOffRemove(EventClass) |
-
- Stop listening to SEVENTTAKEOFF event.
|
@@ -969,38 +789,6 @@ YYYY-MM-DD: CLASS:NewFunction( Params ) added
-
-
-
--
-
-
-EVENT:OnBirth(EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTBIRTH event, and registers the unit born.
-
- Parameters
-
- Return value
-
-#EVENT:
-
-
@@ -1044,102 +832,6 @@ The self instance of the class for which the event is.
#EVENT:
-
-
-
--
-
-
-EVENT:OnBirthForUnit(EventDCSUnitName, EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTBIRTH event.
-
- Parameters
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnBirthRemove(EventClass)
-
-
--
-
-
Stop listening to SEVENTBIRTH event.
-
- Parameter
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnCrash(EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTCRASH event.
-
- Parameters
-
- Return value
-
-#EVENT:
-
-
@@ -1183,102 +875,6 @@ The self instance of the class for which the event is.
#EVENT:
-
-
-
--
-
-
-EVENT:OnCrashForUnit(EventDCSUnitName, EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTCRASH event.
-
- Parameters
-
- -
-
-
#string EventDCSUnitName :
-
-
- -
-
-
#function EventFunction :
-The function to be called when the event occurs for the unit.
-
-
- -
-
-
Base#BASE EventClass :
-The self instance of the class for which the event is.
-
-
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnCrashRemove(EventClass)
-
-
--
-
-
Stop listening to SEVENTCRASH event.
-
- Parameter
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnDead(EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTDEAD event.
-
- Parameters
-
- Return value
-
-#EVENT:
-
-
@@ -1322,70 +918,6 @@ The self instance of the class for which the event is.
#EVENT:
-
-
-
--
-
-
-EVENT:OnDeadForUnit(EventDCSUnitName, EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTDEAD event.
-
- Parameters
-
- -
-
-
#string EventDCSUnitName :
-
-
- -
-
-
#function EventFunction :
-The function to be called when the event occurs for the unit.
-
-
- -
-
-
Base#BASE EventClass :
-The self instance of the class for which the event is.
-
-
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnDeadRemove(EventClass)
-
-
--
-
-
Stop listening to SEVENTDEAD event.
-
- Parameter
-
- Return value
-
-#EVENT:
-
-
@@ -1424,141 +956,13 @@ The self instance of the class for which the event is.
#EVENT:
-
-
-
--
-
-
-EVENT:OnEngineShutDownForUnit(EventDCSUnitName, EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTENGINE_SHUTDOWN event.
-
- Parameters
-
- -
-
-
#string EventDCSUnitName :
-
-
- -
-
-
#function EventFunction :
-The function to be called when the event occurs for the unit.
-
-
- -
-
-
Base#BASE EventClass :
-The self instance of the class for which the event is.
-
-
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnEngineShutDownRemove(EventClass)
-
-
--
-
-
Stop listening to SEVENTENGINE_SHUTDOWN event.
-
- Parameter
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnEngineStartUpForUnit(EventDCSUnitName, EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTENGINE_STARTUP event.
-
- Parameters
-
- -
-
-
#string EventDCSUnitName :
-
-
- -
-
-
#function EventFunction :
-The function to be called when the event occurs for the unit.
-
-
- -
-
-
Base#BASE EventClass :
-The self instance of the class for which the event is.
-
-
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnEngineStartUpRemove(EventClass)
-
-
--
-
-
Stop listening to SEVENTENGINE_STARTUP event.
-
- Parameter
-
- Return value
-
-#EVENT:
-
-
-
-EVENT:OnEventForTemplate(EventTemplate, EventFunction, EventClass, OnEventFunction)
+EVENT:OnEventForTemplate(EventTemplate, EventFunction, EventClass, OnEventFunction, EventID)
-
@@ -1588,6 +992,11 @@ The instance of the class for which the event is.
#function OnEventFunction :
+
+ -
+
+
EventID :
+
Return value
@@ -1676,103 +1085,6 @@ The self instance of the class for which the event is captured. When the event h
#EVENT:
-
-
-
--
-
-
-EVENT:OnHit(EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTHIT event.
-
- Parameters
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnHitForUnit(EventDCSUnitName, EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTHIT event.
-
- Parameters
-
- -
-
-
#string EventDCSUnitName :
-
-
- -
-
-
#function EventFunction :
-The function to be called when the event occurs for the unit.
-
-
- -
-
-
Base#BASE EventClass :
-The self instance of the class for which the event is.
-
-
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnHitRemove(EventClass)
-
-
--
-
-
Stop listening to SEVENTHIT event.
-
- Parameter
-
- Return value
-
-#EVENT:
-
-
@@ -1809,367 +1121,6 @@ The self instance of the class for which the event is.
-
-
-EVENT:OnLandForUnit(EventDCSUnitName, EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTLAND event.
-
- Parameters
-
- -
-
-
#string EventDCSUnitName :
-
-
- -
-
-
#function EventFunction :
-The function to be called when the event occurs for the unit.
-
-
- -
-
-
Base#BASE EventClass :
-The self instance of the class for which the event is.
-
-
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnLandRemove(EventClass)
-
-
--
-
-
Stop listening to SEVENTLAND event.
-
- Parameter
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnPilotDead(EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTPILOT_DEAD event.
-
- Parameters
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnPilotDeadForUnit(EventDCSUnitName, EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTPILOT_DEAD event.
-
- Parameters
-
- -
-
-
#string EventDCSUnitName :
-
-
- -
-
-
#function EventFunction :
-The function to be called when the event occurs for the unit.
-
-
- -
-
-
Base#BASE EventClass :
-The self instance of the class for which the event is.
-
-
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnPilotDeadRemove(EventClass)
-
-
--
-
-
Stop listening to SEVENTPILOT_DEAD event.
-
- Parameter
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnPlayerEnterRemove(EventClass)
-
-
--
-
-
Stop listening to SEVENTPLAYERENTERUNIT event.
-
- Parameter
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnPlayerEnterUnit(EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTPLAYERENTERUNIT event.
-
- Parameters
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnPlayerLeaveRemove(EventClass)
-
-
--
-
-
Stop listening to SEVENTPLAYERLEAVEUNIT event.
-
- Parameter
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnPlayerLeaveUnit(EventFunction, EventClass)
-
-
--
-
-
-
-
Parameters
-
- -
-
-
EventFunction :
-
-
- -
-
-
EventClass :
-
-
-
-
-
-
--
-
-
-EVENT:OnShot(EventFunction, EventClass)
-
-
--
-
-
-
-
Parameters
-
- -
-
-
EventFunction :
-
-
- -
-
-
EventClass :
-
-
-
-
-
-
--
-
-
-EVENT:OnShotForUnit(EventDCSUnitName, EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTSHOT event for a unit.
-
- Parameters
-
- -
-
-
#string EventDCSUnitName :
-
-
- -
-
-
#function EventFunction :
-The function to be called when the event occurs for the unit.
-
-
- -
-
-
Base#BASE EventClass :
-The self instance of the class for which the event is.
-
-
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnShotRemove(EventClass)
-
-
--
-
-
Stop listening to SEVENTSHOT event.
-
- Parameter
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
EVENT:OnTakeOffForTemplate(EventTemplate, EventFunction, EventClass)
@@ -2201,70 +1152,6 @@ The self instance of the class for which the event is.
-
-
-EVENT:OnTakeOffForUnit(EventDCSUnitName, EventFunction, EventClass)
-
-
--
-
-
Set a new listener for an SEVENTTAKEOFF event.
-
- Parameters
-
- -
-
-
#string EventDCSUnitName :
-
-
- -
-
-
#function EventFunction :
-The function to be called when the event occurs for the unit.
-
-
- -
-
-
Base#BASE EventClass :
-The self instance of the class for which the event is.
-
-
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
-
-EVENT:OnTakeOffRemove(EventClass)
-
-
--
-
-
Stop listening to SEVENTTAKEOFF event.
-
- Parameter
-
- Return value
-
-#EVENT:
-
-
-
-
-
--
-
EVENT:Remove(EventClass, EventID)
diff --git a/docs/Documentation/Fsm.html b/docs/Documentation/Fsm.html
index 3ef15c2df..b8e1525d2 100644
--- a/docs/Documentation/Fsm.html
+++ b/docs/Documentation/Fsm.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
@@ -725,12 +725,48 @@ YYYY-MM-DD: CLASS:NewFunction( Params ) added
FSM_CONTROLLABLE:New(FSMT, Controllable) |
Creates a new FSM_CONTROLLABLE object.
+ |
+
+
+ | FSM_CONTROLLABLE:OnAfterStop(Controllable, From, Event, To) |
+
+ OnAfter Transition Handler for Event Stop.
+ |
+
+
+ | FSM_CONTROLLABLE:OnBeforeStop(Controllable, From, Event, To) |
+
+ OnBefore Transition Handler for Event Stop.
+ |
+
+
+ | FSM_CONTROLLABLE:OnEnterStopped(Controllable, From, Event, To) |
+
+ OnEnter Transition Handler for State Stopped.
+ |
+
+
+ | FSM_CONTROLLABLE:OnLeaveStopped(Controllable, From, Event, To) |
+
+ OnLeave Transition Handler for State Stopped.
|
| FSM_CONTROLLABLE:SetControllable(FSMControllable) |
Sets the CONTROLLABLE object that the FSM_CONTROLLABLE governs.
+ |
+
+
+ | FSM_CONTROLLABLE:Stop() |
+
+ Synchronous Event Trigger for Event Stop.
+ |
+
+
+ | FSM_CONTROLLABLE:__Stop(Delay) |
+
+ Asynchronous Event Trigger for Event Stop.
|
@@ -1960,6 +1996,176 @@ Finite State Machine Table
#FSM_CONTROLLABLE:
+
+
+
+-
+
+
+FSM_CONTROLLABLE:OnAfterStop(Controllable, From, Event, To)
+
+
+-
+
+
OnAfter Transition Handler for Event Stop.
+
+ Parameters
+
+ -
+
+
Wrapper.Controllable#CONTROLLABLE Controllable :
+The Controllable Object managed by the FSM.
+
+
+ -
+
+
#string From :
+The From State string.
+
+
+ -
+
+
#string Event :
+The Event string.
+
+
+ -
+
+
#string To :
+The To State string.
+
+
+
+
+
+
+-
+
+
+FSM_CONTROLLABLE:OnBeforeStop(Controllable, From, Event, To)
+
+
+-
+
+
OnBefore Transition Handler for Event Stop.
+
+ Parameters
+
+ -
+
+
Wrapper.Controllable#CONTROLLABLE Controllable :
+The Controllable Object managed by the FSM.
+
+
+ -
+
+
#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.
+
+
+
+
+-
+
+
+FSM_CONTROLLABLE:OnEnterStopped(Controllable, From, Event, To)
+
+
+-
+
+
OnEnter Transition Handler for State Stopped.
+
+ Parameters
+
+ -
+
+
Wrapper.Controllable#CONTROLLABLE Controllable :
+The Controllable Object managed by the FSM.
+
+
+ -
+
+
#string From :
+The From State string.
+
+
+ -
+
+
#string Event :
+The Event string.
+
+
+ -
+
+
#string To :
+The To State string.
+
+
+
+
+
+
+-
+
+
+FSM_CONTROLLABLE:OnLeaveStopped(Controllable, From, Event, To)
+
+
+-
+
+
OnLeave Transition Handler for State Stopped.
+
+ Parameters
+
+ -
+
+
Wrapper.Controllable#CONTROLLABLE Controllable :
+The Controllable Object managed by the FSM.
+
+
+ -
+
+
#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.
+
@@ -1991,6 +2197,41 @@ Finite State Machine Table
-
+
+FSM_CONTROLLABLE:Stop()
+
+
+-
+
+
Synchronous Event Trigger for Event Stop.
+
+
+
+
+-
+
+
+FSM_CONTROLLABLE:__Stop(Delay)
+
+
+-
+
+
Asynchronous Event Trigger for Event Stop.
+
+ Parameter
+
+
+
+
+-
+
FSM_CONTROLLABLE:_call_handler(handler, params, EventName)
diff --git a/docs/Documentation/Group.html b/docs/Documentation/Group.html
index 519182d0f..ab7723b8a 100644
--- a/docs/Documentation/Group.html
+++ b/docs/Documentation/Group.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Identifiable.html b/docs/Documentation/Identifiable.html
index d40418a42..c249503c9 100644
--- a/docs/Documentation/Identifiable.html
+++ b/docs/Documentation/Identifiable.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/MOVEMENT.html b/docs/Documentation/MOVEMENT.html
index 8d474972f..6fe2427d0 100644
--- a/docs/Documentation/MOVEMENT.html
+++ b/docs/Documentation/MOVEMENT.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
@@ -69,7 +69,7 @@
-
Module MOVEMENT
+
Module Movement
Limit the simultaneous movement of Groups within a running Mission.
@@ -88,30 +88,60 @@ on defined intervals (currently every minute).
-
-
+
+
+
+ | MOVEMENT.AliveUnits |
+
+
+ |
+
| MOVEMENT.ClassName |
+ |
+
+
+ | MOVEMENT.MoveCount |
+
+
+ |
+
+
+ | MOVEMENT.MoveMaximum |
+
+
+ |
+
+
+ | MOVEMENT.MovePrefixes |
+
+
+ |
+
+
+ | MOVEMENT.MoveUnits |
+
+
|
| MOVEMENT:New(MovePrefixes, MoveMaximum) |
- |
-
-
- | MOVEMENT:OnBirth(Event) |
-
- Captures the birth events when new Units were spawned.
|
| MOVEMENT:OnDeadOrCrash(Event) |
Captures the Dead or Crash events when Units crash or are destroyed.
+ |
+
+
+ | MOVEMENT:OnEventBirth(self, EventData) |
+
+ Captures the birth events when new Units were spawned.
|
@@ -149,8 +179,30 @@ on defined intervals (currently every minute).
-
- Field(s)
+
+
+
+
+the MOVEMENT class
+
+ Field(s)
+
+-
+
+ #number
+
+MOVEMENT.AliveUnits
+
+
+-
+
+
+
+
+
Contains the counter how many units are currently alive
+
+
+
-
@@ -163,6 +215,71 @@ on defined intervals (currently every minute).
+
+
+
+-
+
+ #number
+
+MOVEMENT.MoveCount
+
+
+-
+
+
+
+
+
The internal counter of the amount of Moveing the has happened since MoveStart.
+
+
+
+
+-
+
+
+
+MOVEMENT.MoveMaximum
+
+
+-
+
+
+
+
+
Contains the Maximum amount of units that are allowed to move...
+
+
+
+
+-
+
+
+
+MOVEMENT.MovePrefixes
+
+
+-
+
+
+
+
+
+
+-
+
+
+
+MOVEMENT.MoveUnits
+
+
+-
+
+
+
+
+
Reflects if the Moving for this MovePrefixes is going to be scheduled or not.
+
@@ -194,13 +311,13 @@ on defined intervals (currently every minute).
-
-
-MOVEMENT:OnBirth(Event)
+
+MOVEMENT:OnDeadOrCrash(Event)
-
-
Captures the birth events when new Units were spawned.
+Captures the Dead or Crash events when Units crash or are destroyed.
Parameter
@@ -215,19 +332,24 @@ on defined intervals (currently every minute).
-
-
-MOVEMENT:OnDeadOrCrash(Event)
+
+MOVEMENT:OnEventBirth(self, EventData)
-
-
Captures the Dead or Crash events when Units crash or are destroyed.
+Captures the birth events when new Units were spawned.
- Parameter
+ Parameters
diff --git a/docs/Documentation/Menu.html b/docs/Documentation/Menu.html
index 07adea583..590c587d8 100644
--- a/docs/Documentation/Menu.html
+++ b/docs/Documentation/Menu.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Message.html b/docs/Documentation/Message.html
index 87363f12e..ddc1305de 100644
--- a/docs/Documentation/Message.html
+++ b/docs/Documentation/Message.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/MissileTrainer.html b/docs/Documentation/MissileTrainer.html
index 3a8e89a6a..6c6665ba2 100644
--- a/docs/Documentation/MissileTrainer.html
+++ b/docs/Documentation/MissileTrainer.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
@@ -296,6 +296,12 @@ Together with the 476 virtual team, we tested the MISSILETRAINE
MISSILETRAINER:New(Distance, Briefing) |
Creates the main object which is handling missile tracking.
+ |
+
+
+ | MISSILETRAINER:OnEventShot(EventData, EVentData) |
+
+ Detects if an SA site was shot with an anti radiation missile.
|
@@ -338,12 +344,6 @@ Together with the 476 virtual team, we tested the MISSILETRAINE
| MISSILETRAINER._Alive(Client, self) |
- |
-
-
- | MISSILETRAINER:_EventShot(Event) |
-
- Detects if an SA site was shot with an anti radiation missile.
|
@@ -820,6 +820,35 @@ The distance in meters when a tracked missile needs to be destroyed when close t
-
+
+MISSILETRAINER:OnEventShot(EventData, EVentData)
+
+
+-
+
+
Detects if an SA site was shot with an anti radiation missile.
+
+
+In this case, take evasive actions based on the skill level set within the ME.
+
+ Parameters
+
+
+
+
+-
+
MISSILETRAINER.TrackingFrequency
@@ -953,30 +982,6 @@ The distance in meters when a tracked missile needs to be destroyed when close t
-
-
-MISSILETRAINER:_EventShot(Event)
-
-
--
-
-
Detects if an SA site was shot with an anti radiation missile.
-
-
-In this case, take evasive actions based on the skill level set within the ME.
-
- Parameter
-
-
-
-
--
-
diff --git a/docs/Documentation/Mission.html b/docs/Documentation/Mission.html
index ca0aeff1c..101b239ae 100644
--- a/docs/Documentation/Mission.html
+++ b/docs/Documentation/Mission.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Object.html b/docs/Documentation/Object.html
index cabd59cca..750a4df83 100644
--- a/docs/Documentation/Object.html
+++ b/docs/Documentation/Object.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Point.html b/docs/Documentation/Point.html
index 3146ea03a..c5517d093 100644
--- a/docs/Documentation/Point.html
+++ b/docs/Documentation/Point.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Positionable.html b/docs/Documentation/Positionable.html
index d5a2d3300..1c2380097 100644
--- a/docs/Documentation/Positionable.html
+++ b/docs/Documentation/Positionable.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Process_JTAC.html b/docs/Documentation/Process_JTAC.html
index 06e2a3e2d..e9edf0979 100644
--- a/docs/Documentation/Process_JTAC.html
+++ b/docs/Documentation/Process_JTAC.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Process_Pickup.html b/docs/Documentation/Process_Pickup.html
index 385792385..bf2924a3e 100644
--- a/docs/Documentation/Process_Pickup.html
+++ b/docs/Documentation/Process_Pickup.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Route.html b/docs/Documentation/Route.html
index 375de7d0f..f4f2b8eeb 100644
--- a/docs/Documentation/Route.html
+++ b/docs/Documentation/Route.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/ScheduleDispatcher.html b/docs/Documentation/ScheduleDispatcher.html
index 890b6ca4f..15111f577 100644
--- a/docs/Documentation/ScheduleDispatcher.html
+++ b/docs/Documentation/ScheduleDispatcher.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
@@ -138,6 +138,12 @@ The Schedule() method returns the CallID that is the reference ID for each plann
SCHEDULEDISPATCHER.ClassName |
+ |
+
+
+ | SCHEDULEDISPATCHER:Clear(Scheduler) |
+
+
|
@@ -287,6 +293,27 @@ Nothing of this code should be modified without testing it thoroughly.
+
+
+
+-
+
+
+SCHEDULEDISPATCHER:Clear(Scheduler)
+
+
+-
+
+
+
+
Parameter
+
diff --git a/docs/Documentation/Scheduler.html b/docs/Documentation/Scheduler.html
index e4d0d899f..e6b02c81e 100644
--- a/docs/Documentation/Scheduler.html
+++ b/docs/Documentation/Scheduler.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
@@ -141,6 +141,12 @@
SCHEDULER.ClassName |
+ |
+
+
+ | SCHEDULER:Clear() |
+
+ Clears all pending schedules.
|
@@ -227,6 +233,19 @@
+
+
+
+-
+
+
+SCHEDULER:Clear()
+
+
+-
+
+
Clears all pending schedules.
+
diff --git a/docs/Documentation/Scoring.html b/docs/Documentation/Scoring.html
index 1e707ab2a..ec7e0292d 100644
--- a/docs/Documentation/Scoring.html
+++ b/docs/Documentation/Scoring.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Sead.html b/docs/Documentation/Sead.html
index 88c8dfb7f..021db2d57 100644
--- a/docs/Documentation/Sead.html
+++ b/docs/Documentation/Sead.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
@@ -88,18 +88,18 @@
SEAD.ClassName |
- |
-
-
- | SEAD:EventShot(Event) |
-
- Detects if an SA site was shot with an anti radiation missile.
|
| SEAD.New(table, self, SEADGroupPrefixes) |
Creates the main object which is handling defensive actions for SA sites or moving SA vehicles.
+ |
+
+
+ | SEAD.OnEventShot(#, EventData, self) |
+
+ Detects if an SA site was shot with an anti radiation missile.
|
@@ -150,30 +150,6 @@
-
-
-
--
-
-
-SEAD:EventShot(Event)
-
-
--
-
-
Detects if an SA site was shot with an anti radiation missile.
-
-
-In this case, take evasive actions based on the skill level set within the ME.
-
- Parameter
-
@@ -220,6 +196,41 @@ string,...}|string SEADGroupPrefixes which is a table of Prefixes of the SA Grou
-- Defends the Russian SA installations from SEAD attacks.
SEAD_RU_SAM_Defenses = SEAD:New( { 'RU SA-6 Kub', 'RU SA-6 Defenses', 'RU MI-26 Troops', 'RU Attack Gori' } )
+
+
+
+-
+
+
+SEAD.OnEventShot(#, EventData, self)
+
+
+-
+
+
Detects if an SA site was shot with an anti radiation missile.
+
+
+In this case, take evasive actions based on the skill level set within the ME.
+
+ Parameters
+
diff --git a/docs/Documentation/Set.html b/docs/Documentation/Set.html
index e998dfd0e..b67fea497 100644
--- a/docs/Documentation/Set.html
+++ b/docs/Documentation/Set.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
@@ -539,6 +539,18 @@ The following iterator methods are currently available within the SETAIRBAS
SET_BASE:Get(ObjectName) |
Gets a Base#BASE object from the Set#SET_BASE and derived classes, based on the Object Name.
+ |
+
+
+ | SET_BASE:GetFirst() |
+
+ Gets the first object from the Set#SET_BASE and derived classes.
+ |
+
+
+ | SET_BASE:GetLast() |
+
+ Gets the last object from the Set#SET_BASE and derived classes.
|
@@ -1843,6 +1855,42 @@ self
Core.Base#BASE:
+
+
+
+-
+
+
+SET_BASE:GetFirst()
+
+
+-
+
+
Gets the first object from the Set#SET_BASE and derived classes.
+
+ Return value
+
+Core.Base#BASE:
+
+
+
+
+
+-
+
+
+SET_BASE:GetLast()
+
+
+-
+
+
Gets the last object from the Set#SET_BASE and derived classes.
+
+ Return value
+
+Core.Base#BASE:
+
+
diff --git a/docs/Documentation/Smoke.html b/docs/Documentation/Smoke.html
index 1761f1166..821a9ea9a 100644
--- a/docs/Documentation/Smoke.html
+++ b/docs/Documentation/Smoke.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Spawn.html b/docs/Documentation/Spawn.html
index 5237d7f0e..08ebcd8da 100644
--- a/docs/Documentation/Spawn.html
+++ b/docs/Documentation/Spawn.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
@@ -2235,7 +2235,7 @@ when nothing was spawned.
-
- #number
+
SPAWN.SpawnMaxGroups
@@ -2252,7 +2252,7 @@ when nothing was spawned.
-
- #number
+
SPAWN.SpawnMaxUnitsAlive
@@ -2531,7 +2531,7 @@ Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 )
-
- #boolean
+
SPAWN.SpawnUnControlled
diff --git a/docs/Documentation/Static.html b/docs/Documentation/Static.html
index f71da321b..410ec8e61 100644
--- a/docs/Documentation/Static.html
+++ b/docs/Documentation/Static.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Task.html b/docs/Documentation/Task.html
index 10561a59c..13ca897b7 100644
--- a/docs/Documentation/Task.html
+++ b/docs/Documentation/Task.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Task_A2G.html b/docs/Documentation/Task_A2G.html
index 640bb4c66..892111aba 100644
--- a/docs/Documentation/Task_A2G.html
+++ b/docs/Documentation/Task_A2G.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Task_PICKUP.html b/docs/Documentation/Task_PICKUP.html
index f1cbaadbf..10b5479bd 100644
--- a/docs/Documentation/Task_PICKUP.html
+++ b/docs/Documentation/Task_PICKUP.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Task_SEAD.html b/docs/Documentation/Task_SEAD.html
index 8aac84683..9e10ea662 100644
--- a/docs/Documentation/Task_SEAD.html
+++ b/docs/Documentation/Task_SEAD.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Unit.html b/docs/Documentation/Unit.html
index 7a731ad48..20dc60691 100644
--- a/docs/Documentation/Unit.html
+++ b/docs/Documentation/Unit.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Utils.html b/docs/Documentation/Utils.html
index c4f2efc23..ce2722695 100644
--- a/docs/Documentation/Utils.html
+++ b/docs/Documentation/Utils.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
diff --git a/docs/Documentation/Zone.html b/docs/Documentation/Zone.html
index 965854e1f..ee46f1980 100644
--- a/docs/Documentation/Zone.html
+++ b/docs/Documentation/Zone.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
@@ -310,6 +310,18 @@ This class implements the inherited functions from ZONE_BASE:GetName()
Returns the name of the zone.
+ |
+
+
+ | ZONE_BASE:GetPointVec2(Height) |
+
+ Returns a Point#POINT_VEC2 of the zone.
+ |
+
+
+ | ZONE_BASE:GetPointVec3(Height) |
+
+ Returns a Point#POINT_VEC3 of the zone.
|
@@ -322,6 +334,12 @@ This class implements the inherited functions from ZONE_BASE:GetVec2()
|
Returns the DCSTypes#Vec2 coordinate of the zone.
+ |
+
+
+ | ZONE_BASE:GetVec3(Height) |
+
+ Returns the DCSTypes#Vec3 of the zone.
|
@@ -853,6 +871,60 @@ The name of the zone.
-
+
+ZONE_BASE:GetPointVec2(Height)
+
+
+-
+
+
Returns a Point#POINT_VEC2 of the zone.
+
+ Parameter
+
+ Return value
+
+Core.Point#POINT_VEC2:
+The PointVec2 of the zone.
+
+
+
+
+-
+
+
+ZONE_BASE:GetPointVec3(Height)
+
+
+-
+
+
Returns a Point#POINT_VEC3 of the zone.
+
+ Parameter
+
+ Return value
+
+Core.Point#POINT_VEC3:
+The PointVec3 of the zone.
+
+
+
+
+-
+
ZONE_BASE:GetRandomVec2()
@@ -884,6 +956,33 @@ The Vec2 coordinates.
#nil:
+
+
+
+-
+
+
+ZONE_BASE:GetVec3(Height)
+
+
+-
+
+
Returns the DCSTypes#Vec3 of the zone.
+
+ Parameter
+
+ Return value
+
+Dcs.DCSTypes#Vec3:
+The Vec3 of the zone.
+
diff --git a/docs/Documentation/index.html b/docs/Documentation/index.html
index f618bb44d..880d167dc 100644
--- a/docs/Documentation/index.html
+++ b/docs/Documentation/index.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable
@@ -251,12 +251,6 @@ following a given priority.
Identifiable |
This module contains the IDENTIFIABLE class.
- |
-
-
- | MOVEMENT |
-
- Limit the simultaneous movement of Groups within a running Mission.
|
@@ -281,6 +275,12 @@ following a given priority.
| Mission |
A MISSION is the main owner of a Mission orchestration within MOOSE .
+ |
+
+
+ | Movement |
+
+ Limit the simultaneous movement of Groups within a running Mission.
|
diff --git a/docs/Documentation/routines.html b/docs/Documentation/routines.html
index 99337161d..7c828c35d 100644
--- a/docs/Documentation/routines.html
+++ b/docs/Documentation/routines.html
@@ -39,11 +39,11 @@
- Fsm
- Group
- Identifiable
- - MOVEMENT
- Menu
- Message
- MissileTrainer
- Mission
+ - Movement
- Object
- Point
- Positionable